def from_netCDF(cls, filename=None, grid_topology=None, name=None, units=None, time=None, ice_var=None, ice_conc_var=None, grid=None, dataset=None, grid_file=None, data_file=None, **kwargs): if filename is not None: data_file = filename grid_file = filename ds = None dg = None if dataset is None: if grid_file == data_file: ds = dg = _get_dataset(grid_file) else: ds = _get_dataset(data_file) dg = _get_dataset(grid_file) else: ds = dg = dataset if grid is None: grid = _init_grid(grid_file, grid_topology=grid_topology, dataset=dg) if ice_var is None: ice_var = IceVelocity.from_netCDF(filename, grid=grid, dataset=ds, **kwargs) if time is None: time = ice_var.time if ice_conc_var is None: ice_conc_var = IceConcentration.from_netCDF(filename, time=time, grid=grid, dataset=ds, **kwargs) if name is None: name = 'IceAwareProp' if units is None: units = ice_var.units return cls(name='foo', units=units, time=time, ice_var=ice_var, ice_conc_var=ice_conc_var, grid=grid, grid_file=grid_file, data_file=data_file, **kwargs)
def from_netCDF(cls, filename=None, grid_topology=None, name=None, units=None, time=None, ice_var=None, wind_var=None, ice_conc_var=None, grid=None, dataset=None, grid_file=None, data_file=None, **kwargs): if filename is not None: data_file = filename grid_file = filename ds = None dg = None if dataset is None: if grid_file == data_file: ds = dg = _get_dataset(grid_file) else: ds = _get_dataset(data_file) dg = _get_dataset(grid_file) else: ds = dg = dataset if grid is None: grid = _init_grid(grid_file, grid_topology=grid_topology, dataset=dg) if wind_var is None: wind_var = GridWind.from_netCDF(filename, time=time, grid=grid, dataset=ds, **kwargs) return super(IceAwareWind, cls).from_netCDF(grid_topology=grid_topology, name=name, units=units, time=time, ice_var=ice_var, wind_var=wind_var, ice_conc_var=ice_conc_var, grid=grid, dataset=ds, grid_file=grid_file, data_file=data_file, **kwargs)
def from_netCDF(cls, filename=None, varname=None, grid_topology=None, name=None, units=None, time=None, grid=None, depth=None, dataset=None, data_file=None, grid_file=None, load_all=False, fill_value=0, **kwargs ): ''' Allows one-function creation of a GriddedProp from a file. :param filename: Default data source. Parameters below take precedence :param varname: Name of the variable in the data source file :param grid_topology: Description of the relationship between grid attributes and variable names. :param name: Name of property :param units: Units :param time: Time axis of the data :param data: Underlying data source :param grid: Grid that the data corresponds with :param depth: Depth axis object :param dataset: Instance of open Dataset :param data_file: Name of data source file :param grid_file: Name of grid source file :type filename: string :type varname: string :type grid_topology: {string : string, ...} :type name: string :type units: string :type time: [] of datetime.datetime, netCDF4 Variable, or Time object :type data: netCDF4.Variable or numpy.array :type grid: pysgrid or pyugrid :type S_Depth or L_Depth :type dataset: netCDF4.Dataset :type data_file: string :type grid_file: string ''' if filename is not None: data_file = filename grid_file = filename ds = None dg = None if dataset is None: if grid_file == data_file: ds = dg = _get_dataset(grid_file) else: ds = _get_dataset(data_file) dg = _get_dataset(grid_file) else: if grid_file is not None: dg = _get_dataset(grid_file) else: dg = dataset ds = dataset if grid is None: grid = _init_grid(grid_file, grid_topology=grid_topology, dataset=dg) if varname is None: varname = cls._gen_varname(data_file, dataset=ds) if varname is None: raise NameError('Default current names are not in the data file, must supply variable name') data = ds[varname] if name is None: name = cls.__name__ + str(cls._def_count) cls._def_count += 1 if units is None: try: units = data.units except AttributeError: units = None timevar = None if time is None: try: timevar = data.time if data.time == data.dimensions[0] else data.dimensions[0] except AttributeError: if len(data.dimensions) > 2: timevar = data.dimensions[0] time = Time(ds[timevar]) else: time = None if depth is None: from gnome.environment.environment_objects import Depth depth = Depth(surface_index=-1) # if len(data.shape) == 4 or (len(data.shape) == 3 and time is None): # from gnome.environment.environment_objects import S_Depth # depth = S_Depth.from_netCDF(grid=grid, # depth=1, # data_file=data_file, # grid_file=grid_file, # **kwargs) if load_all: data = data[:] return cls(name=name, units=units, time=time, data=data, grid=grid, depth=depth, grid_file=grid_file, data_file=data_file, fill_value=fill_value, **kwargs)
def from_netCDF(cls, filename=None, grid_topology=None, name=None, temperature=None, salinity=None, sediment=None, grid=None, dataset=None, grid_file=None, data_file=None): if filename is not None: data_file = filename grid_file = filename ds = None dg = None if dataset is None: if grid_file == data_file: ds = dg = _get_dataset(grid_file) else: ds = _get_dataset(data_file) dg = _get_dataset(grid_file) else: ds = dg = dataset if grid is None: grid = _init_grid(grid_file, grid_topology=grid_topology, dataset=dg) if time is None: time = ice_var.time if temperature is None: try: temperature = GridTemperature.from_netCDF(filename, time=time, grid=grid, dataset=ds) except: temperature = 300. if salinity is None: try: salinity = GridSalinity.from_netCDF(filename, time=time, grid=grid, dataset=ds) except: salinity = 35. if sediment is None: try: sediment = GridSediment.from_netCDF(filename, time=time, grid=grid, dataset=ds) except: sediment = .005 if name is None: name = 'WaterConditions' if units is None: units = water_var.units return cls(name=name, units=units, time=time, ice_var=ice_var, water_var=water_var, ice_conc_var=ice_conc_var, grid=grid, grid_file=grid_file, data_file=data_file)