diff --git a/QAQC/coordinate_variables.toml b/QAQC/coordinate_variables.toml new file mode 100644 index 000000000..a8a4a0e76 --- /dev/null +++ b/QAQC/coordinate_variables.toml @@ -0,0 +1,1197 @@ +# ============================================================================== +# == Metadata checks applied to all coordinate variables +# ============================================================================== + +[coordinates.bounds] +# Checks VAR004 +severity = "H" + +[coordinates.dimensions] +# Checks VAR002 DIM001 DIM002 DIM003 +severity = "H" + +# ============================================================================== +# == Metadata checks applied to latitude coordinate +# ============================================================================== + +[coordinates.latitude.name] +# Checks VAR001 +severity = "H" +variable_name = "lat" + +[coordinates.latitude.type] +# Checks VAR001 +severity = "H" +data_type = "double" + +[coordinates.latitude.monotonicity] +# Checks VAR005 +severity = "H" +direction = "increasing" + +[coordinates.latitude.attributes.axis] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "Y" + +[coordinates.latitude.attributes.standard_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "latitude" + +[coordinates.latitude.attributes.units] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "degrees_north" + +[coordinates.latitude.attributes.bounds] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +as_variable = true + +# ============================================================================== +# == Metadata checks applied to longitude coordinate +# ============================================================================== + +[coordinates.longitude.name] +# Checks VAR001 +severity = "H" +variable_name = "lon" + +[coordinates.longitude.type] +# Checks VAR005 +severity = "H" +data_type = "double" + +[coordinates.longitude.monotonicity] +# Checks VAR005 +severity = "H" +direction = "increasing" + +[coordinates.longitude.attributes.axis] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "X" + +[coordinates.longitude.attributes.standard_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "longitude" + +[coordinates.longitude.attributes.units] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "degrees_east" + +[coordinates.longitude.attributes.bounds] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +as_variable = true + +# ============================================================================== +# == Metadata checks applied to air pressure coordinate +# ============================================================================== + +[coordinates.air_pressure.name] +# Checks VAR001 +severity = "H" +variable_name = "plev" + +[coordinates.air_pressure.type] +# Checks VAR001 +severity = "H" +data_type = "double" + +[coordinates.air_pressure.monotonicity] +# Checks VAR005 +severity = "H" +direction = "decreasing" + +[coordinates.air_pressure.attributes.axis] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "Z" + +[coordinates.air_pressure.attributes.standard_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "air_pressure" + +[coordinates.air_pressure.attributes.units] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "Pa" + +[coordinates.air_pressure.attributes.bounds] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = false +as_variable = true + +[coordinates.air_pressure.attributes.positive] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "down" + +# ============================================================================== +# == Metadata checks applied to height coordinate +# ============================================================================== + +[coordinates.height.name] +# Checks VAR001 +severity = "H" +variable_name = "height" + +[coordinates.height.type] +# Checks VAR001 +severity = "H" +data_type = "double" + +[coordinates.height.monotonicity] +# Checks VAR005 +severity = "H" +direction = "increasing" + +[coordinates.height.attributes.axis] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "Z" + +[coordinates.height.attributes.standard_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "height" + +[coordinates.height.attributes.units] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "m" + +[coordinates.height.attributes.positive] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "up" + +# ============================================================================== +# == Metadata checks applied to depth coordinate +# ============================================================================== + +[coordinates.depth.name] +# Checks VAR001 +severity = "H" +variable_name = "depth" + +[coordinates.depth.type] +# Checks VAR001 +severity = "H" +data_type = "double" + +[coordinates.depth.monotonicity] +# Checks VAR005 +severity = "H" +direction = "increasing" + +[coordinates.depth.attributes.axis] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "Z" + +[coordinates.depth.attributes.standard_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "depth" + +[coordinates.depth.attributes.units] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +enum = ["m", "cm"] + +[coordinates.depth.attributes.bounds] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = false +as_variable = true + +[coordinates.depth.attributes.positive] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "down" + +# ============================================================================== +# == Metadata checks applied to wavelength coordinate +# ============================================================================== + +[coordinates.wavelength.name] +# Checks VAR001 +severity = "H" +variable_name = "wavelength" + +[coordinates.wavelength.type] +# Checks VAR001 +severity = "H" +data_type = "double" + +[coordinates.wavelength.attributes.standard_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "radiation_wavelength" + +[coordinates.wavelength.attributes.units] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "nm" + +# ============================================================================== +# == Metadata checks applied to scattering angle coordinate +# ============================================================================== + +[coordinates.scatangle.name] +# Checks VAR001 +severity = "H" +variable_name = "scatangle" + +[coordinates.scatangle.type] +# Checks VAR001 +severity = "H" +data_type = "double" + +[coordinates.scatangle.attributes.standard_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "scattering_angle" + +[coordinates.scatangle.attributes.units] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "degree" + +# ============================================================================== +# == Metadata checks applied to type coordinate +# ============================================================================== + +[coordinates.type.name] +# Checks VAR001 +severity = "H" +variable_name = "type" + +[coordinates.type.type] +# Checks VAR001 +severity = "H" +data_type = "str" + +[coordinates.type.attributes.standard_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "area_type" + +# ============================================================================== +# == Metadata checks applied to basin coordinate +# ============================================================================== + +[coordinates.basin.name] +# Checks VAR001 +severity = "H" +variable_name = "basin" + +[coordinates.basin.type] +# Checks VAR001 +severity = "H" +data_type = "str" + +[coordinates.basin.attributes.standard_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "region" + +# ============================================================================== +# == Metadata checks applied to reflectivity coordinate +# ============================================================================== + +[coordinates.reflectivity.name] +# Checks VAR001 +severity = "H" +variable_name = "dbze" + +[coordinates.reflectivity.type] +# Checks VAR001 +severity = "H" +data_type = "double" + +[coordinates.reflectivity.monotonicity] +# Checks VAR005 +severity = "H" +direction = "increasing" + +[coordinates.reflectivity.attributes.standard_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "equivalent_reflectivity_factor" + +[coordinates.reflectivity.attributes.units] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "dBZ" + +[coordinates.reflectivity.attributes.bounds] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +as_variable = true + +# ============================================================================== +# == Metadata checks applied to line coordinate +# ============================================================================== + +[coordinates.line.name] +# Checks VAR001 +severity = "H" +variable_name = "line" + +[coordinates.line.type] +# Checks VAR001 +severity = "H" +data_type = "str" + +[coordinates.line.attributes.standard_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "region" + +# ============================================================================== +# == Metadata checks applied to backscattering ratio coordinate +# ============================================================================== + +[coordinates.scatratio.name] +# Checks VAR001 +severity = "H" +variable_name = "scatratio" + +[coordinates.scatratio.type] +# Checks VAR001 +severity = "H" +data_type = "double" + +[coordinates.scatratio.monotonicity] +# Checks VAR005 +severity = "H" +direction = "increasing" + +[coordinates.scatratio.attributes.standard_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "backscattering_ratio" + +[coordinates.scatratio.attributes.units] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "1" + +[coordinates.scatratio.attributes.bounds] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +as_variable = true + +# ============================================================================== +# == Metadata checks applied to optical thickness coordinate +# ============================================================================== + +[coordinates.tau.name] +# Checks VAR001 +severity = "H" +variable_name = "tau" + +[coordinates.tau.type] +# Checks VAR001 +severity = "H" +data_type = "double" + +[coordinates.tau.monotonicity] +# Checks VAR005 +severity = "H" +direction = "increasing" + +[coordinates.tau.attributes.standard_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "atmosphere_optical_thickness_due_to_cloud" + +[coordinates.tau.attributes.units] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "1" + +[coordinates.tau.attributes.bounds] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +as_variable = true + +# ============================================================================== +# == Metadata checks applied to Antarctic X-coordinate +# ============================================================================== + +[coordinates.xant.name] +# Checks VAR001 +severity = "H" +variable_name = "xant" + +[coordinates.xant.type] +# Checks VAR001 +severity = "H" +data_type = "double" + +[coordinates.xant.attributes.axis] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "X" + +[coordinates.xant.attributes.standard_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "projection_x_coordinate" + +[coordinates.xant.attributes.units] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "km" + +# ============================================================================== +# == Metadata checks applied to Greenland X-coordinate +# ============================================================================== + +[coordinates.xgre.name] +# Checks VAR001 +severity = "H" +variable_name = "xgre" + +[coordinates.xgre.type] +# Checks VAR001 +severity = "H" +data_type = "double" + +[coordinates.xgre.attributes.axis] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "X" + +[coordinates.xgre.attributes.standard_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "projection_x_coordinate" + +[coordinates.xgre.attributes.units] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "km" + +# ============================================================================== +# == Metadata checks applied to Antarctic Y-coordinate +# ============================================================================== + +[coordinates.yant.name] +# Checks VAR001 +severity = "H" +variable_name = "yant" + +[coordinates.yant.type] +# Checks VAR001 +severity = "H" +data_type = "double" + +[coordinates.yant.attributes.axis] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "Y" + +[coordinates.yant.attributes.standard_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "projection_y_coordinate" + +[coordinates.yant.attributes.units] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "km" + +# ============================================================================== +# == Metadata checks applied to Greenland Y-coordinate +# ============================================================================== + +[coordinates.ygre.name] +# Checks VAR001 +severity = "H" +variable_name = "ygre" + +[coordinates.ygre.type] +# Checks VAR001 +severity = "H" +data_type = "double" + +[coordinates.ygre.attributes.axis] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "Y" + +[coordinates.ygre.attributes.standard_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "projection_y_coordinate" + +[coordinates.ygre.attributes.units] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "km" + +# ============================================================================== +# == Metadata checks applied to grid latitude coordinate +# ============================================================================== + +[coordinates.rlat.name] +# Checks VAR001 +severity = "H" +variable_name = "rlat" + +[coordinates.rlat.type] +# Checks VAR001 +severity = "H" +data_type = "double" + +[coordinates.rlat.monotonicity] +# Checks VAR005 +severity = "H" +direction = "increasing" + +[coordinates.rlat.attributes.axis] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "Y" + +[coordinates.rlat.attributes.standard_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "grid_latitude" + +[coordinates.rlat.attributes.units] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "degrees" + +[coordinates.rlat.attributes.bounds] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +as_variable = true + +# ============================================================================== +# == Metadata checks applied to grid longitude coordinate +# ============================================================================== + +[coordinates.rlon.name] +# Checks VAR001 +severity = "H" +variable_name = "rlon" + +[coordinates.rlon.type] +# Checks VAR001 +severity = "H" +data_type = "double" + +[coordinates.rlon.monotonicity] +# Checks VAR005 +severity = "H" +direction = "increasing" + +[coordinates.rlon.attributes.axis] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "X" + +[coordinates.rlon.attributes.standard_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "grid_longitude" + +[coordinates.rlon.attributes.units] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "degrees" + +[coordinates.rlon.attributes.bounds] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +as_variable = true + +# ============================================================================== +# == Metadata checks applied to potential density coordinate +# ============================================================================== + +[coordinates.rho.name] +# Checks VAR001 +severity = "H" +variable_name = "rho" + +[coordinates.rho.type] +# Checks VAR001 +severity = "H" +data_type = "double" + +[coordinates.rho.monotonicity] +# Checks VAR005 +severity = "H" +direction = "increasing" + +[coordinates.rho.attributes.axis] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "Z" + +[coordinates.rho.attributes.standard_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "sea_water_potential_density" + +[coordinates.rho.attributes.units] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "kg m-3" + +[coordinates.rho.attributes.bounds] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +as_variable = true + +[coordinates.rho.attributes.positive] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "down" + +# ============================================================================== +# == Metadata checks applied to spectral frequency coordinate +# ============================================================================== + +[coordinates.spectband.name] +# Checks VAR001 +severity = "H" +variable_name = "spectband" + +[coordinates.spectband.type] +# Checks VAR001 +severity = "H" +data_type = "double" + +[coordinates.spectband.attributes.standard_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "sensor_band_central_radiation_wavenumber" + +[coordinates.spectband.attributes.units] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "m-1" + +[coordinates.spectband.attributes.bounds] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +as_variable = true + +# ============================================================================== +# == Metadata checks applied to time coordinate +# ============================================================================== + +[coordinates.time.name] +# Checks VAR001 +severity = "H" +variable_name = "time" + +[coordinates.time.type] +# Checks VAR001 +severity = "H" +data_type = "double" + +[coordinates.time.monotonicity] +# Checks VAR005 +severity = "H" +direction = "increasing" + +[coordinates.time.attributes.axis] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "T" + +[coordinates.time.attributes.standard_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "time" + +[coordinates.time.attributes.calendar] +# Checks TIME003 ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +enum = [ + "gregorian", + "proleptic_gregorian", + "noleap", + "365_day", + "all_leap", + "366_day", + "360_day", + "utc", + "tai", +] + +[coordinates.time.attributes.units] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +pattern = "^days since [0-9]{4}-[0-9]{1,2}-[0-9]{1,2}" + +[coordinates.time.attributes.bounds] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = false +as_variable = true + +[coordinates.time.squareness] +# Check TIME001 +severity = "H" +ref_calendar = "" +ref_time_units = "" +ref_increment = "" + +[coordinates.time.coverage] +# Checks TIME002 +severity = "H" + +# ============================================================================== +# == Metadata checks applied to model coordinate +# ============================================================================== + +[coordinates.lev.name] +# Checks VAR001 +severity = "H" +variable_name = "lev" + +[coordinates.lev.type] +# Checks VAR001 +severity = "H" +data_type = "double" + +[coordinates.lev.monotonicity] +# Checks VAR005 +severity = "H" +direction = "increasing" + +[coordinates.lev.attributes.axis] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "Z" + +[coordinates.lev.attributes.bounds] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = false +as_variable = true + +[coordinates.lev.attributes.positive] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +enum = ["up", "down"] + +# ============================================================================== +# == Metadata checks applied to ice depth coordinate +# ============================================================================== + +[coordinates.iceband.name] +# Checks VAR001 +severity = "H" +variable_name = "iceband" + +[coordinates.iceband.type] +# Checks VAR001 +severity = "H" +data_type = "double" + +[coordinates.iceband.attributes.standard_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "sea_ice_thickness" + +[coordinates.iceband.attributes.units] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "m" + +[coordinates.iceband.attributes.bounds] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +as_variable = true + +# ============================================================================== +# == Metadata checks applied to land use coordinate +# ============================================================================== + +[coordinates.landuse.name] +# Checks VAR001 +severity = "H" +variable_name = "landuse" + +[coordinates.landuse.type] +# Checks VAR001 +severity = "H" +data_type = "str" + +[coordinates.landuse.attributes.standard_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "area_type" + +# ============================================================================== +# == Metadata checks applied to zenith angle coordinate +# ============================================================================== + +[coordinates.sza.name] +# Checks VAR001 +severity = "H" +variable_name = "sza" + +[coordinates.sza.type] +# Checks VAR001 +severity = "H" +data_type = "double" + +[coordinates.sza.monotonicity] +# Checks VAR005 +severity = "H" +direction = "increasing" + +[coordinates.sza.attributes.standard_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "solar_zenith_angle" + +[coordinates.sza.attributes.units] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "degree" + +# ============================================================================== +# == Metadata checks applied to altitude coordinate +# ============================================================================== + +[coordinates.alt.name] +# Checks VAR001 +severity = "H" +variable_name = "alt" + +[coordinates.alt.type] +# Checks VAR001 +severity = "H" +data_type = "double" + +[coordinates.alt.monotonicity] +# Checks VAR005 +severity = "H" +direction = "increasing" + +[coordinates.alt.attributes.axis] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "Z" + +[coordinates.alt.attributes.standard_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "altitude" + +[coordinates.alt.attributes.units] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "m" + +[coordinates.alt.attributes.bounds] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +as_variable = true + +[coordinates.alt.attributes.positive] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "up" + +# ============================================================================== +# == Metadata checks applied to hydrostatic pressure coordinate +# ============================================================================== + +[coordinates.pdepth.name] +# Checks VAR001 +severity = "H" +variable_name = "pdepth" + +[coordinates.pdepth.type] +# Checks VAR001 +severity = "H" +data_type = "double" + +[coordinates.pdepth.monotonicity] +# Checks VAR005 +severity = "H" +direction = "increasing" + +[coordinates.pdepth.attributes.axis] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "Z" + +[coordinates.pdepth.attributes.standard_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "sea_water_pressure_due_to_sea_water" + +[coordinates.pdepth.attributes.units] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "bar" + +[coordinates.pdepth.attributes.bounds] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = false +as_variable = true + +[coordinates.pdepth.attributes.positive] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "down" + +# ============================================================================== +# == Metadata checks applied to relative humidity coordinate +# ============================================================================== + +[coordinates.hur.name] +# Checks VAR001 +severity = "H" +variable_name = "hur" + +[coordinates.hur.type] +# Checks VAR001 +severity = "H" +data_type = "double" + +[coordinates.hur.attributes.standard_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "relative_humidity" + +[coordinates.hur.attributes.units] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "%" + +# ============================================================================== +# == Metadata checks applied to soil temperature coordinate +# ============================================================================== + +[coordinates.tsl0degC.name] +# Checks VAR001 +severity = "H" +variable_name = "tsl0degC" + +[coordinates.tsl0degC.type] +# Checks VAR001 +severity = "H" +data_type = "double" + +[coordinates.tsl0degC.attributes.axis] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "Z" + +[coordinates.tsl0degC.attributes.standard_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "soil_temperature" + +[coordinates.tsl0degC.attributes.units] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +constant = "degC" diff --git a/QAQC/drs.toml b/QAQC/drs.toml new file mode 100644 index 000000000..97be3da74 --- /dev/null +++ b/QAQC/drs.toml @@ -0,0 +1,19 @@ +# ============================================================================== +# == Data Reference Syntax checks +# ============================================================================== + +[drs.filename] +# Check FILE001 +severity = "H" + +[drs.directory] +# Check PATH003 +severity = "H" + +[drs.attributes_vs_directory] +# Checks PATH001 +severity = "H" + +[drs.filename_vs_directory] +# Check PATH002 +severity = "H" diff --git a/QAQC/file.toml b/QAQC/file.toml new file mode 100644 index 000000000..c66c6ac52 --- /dev/null +++ b/QAQC/file.toml @@ -0,0 +1,15 @@ +# ============================================================================== +# == File checks +# ============================================================================== + +[file.format] +# Check FILE002 +severity = "H" +expected_format = "HDF5" +expected_data_model = "NETCDF4_CLASSIC" + +[file.compression] +# Check FILE003 +severity = "H" +expected_complevel = 1 +expected_shuffle = true diff --git a/QAQC/geophysical_variable.toml b/QAQC/geophysical_variable.toml new file mode 100644 index 000000000..27ae41556 --- /dev/null +++ b/QAQC/geophysical_variable.toml @@ -0,0 +1,120 @@ +# ============================================================================== +# == Geophysical variable metadata checks +# ============================================================================== + +[variable.existence] +# Checks VAR001 +severity = "H" + +[variable.type] +# Checks VAR005 +severity = "H" +data_type = "float" + +[variable.dimensions] +# Checks VAR006 VAR002 DIM001 DIM002 DIM003 +severity = "H" + +# ============================================================================== +# == Geophysical variable attributes checks +# ============================================================================== + +[variable.attributes.long_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "M" +value_type = "str" +is_required = true +cv_source_term_key = "long_name" + +[variable.attributes.standard_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +cv_source_term_key = "cf_standard_name" + +[variable.attributes.units] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +cv_source_term_key = "units" + +[variable.attributes.cell_methods] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "M" +value_type = "str" +is_required = true +cv_source_term_key = "cell_methods" + +[variable.attributes.cell_measures] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "M" +value_type = "str" +is_required = true +cv_source_term_key = "cell_measures" + +[variable.attributes.history] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "L" +value_type = "str" +is_required = false +pattern = ".*" + +[variable.attributes.comment] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "L" +value_type = "str" +is_required = false +pattern = ".*" + +[variable.attributes.description] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "L" +value_type = "str" +is_required = false +pattern = ".*" + +[variable.attributes.fill_value] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "float" +is_required = true +constant = 1.0e20 + +[variable.attributes.missing_value] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "float" +is_required = true +constant = 1.0e20 +# A valider ? +#threshold = "1.0e20" +#is_above_threshold = true + +[variable.attributes.scale_factor] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "float" +is_required = true + +[variable.attributes.add_offset] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "float" +is_required = true + +[variable.attributes.deflated_level] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +attribute_name = "_DeflateLevel" +severity = "H" +value_type = "int" +is_required = false +is_postive = true + +[variable.attributes.coordinates] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = false +as_variable = true diff --git a/QAQC/global_attributes.toml b/QAQC/global_attributes.toml new file mode 100644 index 000000000..00ba50832 --- /dev/null +++ b/QAQC/global_attributes.toml @@ -0,0 +1,347 @@ +# ============================================================================== +# == Global attributes checks +# ============================================================================== + +[global.attributes.activity_id] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +cv_source_collection = "activity" + +[global.attributes.area_label] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +cv_source_collection = "area_label" + +[global.attributes.branded_variable] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +cv_source_collection = "branded_variable" + +[global.attributes.branding_suffix] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +cv_source_collection = "branding_suffix" + +[global.attributes.branch_time_in_child] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "double" +is_required = false + +[global.attributes.branch_time_in_parent] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "double" +is_required = false + +[global.attributes.cmip6_compound_name] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "L" +value_type = "str" +is_required = false +pattern = ".*" + +[global.attributes.conventions] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +attribute_name = "Conventions" +severity = "H" +value_type = "str" +is_required = true +cv_source_collection = "conventions" + +[global.attributes.creation_date] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "L" +value_type = "str" +is_required = true +cv_source_collection = "creation_date" + +[global.attributes.data_specs_version] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +cv_source_collection = "data_specs_version" + +[global.attributes.drs_specs] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +cv_source_collection = "drs_specs" + +[global.attributes.experiment] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "M" +value_type = "str" +is_required = false +cv_source_collection = "experiment" +cv_source_collection_key = "description" + +[global.attributes.experiment_id] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +cv_source_collection = "experiment" + +[global.attributes.external_variables] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = false +cv_source_collection = "archive" + +[global.attributes.forcing_index] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true + +[global.attributes.frequency] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +cv_source_collection = "frequency" + +[global.attributes.grid_label] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +cv_source_collection = "grid_label" + +[global.attributes.horizontal_label] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +cv_source_collection = "horizontal_label" + +[global.attributes.initialization_index] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true + +[global.attributes.institution] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "M" +value_type = "str" +is_required = false +cv_source_collection = "institution" +cv_source_collection_key = "description" + +[global.attributes.institution_id] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +cv_source_collection = "institution" + +[global.attributes.license] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "L" +value_type = "str" +is_required = false +pattern = ".*" + +[global.attributes.license_id] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +cv_source_collection = "license" + +[global.attributes.mip_era] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +cv_source_collection = "mip_era" + +[global.attributes.nominal_resolution] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +cv_source_collection = "nominal_resolution" + +[global.attributes.parent_activity_id] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = false +cv_source_collection = "activity" + +[global.attributes.parent_experiment_id] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = false +cv_source_collection = "experiment" + +[global.attributes.parent_mip_era] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = false +cv_source_collection = "mip_era" + +[global.attributes.parent_source_id] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = false +cv_source_collection = "source" + +[global.attributes.parent_time_units] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +pattern = '^days since [0-9]{4}-[0-9]{1,2}-[0-9]{1,2} \((gregorian|standard|proleptic_gregorian|julian|noleap|365_day|all_leap|366_day|360_day|utc|tai)\)$' +severity = "H" +value_type = "str" +is_required = false + +[global.attributes.parent_variant_label] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = false +cv_source_collection = "variant_label" + +[global.attributes.physics_index] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true + +[global.attributes.product] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +cv_source_collection = "product" + +[global.attributes.realization_index] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "int" +is_required = true + +[global.attributes.realm] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +cv_source_collection = "realm" + +[global.attributes.references] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "L" +value_type = "str" +is_required = false +pattern = ".*" + +[global.attributes.region] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +cv_source_collection = "region" + +[global.attributes.source] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "L" +value_type = "str" +is_required = false +cv_source_collection = "source" +cv_source_collection_key = "description" + +[global.attributes.source_id] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +cv_source_collection = "source" + +[global.attributes.temporal_label] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +cv_source_collection = "temporal_label" + +[global.attributes.title] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "L" +value_type = "str" +is_required = false +pattern = ".*" + +[global.attributes.tracking_id] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +cv_source_collection = "tracking_id" + +[global.attributes.variable_id] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +cv_source_collection = "variable" + +[global.attributes.variant_info] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "L" +value_type = "str" +is_required = false +pattern = ".*" + +[global.attributes.variant_label] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +cv_source_collection = "variant_label" + +[global.attributes.vertical_label] +# Checks ATTR001 ATTR002 ATTR003 ATTR004 +severity = "H" +value_type = "str" +is_required = true +cv_source_collection = "vertical_label" + +# ============================================================================== +# == Global attributes consistency Checks +# ============================================================================== + +[global.consistency.filename_vs_attributes] +# Check ATTR005 +severity = "H" + +[global.consistency.experiment_properties] +# Check ATTR007 +severity = "H" + +[global.consistency.institution_properties] +# Check ATTR009 +severity = "H" + +[global.consistency.source_properties] +# Check ATTR010 +severity = "H" + +[global.consistency.variant_properties] +# Check ATTR006 +severity = "H" diff --git a/QAQC/project.toml b/QAQC/project.toml new file mode 100644 index 000000000..74b0482f6 --- /dev/null +++ b/QAQC/project.toml @@ -0,0 +1,7 @@ +# ============================================================================== +# CMIP7 configuration files +# ============================================================================== +# To be Consistent with https://zenodo.org/records/17250297 +# Documentation & check inventory at https://esgf.github.io/cc-plugin-wcrp/checks/ +project_name = "cmip7" +project_version = "1.0" diff --git a/changelog/598.fix.md b/changelog/598.fix.md new file mode 100644 index 000000000..e6d116e5f --- /dev/null +++ b/changelog/598.fix.md @@ -0,0 +1 @@ +QAQC toml files are updated following the latest version of https://github.com/ESGF/cc-plugin-wcrp diff --git a/ref_cmip7.toml b/ref_cmip7.toml deleted file mode 100644 index 0618fb41d..000000000 --- a/ref_cmip7.toml +++ /dev/null @@ -1,413 +0,0 @@ -# Original CMIP7 QAQC is available at -# https://github.com/ESGF/cc-plugin-wcrp/blob/master/plugins/cmip7/resources/wcrp_config.toml -# A few severity level adjusted for request from REF - -# ============================================================================== -# CMIP7 Configuration FILE -# ============================================================================== -project_name = "cmip7" -project_version = "1.0" - -#------------------------------------------------------------------------------ -# == Data Reference Syntax checks -# ------------------------------------------------------------------------------ - -[drs.filename] -severity = "H" - -[drs.directory] -severity = "H" - -[drs.attributes_vs_directory] -# Check PATH001 -severity = "H" - -[drs.filename_vs_directory] -# Check PATH002 -severity = "H" - -[file.format] -severity = "H" -expected_format = "HDF5" -expected_data_model = "NETCDF4_CLASSIC" - -[file.compression] -severity = "H" -expected_complevel = 1 -expected_shuffle = true - - -#------------------------------------------------------------------------------ -# Global Attributes checks -# ------------------------------------------------------------------------------ - -[global_attributes.activity_id] -severity = "H" -value_type = "str" -is_required = true -cv_source_collection = "activity" - -[global_attributes.area_label] -severity = "H" -value_type = "str" -is_required = true -cv_source_collection = "area_label" - -[global_attributes.branded_variable] -severity = "H" -value_type = "str" -is_required = true -cv_source_collection = "branded_variable" - -[global_attributes.branding_suffix] -severity = "H" -value_type = "str" -is_required = true -cv_source_collection = "branding_suffix" - -[global_attributes.branch_time_in_child] -severity = "H" -value_type = "float" -is_required = false - -[global_attributes.branch_time_in_parent] -severity = "H" -value_type = "float" -is_required = false - -[global_attributes.cmip6_compound_name] -severity = "L" -value_type = "str" -is_required = false -constraint = ".*" - -[global_attributes.conventions] -attribute_name = "Conventions" -severity = "H" -value_type = "str" -is_required = true -cv_source_collection = "conventions" - -[global_attributes.creation_date] -severity = "L" -value_type = "str" -is_required = true -cv_source_collection = "creation_date" - -[global_attributes.data_specs_version] -severity = "H" -value_type = "str" -is_required = true -cv_source_collection = "data_specs_version" - -[global_attributes.drs_specs] -severity = "H" -value_type = "str" -is_required = true -cv_source_collection = "drs_specs" - -[global_attributes.experiment] -severity = "M" -value_type = "str" -is_required = false -cv_source_collection = "experiment" -cv_source_collection_key = "description" - -[global_attributes.experiment_id] -severity = "H" -value_type = "str" -is_required = true -cv_source_collection = "experiment" - -[global_attributes.external_variables] -severity = "H" -value_type = "str" -is_required = false -cv_source_collection = "archive" - -# Index en INT pour éviter le crash ESGVOC -[global_attributes.forcing_index] -severity = "H" -value_type = "int" -is_required = true - -[global_attributes.frequency] -severity = "H" -value_type = "str" -is_required = true -cv_source_collection = "frequency" - -[global_attributes.grid_label] -severity = "H" -value_type = "str" -is_required = true -cv_source_collection = "grid_label" - -[global_attributes.horizontal_label] -severity = "H" -value_type = "str" -is_required = true -cv_source_collection = "horizontal_label" - -[global_attributes.initialization_index] -severity = "H" -value_type = "int" -is_required = true - -[global_attributes.institution] -severity = "M" -value_type = "str" -is_required = false -cv_source_collection = "institution" -cv_source_collection_key = "description" - -[global_attributes.institution_id] -severity = "H" -value_type = "str" -is_required = true -cv_source_collection = "institution" - -[global_attributes.license] -severity = "L" -value_type = "str" -is_required = false -constraint = ".*" - -[global_attributes.license_id] -severity = "H" -value_type = "str" -is_required = true -cv_source_collection = "license" - -[global_attributes.mip_era] -severity = "H" -value_type = "str" -is_required = true -cv_source_collection = "mip_era" - -[global_attributes.nominal_resolution] -severity = "H" -value_type = "str" -is_required = true -cv_source_collection = "nominal_resolution" - -[global_attributes.parent_activity_id] -severity = "H" -value_type = "str" -is_required = false -cv_source_collection = "activity" - -[global_attributes.parent_experiment_id] -severity = "H" -value_type = "str" -is_required = false -cv_source_collection = "experiment" - -[global_attributes.parent_mip_era] -severity = "H" -value_type = "str" -is_required = false -cv_source_collection = "mip_era" - -[global_attributes.parent_source_id] -severity = "H" -value_type = "str" -is_required = false -cv_source_collection = "source" - -[global_attributes.parent_time_units] -severity = "H" -value_type = "str" -is_required = false -constraint = "^days since [0-9]{4}-[0-9]{2}-[0-9]{2}$" - -[global_attributes.parent_variant_label] -severity = "H" -value_type = "str" -is_required = false -cv_source_collection = "variant_label" - -[global_attributes.physics_index] -severity = "H" -value_type = "int" -is_required = true - -[global_attributes.product] -severity = "H" -value_type = "str" -is_required = true -cv_source_collection = "product" - -[global_attributes.realization_index] -severity = "H" -value_type = "int" -is_required = true - -[global_attributes.realm] -severity = "H" -value_type = "str" -is_required = true -cv_source_collection = "realm" - -[global_attributes.references] -severity = "L" -value_type = "str" -is_required = false -constraint = ".*" - -[global_attributes.region] -severity = "H" -value_type = "str" -is_required = true -cv_source_collection = "region" - -[global_attributes.source] -severity = "L" -value_type = "str" -is_required = false -cv_source_collection = "source" -cv_source_collection_key = "description" - -[global_attributes.source_id] -severity = "H" -value_type = "str" -is_required = true -cv_source_collection = "source" - -[global_attributes.temporal_label] -severity = "H" -value_type = "str" -is_required = true -cv_source_collection = "temporal_label" - -[global_attributes.title] -severity = "L" -value_type = "str" -is_required = false -constraint = ".*" - -[global_attributes.tracking_id] -severity = "H" -value_type = "str" -is_required = true -cv_source_collection = "tracking_id" - -[global_attributes.variable_id] -severity = "H" -value_type = "str" -is_required = true -cv_source_collection = "variable" - -[global_attributes.variant_info] -severity = "L" -value_type = "str" -is_required = false -constraint = ".*" - -[global_attributes.variant_label] -severity = "H" -value_type = "str" -is_required = true -cv_source_collection = "variant_label" - -[global_attributes.vertical_label] -severity = "H" -value_type = "str" -is_required = true -cv_source_collection = "vertical_label" - - -# ============================================================================== -# == Geophysical variable metadata checks -# ============================================================================== - -[variable.existence] -severity = "H" - -[variable.type] -severity = "H" - -[variable.dimensions] -severity = "H" - -[variable.bnds_vertices] -severity = "H" - -[variable.shape_bounds] -# uniquement bounds value consistency -severity = "H" - -[variable.time_checks] -# time_range_vs_filename + time_bounds -severity = "H" - - -# ============================================================================== -# == Variable attributes checks -# ============================================================================== - -[variable.attributes.units] -severity = "H" - -[variable.attributes.long_name] -severity = "M" - -[variable.attributes.standard_name] -severity = "H" - -[variable.attributes.cell_methods] -severity = "M" - -[variable.attributes.cell_measures] -severity = "M" - -[variable.attributes.description] -severity = "L" - -# ============================================================================== -# == Coordinates checks -# ============================================================================ -[coordinates.auxiliary] -severity = "H" - -[coordinates.bounds] -severity = "H" - -[coordinates.properties] -severity = "H" - -[coordinates.time.squareness] -# Check TIME001 -severity = "H" -calendar = "" -ref_time_units = "" -frequency = { subhr = "30m" } - - -# ============================================================================== -# == CMIP7 Output Requirements Checks -# ============================================================================== -[cmip7_output_requirements.calendar] -enabled = true -severity = "H" # This is higher severity level than CMIP7 - -# ============================================================================== -# == Metadata Consistency Checks -# ============================================================================== - - -[consistency_checks.filename_vs_attributes] -# Check ATTR005 -severity = "H" - -[consistency_checks.experiment_details] -# Check ATTR007 -severity = "H" - -[consistency_checks.institution_details] -# Check ATTR009 -severity = "H" - -[consistency_checks.source_details] -# Check ATTR010 -severity = "H"