hnetcdf: Haskell NetCDF library

[ bsd3, data, library, program ] [ Propose Tags ]

Bindings to the Unidata NetCDF library, along with a higher-level Haskell interface that attempts to provide container polymorphic data access (initially just Storable vectors and Repa arrays).

[Skip to Readme]
Versions [faq],,,,,,
Change log CHANGELOG.markdown
Dependencies base (>=4.3 && <5), containers (>=0.4 && <0.6), either (>=3.4.1 && <5), errors (>=1.4.2 && <1.5), filepath (==1.3.*), hmatrix (>= && <0.17), repa, transformers (>=0.2 && <0.5), vector (>=0.9 && <0.11) [details]
License BSD-3-Clause
Copyright Copyright (2013) Ian Ross
Author Ian Ross
Revised Revision 2 made by IanRoss at 2014-06-27T09:42:34Z
Category Data
Home page
Source repo head: git clone
Uploaded by IanRoss at 2014-06-27T09:40:18Z
Distributions NixOS:
Downloads 5257 total (13 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs not available [build log]
All reported builds failed as of 2016-12-14 [all 7 reports]


  • Data
    • Data.NetCDF
      • Data.NetCDF.HMatrix
      • Data.NetCDF.Metadata
      • Data.NetCDF.PutGet
      • Data.NetCDF.Raw
        • Data.NetCDF.Raw.Attributes
        • Data.NetCDF.Raw.Base
        • Data.NetCDF.Raw.PutGet
        • Data.NetCDF.Raw.Utils
      • Data.NetCDF.Repa
      • Data.NetCDF.Storable
      • Data.NetCDF.Store
      • Data.NetCDF.Types
      • Data.NetCDF.Utils
      • Data.NetCDF.Vector


Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

For package maintainers and hackage trustees

Readme for hnetcdf-

[back to package description]


Haskell NetCDF library: as well as conventional low-level FFI bindings to the functions in the NetCDF library (in the Data.NetCDF.Raw modules), hnetcdf provides a higher-level Haskell interface (currently only for reading data). This higher-level interface aims to provide a "container polymorphic" view of NetCDF data allowing NetCDF variables to be read into Storable Vectors and Repa arrays easily.

For example:

import Data.NetCDF
import Foreign.C
import qualified Data.Vector.Storable as SV
type SVRet = IO (Either NcError (SV.Vector a))
  enc <- openFile "" ReadMode
  case enc of
    Right nc -> do
      eval <- get nc "varname" :: SVRet CDouble

gets the full contents of a NetCDF variable as a Storable Vector, while the following code reads the same variable (assumed to be three-dimensional) into a Repa array:

import Data.NetCDF
import Foreign.C
import qualified Data.Array.Repa as R
import qualified Data.Array.Repa.Eval as RE
import Data.Array.Repa.Repr.ForeignPtr (F)
type RepaRet3 a = IO (Either NcError (R.Array F R.DIM3 a))
  enc <- openFile "" ReadMode
  case enc of
    Right nc -> do
      eval <- get nc "varname" :: RepaRet3 CDouble