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