What the checker checks¶
Every file is validated in six categories, and the log reports findings under these same headings.
1. Naming¶
The file name is parsed and each of its fields checked: variable name, region
field, ISM member id (mNNN), ESM name (CMIP6/CMIP7 registry), forcing member
id (fNNN), set counter ([C|E|P]NNN), and year range (well formed
YYYY-YYYY; what the range means is checked under Time).
Inside the file: the variable the file name names is the one the file contains,
with the dimensions the data request asks for, in the conventional
(time, z, y, x) order, and the file holds nothing else beyond its coordinates
and the companion variables CF lets them name (bounds, grid_mapping,
coordinates, cell_measures, ancillary_variables) — anything further is a
warning.
2. Numerical¶
Units match the data request, in any UDUNITS spelling: m2, m^2 and m**2
are all accepted, as are kg m-2 s-1, kg.m-2.s-1 and kg/m2/s. Every value
is either a finite number or the declared _FillValue, so a bare NaN is never
how a file says “missing”. All values lie within the allowed min/max range for
the relevant region, and the array is not entirely fill values.
The ranges themselves, per variable and per region, are listed in The data request.
3. Spatial¶
(x,y,t variables only) Grid corners lie within the expected AIS or GrIS
extents; the resolution is one of the allowed values; and x and y cell size are
equal.
4. Time¶
The time dimension is present, unlimited, and monotonically increasing; the file name’s year range is one the experiment allows; and the time axis is exactly the axis the experiment calls for.
For x,y,t and t variables that means every nominal year from
experiments_ismip7.csv, each carrying the timestamp its ST/FL convention
prescribes. For x,y,z,t variables it means the required set of sparse
snapshots. Both conventions are described in Time encoding.
5. Consistency¶
Spatial variables only. Each file is compared against the files beside it: a variable is missing exactly where its ice mask says there is no ice, the variables of the computational domain cover the ice, the grounded and floating fractions sum to the ice fraction, thickness agrees with the ice mask, and surface elevation, ice base and bed agree with each other. See Checks that compare files.
When a file a check needs is not in the directory, the check says so and is skipped, so a submission can still be checked a part at a time.
6. Attributes¶
Required global and coordinate attributes are present and have correct values;
standard_name matches the data request; _FillValue equals the NetCDF4
default for the variable’s dtype; the variable is float32, and so is the time
coordinate (a warning — one number per record cannot inflate a file);
scale_factor and add_offset are not allowed.
How far a file gets¶
Every file is checked as far as it can be. A naming problem stops the other
checks only where it leaves them nothing to read — a missing x or y
dimension, or a file that does not contain the variable its name promises.
Everything else (a mistyped ESM name, a malformed year range, an unrecognized
region) is reported and the file is checked on, so one run tells you everything
that is wrong rather than only the first thing. An unrecognized region costs
just the checks that depend on it: value range, grid extent and resolution, and
crs.
Where the criteria come from¶
Compliance criteria are defined in
isschecker/data/ISMIP7_variable_request.csv (variable metadata) and
isschecker/data/experiments_ismip7.csv (valid experiment year ranges and
durations). Together with the grid definitions in isschecker/data/gdfs/,
these files are bundled with the package, so the checker applies the criteria
of the release you installed. The data request lists what they currently
say.