Skip to content

Commit 39c9c07

Browse files
committed
GCPy 1.6.0 release
This is the release commit of GCPy 1.6.0. Please see the CHANGELOG.md for a list of updaes. Documentation for GCPy 1.6.0 is now available at gcpy.readthedocs.io. Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
2 parents 91f9c0f + 56aa67c commit 39c9c07

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+2938
-5027
lines changed

.github/workflows/codeql.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,11 @@ jobs:
4646

4747
steps:
4848
- name: Checkout repository
49-
uses: actions/checkout@v3
49+
uses: actions/checkout@v4
5050

5151
# Initializes the CodeQL tools for scanning.
5252
- name: Initialize CodeQL
53-
uses: github/codeql-action/init@v2
53+
uses: github/codeql-action/init@v3
5454
with:
5555
languages: ${{ matrix.language }}
5656
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -64,7 +64,7 @@ jobs:
6464
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift).
6565
# If this step fails, then you should remove it and run the build manually (see below)
6666
- name: Autobuild
67-
uses: github/codeql-action/autobuild@v2
67+
uses: github/codeql-action/autobuild@v3
6868

6969
# ℹ️ Command-line programs to run using the OS shell.
7070
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
@@ -77,6 +77,6 @@ jobs:
7777
# ./location_of_script_within_repo/buildscript.sh
7878

7979
- name: Perform CodeQL Analysis
80-
uses: github/codeql-action/analyze@v2
80+
uses: github/codeql-action/analyze@v3
8181
with:
8282
category: "/language:${{matrix.language}}"

.github/workflows/publish-python.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ jobs:
2121
runs-on: ubuntu-latest
2222

2323
steps:
24-
- uses: actions/checkout@v3
24+
- uses: actions/checkout@v4
2525
- name: Set up Python
26-
uses: actions/setup-python@v4
26+
uses: actions/setup-python@v5
2727
with:
2828
python-version: '3.x'
2929
- name: Install dependencies

CHANGELOG.md

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,42 @@ All notable changes to GCPy will be documented in this file.
44

55
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).
66

7-
## [Unreleased] - TBD
7+
## [1.6.0] - 2025-01-29
8+
### Added
9+
- Added example script `gcpy/examples/hemco/make_hemco_sa_spec.py` (creates the HEMCO standalone configuration file `HEMCO_sa_Spec.rc`)
10+
- Added module `benchmark_gcclassic_stats.py` for scraping statistics from GEOS-Chem Classic cloud benchmarks
11+
- Added dry deposition velocity comparison plots in 1-month cloud benchmarks
12+
- Added `gcpy/benchmark/modules/benchmark_species_changes.py` to compute the table of species changes between versions
13+
- Added `gcpy/kpp/` folder containing scripts to plot output from the KPP-Standalone box model
14+
- Added ReadTheDocs documentation for plotting output from the KPP-Standalone box model
15+
16+
### Changed
17+
- Changed format of `% diff` column from `12.3e` to `12.3f` in benchmark timing tables
18+
- Updated `gcpy/benchmark/modules/emission_species.yml` file with emission species for GEOS-Chem 14.5.0
19+
- Updated `gcpy/benchmark/modules/benchmark_categories.yml` with the latest categories for GEOS-Chem 14.5.0
20+
- Updated `gcpy/benchmark/modules/lumped_species.yml` with speciations for GEOS-Chem 14.5.0
21+
- Add `DryDep` to list of collections included in benchmark summary table
22+
- Updated `checkout` GitHub action to v4
23+
- Updated `CodeQL` GitHub action to v3
24+
- Updated `publish-python` GitHub action to v5
25+
- In environment files `gcpy_environment.yml` and `gcpy_requirements.txt`:
26+
- Update `python` to 3.12.0
27+
- Update `xesmf` to 0.8.5
28+
- Update `esmf` and `esmpy` to 8.6.1
29+
- In environment files `read_the_docs_environment.yml` and `read_the_docs_requirements.txt`
30+
- Update `jinja` to 3.1.5 (fixes a security issue)
31+
- Update `gcpy/setup.py` with the new Python package version numbers
32+
- Updated code in `gcpy/benchmark/modules/` to replace whitespace in Ref and Dev labels with underscores
33+
834
### Fixed
935
- Fixed formatting error in `.github/workflows/stale.yml` that caused the Mark Stale Issues action not to run
36+
- Now flag differences greater than +/- 10% in benchmark timing table outputs
37+
- Fixed error in computation of dynamic ratio plot min & max values in `plot/six_plot.py`
38+
- Fixed erroneous species classification in `gcpy/benchmark/modules/benchmark_categories.yml`
39+
- Fixed type errors in `calc_rectilinear_lon_edge` and `calc_rectangular_lat_edge` by casting the length of the output array from `float` to `int`
40+
41+
### Removed
42+
- Removed `gcpy/benchmark/modules/species_database.yml` file and corresponding code pointing to this
1043

