Skip to content

Releases: PCMDI/cmor

CMOR 3.13.0

14 Oct 16:52
235bebf

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

CMOR 3.12.0

05 Sep 18:02
8f7ed1f

Choose a tag to compare

Features

  • CMOR will issue warnings for controlled vocabulary (CV) files that do not have a format expected by CMOR.
  • directory_path_template and filename_template from the DRS section of CV files will be used as the directory and file name templates, respectively, if they are not specified in the user input. The built-in default template values will be used if these attributes are not in the CV.
  • CMOR will issue warnings if the user passes time bounds with midpoints that do not align with time values passed.
  • standard_parallel and scale_factor_at_projection_origin are valid attributes for grid mappings mercator and polar stereographic when using cmor_set_grid_mapping or cmor_set_crs. CMOR will issue warnings if the user sets neither attribute or sets both attributes on the same grid mapping or CRS variable.

Bugfixes

  • CMOR will now check the required attributes set by the user first before checking all required attributes listed in required_global_attributes in the CV.
  • mip_era was missing from the title attribute when using mip-cmor-tables. This has been resolved by getting mip_era from the file's global attributes instead of from the variable table header.
  • Resolved compiler error caused by not casting a pointer to cmor * in the Python C interface for cmor_set_crs.
  • Fixed minimum variable value warning that was erroneously displaying the valid maximum value instead of the valid mininum value.
  • Resolved segfault caused by the checking of NaN values in variables that have axes with string values.
  • A warning message for a missing standard_parallel parameter when using cmor_set_grid_mapping or cmor_set_crs is no longer issued if parameters standard_parallel1 and standard_parallel2 are used instead.
  • Resolved segfault caused by passing invalid units for parameters when using cmor_set_grid_mapping or cmor_set_crs.

Changes

  • PrePARE has been deprecated from CMOR and will be removed in future versions.
  • CMOR tables for axes and formula tables will now have headers. CMOR 3.12 is designed to ignore information in these headers. Previous CMOR versions will encounter errors when using these updated tables.
  • Function cmor_time_varying_grid_coordinate has been removed from the API.

Closed Issues

GitHub

CMOR 3.11.0

12 Jun 01:07
ae3296b

Choose a tag to compare

Update CMOR3 with CF CRS container variable; Numerous edge case fixes, license reformulation for CMIP7

Features

  • Added the function cmor_set_crs used for creating a CF Coordinate Reference System (CRS) container variable. This is similar to the container variable created by cmor_set_grid_mapping but is named crs instead of the grid mapping name and supports text value attributes.
  • The license attribute can now be generated from a template in the CV file. It requires the user to provide a license_id in their input JSON, which determines what license type and URL will be used when generating the license string. The attributes license_id, license_type, and license_url are not included in the global attributes of a file unless they are listed in the CV's required_global_attributes list.

Bugfixes

  • Removed erroneous warning message that says zero time steps were written for a time axis if cmor_write was used to write all time steps without setting the ntimes_passed parameter.
  • Invalid JSON in user input or tables will be caught and throw an error instead of silently causing segmentation faults.
  • The minimum supported CMOR version in the header of tables will now be compared as separate major and minor integers against the current CMOR version instead of as a float.

Changes

  • Time axis intervals will now be checked when passing time values with cmor_write.
  • To use zstandard compression, the user must disable deflation with cmor_set_deflate and then provide a valid zstandard compression level within the range [-131072, 22] using cmor_set_zstandard. Performing only one of the two actions will result in no zstandard compression being applied.
  • cmor_write will throw an error if variable or zfactor data contains NaN values.
  • Calendars in the CF 1.12 release that are not supported by CMOR (i.e utc, tai, all_leap, and 366_day) will throw an error message asking users to use another, more common calendar.
  • cmor_time_varying_grid_coordinate has been deprecated, and will be removed in a future release.

Closed Issues

GitHub

CMOR 3.10.0

09 Apr 04:54
070c548

Choose a tag to compare

Updates for writing CMIP7 datasets.

Features

  • The branding_suffix of variables will be tested against the branding_suffix template provided by the CV. Its components temporal_label, vertical_label, horizontal_label, and area_label will have their values validated by their corresponding sections in the CV.
  • mip_era and data_specs_version will be set from the CV if they are single string values.
  • frequency can be defined in the user input JSON or by calling cmor_set_cur_dataset_attribute prior to creating the time axis and variable that uses the axis.
  • Interval values for the frequencies are acquired from the CV if the current dataset has a frequency. If the interval value used for the time axis doesn't match the interval values of the frequency used by the variable, then CMOR will throw an error.
  • region can be defined in the user input JSON or by calling cmor_set_cur_dataset_attribute prior to calling cmor_write.
  • Table attributes type, positive, valid_max, valid_min, ok_max_mean_abs, and ok_min_mean_abs can be acquired from the header of tables and used as the default for a table's variable entries. The are overwritten by a variable entry's own version of these attributes if present.
  • variable_title and brand_description can now be variable attributes if defined in the variable entry.
  • _cmip7_option should be set in the user input JSON to enable CMIP7 global attribute checking similar to CMIP6 but without subexperiment tests. parent_mip_era will be set to CMIP7 for all datasets that are written with _cmip7_option set.

