pycontrails 0.53.1__tar.gz → 0.54.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pycontrails might be problematic. Click here for more details.
- {pycontrails-0.53.1 → pycontrails-0.54.1}/.github/workflows/release.yaml +1 -1
- {pycontrails-0.53.1 → pycontrails-0.54.1}/.github/workflows/test.yaml +1 -2
- {pycontrails-0.53.1 → pycontrails-0.54.1}/.pre-commit-config.yaml +11 -10
- {pycontrails-0.53.1 → pycontrails-0.54.1}/CHANGELOG.md +50 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/Makefile +11 -15
- {pycontrails-0.53.1/pycontrails.egg-info → pycontrails-0.54.1}/PKG-INFO +2 -4
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/develop.rst +7 -7
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/index.rst +1 -1
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/integrations/ACCF.ipynb +2 -2
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/integrations/APCEMM.ipynb +6 -14
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/models.rst +3 -2
- pycontrails-0.54.1/docs/notebooks/ARCO-ERA5.ipynb +389 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/notebooks/CoCiP.ipynb +3 -3
- pycontrails-0.54.1/docs/notebooks/CoCiPGrid.ipynb +731 -0
- pycontrails-0.54.1/docs/notebooks/Flight.ipynb +1208 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/notebooks/GFS.ipynb +4 -5
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/notebooks/ISSR.ipynb +4 -4
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/notebooks/Landsat.ipynb +1 -1
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/notebooks/Meteorology.ipynb +2 -2
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/notebooks/SAC.ipynb +4 -4
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/notebooks/Sentinel.ipynb +1 -1
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/notebooks/advection.ipynb +2 -2
- pycontrails-0.54.1/docs/notebooks/model-levels.ipynb +651 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/notebooks/run-cocip-on-flight.ipynb +0 -1
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/notebooks/run-cocip-with-fdr.ipynb +2 -5
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/notebooks/specific-humidity-interpolation.ipynb +4 -4
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/_version.py +2 -2
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/core/aircraft_performance.py +9 -3
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/core/fleet.py +5 -22
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/core/flight.py +12 -78
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/core/met.py +30 -45
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/core/rgi_cython.c +155 -155
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/core/vector.py +13 -45
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/datalib/_met_utils/metsource.py +1 -1
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/datalib/ecmwf/__init__.py +23 -3
- pycontrails-0.54.1/pycontrails/datalib/ecmwf/arco_era5.py +340 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/datalib/ecmwf/era5.py +2 -1
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/datalib/ecmwf/era5_model_level.py +115 -117
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/datalib/ecmwf/hres_model_level.py +38 -74
- pycontrails-0.54.1/pycontrails/datalib/ecmwf/model_levels.py +435 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/datalib/ecmwf/variables.py +11 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/datalib/landsat.py +3 -2
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/datalib/sentinel.py +0 -1
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/ext/synthetic_flight.py +5 -1
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/apcemm/apcemm.py +0 -1
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/cocip/cocip.py +0 -1
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/cocipgrid/cocip_grid.py +5 -3
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/dry_advection.py +11 -3
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/issr.py +2 -2
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/ps_model/ps_model.py +39 -24
- {pycontrails-0.53.1 → pycontrails-0.54.1/pycontrails.egg-info}/PKG-INFO +2 -4
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails.egg-info/SOURCES.txt +3 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails.egg-info/requires.txt +1 -3
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pyproject.toml +2 -10
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/benchmark/cocip/review.ipynb +1 -10
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/fixtures/cocip-met.py +1 -1
- pycontrails-0.54.1/tests/fixtures/ecmwf-met.py +95 -0
- pycontrails-0.54.1/tests/unit/__init__.py +19 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/conftest.py +15 -43
- pycontrails-0.54.1/tests/unit/static/met-ecmwf-lnsp.nc +0 -0
- pycontrails-0.54.1/tests/unit/static/met-ecmwf-ml.nc +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_accf.py +31 -2
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_cocip_grid.py +7 -5
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_cocip_grid_parity.py +1 -1
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_ecmwf.py +116 -15
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_fleet.py +2 -2
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_flight.py +0 -45
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_met.py +18 -1
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_ps_model.py +46 -5
- pycontrails-0.53.1/docs/notebooks/ARCO-ERA5.ipynb +0 -370
- pycontrails-0.53.1/docs/notebooks/Flight.ipynb +0 -1205
- pycontrails-0.53.1/docs/notebooks/model-levels.ipynb +0 -2019
- pycontrails-0.53.1/pycontrails/datalib/ecmwf/arco_era5.py +0 -527
- pycontrails-0.53.1/pycontrails/datalib/ecmwf/model_levels.py +0 -79
- pycontrails-0.53.1/tests/fixtures/ecmwf-met.py +0 -65
- pycontrails-0.53.1/tests/unit/__init__.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/.github/dependabot.yaml +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/.github/pull_request_template.md +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/.github/workflows/docs.yaml +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/.github/workflows/doctest.yaml +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/.github/workflows/scorecard.yaml +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/.gitignore +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/.zenodo.json +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/CONTRIBUTING.md +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/LICENSE +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/NOTICE +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/README.md +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/RELEASE.md +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/_static/css/style.css +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/_static/img/colab.png +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/_static/img/favicon.png +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/_static/img/logo-dark.png +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/_static/img/logo.png +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/_static/pycontrails.bib +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/api.rst +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/changelog.rst +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/conf.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/contributing.rst +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/flight.rst +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/install.rst +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/literature.rst +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/meteorology.rst +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/notebooks/AircraftPerformance.ipynb +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/notebooks/Cache.ipynb +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/notebooks/ECMWF.ipynb +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/notebooks/GOES.ipynb +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/notebooks/airports.ipynb +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/notebooks/data/.gitignore +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/notebooks/data/flight-ap.csv +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/notebooks/data/flight-cocip.csv +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/notebooks/data/flight-fdr.csv +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/notebooks/data/flight-noisy.csv +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/notebooks/data/flight.csv +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/notebooks/data/iagos-flight-landsat.csv +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/notebooks/data/iagos-flight-sentinel.csv +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/notebooks/flightplan.ipynb +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/notebooks.rst +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/observations.rst +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/tutorials.rst +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/docs/utilities.rst +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/__init__.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/core/__init__.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/core/airports.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/core/cache.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/core/coordinates.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/core/flightplan.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/core/fuel.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/core/interpolation.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/core/met_var.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/core/models.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/core/polygon.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/core/rgi_cython.pyx +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/datalib/__init__.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/datalib/_leo_utils/search.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/datalib/_leo_utils/static/bq_roi_query.sql +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/datalib/_leo_utils/vis.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/datalib/ecmwf/common.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/datalib/ecmwf/hres.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/datalib/ecmwf/ifs.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/datalib/ecmwf/static/model_level_dataframe_v20240418.csv +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/datalib/gfs/__init__.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/datalib/gfs/gfs.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/datalib/gfs/variables.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/datalib/goes.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/datalib/spire.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/ext/bada.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/ext/cirium.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/ext/empirical_grid.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/__init__.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/accf.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/apcemm/__init__.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/apcemm/inputs.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/apcemm/static/apcemm_yaml_template.yaml +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/apcemm/utils.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/cocip/__init__.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/cocip/cocip_params.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/cocip/cocip_uncertainty.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/cocip/contrail_properties.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/cocip/output_formats.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/cocip/radiative_forcing.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/cocip/radiative_heating.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/cocip/unterstrasser_wake_vortex.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/cocip/wake_vortex.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/cocip/wind_shear.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/cocipgrid/__init__.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/cocipgrid/cocip_grid_params.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/emissions/__init__.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/emissions/black_carbon.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/emissions/emissions.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/emissions/ffm2.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/emissions/static/default-engine-uids.csv +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/emissions/static/edb-gaseous-v29b-engines.csv +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/emissions/static/edb-nvpm-v29b-engines.csv +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/humidity_scaling/__init__.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/humidity_scaling/humidity_scaling.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/humidity_scaling/quantiles/era5-model-level-quantiles.pq +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/humidity_scaling/quantiles/era5-pressure-level-quantiles.pq +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/pcc.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/pcr.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/ps_model/__init__.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/ps_model/ps_aircraft_params.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/ps_model/ps_grid.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/ps_model/ps_operational_limits.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/ps_model/static/ps-aircraft-params-20240524.csv +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/ps_model/static/ps-synonym-list-20240524.csv +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/sac.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/models/tau_cirrus.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/physics/__init__.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/physics/constants.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/physics/geo.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/physics/jet.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/physics/thermo.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/physics/units.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/py.typed +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/utils/__init__.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/utils/dependencies.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/utils/iteration.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/utils/json.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/utils/temp.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails/utils/types.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails.egg-info/dependency_links.txt +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/pycontrails.egg-info/top_level.txt +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/setup.cfg +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/setup.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/__init__.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/_deprecated.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/benchmark/cocip/Makefile +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/benchmark/cocip/README.md +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/benchmark/cocip/benchmark.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/benchmark/cocip/compare.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/benchmark/cocip/data.md +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/benchmark/cocip/output.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/benchmark/cocip-fortran/README.md +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/benchmark/north-atlantic-study/.gcloudignore +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/benchmark/north-atlantic-study/README.md +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/benchmark/north-atlantic-study/support.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/benchmark/north-atlantic-study/validate.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/fixtures/cocip-met2.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/fixtures/gfs-met.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/static/NOAA_Solar_Calculations_day.csv +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/static/cocip-contrail-output.json +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/static/cocip-contrail-output2.json +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/static/cocip-flight-output.json +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/static/cocip-flight-output2.json +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/static/cocip-output-contrail-edges.json +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/static/cocip-output-flts-20190101-eu.pq +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/static/flight-cocip2.csv +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/static/flight-meridian.csv +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/static/flight-metadata.json +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/static/flight-spire-data-cleaning.pq +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/static/flight.csv +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/static/flt-wypts-20190101-eu.pq +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/static/met-20190101-eu.nc +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/static/met-accf-pl.nc +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/static/met-accf-sl.nc +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/static/met-ecmwf-pl.nc +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/static/met-ecmwf-sl.nc +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/static/met-era5-cocip1.nc +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/static/met-era5-cocip2.nc +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/static/met-gfs.nc +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/static/polygon-bug.nc +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/static/rad-20190101-eu.nc +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/static/rad-era5-cocip1.nc +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/static/rad-era5-cocip2.nc +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/static/rad-gfs.nc +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_airports.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_apcemm.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_cache.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_cocip.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_cocip_radiative_forcing.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_cocip_uncertainty.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_coordinates.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_datalib_metsource.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_dry_advection.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_dtypes.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_emissions.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_flightplan.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_fuel.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_geo.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_gfs.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_goes.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_grid_to_netcdf.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_humidity_scaling.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_init.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_interpolation.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_leo.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_met_cache.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_models.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_pcc.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_polygons.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_sac_issr.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_spire.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_tau_cirrus.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_thermo_sac.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_units.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_unterstrasser_wake_vortex.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_utils.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_vector.py +0 -0
- {pycontrails-0.53.1 → pycontrails-0.54.1}/tests/unit/test_zarr.py +0 -0
|
@@ -40,7 +40,7 @@ jobs:
|
|
|
40
40
|
|
|
41
41
|
# https://cibuildwheel.readthedocs.io/en/stable/options/#testing
|
|
42
42
|
- name: Build wheels
|
|
43
|
-
uses: pypa/cibuildwheel@v2.
|
|
43
|
+
uses: pypa/cibuildwheel@v2.21
|
|
44
44
|
env:
|
|
45
45
|
CIBW_BUILD: cp310-* cp311-* cp312-* cp313-*
|
|
46
46
|
CIBW_SKIP: '*-win32 *-manylinux_i686 *-musllinux*'
|
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
repos:
|
|
2
2
|
- repo: local
|
|
3
3
|
hooks:
|
|
4
|
-
- id: ruff
|
|
5
|
-
name: ruff
|
|
4
|
+
- id: ruff-format
|
|
5
|
+
name: ruff format
|
|
6
|
+
language_version: python3
|
|
7
|
+
language: python
|
|
8
|
+
entry: ruff format
|
|
9
|
+
types: [file]
|
|
10
|
+
files: \.(py|ipynb)$
|
|
11
|
+
- id: ruff-lint
|
|
12
|
+
name: ruff lint
|
|
6
13
|
language_version: python3
|
|
7
14
|
language: python
|
|
8
15
|
entry: ruff check
|
|
9
16
|
args: [--fix, --exit-non-zero-on-fix]
|
|
10
|
-
types: [
|
|
17
|
+
types: [file]
|
|
18
|
+
files: \.(py|ipynb)$
|
|
11
19
|
- id: doc8
|
|
12
20
|
name: doc8
|
|
13
21
|
language_version: python3
|
|
@@ -15,13 +23,6 @@ repos:
|
|
|
15
23
|
entry: doc8
|
|
16
24
|
types: [file]
|
|
17
25
|
files: \.(rst)$
|
|
18
|
-
- id: black
|
|
19
|
-
name: black
|
|
20
|
-
language_version: python3
|
|
21
|
-
language: python
|
|
22
|
-
entry: black
|
|
23
|
-
types: [file]
|
|
24
|
-
files: \.(py|ipynb)$
|
|
25
26
|
- id: nb-clean
|
|
26
27
|
name: nb-clean
|
|
27
28
|
language_version: python3
|
|
@@ -1,5 +1,55 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v0.54.1
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- Add [CoCiP Grid notebook](https://py.contrails.org/notebooks/CoCiPGrid.html) example to documentation.
|
|
8
|
+
- Implement `PSFlight.eval` on a `Fleet` source.
|
|
9
|
+
|
|
10
|
+
### Breaking changes
|
|
11
|
+
|
|
12
|
+
- Remove `attrs["crs"]` usage from `GeoVectorDataset` and child classes (`Flight`, `Fleet`). All spatial data is assumed to be EPSG:4326 (WGS84). This was previously assumed implicitly, but now the `crs` attribute is removed from the `attrs` dictionary.
|
|
13
|
+
- Change the return type of `GeoVectorDataset.transform_crs` to a pair of numpy arrays representing `x` and `y` coordinates in the target CRS.
|
|
14
|
+
- Remove deprecated `MetDataset.variables` property in favor of `MetDataset.indexes`.
|
|
15
|
+
- Remove `**kwargs` in `MetDataArray` constructor.
|
|
16
|
+
- Rename `ARCOERA5` to `ERA5ARCO` for consistency with the `ERA5` and `ERA5ModelLevel` interfaces.
|
|
17
|
+
|
|
18
|
+
### Fixes
|
|
19
|
+
|
|
20
|
+
- Fix the integration time step in `CocipGrid.calc_evolve_one_step`. The previous implementation assumed a time interval of `params["dt_integration"]`. This may not be the case for all `source` parameters (for example, this could occur if running `CocipGrid` over a collection of ADS-B waypoints).
|
|
21
|
+
- Raise an exception in constructing `MetDataset(ds, copy=False)` when `ds["level"]` has float32 dtype. Per interpolation conventions, all coordinate variables must have float64 dtype. (This was previously enforced in longitude and latitude, but was overlooked in the level coordinate.)
|
|
22
|
+
- Allow `AircraftPerformance.ensure_true_airspeed_on_source` to use `eastward_wind` and `northward_wind` fields on the `source` if available. This is useful when the `source` has already been interpolated to met data.
|
|
23
|
+
|
|
24
|
+
## v0.54.0
|
|
25
|
+
|
|
26
|
+
### Features
|
|
27
|
+
|
|
28
|
+
- Perform model-level to pressure-level conversion in-house instead of relying on `metview`. This update has several advantages:
|
|
29
|
+
- The `ARCOERA5` and `ERA5ModelLevel` interfaces no longer require `metview` to be installed. Similarly, grib files and the associated tooling can also largely be avoided.
|
|
30
|
+
- The computation is performed using `xarray` and `dask` tooling, which means the result can be computed lazily if desired.
|
|
31
|
+
- The computation is defined using `numpy` operations (some of which release the GIL) and can be parallelized using threading through `dask` (this is the default behavior).
|
|
32
|
+
- The computation is generally a bit faster than the `metview` implementation (this depends on the exact chunking of the model level meteorology data). This chunking can be tuned by the user to optimize runtime performance or memory usage.
|
|
33
|
+
|
|
34
|
+
See the `ml_to_pl` function for low-level details.
|
|
35
|
+
|
|
36
|
+
- Update the `ARCOERA5` and `ERA5ModelLevel` interfaces to use the new model-level to pressure-level conversion. The ERA5 model level data is now downloaded as the netcdf format instead of grib. This format change decreases the download size.
|
|
37
|
+
|
|
38
|
+
### Breaking changes
|
|
39
|
+
|
|
40
|
+
- Rename `levels` -> `model_levels` in the `ARCOERA5` and `ERA5ModelLevel` constructors. Rename `cache_grib` -> `cache_download`.
|
|
41
|
+
- Rename `pressure_levels_at_model_levels` -> `model_level_reference_pressure`. Add a new `model_level_pressure` method that requires surface pressure data.
|
|
42
|
+
|
|
43
|
+
### Fixes
|
|
44
|
+
|
|
45
|
+
- Update `ERA5ModelLevel` for the new CDS-Beta server.
|
|
46
|
+
|
|
47
|
+
### Internals
|
|
48
|
+
|
|
49
|
+
- Use `ruff` to format the codebase in place of `black`.
|
|
50
|
+
- Run `ruff` linting and formatting over the notebook examples in the documentation.
|
|
51
|
+
- Update development documentation with new links.
|
|
52
|
+
|
|
3
53
|
## v0.53.1
|
|
4
54
|
|
|
5
55
|
### Features
|
|
@@ -71,14 +71,12 @@ dev-pycontrails-bada:
|
|
|
71
71
|
# QC, Test
|
|
72
72
|
# -----------
|
|
73
73
|
|
|
74
|
-
|
|
75
|
-
ruff check pycontrails tests
|
|
74
|
+
lint:
|
|
75
|
+
ruff check pycontrails tests docs
|
|
76
|
+
ruff format --check pycontrails tests docs
|
|
76
77
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
black-check:
|
|
81
|
-
black pycontrails tests --check
|
|
78
|
+
format:
|
|
79
|
+
ruff format pycontrails tests docs
|
|
82
80
|
|
|
83
81
|
# https://taplo.tamasfe.dev/
|
|
84
82
|
taplo:
|
|
@@ -107,7 +105,7 @@ pytest-cov:
|
|
|
107
105
|
--ignore=tests/unit/test_zarr.py \
|
|
108
106
|
tests/unit
|
|
109
107
|
|
|
110
|
-
test:
|
|
108
|
+
test: lint mypy pytest doctest nb-test
|
|
111
109
|
|
|
112
110
|
profile:
|
|
113
111
|
python -m cProfile -o $(script).prof $(script)
|
|
@@ -178,11 +176,8 @@ doctest: ensure-numpy-2 ensure-era5-cached ensure-gcp-credentials
|
|
|
178
176
|
doc8:
|
|
179
177
|
doc8 docs
|
|
180
178
|
|
|
181
|
-
nb-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
nb-black-check:
|
|
185
|
-
black docs/**/*.ipynb --check
|
|
179
|
+
nb-format-check:
|
|
180
|
+
ruff format --check docs/**/*.ipynb
|
|
186
181
|
|
|
187
182
|
# Note must be kept in sync with
|
|
188
183
|
# `.pre-commit-config.yaml` and `make nb-clean-check`
|
|
@@ -206,7 +201,7 @@ nb-clean-check:
|
|
|
206
201
|
# TODO:
|
|
207
202
|
# - Install eccodes on Github Action so GFS notebook can run
|
|
208
203
|
# - Provide meteorology data for `run-cocip-on-flight` tutorial
|
|
209
|
-
nb-test: ensure-era5-cached nb-clean-check nb-
|
|
204
|
+
nb-test: ensure-era5-cached nb-clean-check nb-format-check nb-check-links
|
|
210
205
|
python -m pytest --nbval-lax \
|
|
211
206
|
--ignore=docs/integrations/ACCF.ipynb \
|
|
212
207
|
--ignore=docs/integrations/APCEMM.ipynb \
|
|
@@ -225,13 +220,14 @@ nb-check-links:
|
|
|
225
220
|
--check-links-ignore "https://doi.org/10.1021/acs.est.2c05781" \
|
|
226
221
|
--check-links-ignore "https://github.com/contrailcirrus/pycontrails-bada" \
|
|
227
222
|
--check-links-ignore "https://ourairports.com" \
|
|
223
|
+
--check-links-ignore "https://www.ncei.noaa.gov/products/weather-climate-models/global-forecast" \
|
|
228
224
|
docs/notebooks/*.ipynb
|
|
229
225
|
|
|
230
226
|
# Execute all notebooks in docs
|
|
231
227
|
# NOTE notebooks from docs/integrations/ manually
|
|
232
228
|
# Add `skip-execution` cell tag if you want to skip a cell
|
|
233
229
|
# Add `raises-exception` cell tag if you know the cell raises exception
|
|
234
|
-
nb-execute: ensure-era5-cached nb-
|
|
230
|
+
nb-execute: ensure-era5-cached nb-format-check nb-check-links
|
|
235
231
|
jupyter nbconvert --inplace \
|
|
236
232
|
--to notebook \
|
|
237
233
|
--execute \
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pycontrails
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.54.1
|
|
4
4
|
Summary: Python library for modeling aviation climate impacts
|
|
5
5
|
Author-email: Breakthrough Energy <py@contrails.org>
|
|
6
6
|
License: Apache-2.0
|
|
@@ -36,7 +36,6 @@ Requires-Dist: xarray>=2022.3
|
|
|
36
36
|
Provides-Extra: complete
|
|
37
37
|
Requires-Dist: pycontrails[ecmwf,gcp,gfs,jupyter,pyproj,sat,vis,zarr]; extra == "complete"
|
|
38
38
|
Provides-Extra: dev
|
|
39
|
-
Requires-Dist: black[jupyter]==24.8.0; extra == "dev"
|
|
40
39
|
Requires-Dist: dep_license; extra == "dev"
|
|
41
40
|
Requires-Dist: fastparquet>=0.8; extra == "dev"
|
|
42
41
|
Requires-Dist: ipdb>=0.13; extra == "dev"
|
|
@@ -50,7 +49,7 @@ Requires-Dist: pyarrow>=5.0; extra == "dev"
|
|
|
50
49
|
Requires-Dist: pytest>=8.2; extra == "dev"
|
|
51
50
|
Requires-Dist: pytest-cov>=2.11; extra == "dev"
|
|
52
51
|
Requires-Dist: requests>=2.25; extra == "dev"
|
|
53
|
-
Requires-Dist: ruff==0.
|
|
52
|
+
Requires-Dist: ruff==0.6.2; extra == "dev"
|
|
54
53
|
Requires-Dist: setuptools; extra == "dev"
|
|
55
54
|
Provides-Extra: docs
|
|
56
55
|
Requires-Dist: doc8>=1.1; extra == "docs"
|
|
@@ -73,7 +72,6 @@ Requires-Dist: ecmwf-api-client>=1.6; extra == "ecmwf"
|
|
|
73
72
|
Requires-Dist: netcdf4>=1.6.1; extra == "ecmwf"
|
|
74
73
|
Requires-Dist: platformdirs>=3.0; extra == "ecmwf"
|
|
75
74
|
Requires-Dist: requests>=2.25; extra == "ecmwf"
|
|
76
|
-
Requires-Dist: lxml>=5.1.0; extra == "ecmwf"
|
|
77
75
|
Provides-Extra: gcp
|
|
78
76
|
Requires-Dist: google-cloud-storage>=2.1; extra == "gcp"
|
|
79
77
|
Requires-Dist: platformdirs>=3.0; extra == "gcp"
|
|
@@ -91,17 +91,17 @@ but should also be run locally before submitting PRs:
|
|
|
91
91
|
|
|
92
92
|
$ make test
|
|
93
93
|
|
|
94
|
-
Lint the repository with `ruff <https://
|
|
94
|
+
Lint the repository with `ruff <https://docs.astral.sh/ruff/>`__:
|
|
95
95
|
|
|
96
96
|
.. code-block:: bash
|
|
97
97
|
|
|
98
|
-
$ make
|
|
98
|
+
$ make lint
|
|
99
99
|
|
|
100
|
-
Autoformat the repository with `
|
|
100
|
+
Autoformat the repository with `ruff <https://docs.astral.sh/ruff/formatter/>`__:
|
|
101
101
|
|
|
102
102
|
.. code-block:: bash
|
|
103
103
|
|
|
104
|
-
$ make
|
|
104
|
+
$ make format
|
|
105
105
|
|
|
106
106
|
Run type checking with `mypy <https://www.mypy-lang.org/>`__:
|
|
107
107
|
|
|
@@ -109,7 +109,7 @@ Run type checking with `mypy <https://www.mypy-lang.org/>`__:
|
|
|
109
109
|
|
|
110
110
|
$ make mypy
|
|
111
111
|
|
|
112
|
-
Run unit tests with `pytest <https://docs.pytest.org/en/
|
|
112
|
+
Run unit tests with `pytest <https://docs.pytest.org/en/latest/>`__:
|
|
113
113
|
|
|
114
114
|
.. code-block:: bash
|
|
115
115
|
|
|
@@ -121,7 +121,7 @@ Run notebook validation with `nbval <https://github.com/computationalmodelling/n
|
|
|
121
121
|
|
|
122
122
|
$ make nb-test
|
|
123
123
|
|
|
124
|
-
Run doctests with `pytest <https://docs.pytest.org/en/
|
|
124
|
+
Run doctests with `pytest <https://docs.pytest.org/en/latest/>`__:
|
|
125
125
|
|
|
126
126
|
.. code-block:: bash
|
|
127
127
|
|
|
@@ -294,7 +294,7 @@ The project uses `Black <https://black.readthedocs.io/en/stable/>`__,
|
|
|
294
294
|
standardize code-formatting. These tools are run automatically in a
|
|
295
295
|
pre-commit hook.
|
|
296
296
|
|
|
297
|
-
The project uses `pytest <https://docs.pytest.org/en/
|
|
297
|
+
The project uses `pytest <https://docs.pytest.org/en/latest/>`__ to run
|
|
298
298
|
unit tests. New code should include clear unit tests for implementation
|
|
299
299
|
and output values. New test files should be included in the
|
|
300
300
|
`/tests/unit/ directory <https://github.com/contrailcirrus/pycontrails/tree/main/tests/unit>`__.
|
|
@@ -92,7 +92,7 @@ Learn more on `contrails.org <https://contrails.org>`_.
|
|
|
92
92
|
:alt: Unit test
|
|
93
93
|
:target: https://github.com/contrailcirrus/pycontrails/actions/workflows/test.yaml
|
|
94
94
|
|
|
95
|
-
.. |Docs| image:: https://github.com/contrailcirrus/pycontrails/actions/workflows/docs.yaml/badge.svg
|
|
95
|
+
.. |Docs| image:: https://github.com/contrailcirrus/pycontrails/actions/workflows/docs.yaml/badge.svg?event=push
|
|
96
96
|
:alt: Docs
|
|
97
97
|
:target: https://github.com/contrailcirrus/pycontrails/actions/workflows/docs.yaml
|
|
98
98
|
|
|
@@ -24,9 +24,9 @@
|
|
|
24
24
|
"metadata": {},
|
|
25
25
|
"outputs": [],
|
|
26
26
|
"source": [
|
|
27
|
+
"import matplotlib.pyplot as plt\n",
|
|
27
28
|
"import numpy as np\n",
|
|
28
29
|
"import pandas as pd\n",
|
|
29
|
-
"import matplotlib.pyplot as plt\n",
|
|
30
30
|
"\n",
|
|
31
31
|
"from pycontrails import Flight\n",
|
|
32
32
|
"from pycontrails.datalib.ecmwf import ERA5\n",
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"## Download meteorology data from ECMWF\n",
|
|
66
66
|
"\n",
|
|
67
67
|
"This demo uses [ERA5](https://www.ecmwf.int/en/forecasts/dataset/ecmwf-reanalysis-v5) via the [Copernicus Data Store (CDS)](https://cds.climate.copernicus.eu/) for met data.\n",
|
|
68
|
-
"This requires account with [Copernicus Data Portal](https://cds.climate.copernicus.eu/
|
|
68
|
+
"This requires account with [Copernicus Data Portal](https://cds.climate.copernicus.eu/how-to-api) and local `~/.cdsapirc` file with credentials."
|
|
69
69
|
]
|
|
70
70
|
},
|
|
71
71
|
{
|
|
@@ -26,17 +26,16 @@
|
|
|
26
26
|
"import os\n",
|
|
27
27
|
"\n",
|
|
28
28
|
"import cartopy.crs as ccrs\n",
|
|
29
|
+
"import matplotlib.pyplot as plt\n",
|
|
29
30
|
"import numpy as np\n",
|
|
30
31
|
"import pandas as pd\n",
|
|
31
|
-
"import matplotlib.colors as colors\n",
|
|
32
|
-
"import matplotlib.pyplot as plt\n",
|
|
33
32
|
"import xarray as xr\n",
|
|
33
|
+
"from matplotlib import colors\n",
|
|
34
34
|
"\n",
|
|
35
|
-
"from pycontrails import Flight,
|
|
35
|
+
"from pycontrails import Flight, MetVariable\n",
|
|
36
36
|
"from pycontrails.core.met_var import Geopotential\n",
|
|
37
|
-
"from pycontrails.datalib.ecmwf import
|
|
37
|
+
"from pycontrails.datalib.ecmwf import ERA5ARCO\n",
|
|
38
38
|
"from pycontrails.models.apcemm.apcemm import APCEMM\n",
|
|
39
|
-
"from pycontrails.models.apcemm.inputs import APCEMMInput\n",
|
|
40
39
|
"from pycontrails.models.humidity_scaling import HistogramMatching\n",
|
|
41
40
|
"from pycontrails.models.issr import ISSR\n",
|
|
42
41
|
"from pycontrails.models.ps_model import PSFlight\n",
|
|
@@ -54,14 +53,7 @@
|
|
|
54
53
|
"\n",
|
|
55
54
|
"This demo uses model-level [ERA5](https://www.ecmwf.int/en/forecasts/dataset/ecmwf-reanalysis-v5) data from the [ARCO ERA5 dataset](https://github.com/google-research/arco-era5) for met data. \n",
|
|
56
55
|
"\n",
|
|
57
|
-
"> Note this will download ~3 GB of meteorology data to your computer
|
|
58
|
-
"\n",
|
|
59
|
-
"Processing ARCO ERA5 data requires [metview](https://metview.readthedocs.io/en/latest/) binaries and python bindings. If pycontrails is installed in a conda environment, metview can be installed by running\n",
|
|
60
|
-
"```bash\n",
|
|
61
|
-
"conda install -c conda-forge metview\n",
|
|
62
|
-
"conda install -c conda-forge metview-python\n",
|
|
63
|
-
"python -m metview selfcheck\n",
|
|
64
|
-
"```"
|
|
56
|
+
"> Note this will download ~3 GB of meteorology data to your computer"
|
|
65
57
|
]
|
|
66
58
|
},
|
|
67
59
|
{
|
|
@@ -82,7 +74,7 @@
|
|
|
82
74
|
"outputs": [],
|
|
83
75
|
"source": [
|
|
84
76
|
"variables = (v if isinstance(v, MetVariable) else Geopotential for v in APCEMM.met_variables)\n",
|
|
85
|
-
"era5ml =
|
|
77
|
+
"era5ml = ERA5ARCO(time=time_bounds, variables=APCEMM.met_variables)"
|
|
86
78
|
]
|
|
87
79
|
},
|
|
88
80
|
{
|