gridded package
Subpackages
- gridded.pysgrid package
- Submodules
- gridded.pysgrid.lookup module
- gridded.pysgrid.processing_2d module
- gridded.pysgrid.read_netcdf module
- gridded.pysgrid.sgrid module
SGrid
SGrid.all_padding()
SGrid.apply_padding_to_idxs()
SGrid.build_celltree()
SGrid.build_kdtree()
SGrid.center_padding
SGrid.centers
SGrid.edge1_padding
SGrid.edge2_padding
SGrid.geo_to_logical()
SGrid.get_all_edge_padding()
SGrid.get_all_face_padding()
SGrid.get_efficient_slice()
SGrid.get_padding_by_location()
SGrid.get_padding_slices()
SGrid.get_variable_at_index()
SGrid.get_variable_by_index()
SGrid.infer_location()
SGrid.info
SGrid.interpolate()
SGrid.interpolate_var_to_points()
SGrid.load_grid()
SGrid.locate_faces()
SGrid.locate_nearest()
SGrid.nearest_var_to_points()
SGrid.node_padding
SGrid.nodes
SGrid.non_grid_variables
SGrid.padding_slices
SGrid.save_as_netcdf()
SGrid.topology_dimension
SGrid.x_to_l()
SGridAttributes
SGridAttributes.get_angles()
SGridAttributes.get_attr_coordinates()
SGridAttributes.get_attr_dimension()
SGridAttributes.get_cell_center_lat_lon()
SGridAttributes.get_cell_edge1_lat_lon()
SGridAttributes.get_cell_edge2_lat_lon()
SGridAttributes.get_cell_node_lat_lon()
SGridAttributes.get_dimensions()
SGridAttributes.get_masks()
SGridAttributes.get_node_coordinates()
SGridAttributes.get_topology_var()
SGridAttributes.get_variable_attributes()
load_grid()
- gridded.pysgrid.utils module
- gridded.pysgrid.variables module
- Module contents
- gridded.pyugrid package
- Subpackages
- Submodules
- gridded.pyugrid.read_netcdf module
- gridded.pyugrid.ugrid module
UGrid
UGrid.boundaries
UGrid.build_boundaries()
UGrid.build_boundary_coordinates()
UGrid.build_celltree()
UGrid.build_edge_coordinates()
UGrid.build_edges()
UGrid.build_face_coordinates()
UGrid.build_face_edge_connectivity()
UGrid.build_face_face_connectivity()
UGrid.check_consistent()
UGrid.edges
UGrid.face_edge_connectivity
UGrid.face_face_connectivity
UGrid.faces
UGrid.from_nc_dataset()
UGrid.from_ncfile()
UGrid.get_lines()
UGrid.infer_location()
UGrid.info
UGrid.interpolate()
UGrid.interpolate_var_to_points()
UGrid.interpolation_alphas()
UGrid.locate_faces()
UGrid.locate_nodes()
UGrid.node_lat
UGrid.node_lon
UGrid.nodes
UGrid.num_vertices
UGrid.save()
UGrid.save_as_netcdf()
- gridded.pyugrid.util module
- gridded.pyugrid.uvar module
- Module contents
Submodules
gridded.depth module
- class gridded.depth.Depth[source]
Bases:
object
Factory class that generates depth objects. Also handles common loading and parsing operations
- static from_netCDF(filename=None, dataset=None, data_file=None, grid_file=None, depth_type=None, varname=None, topology=None, _default_types=(('level', <class 'gridded.depth.L_Depth'>), ('sigma', <class 'gridded.depth.S_Depth'>), ('surface', <class 'gridded.depth.DepthBase'>)), **kwargs)[source]
- Parameters
filename (string or list of string) – File containing a depth
dataset (netCDF4.Dataset) – Takes precedence over filename, if provided.
depth_type (string) – Must be provided if autodetection is not possible. See Depth.ld_names, Depth.sd_names, and Depth.surf_names for the expected values for this argument
- Returns
Instance of L_Depth or S_Depth
- ld_names = ['level', 'levels', 'L_Depth', 'depth_levelsdepth_level']
- sd_names = ['sigma']
- surf_names = ['surface', 'surface only', 'surf', 'none']
- class gridded.depth.DepthBase(surface_index=None, bottom_index=None, **kwargs)[source]
Bases:
object
- interpolation_alphas(points, time, data_shape, extrapolate=False, _hash=None, **kwargs)[source]
Returns the weights (alphas) required for interpolation
The base class implementation only supports surface values: it returns the surface index and 0.0 for the alpha
This is the expected outcome for the case where all points are on the surface.
- class gridded.depth.L_Depth(name=None, terms=None, surface_index=None, bottom_index=None, default_surface_boundary_condition='extrapolate', default_bottom_boundary_conditon='mask', **kwargs)[source]
Bases:
DepthBase
- cf_names = {'depth': 'depth'}
- default_names = {'depth': ['depth', 'depth_levels']}
- default_terms = [('depth_levels', 'depth')]
- classmethod from_netCDF(filename=None, dataset=None, name=None, topology=None, terms=None, surface_index=None, bottom_index=None, **kwargs)[source]
- interpolation_alphas(points, time=None, data_shape=None, surface_boundary_condition=None, bottom_boundary_condition=None, *args, **kwargs)[source]
Returns a pair of values. The 1st value is an array of the depth indices of all the particles. The 2nd value is an array of the interpolation alphas for the particles between their depth index and depth_index+1. If both values are None, then all particles are on the surface layer.
- class gridded.depth.S_Depth(name=None, time=None, grid=None, bathymetry=None, zeta=None, terms=None, vtransform=2, positive_down=True, surface_boundary_condition='extrapolate', bottom_boundary_condition='mask', **kwargs)[source]
Bases:
DepthBase
Represents the ocean s-coordinates as implemented by ROMS, It may or may not be useful for other systems.
- cf_names = {'Cs_r': ['S-coordinate stretching curves at RHO-points'], 'Cs_w': ['S-coordinate stretching curves at W-points'], 'bathymetry': ['bathymetry at RHO-points', 'Final bathymetry at RHO-points'], 'hc': ['S-coordinate parameter, critical depth'], 's_rho': ['S-coordinate at RHO-points'], 's_w': ['S-coordinate at W-points'], 'zeta': ['free-surface']}
- compute_coordinates(rho_or_w)[source]
Uses zeta, bathymetry, and the s-coordinate terms to produce the time-dependent coordinate variable.
- Returns
numpy array of s-coordinates
- default_names = {'Cs_r': ['Cs_r'], 'Cs_w': ['Cs_w'], 'bathymetry': ['h'], 'hc': ['hc'], 's_rho': ['s_rho'], 's_w': ['s_w'], 'zeta': ['zeta']}
- classmethod from_netCDF(filename=None, varnames=None, grid_topology=None, name=None, time=None, grid=None, dataset=None, data_file=None, grid_file=None, bathymetry=None, zeta=None, terms=None, vtransform=2, positive_down=True, **kwargs)[source]
- Parameters
filename (str or list[str]) – A string or ordered list of string of netCDF filename(s)
varnames (dict) –
Direct mapping of component name to netCDF variable name. Use this if auto detection fails. Partial definition is allowable. Unspecified terms will use the value in .default_names:
{'Cs_r': 'Cs_r', 'Cs_w': Cs_w', 's_rho': 's_rho'), 's_w': 's_w', 'bathymetry': 'h', 'hc': 'hc'), 'zeta': 'zeta') }
name (str) – Human-readable name for this object
time (gridded.time.Time or subclass) – Time dimension (for zeta)
grid (subclass of gridded.grids.GridBase) – X-Y dmension (for bathymetry & zeta)
- get_section(time, coord='w', x_coord=None, y_coord=None, vtransform=2)[source]
Returns a section of the z-level space in time. All s-levels are returned in the data. By providing a x_coord or y_coord you can get cross sections in the direction specified, or both for the level depths at a single point.
- get_transect(points, time, rho_or_w='w', _hash=None, **kwargs)[source]
- Parameters
points (numpy array of shape (n, 3)) – array of points to interpolate to
time (datetime.datetime) – time to interpolate to
rho_or_w (string) – ‘rho’ or ‘w’ to interpolate to rho or w points
- Returns
numpy array of shape (n, num_w_levels) of interpolated values
- interpolation_alphas(points, time, data_shape, surface_boundary_condition=None, bottom_boundary_condition=None, _hash=None, extrapolate=False, **kwargs)[source]
Returns a pair of arrays. The 1st array is of the depth indices of all the points. The 2nd value is an array of the interpolation alphas for the points between their depth index and depth_index+1.
If a depth is between coordinate N and N+1, the index will be N. If a depth is exactly on a coordinate, the index will be N.
Any points that are ‘off grid’ will be subject to the boundary conditions ‘mask’ or ‘extrapolate’. ‘mask’ will mask the index and the alpha of the point. ‘extrapolate’ will set the index to the surface or bottom index, and the alpha to 0 or 1 depending on the orientation of the layers
- property num_r_levels
- property num_w_levels
gridded.gridded module
gridded module:
This module defines the gridded.Dataset – The core class that encapsulates the gridded data model
- class gridded.gridded.Dataset(ncfile=None, grid=None, variables=None, grid_topology=None, attributes=None)[source]
Bases:
object
An object that represent an entire complete dataset – a collection of Variables and the Grid that they are stored on.
- get_variables_by_attribute(attr, value)[source]
return the variables that have attributes that fit the defined input
- Parameters
attr – the name of the attribute you want to match
value – the value of the attribute you want to match
fixme: make this a bit more flexible, more like the netCDF4 version
- property info
Information about the Dataset object
gridded.grids module
- class gridded.grids.Grid[source]
Bases:
object
Factory class that generates grid objects. Also handles common loading and parsing operations
- static from_netCDF(filename=None, dataset=None, grid_type=None, grid_topology=None, _default_types=(('ugrid', <class 'gridded.grids.Grid_U'>), ('sgrid', <class 'gridded.grids.Grid_S'>), ('rgrid', <class 'gridded.grids.Grid_R'>)), *args, **kwargs)[source]
- Parameters
filename – File containing a grid
dataset – Takes precedence over filename, if provided.
grid_type – Must be provided if Dataset does not have a ‘grid_type’ attribute, or valid topology variable
grid_topology – A dictionary mapping of grid attribute to variable name. Takes precedence over discovered attributes
kwargs – All kwargs to SGrid, UGrid, or RGrid are valid, and take precedence over all.
- Returns
Instance of Grid_U, Grid_S, or Grid_R
- class gridded.grids.GridBase(filename=None, *args, **kwargs)[source]
Bases:
object
Base object for grids to share common behavior
- import_variable(variable, location='node')[source]
Takes a Variable or VectorVariable and interpolates the data onto this grid. You may pass a location (‘nodes’, ‘faces’, ‘edge1’, ‘edge2) and the variable will be interpolated there if possible If no location is passed, the variable will be interpolated to the nodes of this grid. If the Variable’s grid and this grid are the same, this function will return the Variable unchanged.
If this grid covers area that the source grid does not, all values in this area will be masked. If regridding from cell centers to the nodes, The values of any border point not within will be equal to the value at the center of the border cell.
- property shape
- class gridded.grids.Grid_R(node_lon=None, node_lat=None, grid_topology=None, node_dimensions=None, node_coordinates=None, *args, **kwargs)[source]
Bases:
GridBase
Rectangular Grid
lon and lat of the nodes are vectors
- property center_lat
- property center_lon
- property centers
- infer_location(variable)[source]
fixme: should first look for “location” attribute.
But now we are checking variable dimensions to which part of the grid it is on.
- interpolate_var_to_points(points, variable, method='linear', indices=None, slices=None, mask=None, **kwargs)[source]
- locate_faces(points)[source]
Returns the node grid indices, one per point.
Points that are not on the node grid will have an index of -1
If a single point is passed in, a single index will be returned. If a sequence of points is passed in an array of indexes will be returned.
- Parameters
points (array-like containing one or more points: shape (2,) for one point, shape (N, 2) for more than one point.) – The points that you want to locate – (lon, lat). If the shape of point is 1D, function will return a scalar index. If it is 2D, it will return a 1D array of indices.
- lonlat_to_yx(variable)[source]
The RegualarGridInterpolator needs to have its two dimensions x and y be associated correctly with lon and lat (or vice versa). The order depends on the orientation in the variable
if the variable provided does not have a dimensions attribute, it will use the dimensions arg
- property nodes
gridded.time module
- class gridded.time.Time(data=(datetime.datetime(2023, 12, 7, 16, 30, 51, 728371),), filename=None, varname=None, tz_offset=None, origin=None, displacement=datetime.timedelta(0), *args, **kwargs)[source]
Bases:
object
- classmethod constant_time()[source]
Returns a Time object that represents no change in time
In practice, that’s a Time object with a single datetime
- property data
- classmethod from_netCDF(filename=None, dataset=None, varname=None, datavar=None, tz_offset=None, **kwargs)[source]
construct a Time object from a netcdf file
- Parameters
filename=None – name of netcddf file
dataset=None – netcdf dataset object (one or the other)
varname=None – name of the netcdf variable
datavar=None – Either the time variable name, or A netcdf variable that needs a Time object. It will try to find the time variable that corresponds to the passed in variable.
tz_offset=None – offset to adjust for timezone, in hours.
- index_of(time, extrapolate=False)[source]
Returns the index of the provided time with respect to the time intervals in the file.
- Parameters
time (datetime.datetime) – Time to be queried
extrapolate (bool) – whether to allow extrapolation: i.e. will not raise if outside the bounds of the time data.
- Returns
index of first time before specified time
- Return type
integer
- property info
Provides info about this Time object
- interp_alpha(time, extrapolate=False)[source]
Returns interpolation alpha for the specified time
This is the weighting to give the index before – 1-alpha would be the weight to the index after.
- property max_time
Last time in series
- Return type
- property min_time
First time in series
- Return type
gridded.utilities module
assorted utility functions needed by gridded
- gridded.utilities.asarraylike(obj)[source]
If it satisfies the requirements of pyugrid the object is returned as is. If not, then numpy’s array() will be called on it.
- Parameters
obj – The object to check if it’s like an array
- gridded.utilities.convert_mask_to_numpy_mask(mask_var)[source]
Converts a netCDF4.Variable representing a mask into a numpy array mask ‘Water’ Values are converted to False (including ‘lake’, ‘river’ etc) ‘land’ values are converted to True
- gridded.utilities.gen_celltree_mask_from_center_mask(center_mask, sl)[source]
Generates celltree face mask from the center mask
- gridded.utilities.get_dataset(ncfile, dataset=None)[source]
Utility to create a netCDF4 Dataset from a filename, list of filenames, or just pass it through if it’s already a netCDF4.Dataset
if dataset is not None, it should be a valid netCDF4 Dataset object, and it will simply be returned
- gridded.utilities.get_dataset_attrs(ds)[source]
get all the attributes of the dataset as a single dict
- Parameters
ds – an open netCDF4.Dataset
- gridded.utilities.get_writable_dataset(ncfile, format='netcdf4')[source]
Utility to create a writable netCDF4 Dataset from a filename, list of filenames, or just pass it through if it’s already a netCDF4.Dataset
if dataset is not None, it should be a valid netCDF4 Dataset object, and it will simply be returned
- gridded.utilities.isarraylike(obj)[source]
tests if obj acts enough like an array to be used in gridded.
This should catch netCDF4 variables and numpy arrays, at least, etc.
Note: these won’t check if the attributes required actually work right.
- gridded.utilities.merge_var_search_dicts(d1, d2)[source]
Values in D1 take precedence over D2 if they are not None :param d1: str -> netCDF4.Variable dict :type d1: dict :param d1: str -> netCDF4.Variable dict :type d2: dict
- Returns
str -> netCDF4.Variable dict
- gridded.utilities.search_dataset_for_any_long_name(ds, names)[source]
Searches a netCDF4.Dataset for any netCDF4.Variable that satisfies one of the search terms. :param name: list of strings or str -> list dictionary
- Returns
boolean
- gridded.utilities.search_dataset_for_variables_by_longname(ds, possible_names)[source]
For each longname list in possible_names, search the Dataset
- Parameters
ds (netCDF4.Dataset) – Dataset
possible_names (dict) – str -> list dictionary
- Returns
str -> netCDF4.Variable dictionary
- gridded.utilities.search_dataset_for_variables_by_varname(ds, possible_names)[source]
For each varname list in possible_names, search the Dataset
- Parameters
ds (netCDF4.Dataset) – Dataset
possible_names (dict) – str -> list dictionary
- Returns
str -> netCDF4.Variable (or None if not found) dictionary
- gridded.utilities.varnames_merge(cls, inc_varnames=None)[source]
Helper function to support the varnames argument pattern.
varnames is a keyword used to specify an association between a desired subcomponent of an object and a desired data source name. It is meant to be a mechanism by which custom digestion of a file can be specified.
gridded.variable module
- class gridded.variable.Variable(name=None, units=None, time=None, data=None, grid=None, depth=None, data_file=None, grid_file=None, varname=None, fill_value=0, location=None, attributes=None, surface_boundary_condition='extrapolate', bottom_boundary_condition='mask', **kwargs)[source]
Bases:
object
Variable object: represents a field of values associated with the grid.
Abstractly, it is usually a scalar physical property such a temperature, salinity that varies over a the domain of the model.
This more or less maps to a variable in a netcdf file, but does not have to come form a netcdf file, and this provides and abstraction where the user can access the value in world coordinates, interpolated from the grid.
It holds a reference to its own grid object, and its data.
- at(points=None, time=None, units=None, extrapolate=False, lons=None, lats=None, unmask=False, _hash=None, _mem=True, **kwargs)[source]
Find the value of the property at positions P at time T
- Parameters
points (Nx3 array of double) – Cartesian coordinates to be queried (P). Lon, Lat required, Depth (Z) is optional Coordinates must be organized as a 2D array or list, one coordinate per row or list element.
[[Lon1, Lat1, Z1],
[Lon2, Lat2, Z2],
[Lon3, Lat3, Z3],
...]
Failure to provide point data in this format may cause unexpected behavior If you wish to provide point data using separate longitude and latitude arrays, use the lons= and lats= kwargs. Note that if your Z is positive-up, self.depth.positive_down should be set to Falsetime (datetime.datetime object) – The time at which to query these points (T)
units (string such as ('m/s', 'knots', etc)) – units the values will be returned in (or converted to)
extrapolate (boolean (default False)) – if True, extrapolation will be supported
unmask (boolean (default False)) – if True and return array is a masked array, returns filled array
surface_boundary_condition (string ('extrapolate' or 'mask', default 'extrapolate')) – specifies how to evaluate points above the depth interval
bottom_boundary_condition (string ('extrapolate' or 'mask', default 'extrapolate')) – specifies how to evaluate points below the depth interval
lons (iterable) – 1D iterable of longitude values. This is ignored if points is provided
:param lats 1D iterable of latitude values. This is ignored if points is provided :type lons: iterable
- Returns
returns a Nx1 array of interpolated values
- Return type
double
- center_values(time, units=None, extrapolate=False)[source]
interpolate data to the center of the cells
- Parameters
time – the time to interpolate at
Warning: NOT COMPLETE
NOTE: what if this data is already on the cell centers?
- cf_names = []
- property data
- property data_shape
- default_names = []
- property dimension_ordering
Returns a list that describes the dimensions of the property’s data. If a dimension_ordering is assigned, it will continue to use that. If no dimension_ordering is set, then a default ordering will be generated based on the object properties and data shape.
For example, if the data has 4 dimensions and is represented by a Grid_S (structured grid), and the Variable has a depth and time assigned, then the assumed ordering is [‘time’,’depth’,’lon’,’lat’]
If the data has 3 dimensions, self.grid is a Grid_S, and self.time is None, then the ordering is [‘depth’,’lon’,’lat’] If the data has 3 dimensions, self.grid is a Grid_U, the ordering is [‘time’,’depth’,’ele’]
- classmethod from_netCDF(filename=None, varname=None, grid_topology=None, name=None, units=None, time=None, time_origin=None, grid=None, depth=None, dataset=None, data_file=None, grid_file=None, location=None, load_all=False, fill_value=0, **kwargs)[source]
Allows one-function creation of a Variable from a file.
- Parameters
filename (string) – Default data source. Has lowest priority. If dataset, grid_file, or data_file are provided, this function uses them first
varname (string) – Explicit name of the data in the data source file. Equivalent to the key used to look the item up directly eg ‘ds[“lon_u”]’ for a netCDF4 Dataset.
grid_topology ({string : string, ...}) – Description of the relationship between grid attributes and variable names.
name (string) – Name of this object
units (string) – string such as ‘m/s’
time ([] of datetime.datetime, netCDF4 Variable, or Time object) – Time axis of the data. May be a constructed
gridded.Time
object, or collection of datetime.datetime objectsdata (netCDF4.Variable or numpy.array) – Underlying data object. May be any array-like, including netCDF4 Variable, etc
grid (pysgrid or pyugrid) – Grid that the data corresponds to
location (string) – The feature where the data aligns with the grid.
depth (Depth, S_Depth or L_Depth) – Depth axis object from
gridded.depth
dataset (netCDF4.Dataset) – Instance of open netCDF4.Dataset
data_file (string) – Name of data source file, if data and grid files are separate
grid_file (string) – Name of grid source file, if data and grid files are separate
- property grid_shape
- property info
Information about the variable object This could be filled out more
- interpolate(points=None, time=None, units=None, extrapolate=False, lons=None, lats=None, unmask=False, _hash=None, _mem=True, **kwargs)
Find the value of the property at positions P at time T
- Parameters
points (Nx3 array of double) – Cartesian coordinates to be queried (P). Lon, Lat required, Depth (Z) is optional Coordinates must be organized as a 2D array or list, one coordinate per row or list element.
[[Lon1, Lat1, Z1],
[Lon2, Lat2, Z2],
[Lon3, Lat3, Z3],
...]
Failure to provide point data in this format may cause unexpected behavior If you wish to provide point data using separate longitude and latitude arrays, use the lons= and lats= kwargs. Note that if your Z is positive-up, self.depth.positive_down should be set to Falsetime (datetime.datetime object) – The time at which to query these points (T)
units (string such as ('m/s', 'knots', etc)) – units the values will be returned in (or converted to)
extrapolate (boolean (default False)) – if True, extrapolation will be supported
unmask (boolean (default False)) – if True and return array is a masked array, returns filled array
surface_boundary_condition (string ('extrapolate' or 'mask', default 'extrapolate')) – specifies how to evaluate points above the depth interval
bottom_boundary_condition (string ('extrapolate' or 'mask', default 'extrapolate')) – specifies how to evaluate points below the depth interval
lons (iterable) – 1D iterable of longitude values. This is ignored if points is provided
:param lats 1D iterable of latitude values. This is ignored if points is provided :type lons: iterable
- Returns
returns a Nx1 array of interpolated values
- Return type
double
- property is_data_on_nodes
- property location
- property time
- property units
Units of underlying data
- Return type
string
- class gridded.variable.VectorVariable(name=None, units=None, time=None, variables=None, grid=None, depth=None, grid_file=None, data_file=None, dataset=None, varnames=None, **kwargs)[source]
Bases:
object
- at(points=None, time=None, units=None, extrapolate=False, lons=None, lats=None, unmask=False, _hash=None, _mem=True, **kwargs)[source]
Find the value of the property at positions P at time T
- Parameters
points (Nx3 array of double) –
Cartesian coordinates to be queried (P). Lon, Lat required, Depth (Z) is optional Coordinates must be organized as a 2D array or list, one coordinate per row or list element.
[[Lon1, Lat1, Z1], [Lon2, Lat2, Z2], [Lon3, Lat3, Z3], ...]
Failure to provide point data in this format may cause unexpected behavior If you wish to provide point data using separate longitude and latitude arrays, use the lons= and lats= kwargs.
Note that if your Z is positive-up, self.depth.positive_down should be set to False
time (datetime.datetime object) – The time at which to query these points (T)
units (string such as ('m/s', 'knots', etc)) – units the values will be returned in (or converted to)
extrapolate (boolean (default False)) – if True, extrapolation will be supported
unmask (boolean (default False)) – if True and return array is a masked array, returns filled array
zero_ref (string 'absolute' or 'relative') – Specifies whether the zero datum moves with zeta or not. Only applicable if depth dimension is present with full sigma layers
lons (iterable) – 1D iterable of longitude values. This is ignored if points is provided
:param lats 1D iterable of latitude values. This is ignored if points is provided :type lons: iterable
- Returns
NxM array of interpolated values N = len(points) M = len(self.variables)
- Return type
np.array or np.ma.MaskedArray
- cf_names = {}
- comp_order = []
- property data_shape
- default_names = {}
- classmethod from_netCDF(filename=None, varnames=None, grid_topology=None, name=None, units=None, time=None, time_origin=None, grid=None, depth=None, data_file=None, grid_file=None, dataset=None, load_all=False, variables=None, **kwargs)[source]
Allows one-function creation of a VectorVariable from a file.
- Parameters
filename (string) – Default data source. Parameters below take precedence
varnames ([] of string) – Names of the variables in the data source file
grid_topology ({string : string, ...}) – Description of the relationship between grid attributes and variable names.
name (string) – Name of property
units (string) – Units
time ([] of datetime.datetime, netCDF4 Variable, or Time object) – Time axis of the data
data (netCDF4.Variable or numpy.array) – Underlying data source
grid (pysgrid or pyugrid) – Grid that the data corresponds with
dataset (netCDF4.Dataset) – Instance of open Dataset
data_file (string) – Name of data source file
grid_file (string) – Name of grid source file
- property is_data_on_nodes
- property location
- property locations
- save(filepath, format='netcdf4')[source]
Save the variable object to a netcdf file.
- Parameters
filepath (string) – path to file you want o save to. or a writable netCDF4 Dataset An existing one If a path, an existing file will be clobbered.
Follows the convention established by the netcdf UGRID working group:
- property time
- property units
Units of underlying data
- Return type
string
- property varnames
Names of underlying variables
- Return type
[] of strings
Module contents
- class gridded.Dataset(ncfile=None, grid=None, variables=None, grid_topology=None, attributes=None)[source]
Bases:
object
An object that represent an entire complete dataset – a collection of Variables and the Grid that they are stored on.
- get_variables_by_attribute(attr, value)[source]
return the variables that have attributes that fit the defined input
- Parameters
attr – the name of the attribute you want to match
value – the value of the attribute you want to match
fixme: make this a bit more flexible, more like the netCDF4 version
- property info
Information about the Dataset object
- class gridded.Grid[source]
Bases:
object
Factory class that generates grid objects. Also handles common loading and parsing operations
- static from_netCDF(filename=None, dataset=None, grid_type=None, grid_topology=None, _default_types=(('ugrid', <class 'gridded.grids.Grid_U'>), ('sgrid', <class 'gridded.grids.Grid_S'>), ('rgrid', <class 'gridded.grids.Grid_R'>)), *args, **kwargs)[source]
- Parameters
filename – File containing a grid
dataset – Takes precedence over filename, if provided.
grid_type – Must be provided if Dataset does not have a ‘grid_type’ attribute, or valid topology variable
grid_topology – A dictionary mapping of grid attribute to variable name. Takes precedence over discovered attributes
kwargs – All kwargs to SGrid, UGrid, or RGrid are valid, and take precedence over all.
- Returns
Instance of Grid_U, Grid_S, or Grid_R
- class gridded.Grid_R(node_lon=None, node_lat=None, grid_topology=None, node_dimensions=None, node_coordinates=None, *args, **kwargs)[source]
Bases:
GridBase
Rectangular Grid
lon and lat of the nodes are vectors
- property center_lat
- property center_lon
- property centers
- infer_location(variable)[source]
fixme: should first look for “location” attribute.
But now we are checking variable dimensions to which part of the grid it is on.
- interpolate_var_to_points(points, variable, method='linear', indices=None, slices=None, mask=None, **kwargs)[source]
- locate_faces(points)[source]
Returns the node grid indices, one per point.
Points that are not on the node grid will have an index of -1
If a single point is passed in, a single index will be returned. If a sequence of points is passed in an array of indexes will be returned.
- Parameters
points (array-like containing one or more points: shape (2,) for one point, shape (N, 2) for more than one point.) – The points that you want to locate – (lon, lat). If the shape of point is 1D, function will return a scalar index. If it is 2D, it will return a 1D array of indices.
- lonlat_to_yx(variable)[source]
The RegualarGridInterpolator needs to have its two dimensions x and y be associated correctly with lon and lat (or vice versa). The order depends on the orientation in the variable
if the variable provided does not have a dimensions attribute, it will use the dimensions arg
- property nodes
- class gridded.Time(data=(datetime.datetime(2023, 12, 7, 16, 30, 51, 728371),), filename=None, varname=None, tz_offset=None, origin=None, displacement=datetime.timedelta(0), *args, **kwargs)[source]
Bases:
object
- classmethod constant_time()[source]
Returns a Time object that represents no change in time
In practice, that’s a Time object with a single datetime
- property data
- classmethod from_netCDF(filename=None, dataset=None, varname=None, datavar=None, tz_offset=None, **kwargs)[source]
construct a Time object from a netcdf file
- Parameters
filename=None – name of netcddf file
dataset=None – netcdf dataset object (one or the other)
varname=None – name of the netcdf variable
datavar=None – Either the time variable name, or A netcdf variable that needs a Time object. It will try to find the time variable that corresponds to the passed in variable.
tz_offset=None – offset to adjust for timezone, in hours.
- index_of(time, extrapolate=False)[source]
Returns the index of the provided time with respect to the time intervals in the file.
- Parameters
time (datetime.datetime) – Time to be queried
extrapolate (bool) – whether to allow extrapolation: i.e. will not raise if outside the bounds of the time data.
- Returns
index of first time before specified time
- Return type
integer
- property info
Provides info about this Time object
- interp_alpha(time, extrapolate=False)[source]
Returns interpolation alpha for the specified time
This is the weighting to give the index before – 1-alpha would be the weight to the index after.
- property max_time
Last time in series
- Return type
- property min_time
First time in series
- Return type
- class gridded.Variable(name=None, units=None, time=None, data=None, grid=None, depth=None, data_file=None, grid_file=None, varname=None, fill_value=0, location=None, attributes=None, surface_boundary_condition='extrapolate', bottom_boundary_condition='mask', **kwargs)[source]
Bases:
object
Variable object: represents a field of values associated with the grid.
Abstractly, it is usually a scalar physical property such a temperature, salinity that varies over a the domain of the model.
This more or less maps to a variable in a netcdf file, but does not have to come form a netcdf file, and this provides and abstraction where the user can access the value in world coordinates, interpolated from the grid.
It holds a reference to its own grid object, and its data.
- at(points=None, time=None, units=None, extrapolate=False, lons=None, lats=None, unmask=False, _hash=None, _mem=True, **kwargs)[source]
Find the value of the property at positions P at time T
- Parameters
points (Nx3 array of double) – Cartesian coordinates to be queried (P). Lon, Lat required, Depth (Z) is optional Coordinates must be organized as a 2D array or list, one coordinate per row or list element.
[[Lon1, Lat1, Z1],
[Lon2, Lat2, Z2],
[Lon3, Lat3, Z3],
...]
Failure to provide point data in this format may cause unexpected behavior If you wish to provide point data using separate longitude and latitude arrays, use the lons= and lats= kwargs. Note that if your Z is positive-up, self.depth.positive_down should be set to Falsetime (datetime.datetime object) – The time at which to query these points (T)
units (string such as ('m/s', 'knots', etc)) – units the values will be returned in (or converted to)
extrapolate (boolean (default False)) – if True, extrapolation will be supported
unmask (boolean (default False)) – if True and return array is a masked array, returns filled array
surface_boundary_condition (string ('extrapolate' or 'mask', default 'extrapolate')) – specifies how to evaluate points above the depth interval
bottom_boundary_condition (string ('extrapolate' or 'mask', default 'extrapolate')) – specifies how to evaluate points below the depth interval
lons (iterable) – 1D iterable of longitude values. This is ignored if points is provided
:param lats 1D iterable of latitude values. This is ignored if points is provided :type lons: iterable
- Returns
returns a Nx1 array of interpolated values
- Return type
double
- center_values(time, units=None, extrapolate=False)[source]
interpolate data to the center of the cells
- Parameters
time – the time to interpolate at
Warning: NOT COMPLETE
NOTE: what if this data is already on the cell centers?
- cf_names = []
- property data
- property data_shape
- default_names = []
- property dimension_ordering
Returns a list that describes the dimensions of the property’s data. If a dimension_ordering is assigned, it will continue to use that. If no dimension_ordering is set, then a default ordering will be generated based on the object properties and data shape.
For example, if the data has 4 dimensions and is represented by a Grid_S (structured grid), and the Variable has a depth and time assigned, then the assumed ordering is [‘time’,’depth’,’lon’,’lat’]
If the data has 3 dimensions, self.grid is a Grid_S, and self.time is None, then the ordering is [‘depth’,’lon’,’lat’] If the data has 3 dimensions, self.grid is a Grid_U, the ordering is [‘time’,’depth’,’ele’]
- classmethod from_netCDF(filename=None, varname=None, grid_topology=None, name=None, units=None, time=None, time_origin=None, grid=None, depth=None, dataset=None, data_file=None, grid_file=None, location=None, load_all=False, fill_value=0, **kwargs)[source]
Allows one-function creation of a Variable from a file.
- Parameters
filename (string) – Default data source. Has lowest priority. If dataset, grid_file, or data_file are provided, this function uses them first
varname (string) – Explicit name of the data in the data source file. Equivalent to the key used to look the item up directly eg ‘ds[“lon_u”]’ for a netCDF4 Dataset.
grid_topology ({string : string, ...}) – Description of the relationship between grid attributes and variable names.
name (string) – Name of this object
units (string) – string such as ‘m/s’
time ([] of datetime.datetime, netCDF4 Variable, or Time object) – Time axis of the data. May be a constructed
gridded.Time
object, or collection of datetime.datetime objectsdata (netCDF4.Variable or numpy.array) – Underlying data object. May be any array-like, including netCDF4 Variable, etc
grid (pysgrid or pyugrid) – Grid that the data corresponds to
location (string) – The feature where the data aligns with the grid.
depth (Depth, S_Depth or L_Depth) – Depth axis object from
gridded.depth
dataset (netCDF4.Dataset) – Instance of open netCDF4.Dataset
data_file (string) – Name of data source file, if data and grid files are separate
grid_file (string) – Name of grid source file, if data and grid files are separate
- property grid_shape
- property info
Information about the variable object This could be filled out more
- interpolate(points=None, time=None, units=None, extrapolate=False, lons=None, lats=None, unmask=False, _hash=None, _mem=True, **kwargs)
Find the value of the property at positions P at time T
- Parameters
points (Nx3 array of double) – Cartesian coordinates to be queried (P). Lon, Lat required, Depth (Z) is optional Coordinates must be organized as a 2D array or list, one coordinate per row or list element.
[[Lon1, Lat1, Z1],
[Lon2, Lat2, Z2],
[Lon3, Lat3, Z3],
...]
Failure to provide point data in this format may cause unexpected behavior If you wish to provide point data using separate longitude and latitude arrays, use the lons= and lats= kwargs. Note that if your Z is positive-up, self.depth.positive_down should be set to Falsetime (datetime.datetime object) – The time at which to query these points (T)
units (string such as ('m/s', 'knots', etc)) – units the values will be returned in (or converted to)
extrapolate (boolean (default False)) – if True, extrapolation will be supported
unmask (boolean (default False)) – if True and return array is a masked array, returns filled array
surface_boundary_condition (string ('extrapolate' or 'mask', default 'extrapolate')) – specifies how to evaluate points above the depth interval
bottom_boundary_condition (string ('extrapolate' or 'mask', default 'extrapolate')) – specifies how to evaluate points below the depth interval
lons (iterable) – 1D iterable of longitude values. This is ignored if points is provided
:param lats 1D iterable of latitude values. This is ignored if points is provided :type lons: iterable
- Returns
returns a Nx1 array of interpolated values
- Return type
double
- property is_data_on_nodes
- property location
- property time
- property units
Units of underlying data
- Return type
string
- class gridded.VectorVariable(name=None, units=None, time=None, variables=None, grid=None, depth=None, grid_file=None, data_file=None, dataset=None, varnames=None, **kwargs)[source]
Bases:
object
- at(points=None, time=None, units=None, extrapolate=False, lons=None, lats=None, unmask=False, _hash=None, _mem=True, **kwargs)[source]
Find the value of the property at positions P at time T
- Parameters
points (Nx3 array of double) –
Cartesian coordinates to be queried (P). Lon, Lat required, Depth (Z) is optional Coordinates must be organized as a 2D array or list, one coordinate per row or list element.
[[Lon1, Lat1, Z1], [Lon2, Lat2, Z2], [Lon3, Lat3, Z3], ...]
Failure to provide point data in this format may cause unexpected behavior If you wish to provide point data using separate longitude and latitude arrays, use the lons= and lats= kwargs.
Note that if your Z is positive-up, self.depth.positive_down should be set to False
time (datetime.datetime object) – The time at which to query these points (T)
units (string such as ('m/s', 'knots', etc)) – units the values will be returned in (or converted to)
extrapolate (boolean (default False)) – if True, extrapolation will be supported
unmask (boolean (default False)) – if True and return array is a masked array, returns filled array
zero_ref (string 'absolute' or 'relative') – Specifies whether the zero datum moves with zeta or not. Only applicable if depth dimension is present with full sigma layers
lons (iterable) – 1D iterable of longitude values. This is ignored if points is provided
:param lats 1D iterable of latitude values. This is ignored if points is provided :type lons: iterable
- Returns
NxM array of interpolated values N = len(points) M = len(self.variables)
- Return type
np.array or np.ma.MaskedArray
- cf_names = {}
- comp_order = []
- property data_shape
- default_names = {}
- classmethod from_netCDF(filename=None, varnames=None, grid_topology=None, name=None, units=None, time=None, time_origin=None, grid=None, depth=None, data_file=None, grid_file=None, dataset=None, load_all=False, variables=None, **kwargs)[source]
Allows one-function creation of a VectorVariable from a file.
- Parameters
filename (string) – Default data source. Parameters below take precedence
varnames ([] of string) – Names of the variables in the data source file
grid_topology ({string : string, ...}) – Description of the relationship between grid attributes and variable names.
name (string) – Name of property
units (string) – Units
time ([] of datetime.datetime, netCDF4 Variable, or Time object) – Time axis of the data
data (netCDF4.Variable or numpy.array) – Underlying data source
grid (pysgrid or pyugrid) – Grid that the data corresponds with
dataset (netCDF4.Dataset) – Instance of open Dataset
data_file (string) – Name of data source file
grid_file (string) – Name of grid source file
- property is_data_on_nodes
- property location
- property locations
- save(filepath, format='netcdf4')[source]
Save the variable object to a netcdf file.
- Parameters
filepath (string) – path to file you want o save to. or a writable netCDF4 Dataset An existing one If a path, an existing file will be clobbered.
Follows the convention established by the netcdf UGRID working group:
- property time
- property units
Units of underlying data
- Return type
string
- property varnames
Names of underlying variables
- Return type
[] of strings