Bugfixes

  • Resolved compiler warnings when building CMOR library source.
  • Resolved the issue where quantization was applied to axis, grid, and zfactor values rather than just the variable matrix. Quantization will now only be applied to the variable matrix.

Changes

  • Updated quantization feature to meet CF compliance.
  • If a global attribute is required and has a section in the CV that is an object with key and single string value pairs, then that attribute's value will be compared against the keys in that object.

Closed Issues

GitHub

CMOR 3.9.0

28 Aug 20:01
2d376a0

Choose a tag to compare

Features

  • Added the functions cmor_set_quantize and cmor_set_zstandard for exposing the data quantization and Zstandard compression utilities of the netCDF library since version 4.9.0.
  • MacOS arm64 builds for use on Apple silicon (M-series CPUs).

Bugfixes

  • The attribute realm will not be written to files if it is not specified in the required_global_attributes of a controlled vocabulary.

Changes

  • End of support for Python 3.8.
  • Compatibility with the Numpy 2.0 C API.
  • Use netCDF's default chunking rather than setting chunk size to 1 for coordinates/axis such as time to enhance performance of reading netCDF variables.

Closed Issues

CMOR 3.8.0

08 Apr 23:12

Choose a tag to compare

CMOR 3.8.0 is the first release built to work natively with the mip-cmor-tables, CMIP6Plus_CVs, input4MIPs_CVs and obs4MIPs_CVs. The software has been generalized to allow more broad usage following the new CVs templates noted above.

Changes

  • CMOR will throw an error if it processes a JSON file that contains null values. Used to avoid segfaults.
  • When processing attributes in variable entries, any JSON list values will be converted into a space-separated lists string. Used for the dimensions and modeling_realm variable attributes.
  • Modeling realm strings were being split by spaces and only had the first word found stored in the realm attribute of the file. This has been fixed by storing the whole realm string.
  • The further_info_url attribute is no longer created automatically unless it is listed in the CV's required_global_attributes list.

Closed Issues

CMOR 3.7.3

17 Oct 21:57

Choose a tag to compare

Changes

  • CMOR now supports Python 3.12.

Bugfixes

  • Fixed error caused when cmor_write writes arrays with more than 231-1 elements.
  • Fixed segmentation fault casued when the value for further_info_url in the user input is an empty string or only whitespace.
  • Fixed implicit declaration compilation error in cmor.c.

Closed Issues

GitHub

CMOR 3.7.2

24 Mar 18:33
8a5260d

Choose a tag to compare

Changes

  • testsrunner is no longer being used for running CMIP6 CV tests, which are now a part of make test.
  • CDMS2 is no longer supported.

Bugfixes

  • Removed deprecated NumPy types numpy.float and numpy.int, which caused errors with NumPy >=1.24.

Closed Issues

GitHub

CMOR 3.7.1

30 Nov 00:29
eb60909

Choose a tag to compare

Changes

  • End of support for Python 3.7.
  • CMOR now supports Python 3.11.
  • The Python 3.11 build of CMOR will not support CDMS2.

Bugfixes

  • Fixed issue with Python 3.10 build of PrePARE where it was skipping files due to an issue with the check_filename function.
  • CMOR failed when doing multiple writes to a dataset with seasonal forecast time coordinates ('reftime' and 'leadtime'). Fixed by checking if the 'leadtime' coordinate already exists.

Closed Issues

GitHub

CMOR 3.7.0

22 Aug 18:26

Choose a tag to compare

Features

  • CMOR automatically sets attributes in a dataset using the registered data listed in a project CV's source_id entry (e.g. Tables/CMIP6_CVs.json or Tables/input4MIPs.json), reducing the input requirements from a user. This feature can be overridden by setting the attributes in the user input file (e.g. user_input.json).
  • Added ability to write reftime and leadtime coordinates to datasets for forecast data.

Changes

  • End of support for Python 3.6.
  • CMOR now supports Python 3.10.
  • The CCLRC license has been replaced with a BSD-3 license.
  • Updated warning and error messages from retired listserv email address [email protected] to [email protected].
  • Updated CMOR and CF versions listed in the Fortran wrapper.

Bugfixes

  • PrePARE would crash if the experiment_id attribute is not present in a dataset. It will now check for the presence of experiment_id before further processing the dataset.
  • PrePARE was generating errors when processing cell_methods values that contained multiple comments, which are substrings in parentheses embeded in the values. PrePARE can now handle cell_methods values containg mulitple comments.
  • Fixed error caused by an error message exceeding the maximum string size when an attribute value cannot be validated with a list of values from the CV.
  • Corrected typo in udunits initialization message.

Closed Issues

GitHub