Observed since 20 Oct, 17:58 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
ACCESS Model Output Post-Processor, maps raw model output to CMIP-style defined variables and produce post-processed output using CMOR3
ACCESS-MOPPy is a CMORisation tool designed to post-process ACCESS model output and produce CMIP-compliant datasets.
CMORising ACCESS output for CMIP7 FastTrack — a quick start with ACCESS-MOPPy
— a narrated walkthrough of the whole NCI Gadi workflow, from loading the
analysis3 environment to watching the batch run. It follows the
quick start guide
step for step.
[!NOTE] The narration voice in the video is synthetic and the script was drafted with AI assistance from this documentation. The workflow it shows is the real, maintained one.
For CMIP7 Fast Track, ACCESS-MOPPy takes raw ACCESS model output — UM fields files, MOM and CICE history — and produces files that are ready to publish: CMORised, checked against physical ranges, validated against the CMIP controlled vocabularies, and plotted for a human to look at. The four stages run in that order, from a notebook or from a batch run on NCI Gadi.
Reads ACCESS-ESM1.6 atmosphere, land, ocean and sea-ice output directly and writes CMIP7 files — branded variable names, CMIP7 global attributes, DRS paths and file names. No CMOR library: the rewrite is built on xarray and dask, so the same code runs in a notebook or across hundreds of PBS jobs.
→ Fast Track quick start · baseline runs · batch processing
Every CMIP7 file written is checked against a per-variable physical envelope — 293 ACCESS-ESM1-6 variables, with experiment-specific overrides — plus units, missing-value and finite-value checks. The bounds are broad on purpose: they catch a unit, sign or conversion error without rejecting a plausible extreme.
The rules themselves are data, and you can read them without touching a file:
moppy-qc --show-ranges --variable tas --variable pr --experiment piControl
variable units min max rule
-------- ---------- --- --- ---------
tas K 180 325 piControl
pr kg m-2 s-1 0 0.1 default
Add --format json for the machine-readable form, ready to pipe into jq or
attach to a data-quality record.
→ Every rule, rendered and filterable · running the checks
Runs the CF suite (cf:1.11) and the WCRP CMIP suite (wcrp_cmip7:1.0, backed
by esgvoc) on the first file each variable publishes — metadata,
controlled-vocabulary values, DRS path and file name. A failure stops that
variable before any further file is written, and the JSON report is kept either
way. One line of batch config turns it on:
compliance_check: true
→ Enabling it in a batch run · checker backends
Two PNGs per output file: a spatial snapshot of the first timestep, and a timeseries of the global mean with min/max shading and standard deviation. A published ACCESS-ESM1-5 CMIP6 series can be overlaid on the timeseries, so drift against the previous submission is visible at a glance.
moppy-qc-plots /scratch/cmor_output/CMIP7 --comparison-store /g/data/cmip6_store
→ Plots from a batch run · regenerating them
[!NOTE] Stages 2 and 4 run inside the CMORisation job, and stage 3 is one line of batch configuration. The batch report (
moppy_batch_report_<UTC>.json) collects the results of all three, so a whole experiment can be signed off from a single file.
ACCESS-MOPPy requires Python >= 3.11.
The conda/analysis3-latest environment maintained by ACCESS-NRI already
includes access_moppy and its dependencies, so no pip install is needed:
module use /g/data/xp65/public/modules
module load conda/analysis3-latest
All command-line tools (moppy-cmorise, moppy-tui, moppy-qc, …) are
available immediately after loading the module. You'll need membership of
the xp65 NCI project for the module itself, plus whichever projects hold
the model output and CV/table data you're processing. Pin a dated release
(e.g. conda/analysis3-26.04) instead of -latest if you need a
reproducible environment for a production run.
pip install access_moppy
The controlled vocabularies under src/access_moppy/vocabularies/ are pulled
in as git submodules. If you install from a local clone, initialise them
first, otherwise the CMOR tables/CVs will be missing and imports will fail
with an error like No module named 'access_moppy.vocabularies.CMIP6_CVs':
git clone --recurse-submodules https://github.com/ACCESS-NRI/ACCESS-MOPPy.git
cd ACCESS-MOPPy
pip install .
If you already have a clone without the submodules populated, run:
git submodule update --init --recursive
pip install .
New to CMORisation on Gadi? Watch the 10 minute walkthrough first.
import glob
from access_moppy import ACCESS_ESM_CMORiser
# Select input files
files = glob.glob("/path/to/model/output/*mon.nc")
# Create CMORiser instance
cmoriser = ACCESS_ESM_CMORiser(
input_data=files,
compound_name="Amon.pr", # table.variable format
experiment_id="historical",
source_id="ACCESS-ESM1-5",
variant_label="r1i1p1f1",
grid_label="gn",
activity_id="CMIP",
output_path="/path/to/output"
)
# Run CMORisation
cmoriser.run()
cmoriser.write()
For large-scale processing on HPC systems:
batch_config.yml):variables:
- Amon.pr
- Omon.tos
- Amon.ts
experiment_id: piControl
source_id: ACCESS-ESM1-5
variant_label: r1i1p1f1
grid_label: gn
input_folder: "/g/data/project/model/output"
output_folder: "/scratch/project/cmor_output"
file_patterns:
Amon.pr: "output[0-4][0-9][0-9]/atmosphere/netCDF/*mon.nc"
Omon.tos: "output[0-4][0-9][0-9]/ocean/*temp*.nc"
Amon.ts: "output[0-4][0-9][0-9]/atmosphere/netCDF/*mon.nc"
# PBS configuration
queue: normal
cpus_per_node: 16
mem: 32GB
walltime: "02:00:00"
scheduler_options: "#PBS -P your_project"
storage: "gdata/project+scratch/project"
worker_init: |
module load conda
conda activate your_environment
moppy-cmorise batch_config.yml
The batch processing system provides:
qstat, qdel){output_folder}/cmor_tasks.dbwork_directory/
├── batch_config.yml # Your configuration
├── cmor_job_scripts/ # Generated PBS scripts and logs
│ ├── cmor_Amon_pr.sh # PBS script
│ ├── cmor_Amon_pr.py # Python processing script
│ ├── cmor_Amon_pr.out # Job output
│ └── cmor_Amon_pr.err # Job errors
└── output_folder/
├── cmor_tasks.db # Progress tracking
└── [CMORised files] # Final output
Full documentation: https://access-moppy.readthedocs.io
src/access_moppy/examples/batch_config.ymlIntegration and end-to-end tests require an external test-data tree set via
the ACCESS_MOPPY_DATA_ROOT environment variable.
tests/data/ are not used by these testsACCESS_MOPPY_DATA_ROOT must point to a valid dataset root
containing output*/atmosphere/netCDF, output*/ocean, and output*/iceExample:
export ACCESS_MOPPY_DATA_ROOT=/path/to/CMIP7_Test_data/esm-historical
pixi run -e dev python -m pytest tests/integration/test_full_cmorisation.py
pixi run -e dev python -m pytest tests/integration/test_cmip7_baseline_cmorisation.py
pixi run -e dev python -m pytest tests/e2e/test_end_to_end.py
CMIP7 baseline test note:
tests/integration/test_cmip7_baseline_cmorisation.py runs one case per
CMIP7 baseline variable listed in
src/access_moppy/examples/batch_config_esm1-6_cmip7_baseline.ymlACCESS_MOPPY_BASELINE_VALIDATE_WCRP=1Example with strict WCRP validation enabled:
export ACCESS_MOPPY_DATA_ROOT=/path/to/CMIP7_Test_data/esm-historical
export ACCESS_MOPPY_BASELINE_VALIDATE_WCRP=1
pixi run -e dev python -m pytest tests/integration/test_cmip7_baseline_cmorisation.py --validation-tool=wcrp
ACCESS-MOPPy is licensed under the Apache-2.0 License.
pypistats · 90 observations shown. Missing days are unknown. Source category: overall: without mirrors.
| Date / source period | Value | Observed at |
|---|---|---|
| 2026-10-19 – 2026-10-19 | 22 | 2026-10-20T18:21:35.2516688Z |
| 2026-10-18 – 2026-10-18 | 23 | 2026-10-20T18:21:35.2516688Z |
| 2026-10-17 – 2026-10-17 | 29 | 2026-10-20T18:21:35.2516688Z |
| 2026-10-16 – 2026-10-16 | 42 | 2026-10-20T18:21:35.2516688Z |
| 2026-10-15 – 2026-10-15 | 43 | 2026-10-20T18:21:35.2516688Z |
| 2026-10-14 – 2026-10-14 | 34 | 2026-10-20T18:21:35.2516688Z |
| 2026-10-13 – 2026-10-13 | 97 | 2026-10-20T18:21:35.2516688Z |
| 2026-10-12 – 2026-10-12 | 36 | 2026-10-20T18:21:35.2516688Z |
| 2026-10-11 – 2026-10-11 | 110 | 2026-10-20T18:21:35.2516688Z |
| 2026-10-10 – 2026-10-10 | 37 | 2026-10-20T18:21:35.2516688Z |
| 2026-10-09 – 2026-10-09 | 40 | 2026-10-20T18:21:35.2516688Z |
| 2026-10-08 – 2026-10-08 | 150 | 2026-10-20T18:21:35.2516688Z |
| 2026-10-07 – 2026-10-07 | 62 | 2026-10-20T18:21:35.2516688Z |
| 2026-10-06 – 2026-10-06 | 90 | 2026-10-20T18:21:35.2516688Z |
| 2026-10-05 – 2026-10-05 | 10 | 2026-10-20T18:21:35.2516688Z |
| 2026-10-04 – 2026-10-04 | 58 | 2026-10-20T18:21:35.2516688Z |
| 2026-10-03 – 2026-10-03 | 3 | 2026-10-20T18:21:35.2516688Z |
| 2026-10-02 – 2026-10-02 | 6 | 2026-10-20T18:21:35.2516688Z |
| 2026-10-01 – 2026-10-01 | 9 | 2026-10-20T18:21:35.2516688Z |
| 2026-09-30 – 2026-09-30 | 85 | 2026-10-20T18:21:35.2516688Z |
| 2026-09-29 – 2026-09-29 | 127 | 2026-10-20T18:21:35.2516688Z |
| 2026-09-28 – 2026-09-28 | 71 | 2026-10-20T18:21:35.2516688Z |
| 2026-09-27 – 2026-09-27 | 48 | 2026-10-20T18:21:35.2516688Z |
| 2026-09-26 – 2026-09-26 | 15 | 2026-10-20T18:21:35.2516688Z |
| 2026-09-25 – 2026-09-25 | 21 | 2026-10-20T18:21:35.2516688Z |
| 2026-09-24 – 2026-09-24 | 88 | 2026-10-20T18:21:35.2516688Z |
| 2026-09-23 – 2026-09-23 | 6 | 2026-10-20T18:21:35.2516688Z |
| 2026-09-22 – 2026-09-22 | 192 | 2026-10-20T18:21:35.2516688Z |
| 2026-09-21 – 2026-09-21 | 2 | 2026-10-20T18:21:35.2516688Z |
| 2026-09-20 – 2026-09-20 | 13 | 2026-10-20T18:21:35.2516688Z |
| 2026-09-19 – 2026-09-19 | 7 | 2026-10-20T18:21:35.2516688Z |
| 2026-09-18 – 2026-09-18 | 172 | 2026-10-20T18:21:35.2516688Z |
| 2026-09-17 – 2026-09-17 | 42 | 2026-10-20T18:21:35.2516688Z |
| 2026-09-16 – 2026-09-16 | 87 | 2026-10-20T18:21:35.2516688Z |
| 2026-09-15 – 2026-09-15 | 16 | 2026-10-20T18:21:35.2516688Z |
| 2026-09-14 – 2026-09-14 | 51 | 2026-10-20T18:21:35.2516688Z |
| 2026-09-13 – 2026-09-13 | 8 | 2026-10-20T18:21:35.2516688Z |
| 2026-09-12 – 2026-09-12 | 52 | 2026-10-20T18:21:35.2516688Z |
| 2026-09-11 – 2026-09-11 | 2 | 2026-10-20T18:21:35.2516688Z |
| 2026-09-10 – 2026-09-10 | 1 | 2026-10-20T18:21:35.2516688Z |
| 2026-09-09 – 2026-09-09 | 11 | 2026-10-20T18:21:35.2516688Z |
| 2026-09-08 – 2026-09-08 | 84 | 2026-10-20T18:21:35.2516688Z |
| 2026-09-07 – 2026-09-07 | 4 | 2026-10-20T18:21:35.2516688Z |
| 2026-09-06 – 2026-09-06 | 9 | 2026-10-20T18:21:35.2516688Z |
| 2026-09-05 – 2026-09-05 | 7 | 2026-10-20T18:21:35.2516688Z |
| 2026-09-04 – 2026-09-04 | 43 | 2026-10-20T18:21:35.2516688Z |
| 2026-09-03 – 2026-09-03 | 22 | 2026-10-20T18:21:35.2516688Z |
| 2026-09-02 – 2026-09-02 | 16 | 2026-10-20T18:21:35.2516688Z |
| 2026-09-01 – 2026-09-01 | 55 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-31 – 2026-08-31 | 16 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-30 – 2026-08-30 | 15 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-29 – 2026-08-29 | 37 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-28 – 2026-08-28 | 56 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-27 – 2026-08-27 | 386 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-26 – 2026-08-26 | 72 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-25 – 2026-08-25 | 94 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-24 – 2026-08-24 | 115 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-23 – 2026-08-23 | 15 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-22 – 2026-08-22 | 176 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-21 – 2026-08-21 | 8 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-20 – 2026-08-20 | 43 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-19 – 2026-08-19 | 79 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-18 – 2026-08-18 | 126 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-17 – 2026-08-17 | 81 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-16 – 2026-08-16 | 1 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-15 – 2026-08-15 | 13 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-14 – 2026-08-14 | 45 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-13 – 2026-08-13 | 194 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-12 – 2026-08-12 | 17 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-11 – 2026-08-11 | 101 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-10 – 2026-08-10 | 148 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-09 – 2026-08-09 | 15 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-08 – 2026-08-08 | 20 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-07 – 2026-08-07 | 106 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-06 – 2026-08-06 | 235 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-05 – 2026-08-05 | 153 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-04 – 2026-08-04 | 89 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-03 – 2026-08-03 | 188 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-02 – 2026-08-02 | 6 | 2026-10-20T18:21:35.2516688Z |
| 2026-08-01 – 2026-08-01 | 41 | 2026-10-20T18:21:35.2516688Z |
| 2026-07-31 – 2026-07-31 | 7 | 2026-10-20T18:21:35.2516688Z |
| 2026-07-30 – 2026-07-30 | 13 | 2026-10-20T18:21:35.2516688Z |
| 2026-07-29 – 2026-07-29 | 259 | 2026-10-20T18:21:35.2516688Z |
| 2026-07-28 – 2026-07-28 | 140 | 2026-10-20T18:21:35.2516688Z |
| 2026-07-27 – 2026-07-27 | 215 | 2026-10-20T18:21:35.2516688Z |
| 2026-07-26 – 2026-07-26 | 11 | 2026-10-20T18:21:35.2516688Z |
| 2026-07-25 – 2026-07-25 | 17 | 2026-10-20T18:21:35.2516688Z |
| 2026-07-24 – 2026-07-24 | 20 | 2026-10-20T18:21:35.2516688Z |
| 2026-07-23 – 2026-07-23 | 90 | 2026-10-20T18:21:35.2516688Z |
| 2026-07-22 – 2026-07-22 | 194 | 2026-10-20T18:21:35.2516688Z |
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 1.8.3 | 13 Oct 2026 | 35 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 17:58 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:1e3fdf2387cd5bbb8f7f1f6b7c524a9678f53380f79bf7912944d9c7f7afd7a3