Releases: PCMDI/cmor3_documentation
Releases · PCMDI/cmor3_documentation
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
3.12.0
Features
- CMOR will issue warnings for controlled vocabulary (CV) files that do not have a format expected by CMOR.
directory_path_templateandfilename_templatefrom theDRSsection 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_parallelandscale_factor_at_projection_originare valid attributes for grid mappingsmercatorandpolar stereographicwhen usingcmor_set_grid_mappingorcmor_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_attributesin the CV. mip_erawas missing from thetitleattribute when using mip-cmor-tables. This has been resolved by gettingmip_erafrom 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 forcmor_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_parallelparameter when usingcmor_set_grid_mappingorcmor_set_crsis no longer issued if parametersstandard_parallel1andstandard_parallel2are used instead. - Resolved segfault caused by passing invalid units for parameters when using
cmor_set_grid_mappingorcmor_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_coordinatehas been removed from the API.
Closed Issues
- order in
required_global_attributesmatters (#737) - 'title' attribute in files misses mip_era when using mip-cmor-tables (#776)
- Impose table and CMOR input consistency across new templates (#821)
- Compile error in _cmormodule.c (#828)
- Catching issues with poorly formed CV data (#829)
- Warning message for minimum value erroneously uses maximum value (#830)
- Deprecate PrePARE - remove from repo in a future version (#833)
- Use path and file name templates in
DRSsection of CV files (#834) - Remove the function
cmor_time_varying_grid_coordinate(#835) - Segfault encountered when finding NaNs in variable with string value axis (#839)
- Erroneous missing
standard_parallelwarning raised when two standard parallel values are passed (#845) - Parameter options for
mercatorandpolar_stereographicgrid mappings (#849) - CMOR time axis mapping - catching user errors with poor time_bnds arguments (#852)
- Setting unexpected units for grid mapping attributes causes segfault (#856)
CMOR 3.11.0
Update CMOR3 with CF CRS container variable; Numerous edge case fixes, license reformulation for CMIP7
Features
- Added the function
cmor_set_crsused for creating a CF Coordinate Reference System (CRS) container variable. This is similar to the container variable created bycmor_set_grid_mappingbut is namedcrsinstead of the grid mapping name and supports text value attributes. - The
licenseattribute can now be generated from a template in the CV file. It requires the user to provide alicense_idin their input JSON, which determines what license type and URL will be used when generating the license string. The attributeslicense_id,license_type, andlicense_urlare not included in the global attributes of a file unless they are listed in the CV'srequired_global_attributeslist.
Bugfixes
- Removed erroneous warning message that says zero time steps were written for a time axis if
cmor_writewas 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_deflateand then provide a valid zstandard compression level within the range [-131072, 22] usingcmor_set_zstandard. Performing only one of the two actions will result in no zstandard compression being applied. cmor_writewill 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, and366_day) will throw an error message asking users to use another, more common calendar. cmor_time_varying_grid_coordinatehas been deprecated, and will be removed in a future release.
Closed Issues
- warning on timesteps written (#697)
- Adding/augmenting functions to write a CF Coordinate Reference System (CRS) "container variable" (#774)
- Time interval not checked when adding time steps with cmor_write (#791)
- CMOR 3.10 issue with CV structure (#795)
- Correct unexpected behavior of cmor.set_deflate(0,0,0) (#798)
- Correct unexpected behavior of cmor.variable accepting missing_value argument that doesn't match the data array provided (#802)
- Correct segfault due to poorly defined project_CV.json file (#803)
- Update license_id entry - CMOR 3.10 changes break test (#811)
- Update calendar support to match full CF 1.12 list (#813)
- Test that use
cmor_time_varying_grid_coordinateincorrectly use it withcmor_write(#814) - license_id warning truncation bug; and license CV behavior tweaks (#816)
- Catch poorly formatted table and user_input .json files - generate error pointing to errored file (#818)
CMOR 3.10.0
Updates for writing CMIP7 datasets.
Features
- The
branding_suffixof variables will be tested against thebranding_suffixtemplate provided by the CV. Its componentstemporal_label,vertical_label,horizontal_label, andarea_labelwill have their values validated by their corresponding sections in the CV. mip_eraanddata_specs_versionwill be set from the CV if they are single string values.frequencycan be defined in the user input JSON or by callingcmor_set_cur_dataset_attributeprior 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.
regioncan be defined in the user input JSON or by callingcmor_set_cur_dataset_attributeprior to callingcmor_write.- Table attributes
type,positive,valid_max,valid_min,ok_max_mean_abs, andok_min_mean_abscan 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_titleandbrand_descriptioncan now be variable attributes if defined in the variable entry._cmip7_optionshould be set in the user input JSON to enable CMIP7 global attribute checking similar to CMIP6 but without subexperiment tests.parent_mip_erawill be set toCMIP7for all datasets that are written with_cmip7_optionset.
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
CMOR 3.9.0
Features
- Added the functions
cmor_set_quantizeandcmor_set_zstandardfor 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
realmwill not be written to files if it is not specified in therequired_global_attributesof 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
timeto enhance performance of reading netCDF variables.
Closed Issues
CMOR 3.8.0
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_urlattribute is no longer created automatically unless it is listed in the CV'srequired_global_attributeslist.
Closed Issues
CMOR 3.7.3
Changes
- CMOR now supports Python 3.12.
Bugfixes
- Fixed error caused when
cmor_writewrites arrays with more than 231-1 elements. - Fixed segmentation fault casued when the value for
further_info_urlin the user input is an empty string or only whitespace. - Fixed implicit declaration compilation error in
cmor.c.
Closed Issues
CMOR 3.7.2
Changes
testsrunneris no longer being used for running CMIP6 CV tests, which are now a part ofmake test.- CDMS2 is no longer supported.
Bugfixes
- Removed deprecated NumPy types
numpy.floatandnumpy.int, which caused errors with NumPy >=1.24.
Closed Issues
CMOR 3.7.1
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_filenamefunction. - 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
CMOR 3.7.0
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.jsonorTables/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
reftimeandleadtimecoordinates 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_idattribute is not present in a dataset. It will now check for the presence ofexperiment_idbefore further processing the dataset. - PrePARE was generating errors when processing
cell_methodsvalues that contained multiple comments, which are substrings in parentheses embeded in the values. PrePARE can now handlecell_methodsvalues 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
- Remove Python 3.6 build
- Issue with json-c and Python 3.6 builds
- implement lead time coordinate
- Illegal instruction error when region attribute is not found in the CV
- Python 3.10 support
- PrePARE UnicodeDecodeError when scanning dummy NO_ATTRIBUTES.nc netCDF file
- Typo correct in UDUNIT initialization
- PrePARE is having issues handling handling cell_methods values containing multiple comments
- License template update
- Cleaning up CMOR input file vs registered content sources
- Update CMOR mailing list email address
- Add BSD-3 license to repo