Skip to content

GCPy 1.8.1

Latest

Choose a tag to compare

@yantosca yantosca released this 15 Sep 14:20

Release date: 15 Sep 2026
DOI

From CHANGELOG.md

Added

  • Added constants CONSTANT_REL_TOL, CONSTANT_TOL_ULPS, NOISE_REL_TOL, REGRID_NOISE_REL_TOL to gcpy/plot/core.py
  • Added functions constant_rel_tol, diff_is_negligible, mask_meaningless_ratio, noise_atol to gcpy/plot/core.py
  • Added functions colorbar_for_constant_field, colorbar_for_negligible_diff, colorbar_for_flat_restricted_range, ref_dev_data_scale, unique_ticks to gcpy/plot/six_plot.py
  • Added keyword argument data_scale to functions gcpy.plot.single_panel.single_panel and gcpy.plot.six_plot.six_plot
  • Added function warn_if_flip_levels_mismatch to gcpy/util.py, called from compare_single_level and compare_zonal_mean
  • Added a section to docs/source/Plotting.rst describing the colorbar labels used for six-panel plots that have no meaningful structure to show
  • Added unit test modules gcpy/tests/test_util.py, gcpy/tests/test_benchmark_mass_cons_table.py, gcpy/tests/test_single_panel.py
  • Added gcpy/benchmark/modules/benchmark_gchp_stats.py to print GCHP benchmark statistics
  • Added routine to generate summary table to gcpy/benchmark/modules/benchmark_species_changes.py
  • Added keyword argument yaxis_units to routines in:
    • gcpy/benchmark/modules/benchmark_funcs.py
    • gcpy/examples/diagnostics/compare_diags.py
    • gcpy/plot/compare_zonal_mean.py
    • gcpy/plot/single_panel.py
    • gcpy/plot/six_plot.py
  • Added yaxis_units: pressure to the following YAML files:
    • gcpy/benchmark/config/*.yml
    • gcpy/benchmark/cloud/*.yml
    • `gcpy/examples/diagnostics/compare_diags.yml
  • Added docs/environment_files/gcpy_environment_py314.yml
  • Added GitHub Action build-gcpy-environment-py314.yml to build and test the GCPy environment with Python 3.14
  • Added .gitattributes, CLAUDE.md and SECURITY.md files
  • Added .pylintrc which will ignore harmless warnings based on GCPy's code style

Changed

  • Bumped pytest to 9.0.3 and updated documentation accordingly
  • Updated paths to the model vs observations data files in the 1-year benchmark yaml config files
  • Passed kwarg yaxis_units down from compare_zonal_mean to six_plot to single_panel
  • Updated run_benchmark* routines to read yaxis_units from YAML files and to pass its value to relevant benchmark routines
  • Updated ReadTheDocs documentation for the GCPy environment with Python 3.14
  • Bumped pypdf to 6.16.1 and updated documentation accordingly
  • Prevented RuntimeWarning messages from occurring in gcpy/file_regrid.py
  • Bumped pip to 26.2.1 and updated documentation accordingly
  • Changed ratio panel plots to Ratio to report "Ref is zero throughout domain" or "Dev is zero throughout domain" instead of a more generic label
  • Changed the Abs diff [g] rows of the mass conservation table to use exponential format with 4 decimal places
  • Changed Ref/Dev panels that are constant everywhere to use label "Constant at throughout domain"
  • Changed difference and ratio plots to read "Differences negligible throughout domain" if all values are numerical noise
  • Updated gcpy/examples/plotting/create_test_plot.py to import gcpy.plot directly
  • Updated single_panel to accept the data_scale argument from an external caller when available
  • Updated function vmin_vmax_for_absdiff_plots in gcpy/plot/six_plot.py to use np.nanpercentile instead of np.percentile

Fixed

  • Fixed NameError in gcpy/regrid.py's regrid_vertical by removing stale n_other references
  • Fixed a float32 overflow in gcpy/benchmark/modules/oh_metrics.py that produced inf global airmass, CH4 lifetime, and MCF lifetime values
  • Fixed tuple unpack error in gcpy/benchmark/modules/benchmark_species_changes.py
  • Fixed get_nan_mask in gcpy/util.py, which built its mask from the original array rather than the filled one
  • Fixed blank ratio colorbars (no gradient, ticks, or label) on zonal-mean plots where Ref and Dev are both zero
  • Fixed ratio panels rendering numerical noise as saturated color in both gcpy/plot/compare_zonal_mean.py and gcpy/plot/compare_single_level.py
  • Fixed the difference row and the ratio row of a six-panel plot disagreeing about whether Ref and Dev differ
  • Fixed the end_mass row of the mass conservation table in gcpy/benchmark/modules/benchmark_mass_cons_table.py

Removed

  • Removed the Advected column from the wiki tables in gcpy/benchmark/modules/benchmark_species_changes.py

Pull requests included

  • Bump pytest from 8.3.4 to 9.0.3 by @dependabot[bot] in #434
  • Add benchmark_gchp_stats.py to scrape GCHP 1-month benchmark stats by @yantosca in #436
  • Fix precision issue causing infinity CH4 and MCF lifetimes in OH metrics benchmark tables by @yantosca in #437
  • Fix minor issues in benchmark_species_changes.py script by @yantosca in #438
  • Fix blank Ref/Dev panels in single-level six-panel comparison plots by @yantosca in #439
  • Fix blank/white Ref and Dev panels in zonal-mean comparison plots by @yantosca in #441
  • Pass "yaxis_units" to routine single_panel to allow zonal mean plots to have y-axis units of either level or pressure by @yantosca in #443
  • Improve how comparison plots handle noise, zeros, and undefined ratios by @yantosca in #444
  • Build GCPy environment with Python 3.14 by @yantosca in #440
  • Fixed several remaining issues in benchmark plots by @yantosca in #446
  • GCPy 1.8.1 release by @yantosca in #447

Full Changelog: 1.8.0...1.8.1