PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-strict.dtd">

RubyNetCDF Reference Manual

---------------------------------------------

Overview

RubyNetCDF is the Ruby interface of the NetCDF library. Ruby is a free object-oriented scripting language and is available from http://www.ruby-lang.org/. To handle numeric data, RubyNetCDF uses NArray, which is the standard numeric multi-dimensional array class for Ruby (http://www.ruby-lang.org/en/raa-list.rhtml?name=NArray). An NArray object holds numeric data in a consecutive memory area pointed by a C pointer. Thus, it is computationally efficient. NArray is similar to NumPy for Python, but results of some benchmark tests suggests that NArray is more efficient than NumPy.

Structure

RubyNetCDF consists of the four class in the following.

Data type

All the NetCDF variable types char, byte, short, int, float, and double are supported in this Ruby interface. These types are called, however, differently in it to adhere to the convention of Ruby, or, more specifically, of NArray. These types are named to as "char", "byte", "sint", "int", "sfloat", and "float", respectively. Therefore, the vartype (=ntype) method of the NetCDFVar class returns one of these strings. The def_var method of the NetCDF class also accepts one of them to define a variable. It should be noted especially that "float" in this library means the double in the NetCDF terminology. This is due to the convention of Ruby -- the predefined Float class corresponds to the double in C, not the float.

The "get" method of NetCDFVar class reads a variable in a NArray of the same type as in the file, except for the "char" type which is read into a "byte". This is because NArray does not have a "char" type. However, it not is not supposed to be a problem, since a byte NArray can easily handle string data.

Error handling

Errors are basically handled by raising exceptions. However, light errors in value-returning methods are handled by returning nil (e.g., if a non-existent attribute name is specified in attribute reading). Those methods that returns nil on error are explicitly written as such in the following.

Security features

Security handling is done just as in the pre-defined File class.

Usage

To use the RubyNetCDF library, load the library first by placing the following line in your Ruby program to load the library:

require 'numru/netcdf'

Here, 'numru', which is taken from "Numerical Ruby", is the name of the subdirectory in the user's load path where the RubyNetCDF library is placed (by default). Then, it can be used as in the following:

file = NumRu::NetCDF.create('tmp.nc')
x = file.def_dim('x',10)
y = file.def_dim('y',10)
v = file.def_var('v','float',[x,y])
file.close

Here, NumRu is the module that has the library in it. The reason why NetCDF library is wrapped in such a module is to avoid conflicts in the name space. Without this kind of treatment, problems happen if the user wants to use a library that happens to have a class or module with the same name as even one of the classes in this library.

If such a problem is not expected to happen, the prefix "NumRu::" can be eliminated by "including" the NumRu module as in the following, so that to place "NumRu::" is not needed anymore in the current scope:

include NumRu
file = NetCDF.create('tmp.nc')
...

For more examples, see demo and test programs included in the distribution package.

---------------------------------------------

How to read this manual

method_name(argument1, argument2, ...) -- arguments that can be omitted are expressed as Argument_name=Default_value

Explanation of its function

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

---------------------------------------------

Method Index

---------------------------------------------

class NetCDF

Class Methods

NetCDF.open(filename, mode="r", share=false)

Opens a file (class method). If mode="w" and non-existent, a new file is created.

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

NetCDF.new

Aliased to NetCDF.open

NetCDF.create(filename, noclobber=false, share=false)

Creates a NetCDF file (class method)

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

NetCDF.create_tmp(tmpdir=ENV['TMPDIR']||ENV['TMP']||ENV['TEMP']||'.', share=false)

Creates a temporary NetCDF file (class method). Its name is automatically generated, and it is deleted when closed.

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

Instance Methods

close

Closes the file.

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

ndims

Returns the number of dimensions in the file

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

nvars

Returns the number of variables in the file

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

natts

Returns the number of global attributes in the file

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

unlimited

Returns the unlimited dimension in the file

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

path

Returns the path of the file (contents of the filename specified when opened/created)

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

redef

Switches to the define mode. Does nothing if already in it.

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

enddef

Switches to the data mode. Does nothing if already in it.

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

sync

Synchronizes the disk copy of a netCDF dataset with in-memory buffer

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

def_dim(dimension_name, length)

Define a dimension

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

