You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is the release commit of GCPy 1.7.0. Please see the CHANGELOG.md
for a list of updates. Documentation for GCPy 1.7.0 is now available
at gcpy.readthedocs.io.
Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
# This workflow will upload a Python Package using Twine when a release is created
2
-
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python#publishing-to-package-registries
1
+
# This workflow will upload a Python Package using Twine when a
Copy file name to clipboardExpand all lines: CHANGELOG.md
+80-18Lines changed: 80 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,6 +4,80 @@ All notable changes to GCPy will be documented in this file.
4
4
5
5
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
7
+
## [1.7.0] - 2026-01-29
8
+
### Added
9
+
- Added `gcpy/profile/vtune_plot_hotspots.py` to plot a bargraph of hotspots from Intel VTune reports
10
+
- Added ReadTheDocs documentation for plotting hotspots from Intel VTune reports
11
+
- Added "Lint" GitHub Action to check other actions for security issues
12
+
- Added `gcpy_environment_py314.ym1` to specify the GCPy environment packages with Python 3.14
13
+
- Added GitHub action `build-gcpy-environment-py314.yml` to test building the GCPy environment with Python 3.14
14
+
- Added call to drop GC-Classic variables when regridding a GC-Classic restart file to cubed-sphere
15
+
- Added `Ap` and `Bp` parameters for GCAP2 vertical grids
16
+
- Added new constants for default lon/lat and stretched-grid settings in `gcpy/constants.py`
17
+
- Added PyDoc headers in routines where they were missing
18
+
- Added `examples/grids/display_gcclassic_grid_info.py` to display info about a GEOS-Chem Classic horizontal grid
19
+
- Added functions `get_molwt_from_metadata` and `read_species_metadata` to `gcpy/util.py`
20
+
- Added function `get_species_database_files` to `gcpy/benchmark/modules/benchmark_utils.py`
21
+
- Added constant `SPECIES_DATABASE` to `gcpy/benchmark/modules/benchmark_utils.py`
22
+
- Added manual garbage collection in `create_regridders`, `compare_single_level`, and `compare_zonal_mean` functions.
23
+
- Added helpful tips to the `gcpy/benchmark/benchmark.slurm.sh` script
24
+
- Added function `datetime64_to_str` to `gcpy/date_time.py`
25
+
- Added keyword arguments `ref_hdr_label` and `dev_hdr_label` to `make_benchmark_mass_tables`
26
+
- Added "HEMCO Examples" chapter to ReadTheDocs documentation
27
+
28
+
### Changed
29
+
- Modified criteria for terminating read of log files in `benchmark_scrape_gcclassic_timers.py` to avoid being spoofed by output that is attached by Intel VTune
30
+
- Moved `gprofng_text_to_data_units` to function `text_to_data_units` in `gcpy/plot/core.py` so that it can be used by `gprofng_functions` and `vtune_plot_hotspots`
31
+
- Updated GitHub badges in `README.md` and `docs/source/index.rst`
32
+
- Expanded possible stretched grid attribute names to include `STRETCH_FACTOR`, `TARGET_LAT`, and `TARGET_LON`
33
+
- Changed regridding for plots to always compare stretched-grid to uniform CS grid on the uniform CS grid rather than whatever grid is ref
34
+
- Updated PDF writing algorithm in `compare_single_level` and `compare_zonal_mean` to use `PdfReader` and `PdfWriter` instead of `PdfMerger`
35
+
- Bumped `pypdf` from version 4.2.0 to 6.6.2 in `setup.py` and environment files
36
+
- Moved `Ap` and `Bp` parameters that define vertical grids from `grid.py` to `vgrid_defs.py`
37
+
- Replaced hardwired default lon/lat and stretched-grid settings with new constants from `gcpy/constants.py`
38
+
- Modified code in several modules as directed by Pylint to better conform to the Python style guide
39
+
- Renamed grid routines to use all lower-case letters in order to conform to Python snake-case convention
40
+
- Remamed `vert_grid` class in `gcpy/grid.py` to `VertGrid` to conform to PascalCase naming convention
41
+
- Replaced `hashlib.sha1` with `hashlib.sha256` in routine `sg_hash` in `gcpy/regrid.py`
42
+
- Bumped `pip` to version 25.2 as suggested by Dependabot
43
+
- Required passing template output file to offline restart regridding that has grid dimensions that do not match target restart grid
- Changed `mamba` to `conda` in `benchmarks/benchmark_slurm.sh`
46
+
- Separated plot and table options for clarity in `benchmarks/config/*yml` and `benchmarks/cloud/*.yml`
47
+
- Clarified the GCPy installation process in ReadTheDocs documentation
48
+
- Updated the instructions in the "Create a Test Plot" example in ReadTheDocs documentation
49
+
- Updated default GCPy Python environment to use Python 3.13 (instead of 3.12)
50
+
- Benchmark routines now look for `species_database.yml` in the `Ref` and `Dev` run directories
51
+
- Replaced `get_species_database_dir` with `get_species_database_files` in `gcpy/benchmark/modules/benchmark_funcs.py`
52
+
- Updated `gcpy/benchmark/modules/benchmark_scrape_gchp_timers.py` to look for GCHP timers in `allPEs.log` if not found in the log file
53
+
- Updated routine `make_benchmark_aerosol_tables` to include all dust species in the aerosol burdens table
54
+
- Optimized function `get_diff_of_diffs` (in `gcpy/util.py`) for performance
55
+
- Optimized function `add_lumped_species_to_dataset` (in `gcpy/benchmark/modules/benchmark_utils.py`) for performance
56
+
- Optimized the algorithm to generate `varlist` in `make_benchmark_conc_plots`. Also truncated datasets to only contain variables in `varlist`.
57
+
- Updated `make_benchmark_aod_plots` to include column AOD plots for DSTbin1..DSTbin7 species
58
+
- Updated `benchmark/modules/aod_species.py` with metadata for DSTbin1..DSTbin7 species
59
+
- Updated `make_benchmark_mass_tables` and `create_global_mass_table` to allow Ref and Dev to have different dates if so chosen
60
+
- Updated `run_benchmark.py` to generate mass tables at start and end of the simulation
61
+
- Updated `run_1yr_fullchem_benchmark.py` and `run_1yr_tt_benchmark.py` to generate mass tables at the 1st day of each month from Jan 2019 thru Jan 2020
62
+
- Updated `run_benchmark.py` to take the `AREA` field from the GCHP restart file at the end of the month when computing mass tables for 1hr/1mon benchmarks
63
+
- Updated routine `convert_units` to reshape the area variable tomatch input data on the GCHP checkpoint grid
64
+
65
+
### Fixed
66
+
- Fixed grid area calculation scripts of `grid_area` in `gcpy/gcpy/cstools.py`
67
+
- Fixed various security issues in GitHub Actions workflows
68
+
- Fixed colorbar bounds for case of comparing cubed-sphere grids
69
+
- Fixed the restart regridding for stretched GCHP when target lat/lon is exactly 0.0 in `gcpy/regrid_restart_file.py`
70
+
- Fixed computation of the global AOD benchmark table caused by hardwired species names
71
+
- Fixed error in `create_benchmark_emissions_table` where all species were assumed to be in Ref and Dev even if they were not
72
+
- Fixed error that caused the GCHP vs GCC diff-of-diffs AnnualMean plots to be computed as a difference of means instead of a mean of differences
73
+
74
+
### Removed
75
+
- Removed `PdfMerger()` from `compare_single_level` and `compare_zonal_mean`, it has been removed in pypdf >= 5.0.0
76
+
- Removed `.load()` statements from xarray Datasets to improve performance
77
+
- Removed `paths:spcdb_dir` YAML tag in benchmark configuration files
78
+
- Removed `st_Ox` from `benchmark_categories.yml`; this species is no longer used in TransportTracers simulations
79
+
- Removed keyword argument `label` from `make_benchmark_mass_tables`
80
+
7
81
## [1.6.2] - 2025-06-12
8
82
### Added
9
83
- Added `create_benchmark_sanity_check_table` routine to `gcpy/benchmark/benchmark_funcs.py` to test if variables are all zero or NaN
@@ -18,37 +92,25 @@ n
18
92
19
93
### Changed
20
94
- Updated `gcpy_environment_py313.yml` to use `esmf==8.8.1` and `esmpy==8.8.1` to fix package inconsistency issues
95
+
- Updated ReadTheDocs to instruct users to install Conda via the Miniforge distribution, as MambaForge is deprecated
96
+
- Updated `geos-chem-shared-docs/editing_these_docs.rst` with instructions for using a Conda environment to build RTD doc
21
97
22
98
### Fixed
23
99
- Fixed logic error in `compare_varnames` that caused 2D data variables to be flagged as 3D (esp. for GCHP vs GCC comparisons)
24
100
- Replaced incorrect collection name `AOD` with `Aerosols` in the GCC vs. GCC 1-month AOD plots
25
101
- Fix the logic of ravel_1D that creates orbit file for 1D GCHP diagnostic
26
102
27
-
## [1.6.2] - 2025-06-12
28
-
### Changed
29
-
- Bumped `requests` from 2.32.3 to 2.32.4 in environment files to fix a security issue flagged by Dependabot
30
-
31
-
### Fixed
32
-
- Fix the logic of ravel_1D that creates orbit file for 1D GCHP diagnostic
103
+
### Removed
104
+
- Removed `gchp_is_pre_14.0` logical in calls to `get_filepaths` in benchmark modules
33
105
34
106
## [1.6.2] - 2025-06-12
35
-
### Added
36
-
- Added `create_benchmark_sanity_check_table` routine to `gcpy/benchmark/benchmark_funcs.py` to test if variables are all zero or NaN
37
-
- Added a chapter on using code profiling tools in the ReadTheDocs documentatio
38
-
n
39
-
- Added code profiling scripts (in `gcpy/gcpy/profile`) to read and display output from gprofng and Intel VTune profilers
40
-
- Added `check_gchp_emission_diags.py` example script and documentation
41
-
- Added new benchmark functions `make_benchmark_collection_2d_var_plots` and `make_benchmark_collection_3d_var_plots` which can be used with any GEOS-Chem output collection
42
-
- Added 1-month benchmark comparison plot options for `Budget`, `UVFlux`, and `StateMet` collections (2D and 3D vars separately) which are off by default
43
-
- Added `export MPLBACKEND=agg` to `gcpy/benchmark/modules/benchmark_slurm.sh` to request a non-interactive MatPlotLib backend
44
-
- Added `method` keyword argument to `make_regridder_*` routines in `regrid.py`, with default value `conservative`
45
-
46
107
### Changed
47
-
-Updated `gcpy_environment_py313.yml` to use `esmf==8.8.1` and `esmpy==8.8.1`to fix package inconsistency issues
108
+
-Bumped `requests` from 2.32.3 to 2.32.4 in environment files to fix a security issue flagged by Dependabot
48
109
49
110
### Fixed
50
111
- Fixed logic error in `compare_varnames` that caused 2D data variables to be flagged as 3D (esp. for GCHP vs GCC comparisons)
51
112
- Replaced incorrect collection name `AOD` with `Aerosols` in the GCC vs. GCC 1-month AOD plots
113
+
- Fix the logic of ravel_1D that creates orbit file for 1D GCHP diagnostic
0 commit comments