1144
## [1.5.0] - 2024-05-29
1245
### Added
@@ -72,8 +105,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
72105
- Import error in `gcpy/examples/diagnostics/compare_diags.py`
73106
- Added missing `n_cores` to `gcpy/examples/diagnostics/compare_diags.yml`
74107
- Added missing `plot_drydep` option to `gcpy/gcpy/benchmark/config/1yr_ch4_benchmark.yml`
75-
- Add `docs/requirements.txt` symbolic link to `docs/environment_files/read_the_docs_requirements.txt` for RTD builds
108+
- Added `docs/requirements.txt` symbolic link to `docs/environment_files/read_the_docs_requirements.txt` for RTD builds
76109
- `gcpy/file_regrid.py` now tests if `lon_bnds`, `lat_bnds` are in the dataset before trying to drop them
110+
- Ensured that the header line in the aerosol burden table is written to file
77111

78112
### Removed
79113
- Example script `gcpy/examples/plotting/mda8_o3_timeseries.py`

CONTRIBUTING.md

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
# Contributing Guidelines
22

3-
Thank you for looking into contributing to GCPy! GEOS-Chem is a grass-roots model that relies on contributions from community members like you. Whether you're new to GEOS-Chem or a longtime user, you're a valued member of the community, and we want you to feel empowered to contribute.
3+
Thank you for looking into contributing to GCPy! GCPy is a grass-roots package that relies on contributions from community members like you. Whether you're new to GCPy or a longtime user, you're a valued member of the community, and we want you to feel empowered to contribute.
44

