Running the checker

Once installed, run the checker from any directory with the ismip7-compliance-checker command (equivalently, python -m isschecker). It writes compliance_checker_log.txt into the --source-path directory, or into --output-path if you give one.

# Check x,y,t (gridded) variables
ismip7-compliance-checker \
    --source-path ./Models/GrIS/ISMIP7/SYNTH1/CORE/C001 \
    --variable-list ismip7_xyt

# Check scalar (time-only) variables
ismip7-compliance-checker \
    --source-path ./Models/AIS/ISMIP7/SYNTH1/CORE/C001 \
    --variable-list ismip7_scalars

# Check both
ismip7-compliance-checker \
    --source-path ./Models/GrIS/ISMIP7/SYNTH1/CORE/C001 \
    --variable-list ismip7

# Check a read-only archive, writing the log somewhere else
ismip7-compliance-checker \
    --source-path /archive/GrIS/ISMIP7/SYNTH1/CORE/C001 \
    --output-path ./checker-logs/C001

Options

Option

Default

Description

--source-path

./Models/GrIS/ISMIP7/SYNTH1/CORE/C001

Set-counter subdirectory containing .nc files to check

--output-path

the --source-path directory

Directory to write compliance_checker_log.txt into; created if missing

--variable-list

ismip7_scalars

ismip7_xyt, ismip7_scalars, or ismip7 (both)

--version

Print the installed version and exit; quote it when reporting a problem

The --source-path is one set-counter directory — the leaf of the Models/{GrIS|AIS}/ISMIP7/{group}/{model}/{set_counter} layout — because that is the unit a submission is checked in. Within it, the checker groups the .nc files by the experiment their names give, so a directory holding a historical run and a projection is handled as the two runs it is, and each group is then checked for the variables the data request asks of it as well as for what is inside each file.

Which variables are expected, and what they must contain, comes from the data request bundled with the package; experiments_ismip7.csv defines the allowed nominal year ranges and durations for each experiment, from which the checker derives the expected FL and ST timestamps at runtime (see Time encoding). Both files are listed in The data request.

What it writes

Findings are printed as the run goes and collected in compliance_checker_log.txt in the --source-path directory. The log begins with a synthesis block counting errors and warnings by category, so a long run can be read from the top rather than scrolled through. Because it is written beside the files it describes, it can be archived with the submission or attached to an issue as it stands.

That default is no use for an archive the checker is not allowed to write to, which it cannot check at all if the log has nowhere to go. Give --output-path a directory it can write to and the log goes there instead; the directory is created if it does not exist. The same option keeps the logs from several archives side by side, one directory each — the log always takes the name compliance_checker_log.txt, so two runs sharing an output directory overwrite one another.

Exit status

The checker exits non-zero when it found errors, or when it could not check anything at all — the --source-path does not exist, holds no .nc files, or the log cannot be written where it was asked to put it. It exits zero when the submission is compliant, including when there are warnings to review; see Errors and warnings. Both ismip7-compliance-checker and python -m isschecker behave the same way, so either can be used in a script.