def check_timeseries_id(self, dataset): ''' Checks that if a variable exists for the time series id it has the appropriate attributes :param netCDF4.Dataset dataset: An open netCDF dataset ''' results = [] required_ctx = TestCtx(BaseCheck.HIGH, 'Required variable for time series identifier') recommended_ctx = TestCtx(BaseCheck.MEDIUM, 'Recommended attributes for the timeSeries variable') # A variable with cf_role="timeseries_id" MUST exist for this to be a valid timeseries incomplete timeseries_ids = dataset.get_variables_by_attributes(cf_role='timeseries_id') required_ctx.assert_true(timeseries_ids, 'a unique variable must define attribute cf_role="timeseries_id"') results.append(required_ctx.to_result()) if not timeseries_ids: return results timevar = util.get_time_variable(dataset) nc_timevar = dataset.variables[timevar] time_dimensions = nc_timevar.dimensions timeseries_variable = timeseries_ids[0] dims = timeseries_variable.dimensions required_ctx.assert_true( time_dimensions and time_dimensions[0] == dims[0], '{} must have a dimension and that dimension must be shared by the time variable'.format(timeseries_variable.name) ) recommended_ctx.assert_true( getattr(timeseries_variable, 'long_name', '') != "", "long_name attribute should exist and not be empty" ) results.append(recommended_ctx.to_result()) return results
def check_dimensions(self, dataset): """ Checks that the feature types of this dataset are consitent with a point dataset """ required_ctx = TestCtx(BaseCheck.HIGH, "All geophysical variables are point feature types") t = util.get_time_variable(dataset) # Exit prematurely if not t: required_ctx.assert_true(False, "A dimension representing time is required for point feature types") return required_ctx.to_result() t_dims = dataset.variables[t].dimensions o = None or (t_dims and t_dims[0]) message = "{} must be a valid timeseries feature type. It must have dimensions of ({}), and all coordinates must have dimensions of ({})" for variable in util.get_geophysical_variables(dataset): is_valid = util.is_point(dataset, variable) required_ctx.assert_true(is_valid, message.format(variable, o, o)) return required_ctx.to_result()
def check_timeseries_id(self, dataset): ''' Checks that if a variable exists for the time series id it has the appropriate attributes :param netCDF4.Dataset dataset: An open netCDF dataset ''' results = [] required_ctx = TestCtx(BaseCheck.HIGH, 'Required variable for time series identifier') recommended_ctx = TestCtx( BaseCheck.MEDIUM, 'Recommended attributes for the timeSeries variable') # A variable with cf_role="timeseries_id" MUST exist for this to be a valid timeseries incomplete timeseries_ids = dataset.get_variables_by_attributes( cf_role='timeseries_id') required_ctx.assert_true( timeseries_ids, 'a unique variable must define attribute cf_role="timeseries_id"') results.append(required_ctx.to_result()) if not timeseries_ids: return results timevar = util.get_time_variable(dataset) nc_timevar = dataset.variables[timevar] time_dimensions = nc_timevar.dimensions timeseries_variable = timeseries_ids[0] dims = timeseries_variable.dimensions required_ctx.assert_true( time_dimensions and time_dimensions[0] == dims[0], '{} must have a dimension and that dimension must be shared by the time variable' .format(timeseries_variable.name)) recommended_ctx.assert_true( getattr(timeseries_variable, 'long_name', '') != "", "long_name attribute should exist and not be empty") results.append(recommended_ctx.to_result()) return results
def check_dimensions(self, dataset): ''' Checks that the feature types of this dataset are consitent with a point dataset ''' required_ctx = TestCtx( BaseCheck.HIGH, 'All geophysical variables are point feature types') t = util.get_time_variable(dataset) # Exit prematurely if not t: required_ctx.assert_true( False, 'A dimension representing time is required for point feature types' ) return required_ctx.to_result() t_dims = dataset.variables[t].dimensions o = None or (t_dims and t_dims[0]) message = '{} must be a valid timeseries feature type. It must have dimensions of ({}), and all coordinates must have dimensions of ({})' for variable in util.get_geophysical_variables(dataset): is_valid = util.is_point(dataset, variable) required_ctx.assert_true(is_valid, message.format(variable, o, o)) return required_ctx.to_result()