Releases: PCMDI/cmor3_documentation
Releases · PCMDI/cmor3_documentation
CMOR 3.15.2
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_jsonwrapper now returns a reliable status code. (#977)
Changes
- Concatenated variable
commentattributes now identify the source table by file name instead of usingactivity_id. (#984)- Example output now uses text like
CMIP6_Amon.json comment: ....
- Example output now uses text like
- Error and warning color formatting is now only emitted for terminal output, avoiding ANSI color characters in log files. (#985)
Issues / Pull Requests
- Handling of grids other than lat-lon (#832)
- preparing a CMOR demo with a coordinate having character string entries (#837)
- CMORizing notebook (#878)
- CMIP7 Fortran examples (#885)
- Example CMIP7 cmorizing notebooks (#976)
- CMIP7 Fortran examples (#977)
- Add Python examples (#978)
- Use of activity id in concatenated variable comments (#979)
- No error or warning for CV string values exceeding 1023 character limit (#982)
- Error message coloring format changes (#983)
- Use table file name instead of activity_id in variable comment (#984)
- Check the CV file for strings that exceed CMOR's character limit (#985)
CMOR 3.15.1
Bugfixes
- The
table_infoglobal attribute will now contain the table's file name. (#970)- Example:
table_info = "Name: CMIP7_atmos.json; Creation Date: ....
- Example:
- The default
historyglobal attribute text was updated to remove the redundant "CF standards" wording. (#969)- CMOR now writes
historyentries in the formCMOR rewrote data to be consistent with <Conventions> and <mip_era> data requirements.
- CMOR now writes
- Time-interval validation now runs for
time1axes even when bounds are not supplied incmor_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-tablesinstead 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.
- Removed outdated CMIP7 JSON files from
Issues / Pull Requests
- approx_interval (#943)
- Use the table file name in
table_info(#964) - Edit the
historyglobal attribute text (#966) - Remove redundant "CF standards" from history template. (#969)
- Add the table's file name to the
table_infostring. (#970) - Ignore interval checks for climatology time axes, and fix interval checks being ignored for time1 axes (#972)
- Python test updates (#973)
CMOR 3.15.0
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_specsandtracking_prefixas root-level strings. (#961)- A root-level
drs_specsstring is now written to the output file as a global attribute. - A root-level
tracking_prefixstring is now used when generatingtracking_id.
- A root-level
Bugfixes
- User-provided
Conventionsvalues 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
productvalue is nowmodel-outputinstead ofmodel_output, aligning generated metadata with current DRS terminology. (#960)
CI / Tests
- Fixed test-cleanup failures in
make test_pythonandmake test_cmip6_cvthat could raiseOSError: [Errno 39] Directory not emptyduring 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
- Wheel build test with cibuildwheel pipeline (#932)
- Migrate the Linux nightly build pipeline from CircleCI to GitHub Actions (#952)
- testing errors in
make test_pythonandmake_test_cmip6cvusing newQUICKSTARTinstructions (#953) - Fix issues in #953 when running Python and CMIP6 CV tests (#955)
- Add Linux pipeline to GitHub nightly builds; remove CircleCI config (#958)
- Keep package version updated in nightly builds (#959)
- "product" and "Conventions" (#935)
- Modify CMOR user input json file (#936)
- Allow user override of
Conventionsattribute (#960) - Allow CV to set
tracking_prefixanddrs_specsif they are single string values. (#961)
CMOR 3.14.3
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.pyfor the output filename,frequencyattribute, 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.mdto 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
versionaffects output paths and global attributes. (#192)- The guide now explains that setting
versionadds a netCDF global attribute. - It also shows how to use an internal attribute such as
_dir_versionwith<dir_version>inoutput_path_templatewhen only the directory name should change.
- The guide now explains that setting
Issues / Pull Requests
CMOR 3.14.2
Changes
- Refreshed CMIP7-oriented user guidance in
cmor_CV.cfor invalidsource_idandinstitution_idvalues, including current WCRP-CMIP issue links and the CMIP7 CV registration guide. (#942)- Updated
source_idandinstitution_idCV error messages to point users to current CMIP7 registration issue templates and guidance instead of outdated links.
- Updated
- 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_optionis 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_idis missing, not allowed by the controlled vocabulary, or paired with an invalidparent_activity_id.
- This is done when
CI / Tests
- Added
Test/test_cmor_parent_attrs.pycoverage 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
CMOR 3.14.1
Bugfixes
- Improved error messages for time interval validation to provide clearer guidance to users. (#915)
- When a dataset has a defined
frequencyattribute, the error message will include both the frequency name and its corresponding approximate time interval.
- When a dataset has a defined
- Added a clearer error message when Zstandard compression is requested but the ZSTD filter is unavailable. (#925)
- This error instructs users to install
hdf5pluginand set theHDF5_PLUGIN_PATHenvironment variable.
- This error instructs users to install
Changes
- CMIP7 datasets: ignore the
branch_methodglobal attribute and do not addtable_idto output files. (#926)
CI / Tests
- CI build migrated from
conda-buildtorattler-build, improving build performance. (#922) - CI test environment now installs
hdf5pluginand configuresHDF5_PLUGIN_PATHfor 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, addsdrs_specs, no longer requiresexperiment, and removesgridandsource_type.
- Now requires
Closed Issues
- Updates to dataset frequency and time interval errors (#913)
output_file_templateleads to a filename with_variant_idtime_range_- bug or user error? (#918)- Migrate CI build to conda-rattler (#919)
- Update error message for zstandard compression to warn users to set up HDF5_PLUGIN_PATH (#923)
- CMIP7: branch_method global attribute dropped for CMIP7 still required by CMOR (#924)
CMOR 3.14.0
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_chunkinghas been added to the API, allowing users to define NetCDF variable chunking dimensions.- Setting the chunking dimensions with
cmor_set_chunkingwill override the automatic chunking strategy for CMIP7 repacking.
- Setting the chunking dimensions with
Bugfixes
- Fixed bug where using
cmor.writewith thestore_withparameter will throw an error when time values are not passed.
Changes
- Removed legacy Python 2 code from Python interface and unit tests.
cmor_setupin the Fortran API will now allow the use of NetCDF4 functionality when setting the parameternetcdf_file_actionwith either "preserve_4", "append_4", or "replace_4".
Closed Issues
CMOR 3.13.2
Changes
- The function
cmor_set_variable_attributewill now allow the variable attributelong_nameto be modified.
Closed Issues
CMOR 3.13.1
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_variablewill be added to a dataset's global attributes if the variable table entry name has abranding_suffix.
Closed Issues
CMOR 3.13.0
Features
- The global attributes
realization_index,initialization_index,physics_indexandforcing_indexcan now have string values when either_use_strings_for_indexesor_cmip7_optionare 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_realmin variable entries. See test here.
Closed Issues