pycontrails 0.53.0__tar.gz → 0.54.0__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.0 → pycontrails-0.54.0}/.github/workflows/release.yaml +1 -1
- {pycontrails-0.53.0 → pycontrails-0.54.0}/.github/workflows/test.yaml +1 -2
- {pycontrails-0.53.0 → pycontrails-0.54.0}/.pre-commit-config.yaml +11 -10
- {pycontrails-0.53.0 → pycontrails-0.54.0}/CHANGELOG.md +39 -4
- {pycontrails-0.53.0 → pycontrails-0.54.0}/Makefile +10 -15
- {pycontrails-0.53.0/pycontrails.egg-info → pycontrails-0.54.0}/PKG-INFO +2 -4
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/develop.rst +7 -7
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/integrations/APCEMM.ipynb +4 -12
- pycontrails-0.54.0/docs/notebooks/ARCO-ERA5.ipynb +389 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/notebooks/CoCiP.ipynb +2 -2
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/notebooks/ECMWF.ipynb +7 -7
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/notebooks/GFS.ipynb +4 -5
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/notebooks/Landsat.ipynb +1 -1
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/notebooks/Meteorology.ipynb +2 -2
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/notebooks/Sentinel.ipynb +1 -1
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/notebooks/advection.ipynb +2 -2
- pycontrails-0.54.0/docs/notebooks/model-levels.ipynb +651 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/notebooks/run-cocip-on-flight.ipynb +0 -1
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/notebooks/run-cocip-with-fdr.ipynb +2 -5
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/_version.py +2 -2
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/core/flight.py +3 -1
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/core/rgi_cython.c +187 -187
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/core/vector.py +0 -1
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/datalib/_met_utils/metsource.py +8 -5
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/datalib/ecmwf/__init__.py +22 -2
- pycontrails-0.54.0/pycontrails/datalib/ecmwf/arco_era5.py +340 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/datalib/ecmwf/common.py +1 -1
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/datalib/ecmwf/era5.py +21 -9
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/datalib/ecmwf/era5_model_level.py +126 -121
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/datalib/ecmwf/hres_model_level.py +38 -74
- pycontrails-0.54.0/pycontrails/datalib/ecmwf/model_levels.py +434 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/datalib/ecmwf/variables.py +11 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/datalib/landsat.py +3 -2
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/datalib/sentinel.py +0 -1
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/ext/synthetic_flight.py +5 -1
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/apcemm/apcemm.py +0 -1
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/cocip/cocip.py +0 -1
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/cocipgrid/cocip_grid.py +4 -4
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/dry_advection.py +11 -3
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/issr.py +2 -2
- {pycontrails-0.53.0 → pycontrails-0.54.0/pycontrails.egg-info}/PKG-INFO +2 -4
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails.egg-info/SOURCES.txt +2 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails.egg-info/requires.txt +1 -3
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pyproject.toml +10 -16
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/benchmark/cocip/review.ipynb +2 -11
- pycontrails-0.54.0/tests/fixtures/ecmwf-met.py +95 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/conftest.py +14 -0
- pycontrails-0.54.0/tests/unit/static/met-ecmwf-lnsp.nc +0 -0
- pycontrails-0.54.0/tests/unit/static/met-ecmwf-ml.nc +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_ecmwf.py +116 -15
- pycontrails-0.53.0/docs/notebooks/ARCO-ERA5.ipynb +0 -370
- pycontrails-0.53.0/docs/notebooks/model-levels.ipynb +0 -2019
- pycontrails-0.53.0/pycontrails/datalib/ecmwf/arco_era5.py +0 -527
- pycontrails-0.53.0/pycontrails/datalib/ecmwf/model_levels.py +0 -79
- pycontrails-0.53.0/tests/fixtures/ecmwf-met.py +0 -65
- {pycontrails-0.53.0 → pycontrails-0.54.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/.github/dependabot.yaml +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/.github/pull_request_template.md +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/.github/workflows/docs.yaml +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/.github/workflows/doctest.yaml +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/.github/workflows/scorecard.yaml +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/.gitignore +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/.zenodo.json +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/CONTRIBUTING.md +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/LICENSE +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/NOTICE +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/README.md +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/RELEASE.md +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/_static/css/style.css +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/_static/img/colab.png +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/_static/img/favicon.png +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/_static/img/logo-dark.png +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/_static/img/logo.png +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/_static/pycontrails.bib +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/api.rst +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/changelog.rst +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/conf.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/contributing.rst +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/flight.rst +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/index.rst +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/install.rst +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/integrations/ACCF.ipynb +1 -1
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/literature.rst +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/meteorology.rst +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/models.rst +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/notebooks/AircraftPerformance.ipynb +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/notebooks/Cache.ipynb +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/notebooks/Flight.ipynb +1 -1
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/notebooks/GOES.ipynb +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/notebooks/ISSR.ipynb +3 -3
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/notebooks/SAC.ipynb +3 -3
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/notebooks/airports.ipynb +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/notebooks/data/.gitignore +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/notebooks/data/flight-ap.csv +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/notebooks/data/flight-cocip.csv +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/notebooks/data/flight-fdr.csv +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/notebooks/data/flight-noisy.csv +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/notebooks/data/flight.csv +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/notebooks/data/iagos-flight-landsat.csv +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/notebooks/data/iagos-flight-sentinel.csv +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/notebooks/flightplan.ipynb +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/notebooks/specific-humidity-interpolation.ipynb +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/notebooks.rst +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/observations.rst +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/tutorials.rst +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/docs/utilities.rst +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/__init__.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/core/__init__.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/core/aircraft_performance.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/core/airports.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/core/cache.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/core/coordinates.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/core/fleet.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/core/flightplan.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/core/fuel.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/core/interpolation.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/core/met.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/core/met_var.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/core/models.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/core/polygon.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/core/rgi_cython.pyx +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/datalib/__init__.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/datalib/_leo_utils/search.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/datalib/_leo_utils/static/bq_roi_query.sql +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/datalib/_leo_utils/vis.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/datalib/ecmwf/hres.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/datalib/ecmwf/ifs.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/datalib/ecmwf/static/model_level_dataframe_v20240418.csv +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/datalib/gfs/__init__.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/datalib/gfs/gfs.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/datalib/gfs/variables.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/datalib/goes.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/datalib/spire.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/ext/bada.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/ext/cirium.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/ext/empirical_grid.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/__init__.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/accf.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/apcemm/__init__.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/apcemm/inputs.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/apcemm/static/apcemm_yaml_template.yaml +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/apcemm/utils.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/cocip/__init__.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/cocip/cocip_params.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/cocip/cocip_uncertainty.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/cocip/contrail_properties.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/cocip/output_formats.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/cocip/radiative_forcing.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/cocip/radiative_heating.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/cocip/unterstrasser_wake_vortex.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/cocip/wake_vortex.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/cocip/wind_shear.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/cocipgrid/__init__.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/cocipgrid/cocip_grid_params.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/emissions/__init__.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/emissions/black_carbon.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/emissions/emissions.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/emissions/ffm2.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/emissions/static/default-engine-uids.csv +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/emissions/static/edb-gaseous-v29b-engines.csv +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/emissions/static/edb-nvpm-v29b-engines.csv +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/humidity_scaling/__init__.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/humidity_scaling/humidity_scaling.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/humidity_scaling/quantiles/era5-model-level-quantiles.pq +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/humidity_scaling/quantiles/era5-pressure-level-quantiles.pq +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/pcc.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/pcr.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/ps_model/__init__.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/ps_model/ps_aircraft_params.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/ps_model/ps_grid.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/ps_model/ps_model.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/ps_model/ps_operational_limits.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/ps_model/static/ps-aircraft-params-20240524.csv +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/ps_model/static/ps-synonym-list-20240524.csv +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/sac.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/models/tau_cirrus.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/physics/__init__.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/physics/constants.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/physics/geo.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/physics/jet.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/physics/thermo.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/physics/units.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/py.typed +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/utils/__init__.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/utils/dependencies.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/utils/iteration.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/utils/json.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/utils/temp.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails/utils/types.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails.egg-info/dependency_links.txt +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/pycontrails.egg-info/top_level.txt +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/setup.cfg +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/setup.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/__init__.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/_deprecated.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/benchmark/cocip/Makefile +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/benchmark/cocip/README.md +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/benchmark/cocip/benchmark.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/benchmark/cocip/compare.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/benchmark/cocip/data.md +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/benchmark/cocip/output.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/benchmark/cocip-fortran/README.md +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/benchmark/north-atlantic-study/.gcloudignore +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/benchmark/north-atlantic-study/README.md +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/benchmark/north-atlantic-study/support.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/benchmark/north-atlantic-study/validate.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/fixtures/cocip-met.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/fixtures/cocip-met2.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/fixtures/gfs-met.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/__init__.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/static/NOAA_Solar_Calculations_day.csv +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/static/cocip-contrail-output.json +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/static/cocip-contrail-output2.json +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/static/cocip-flight-output.json +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/static/cocip-flight-output2.json +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/static/cocip-output-contrail-edges.json +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/static/cocip-output-flts-20190101-eu.pq +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/static/flight-cocip2.csv +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/static/flight-meridian.csv +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/static/flight-metadata.json +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/static/flight-spire-data-cleaning.pq +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/static/flight.csv +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/static/flt-wypts-20190101-eu.pq +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/static/met-20190101-eu.nc +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/static/met-accf-pl.nc +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/static/met-accf-sl.nc +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/static/met-ecmwf-pl.nc +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/static/met-ecmwf-sl.nc +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/static/met-era5-cocip1.nc +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/static/met-era5-cocip2.nc +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/static/met-gfs.nc +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/static/polygon-bug.nc +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/static/rad-20190101-eu.nc +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/static/rad-era5-cocip1.nc +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/static/rad-era5-cocip2.nc +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/static/rad-gfs.nc +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_accf.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_airports.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_apcemm.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_cache.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_cocip.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_cocip_grid.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_cocip_grid_parity.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_cocip_radiative_forcing.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_cocip_uncertainty.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_coordinates.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_datalib_metsource.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_dry_advection.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_dtypes.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_emissions.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_fleet.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_flight.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_flightplan.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_fuel.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_geo.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_gfs.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_goes.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_grid_to_netcdf.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_humidity_scaling.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_init.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_interpolation.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_leo.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_met.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_met_cache.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_models.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_pcc.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_polygons.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_ps_model.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_sac_issr.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_spire.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_tau_cirrus.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_thermo_sac.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_units.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_unterstrasser_wake_vortex.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_utils.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/tests/unit/test_vector.py +0 -0
- {pycontrails-0.53.0 → pycontrails-0.54.0}/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,40 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v0.54.0
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- Perform model-level to pressure-level conversion in-house instead of relying on `metview`. This update has several advantages:
|
|
8
|
+
- The `ARCOERA5` and `ERA5ModelLevel` interfaces no longer require `metview` to be installed. Similarly, grib files and the associated tooling can also largely be avoided.
|
|
9
|
+
- The computation is performed using `xarray` and `dask` tooling, which means the result can be computed lazily if desired.
|
|
10
|
+
- 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).
|
|
11
|
+
- 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.
|
|
12
|
+
|
|
13
|
+
See the `ml_to_pl` function for low-level details.
|
|
14
|
+
|
|
15
|
+
- 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.
|
|
16
|
+
|
|
17
|
+
### Breaking changes
|
|
18
|
+
|
|
19
|
+
- Rename `levels` -> `model_levels` in the `ARCOERA5` and `ERA5ModelLevel` constructors. Rename `cache_grib` -> `cache_download`.
|
|
20
|
+
- Rename `pressure_levels_at_model_levels` -> `model_level_reference_pressure`. Add a new `model_level_pressure` method that requires surface pressure data.
|
|
21
|
+
|
|
22
|
+
### Fixes
|
|
23
|
+
|
|
24
|
+
- Update `ERA5ModelLevel` for the new CDS-Beta server.
|
|
25
|
+
|
|
26
|
+
### Internals
|
|
27
|
+
|
|
28
|
+
- Use `ruff` to format the codebase in place of `black`.
|
|
29
|
+
- Run `ruff` linting and formatting over the notebook examples in the documentation.
|
|
30
|
+
- Update development documentation with new links.
|
|
31
|
+
|
|
32
|
+
## v0.53.1
|
|
33
|
+
|
|
34
|
+
### Features
|
|
35
|
+
|
|
36
|
+
- Support `ERA5` downloads from [CDS-Beta](https://cds-beta.climate.copernicus.eu/). The updated interface is backwards compatible with the legacy CDS server. The choice of CDS server is governed by the `url` parameter in the `ERA5` constructor.
|
|
37
|
+
|
|
3
38
|
## v0.53.0
|
|
4
39
|
|
|
5
40
|
### Breaking changes
|
|
@@ -88,13 +123,13 @@
|
|
|
88
123
|
### Features
|
|
89
124
|
|
|
90
125
|
- Add tools for running [APCEMM](https://github.com/MIT-LAE/APCEMM) from within pycontrails. This includes:
|
|
91
|
-
|
|
92
|
-
|
|
126
|
+
- utilities for generating APCEMM input files and running APCEMM (`pycontrails.models.apcemm.utils`)
|
|
127
|
+
- an interface (`pycontrails.models.apcemm.apcemm`) that allows users to run APCEMM as a pycontrails `Model`.
|
|
93
128
|
- Add [APCEMM tutorial notebook](https://py.contrails.org/integrations/APCEMM.html).
|
|
94
129
|
- Add prescribed sedimentation rate to `DryAdvection` model.
|
|
95
130
|
- Add `Landsat` and `Sentinel` datalibs for searching, retrieving, and visualizing Landsat 8-9 and Sentinel-2 imagery. The datalibs include:
|
|
96
|
-
|
|
97
|
-
|
|
131
|
+
- Tools for querying Landsat and Sentinel-2 imagery for intersections with user-defined regions (`landsat.query`, `sentinel.query`) or flights (`landsat.intersect`, `sentinel.intersect`). These tools use BigQuery tables and require a Google Cloud Platform account with access to the BigQuery API.
|
|
132
|
+
- Tools for downloading and visualizing imagery from Landsat (`Landsat`) and Sentinel-2 (`Sentinel`). These tools retrieve data anonymously from Google Cloud Platform storage buckets and can be used without a Google Cloud Platform account.
|
|
98
133
|
- Add tutorial notebooks demonstrating how to use `Landsat` and `Sentinel` datalibs to find flights in high-resolution satellite imagery.
|
|
99
134
|
- Modify `Flight.to_geojson_multilinestring` to make grouping key optional and to support multiple antimeridian crossings.
|
|
100
135
|
- Update the `pycontrails` build system to require `numpy 2.0` per the [official numpy guidelines](https://numpy.org/devdocs/dev/depending_on_numpy.html#numpy-2-0-specific-advice). Note that the runtime requirement for `pycontrails` remains `numpy>=1.22`.
|
|
@@ -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 \
|
|
@@ -231,7 +226,7 @@ nb-check-links:
|
|
|
231
226
|
# NOTE notebooks from docs/integrations/ manually
|
|
232
227
|
# Add `skip-execution` cell tag if you want to skip a cell
|
|
233
228
|
# Add `raises-exception` cell tag if you know the cell raises exception
|
|
234
|
-
nb-execute: ensure-era5-cached nb-
|
|
229
|
+
nb-execute: ensure-era5-cached nb-format-check nb-check-links
|
|
235
230
|
jupyter nbconvert --inplace \
|
|
236
231
|
--to notebook \
|
|
237
232
|
--execute \
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pycontrails
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.54.0
|
|
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>`__.
|
|
@@ -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
37
|
"from pycontrails.datalib.ecmwf import ARCOERA5\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
|
{
|