hnetcdf: Haskell NetCDF library

[ bsd3, data, library, program ] [ Propose Tags ] [ Report a vulnerability ]

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]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1.0.0, 0.2.0.0, 0.2.1.0, 0.2.2.0, 0.3.0.0, 0.4.0.0, 0.5.0.0
Change log CHANGELOG.markdown
Dependencies base (>=4.3 && <5), containers (>=0.5.0.0 && <0.7), filepath (>=1.4 && <1.5), hnetcdf, repa (>=3.4 && <3.5), transformers (>=0.2 && <0.6), vector (>=0.12 && <0.13) [details]
License BSD-3-Clause
Copyright Copyright (2013) Ian Ross
Author Ian Ross
Maintainer ian@skybluetrades.net
Category Data
Home page https://github.com/ian-ross/hnetcdf
Source repo head: git clone https://github.com/ian-ross/hnetcdf
Uploaded by DominicSteinitz at 2019-02-06T08:34:21Z
Distributions
Reverse Dependencies 2 direct, 0 indirect [details]
Executables example2, example1
Downloads 6106 total (13 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user [build log]
All reported builds failed as of 2019-02-06 [all 1 reports]

Readme for hnetcdf-0.5.0.0

[back to package description]

hnetcdf

Build Status

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
      ...