put_att(attribute_name, value, atttype=nil)

Sets a global attribute

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

def_var(name, vartype, dimensions)

Defines a variable

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

def_var_with_dim(name, vartype, shape_ul0, dimnames)

Same as def_var but defines dimensions first if needed. Raise exception if it conflicts with the lengths of exisiting dimensions.

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

var(var_name)

Opens an existing variable in the file

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

dim(dimension_name)

Opens an existing dimension in the file

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

att(attribute_name)

Opens an existing global attribute in the file

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

fill=(filemode)

Sets a fill mode. (Default behavior of NetCDF is FILL.)

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

each_dim{ ... }

Iterator regarding the dimensions in the file. Ex.: {|i| print i.name,"\n"} prints names of all dimensions

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

each_var{ ... }

Iterator regarding the variables in the file. Ex.: {|i| print i.name,"\n"} prints names of all variables

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

each_att{ ... }

Iterator regarding the global attributes of the file. Ex.: {|i| print i.name,"\n"} prints names of all of them.

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

dim_names

Returns the names of all dimensions in the file

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

var_names

Returns the names of all variables in the file

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

att_names

Returns the names of all the global attributes of the file

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

---------------------------------------------

class NetCDFDim

Class Methods

Instance Methods

length

Returns the length of the dimension

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

length_ul0

Same as length but returns 0 for the unlimited dimension

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

name=(dimension_newname)

Rename the dimension

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

name

Returns the name of the dimension

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

unlimited?

Inquires whether the dimension is unlimited or not

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

---------------------------------------------

class NetCDFVar

Class Methods

NetCDFVar.new(file,varname,mode="r",share=false)

open a NetCDF variable. This can also be done with NetCDF#var (instance method of NetCDF class), which is recommended over this method.

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

Instance Methods

dim(dim_num)

Inquires the dim_num-th dimension of the variable (dim_num=0,1,2,..)

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

dims

Returns an array of all the dimensions of the variable

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

shape_ul0

Returns the shape of the variable, but the length of the unlimited dimension is set to zero. Good to define another variable.

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

shape_current

Returns the current shape of the variable.

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

each_att{ ... }

Iterator regarding the global attributes of the variables. Ex.: {|i| print i.name,"\n"} prints names of all of them.

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

dim_names

Returns the names of all the dimensions of the variable

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

att_names

Returns the names of all the attributes of the variable

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

name

Returns the name of the variable

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

name=(variable_newname)

Rename the variable

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

ndims

Number of dimensions of the variable (which is rank of the variable).

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

ntype

Aliased to vartype

vartype

Data value type of the variable

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

natts

Returns the number of the attributes of the variable

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

file

Inquires the file that the variable is in

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

att(attribute_name)

Returns the attribute specified by its name

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

put_att(attribute_name, value, atttype=nil)

Sets an attribute

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

put(value, option=nil)

Set the values of the variable

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

scaled_put(value, option=nil)

Same as put but interprets the attributes scale_factor and add_offset

If scale_factor and/or add_offest is defined, does (value-add_offset)/scale_factor before writing. (If not, exactly the same as put.) If one of the attributes is not defined, assumes 1 for the factor and 0 for the offset.

See the document for put for arguments etc.

get(option=nil)

Returns values of the variable

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

scaled_get(option=nil)

Same as get but interprets the attributes scale_factor and add_offset

If scale_factor and/or add_offest is defined, returns value*scale_factor+add_offset. (If not, exactly the same as get.) If one of the attributes is not defined, assumes 1 for the factor and 0 for the offset. The variable type of the return value (NArray) is float (which is double precision) if the NetCDF variable is int or float; else, it is sfloat (single presision).

See the document for get for arguments etc.

---------------------------------------------

class NetCDFAtt

Class Methods

Instance Methods

name

Returns the name of the attribute

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

name=(attribute_newname)

Rename the attribute

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

copy(var_or_file)

Copies an attribute to a variable or a file. If file, becomes an global attribute

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

delete

Delete an attribute

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

put(value, atttype=nil)

Sets the value of the attribute

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

get

Returns the values of the attribute

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF

atttype

Inquires the type of attribute values

Arguments

Return value

Corresponding (dependent) function(s) in the C library of NetCDF