Puppy 0.1.8

Creator: railscoder56

Last updated:

Add to Cart

Description:

Puppy 0.1.8

A DSL for creating NetCDF files. Here’s a simple example:
from pup import *

class Test(NetCDF):
# NC_GLOBAL attributes go here
history = 'Created for a test'

# dimensions need to be set explicitly only when they
# have no variable associated with them
dim0 = Dimension(2)

# variables that don't specify dimensions are assumed to
# be their own dimension
time = Variable(range(10), record=True, units='days since 2008-01-01')

# now a variable with dimensions (time,)
temperature = Variable(range(10), (time,), units='deg C')

Test.save('simple.nc')
This will produce the following NetCDF file:
netcdf simple {
dimensions:
dim0 = 2 ;
time = UNLIMITED ; // (10 currently)
variables:
int time(time) ;
time:units = "days since 2008-01-01" ;
int temperature(time) ;
temperature:units = "deg C" ;

// global attributes:
:history = "Created for a test" ;
data:

time = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ;

temperature = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ;
}
Compare this with the code necessary to do the same using common NetCDF
libraries:
f = netcdf_file("simple.nc", "w")

f.history = "Created for a test"

f.createDimension("dim0", 2)

f.createDimension("time", None)
time = f.createVariable("time", "i", ("time",))
time.units = "days since 2008-01-01"
time[:] = range(10)

temperature = f.createVariable("temperature", "i", ("time",))
temperature.units = "deg C"
temperature[:] = range(10)
By default it uses pupynere for creating files, but this can be overloaded; we
can use the netCDF4 module, for example, which allows us to specify groups:
from netCDF4 import Dataset

class Test(NetCDF):
loader = Dataset
...

foo = Group(
dim = Dimension(10),
var = Variable(range(10)),
...
)
Test.save('simple.nc', format='NETCDF4')
Changelog:

0.1.8:
Ensure record dimensions are created first.

0.1.7:
Convert strings to array of chars.

0.1.6:
Fix bug in dimension name.

0.1.5:
Added support for Groups when using netcdf4.

0.1.4:
Added support for masked arrays.

0.1.3:
Pass keyword arguments in save() to the loader.

0.1.2:
Improved optional loader detection.

0.1.1:
Added pupynere dependency.

0.1:
Initial release.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.