Skip to content

Releases: PCMDI/cmor3_documentation

CMOR 3.15.2

25 Jun 00:46
d0e29ce

Choose a tag to compare

Features

  • Added CMIP7 Fortran examples for regular grids, pressure levels, scalar height coordinates, basin axes, hybrid sigma levels, curvilinear grids, and fixed fields. (#977)
    • The Fortran examples include a shared helper module, a run script, and nightly-build coverage.
  • Added CMIP7 Python examples matching the new Fortran example coverage. (#978)
  • Added example CMIP7 cmorizing notebooks using real model-data excerpts, including regular lat-lon data, pressure levels, hybrid sigma coordinates, basin axes, land-use fractions, and non-lat-lon sea-ice data. (#976)

Bugfixes

  • CMOR now checks CV JSON strings and keys against the 1023-character limit before copying them into fixed-size strings, preventing crashes and reporting the offending value in the error message. (#985)
  • The Fortran cmor_dataset_json wrapper now returns a reliable status code. (#977)

Changes

  • Concatenated variable comment attributes now identify the source table by file name instead of using activity_id. (#984)
    • Example output now uses text like CMIP6_Amon.json comment: ....
  • Error and warning color formatting is now only emitted for terminal output, avoiding ANSI color characters in log files. (#985)

Issues / Pull Requests

GitHub

CMOR 3.15.1

20 May 17:45
c9485b7

Choose a tag to compare

Bugfixes

  • The table_info global attribute will now contain the table's file name. (#970)
    • Example: table_info = "Name: CMIP7_atmos.json; Creation Date: ....
  • The default history global attribute text was updated to remove the redundant "CF standards" wording. (#969)
    • CMOR now writes history entries in the form CMOR rewrote data to be consistent with <Conventions> and <mip_era> data requirements.
  • Time-interval validation now runs for time1 axes even when bounds are not supplied in cmor_axis. (#972)

Changes

  • Climatology time axes are excluded from interval checking in cmor_write. (#972)

CI / Tests

  • CMIP7 Python tests now use the latest CV file from cmip7-cmor-tables instead of the stale test CV. (#973)
    • Removed outdated CMIP7 JSON files from TestTables/.
    • Test cleanup now removes temporary input and CV files created during runs.

Issues / Pull Requests

GitHub

CMOR 3.15.0

11 May 19:37
240e0e6

Choose a tag to compare

Features

  • Added official Python wheel builds for CMOR releases, including Linux wheels, full Python test coverage in the wheel pipeline, and release assets attached on GitHub. (#932)
  • CMIP7 controlled vocabularies can now define drs_specs and tracking_prefix as root-level strings. (#961)
    • A root-level drs_specs string is now written to the output file as a global attribute.
    • A root-level tracking_prefix string is now used when generating tracking_id.

Bugfixes

  • User-provided Conventions values in the dataset JSON are now preserved and written to the output file instead of always being replaced by the table default. (#960)
  • The default table-header product value is now model-output instead of model_output, aligning generated metadata with current DRS terminology. (#960)

CI / Tests

  • Fixed test-cleanup failures in make test_python and make test_cmip6_cv that could raise OSError: [Errno 39] Directory not empty during teardown. (#955)
    • CMOR now removes the generated NetCDF files without trying to remove shared output directories that may still contain files from other tests.

Changes

  • Nightly Linux builds that were previously run on CircleCI now run on GitHub Actions. (#958)
  • Nightly package versions are now kept in sync. (#959)

Issues / Pull Requests

GitHub

CMOR 3.14.3

29 Apr 00:43
91527b9

Choose a tag to compare

Bugfixes

  • Fixed file names for CMIP7 climatology datasets. (#950)
    • CMIP7 climatology outputs now use the expected monthly time-range format in file names.
    • Added regression coverage in Test/test_cmor_CMIP7.py for the output filename, frequency attribute, and climatology metadata.

Changes

  • Removed unused filename-validation and suffix-tracking code from the C core, simplifying internal output-name handling. (#949)

Documentation

  • Added QUICKSTART.md to the main CMOR repository with concise instructions for cloning, building, installing, and testing CMOR in a Conda/Mamba environment. (#951)
  • Updated the user-input documentation in this repository to clarify how version affects output paths and global attributes. (#192)
    • The guide now explains that setting version adds a netCDF global attribute.
    • It also shows how to use an internal attribute such as _dir_version with <dir_version> in output_path_template when only the directory name should change.

Issues / Pull Requests

GitHub

CMOR 3.14.2

17 Apr 00:41
3af7ba5

Choose a tag to compare

Changes

  • Refreshed CMIP7-oriented user guidance in cmor_CV.c for invalid source_id and institution_id values, including current WCRP-CMIP issue links and the CMIP7 CV registration guide. (#942)
    • Updated source_id and institution_id CV error messages to point users to current CMIP7 registration issue templates and guidance instead of outdated links.
  • CMIP7 datasets now write parent and branch attributes only when the selected experiment defines parent experiments in the controlled vocabulary. (#940)
    • This is done when _cmip7_option is enabled in the user input JSON.
    • When a CMIP7 experiment has no parent experiments, CMOR now warns about stray parent attributes and removes them before writing the output file.
    • When a CMIP7 experiment requires a parent, CMOR now errors if parent_experiment_id is missing, not allowed by the controlled vocabulary, or paired with an invalid parent_activity_id.

CI / Tests

  • Added Test/test_cmor_parent_attrs.py coverage for CMIP7 parent-attribute handling across no-parent experiments, required-parent experiments, warning-and-removal behavior, and invalid parent metadata. (#940)
    • Updated existing CMIP7 Python tests to reflect the new parent-attribute rules and to clean up temporary test inputs created during test runs.

Issues / Pull Requests

GitHub

CMOR 3.14.1

18 Mar 18:13
717f9d8

Choose a tag to compare

Bugfixes

  • Improved error messages for time interval validation to provide clearer guidance to users. (#915)
    • When a dataset has a defined frequency attribute, the error message will include both the frequency name and its corresponding approximate time interval.
  • Added a clearer error message when Zstandard compression is requested but the ZSTD filter is unavailable. (#925)
    • This error instructs users to install hdf5plugin and set the HDF5_PLUGIN_PATH environment variable.

Changes

  • CMIP7 datasets: ignore the branch_method global attribute and do not add table_id to output files. (#926)

CI / Tests

  • CI build migrated from conda-build to rattler-build, improving build performance. (#922)
  • CI test environment now installs hdf5plugin and configures HDF5_PLUGIN_PATH for the NetCDF ZSTD filter. (#922)
  • Updated CMIP7 test file templates. (#921)
  • Updated CMIP7 dataset unit tests to match latest required/optional global attributes. (#926)
    • Now requires license_id, adds drs_specs, no longer requires experiment, and removes grid and source_type.

Closed Issues

GitHub

CMOR 3.14.0

30 Jan 00:46
798fce8

Choose a tag to compare

Features

  • New chunking strategy to support CMIP7 repacking requirements.
    • Chunking dimensions of the time and time bounds axes will be set to the length of the time axis, plus a dimension of size 2 for the bounds, if it is known when the time axis is created. Otherwise, the time and time bounds chunking dimensions will be set to 512 by default.
    • Chunking dimensions for data variables will be determined by whether chunks can be at least 4 MB in size.
      • If multiple time slices of data can fit within 4 MB, then chunking dimensions will have multiple time slices and full spatial dimensions of the data variable.
      • If a single time slice is greater than 4 MB, then chunking dimensions will have one time slice with spatial chunking dimensions determined by the NetCDF library.
  • The function cmor_set_chunking has been added to the API, allowing users to define NetCDF variable chunking dimensions.
    • Setting the chunking dimensions with cmor_set_chunking will override the automatic chunking strategy for CMIP7 repacking.

Bugfixes

  • Fixed bug where using cmor.write with the store_with parameter will throw an error when time values are not passed.

Changes

  • Removed legacy Python 2 code from Python interface and unit tests.
  • cmor_setup in the Fortran API will now allow the use of NetCDF4 functionality when setting the parameter netcdf_file_action with either "preserve_4", "append_4", or "replace_4".

Closed Issues

GitHub

CMOR 3.13.2

09 Jan 01:15
0a31b73

Choose a tag to compare

Changes

  • The function cmor_set_variable_attribute will now allow the variable attribute long_name to be modified.

Closed Issues

GitHub

CMOR 3.13.1

17 Dec 16:58
a5ef7e8

Choose a tag to compare

Changes

  • The CMIP7 CMOR tables repo will now be a submodule of the CMOR repo. CMIP7 unit tests for CMOR have been modified to use these tables.
  • The attribute branded_variable will be added to a dataset's global attributes if the variable table entry name has a branding_suffix.

Closed Issues

GitHub

CMOR 3.13.0

14 Oct 16:57
ea72352

Choose a tag to compare

Features

  • The global attributes realization_index, initialization_index, physics_index and forcing_index can now have string values when either _use_strings_for_indexes or _cmip7_option are present in the user input parameters.

Bugfixes

  • Resolved an issue where running multiple unit tests within a unittest class that used variable tables with branding suffixes would corrupt the branding suffixes, labels, and out names in subsequent tests within the unittest class.

Changes

  • Added support for Python 3.14.
  • PrePARE has been removed from CMOR.
  • CMIP7 tests have been updated to confirm that secondary realms can be applied to variables by having multiple realms listed for modeling_realm in variable entries. See test here.

Closed Issues

GitHub