Example #1
0
def read_dataset(f, nms=None, **kwargs):
    """ read several (or all) names from a netCDF file

    nms : list of variables to read (default None for all variables)
    **kwargs: keyword arguments passed to io.nc.read_variable 
    """
    kw = _extract_kw(kwargs, ('verbose', ))
    f, close = check_file(f, 'r', **kw)

    # automatically read all variables to load (except for the dimensions)
    if nms is None:
        nms, dims = scan(f)


#    if nms is str:
#        nms = [nms]

    data = dict()
    for nm in nms:
        data[nm] = read_variable(f, nm, **kwargs)

    data = Dataset(**data)

    # get dataset's metadata
    for k in f.ncattrs():
        setattr(data, k, f.getncattr(k))

    if close: f.close()

    return data
Example #2
0
 def to_dataset(self, axis=0):
     """ split a DimArray into a Dataset object (collection of DimArrays)
     """
     from dimarray.dataset import Dataset
     # iterate over elements of one axis
     #data = [val for k, val in self.iter(axis)]
     # Dataset(data, keys=self.axes[axis].values)
     ds = Dataset()
     for k, val in self.iter(axis):
         if not isinstance(val, DimArray):  # scalar case
             val = DimArray(val)
         ds[k] = val
     return ds
Example #3
0
    def from_dict(cls, dict_, keys=None, axis=None):
        """ Initialize a DimArray for a dictionary of DimArrays

        keys, optional: re-order the keys 
        axis, optional: give a name to the keys axis
        """
        assert isinstance(dict_, dict)
        from dimarray.dataset import Dataset
        if keys is None: keys = dict_.keys()
        data = Dataset(dict_)
        return data.to_array(axis=axis,
                             keys=keys,
                             _constructor=cls._constructor)