55
## We use GitHub and ReadTheDocs
6+
67
We use GitHub to host the GCPy source code, to track issues, user questions, and feature requests, and to accept pull requests: [https://github.com/geoschem/gcpy](https://github.com/geoschem/gcpy). Please help out as you can in response to issues and user questions.
78

89
GCPy documentation can be found at [gcpy.readthedocs.io](https://gcpy.readthedocs.io).
910

1011
## When should I submit updates?
1112

12-
Submit bug fixes right away, as these will be given the highest priority. Please see "Support Guidelines" for more information.
13+
Submit bug fixes right away, as these will be given the highest priority. Please see **[Support Guidelines](https://gcpy.readthedocs.io/en/stable/reference/SUPPORT.html)** for more information.
1314

1415
The practical aspects of submitting code updates are listed below.
1516

1617
## How can I submit updates?
17-
We use [GitHub Flow](https://guides.github.com/introduction/flow/index.html), so all changes happen through pull requests. This workflow is [described here](https://guides.github.com/introduction/flow/index.html).
18+
19+
We use **GitHub Flow**, so all changes happen through [pull requests](https://help.github.com/articles/creating-a-pull-request/). This workflow is [described here](https://docs.github.com/en/get-started/using-github/github-flow).
1820

1921
As the author you are responsible for:
2022
- Testing your changes
@@ -25,28 +27,35 @@ As the author you are responsible for:
2527

2628
1. Create or log into your [GitHub](https://github.com/) account.
2729
2. [Fork the GCPy repository](https://help.github.com/articles/fork-a-repo/) into your Github account.
28-
5. Clone your fork of the GCPy repositories to your computer system.
29-
6. Add your modifications into a [new branch](https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell) off the **main** branch.
30-
7. Test your update thoroughly and make sure that it works.
31-
8. Review the coding conventions and checklists for code and data updates listed below.
32-
9. Create a [pull request in GitHub](https://help.github.com/articles/creating-a-pull-request/).
33-
10. The [GEOS-Chem Support Team](https://wiki.geos-chem.org/GEOS-Chem_Support_Team) will add your updates into the development branch for an upcoming GCPy version.
34-
11. If the benchmark simulations reveal a problem with your update, the GCST will request that you take further corrective action.
30+
3. Clone your fork of the GCPy repositories to your computer system.
31+
4. Add your modifications into a [new branch](https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell) off the **main** branch.
32+
5. Add a sentence to the `CHANGELOG.md` file describing your update.
33+
6. Test your update thoroughly and make sure that it works.
34+
7. Review the coding conventions and checklists for code and data updates listed below.
35+
8. Create a [pull request in GitHub](https://help.github.com/articles/creating-a-pull-request/).
36+
9. The [GEOS-Chem Support Team](https://wiki.geos-chem.org/GEOS-Chem_Support_Team) will add your updates into the development branch for an upcoming GCPy version.
37+
10. If the benchmark simulations reveal a problem with your update, the GCST will request that you take further corrective action.
3538

3639
### Coding conventions
37-
GCPy includes contributions from many people and multiple organizations. Therefore, some inconsistent conventions are inevitable, but we ask that you do your best to be consistent with nearby code.
40+
41+
We recommend that GCPy developers adhere to the [PEP-8 Python style guide](https://peps.python.org/pep-0008/). You can run `pylint` on all source code files that you modify to ensure adherence to PEP-8 style conventions.
3842

3943
### Checklist for submitting code updates
4044

4145
1. Include thorough comments in all submitted code.
4246
2. Include full citations for references at the top of relevant source code modules.
4347
3. Remove extraneous code updates (e.g. testing options, other science).
48+
4. Check that you have updated the `CHANGELOG.md` file.
49+
5. Run `pylint` on each source code file that you have modified to check for bugs and conformance to the PEP-8 style conventions.
4450

4551
## How can I request a new feature?
52+
4653
We accept feature requests through issues on GitHub. To request a new feature, **[open a new issue](https://github.com/geoschem/gcpy/issues/new/choose)** and select the feature request template. Please include all the information that migth be relevant, including the motivation for the feature.
4754

4855
## How can I report a bug?
56+
4957
Please see **[Support Guidelines](https://gcpy.readthedocs.io/en/stable/reference/SUPPORT.html)**.
5058

5159
## Where can I ask for help?
60+
5261
Please see **[Support Guidelines](https://gcpy.readthedocs.io/en/stable/reference/SUPPORT.html)**

docs/environment_files/gcpy_environment.yml

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,37 +7,38 @@
77
#
88
# $ mamba env create -n gcpy_env --file=/path/to/gcpy/environment.yml
99
#
10-
# These package versions have been proven to work together.
11-
# See: https://github.com/geoschem/gcpy/issues/284
10+
# Now updated to use Python 12 and esmf/esmpy 8.6.1 so as to allow
11+
# installation of GCPy from the Python Package Index (PyPI).
12+
# See: https://github.com/geoschem/gcpy/issues/326
1213
# =====================================================================
1314
name: gcpy_env
1415
channels:
1516
- conda-forge
1617
- nodefaults
1718
dependencies:
18-
- cartopy==0.22.0 # Geospatial data processing
19-
- cf_xarray==0.8.4 # CF conventions for xarray
20-
- dask==2023.9.2 # Parallel library; backend for xarray
19+
- cartopy==0.23.0 # Geospatial data processing
20+
- cf_xarray==0.9.1 # CF conventions for xarray
21+
- dask==2024.5.2 # Parallel library; backend for xarray
22+
- esmf==8.6.1 # Earth system modeling framework
23+
- esmpy==8.6.1 # Python wrapper for ESMF
2124
- gridspec==0.1.0 # Define Earth System Model grids
22-
- ipython==8.15.0 # Interactive Python (used by Jupyter)
23-
- joblib==1.3.2 # Parallelize python code
25+
- ipython==8.25.0 # Interactive Python (used by Jupyter)
26+
- joblib==1.4.2 # Parallelize python code
2427
- jupyter==1.0.0 # Jupyter Notebook
25-
- matplotlib==3.8.0 # Creates plots and visualizations
26-
- netcdf4==1.6.0 # Python wrapper for netCDF
27-
- netcdf-fortran==4.5.4 # Python wrapper for netCDF-Fortran
28-
- numpy==1.26.0 # Optimized mathematical functions
29-
- pandas==2.1.1 # Tables/timeseries manipulation
30-
- pip==23.3 # Install packages from PyPi
31-
- pylint==2.17.5 # Python linter
28+
- matplotlib==3.8.4 # Creates plots and visualizations
29+
- netcdf4==1.6.5 # Python wrapper for netCDF
30+
- netcdf-fortran==4.6.1 # Python wrapper for netCDF-Fortran
31+
- numpy==1.26.4 # Optimized mathematical functions
32+
- pandas==2.2.2 # Tables/timeseries manipulation
33+
- pip==24.0 # Install packages from PyPi
34+
- pylint==3.2.2 # Python linter
3235
- pyproj==3.6.1 # Python map projections library
33-
- python==3.9.18 # Python language
34-
- pypdf==3.17.0 # PDF utilities (bookmarks, etc.)
35-
- requests==2.31.0 # HTTP library
36-
- scipy==1.11.2 # Scientific python package
36+
- python==3.12.0 # Python language
37+
- pypdf==4.2.0 # PDF utilities (bookmarks, etc.)
38+
- requests==2.32.3 # HTTP library
39+
- scipy==1.13.1 # Scientific python package
3740
- sparselt==0.1.3 # Regridding earth system model data
3841
- tabulate==0.9.0 # Pretty-printing for column data
39-
- tk==8.6.12 # Tcl/tk library
40-
- xarray==2023.8.0 # Read data from netCDF etc files
41-
- esmf==8.1.1 # Earth system modeling framework
42-
- esmpy==8.1.1 # Python wrapper for ESMF
43-
- xesmf==0.5.1 # Universal regridder
42+
- tk==8.6.13 # Tcl/tk library
43+
- xarray==2024.5.0 # Read data from netCDF etc files
44+
- xesmf==0.8.5 # Universal regridder

docs/environment_files/gcpy_requirements.txt

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,29 +8,29 @@
88
# These package versions have been proven to work together.
99
# See: https://github.com/geoschem/gcpy/issues/284
1010
# ======================================================================
11-
cartopy==0.22.0 # Geospatial data processing
12-
cf_xarray==0.8.4 # CF conventions for xarray
13-
dask==2023.9.2 # Parallel library; backend for xarray
11+
cartopy==0.23.0 # Geospatial data processing
12+
cf_xarray==0.9.1 # CF conventions for xarray
13+
dask==2024.5.2 # Parallel library; backend for xarray
14+
esmf==8.6.1 # Earth system modeling framework
15+
esmpy==8.6.1 # Python wrapper for ESMF
1416
gridspec==0.1.0 # Define Earth System Model grids
15-
ipython==8.15.0 # Interactive Python (used by Jupyter)
16-
joblib==1.3.2 # Parallelize python code
17+
ipython==8.25.0 # Interactive Python (used by Jupyter)
18+
joblib==1.4.2 # Parallelize python code
1719
jupyter==1.0.0 # Jupyter Notebook
18-
matplotlib==3.8.0 # Creates plots and visualizations
19-
netcdf4==1.6.0 # Python wrapper for netCDF
20-
netcdf-fortran==4.5.4 # Python wrapper for netCDF-Fortran
21-
numpy==1.26.0 # Optimized mathematical functions
22-
pandas==2.1.1 # Tables/timeseries manipulation
23-
pip==23.3 # Install packages from PyPi
24-
pylint==2.17.5 # Python linter
20+
matplotlib==3.8.4 # Creates plots and visualizations
21+
netcdf4==1.6.5 # Python wrapper for netCDF
22+
netcdf-fortran==4.6.1 # Python wrapper for netCDF-Fortran
23+
numpy==1.26.4 # Optimized mathematical functions
24+
pandas==2.2.2 # Tables/timeseries manipulation
25+
pip==24.0 # Install packages from PyPi
26+
pylint==3.2.2 # Python linter
2527
pyproj==3.6.1 # Python map projections library
26-
python==3.9.18 # Python language
27-
pypdf==3.17.0 # PDF utilities (bookmarks, etc.)
28-
requests==2.32.2 # HTTP library
29-
scipy==1.11.2 # Scientific python package
28+
python==3.12.0 # Python language
29+
pypdf==4.2.0 # PDF utilities (bookmarks, etc.)
30+
requests==2.32.3 # HTTP library
31+
scipy==1.13.1 # Scientific python package
3032
sparselt==0.1.3 # Regridding earth system model data
3133
tabulate==0.9.0 # Pretty-printing for column data
32-
tk==8.6.12 # Tcl/tk library
33-
xarray==2023.8.0 # Read data from netCDF etc files
34-
esmf==8.1.1 # Earth system modeling framework
35-
esmpy==8.1.1 # Python wrapper for ESMF
36-
xesmf==0.5.1 # Universal regridder
34+
tk==8.6.13 # Tcl/tk library
35+
xarray==2024.5.0 # Read data from netCDF etc files
36+
xesmf==0.8.5 # Universal regridder

docs/environment_files/read_the_docs_environment.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@ dependencies:
1919
- sphinx-autobuild==2021.3.14
2020
- recommonmark==0.7.1
2121
- docutils==0.20.1
22-
- jinja2==3.1.3
22+
- jinja2==3.1.5
2323

2424

docs/environment_files/read_the_docs_requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@ sphinxcontrib-bibtex==2.6.2
1212
sphinx-autobuild==2021.3.14
1313
recommonmark==0.7.1
1414
docutils==0.20.1
15-
jinja2==3.1.3
15+
jinja2==3.1.5
1616

1717

0 commit comments

Comments
 (0)