@hackage hnetcdf0.5.0.0
Haskell NetCDF library
Installation
Dependencies (6)
- base >=4.3 && <5
- containers >=0.5.0.0 && <0.7
- filepath >=1.4 && <1.5
- repa >=3.4 && <3.5
- transformers >=0.2 && <0.6
- vector >=0.12 && <0.13 Show all…
Dependents (2)
@hackage/acme-everything, @hackage/NaperianNetCDF
hnetcdf
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 "tst.nc" 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 "tst.nc" ReadMode
case enc of
Right nc -> do
eval <- get nc "varname" :: RepaRet3 CDouble
...