pycontrails 0.50.1__tar.gz → 0.51.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.50.1 → pycontrails-0.51.0}/.zenodo.json +5 -1
- {pycontrails-0.50.1 → pycontrails-0.51.0}/CHANGELOG.md +51 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/Makefile +11 -3
- {pycontrails-0.50.1 → pycontrails-0.51.0}/PKG-INFO +4 -4
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/api.rst +3 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/conf.py +5 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/notebooks/ECMWF.ipynb +2439 -526
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/notebooks/GFS.ipynb +1 -1
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/_version.py +2 -2
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/core/datalib.py +22 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/core/flight.py +140 -1
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/core/met.py +33 -5
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/core/polygon.py +10 -3
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/core/rgi_cython.c +125 -125
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/datalib/ecmwf/__init__.py +6 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/datalib/ecmwf/arco_era5.py +2 -53
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/datalib/ecmwf/common.py +4 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/datalib/ecmwf/era5.py +2 -6
- pycontrails-0.51.0/pycontrails/datalib/ecmwf/era5_model_level.py +481 -0
- pycontrails-0.51.0/pycontrails/datalib/ecmwf/hres_model_level.py +494 -0
- pycontrails-0.51.0/pycontrails/datalib/ecmwf/model_levels.py +79 -0
- pycontrails-0.51.0/pycontrails/datalib/ecmwf/static/model_level_dataframe_v20240418.csv +139 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/datalib/ecmwf/variables.py +12 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/emissions/emissions.py +2 -2
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/emissions/static/default-engine-uids.csv +1 -1
- pycontrails-0.50.1/pycontrails/models/emissions/static/edb-gaseous-v28c-engines.csv → pycontrails-0.51.0/pycontrails/models/emissions/static/edb-gaseous-v29b-engines.csv +49 -11
- pycontrails-0.50.1/pycontrails/models/emissions/static/edb-nvpm-v28c-engines.csv → pycontrails-0.51.0/pycontrails/models/emissions/static/edb-nvpm-v29b-engines.csv +90 -54
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/humidity_scaling/humidity_scaling.py +55 -8
- pycontrails-0.51.0/pycontrails/models/humidity_scaling/quantiles/era5-model-level-quantiles.pq +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/ps_model/ps_aircraft_params.py +13 -1
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/ps_model/ps_grid.py +20 -20
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/ps_model/ps_model.py +1 -1
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/ps_model/ps_operational_limits.py +202 -1
- pycontrails-0.51.0/pycontrails/models/ps_model/static/ps-aircraft-params-20240417.csv +64 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/physics/thermo.py +1 -1
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/physics/units.py +2 -2
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/utils/types.py +6 -3
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails.egg-info/PKG-INFO +4 -4
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails.egg-info/SOURCES.txt +9 -4
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails.egg-info/requires.txt +3 -3
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pyproject.toml +7 -5
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/conftest.py +2 -2
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/static/cocip-contrail-output.json +983 -983
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/static/cocip-contrail-output2.json +4118 -4118
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/static/cocip-flight-output.json +241 -241
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/static/cocip-flight-output2.json +1394 -1394
- pycontrails-0.51.0/tests/unit/static/cocip-output-contrail-edges.json +242 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_cocip_grid.py +4 -2
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_cocip_grid_parity.py +3 -1
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_datalib.py +18 -0
- pycontrails-0.51.0/tests/unit/test_ecmwf.py +1145 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_emissions.py +2 -2
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_flight.py +27 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_humidity_scaling.py +99 -1
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_met.py +98 -4
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_polygons.py +31 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_ps_model.py +33 -17
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_thermo_sac.py +14 -1
- pycontrails-0.50.1/pycontrails/models/ps_model/static/ps-aircraft-params-20240209.csv +0 -63
- pycontrails-0.50.1/tests/unit/static/cocip-output-contrail-edges.json +0 -242
- pycontrails-0.50.1/tests/unit/test_ecmwf.py +0 -596
- {pycontrails-0.50.1 → pycontrails-0.51.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/.github/dependabot.yaml +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/.github/pull_request_template.md +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/.github/workflows/benchmark.yaml +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/.github/workflows/docs.yaml +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/.github/workflows/doctest.yaml +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/.github/workflows/release.yaml +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/.github/workflows/scorecard.yaml +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/.github/workflows/test.yaml +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/.gitignore +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/.pre-commit-config.yaml +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/CONTRIBUTING.md +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/LICENSE +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/NOTICE +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/README.md +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/RELEASE.md +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/_static/css/style.css +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/_static/img/colab.png +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/_static/img/favicon.png +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/_static/img/logo-dark.png +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/_static/img/logo.png +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/_static/pycontrails.bib +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/changelog.rst +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/contributing.rst +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/develop.rst +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/flight.rst +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/index.rst +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/install.rst +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/integrations/ACCF.ipynb +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/literature.rst +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/meteorology.rst +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/models.rst +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/notebooks/ARCO-ERA5.ipynb +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/notebooks/AircraftPerformance.ipynb +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/notebooks/Cache.ipynb +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/notebooks/CoCiP.ipynb +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/notebooks/Flight.ipynb +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/notebooks/GOES.ipynb +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/notebooks/ISSR.ipynb +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/notebooks/Meteorology.ipynb +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/notebooks/SAC.ipynb +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/notebooks/advection.ipynb +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/notebooks/airports.ipynb +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/notebooks/data/.gitignore +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/notebooks/data/flight-ap.csv +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/notebooks/data/flight-cocip.csv +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/notebooks/data/flight-fdr.csv +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/notebooks/data/flight-noisy.csv +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/notebooks/data/flight.csv +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/notebooks/flightplan.ipynb +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/notebooks/model-levels.ipynb +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/notebooks/run-cocip-on-flight.ipynb +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/notebooks/run-cocip-with-fdr.ipynb +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/notebooks/specific-humidity-interpolation.ipynb +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/notebooks.rst +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/observations.rst +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/tutorials.rst +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/docs/utilities.rst +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/__init__.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/core/__init__.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/core/aircraft_performance.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/core/airports.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/core/cache.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/core/coordinates.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/core/fleet.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/core/flightplan.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/core/fuel.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/core/interpolation.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/core/met_var.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/core/models.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/core/rgi_cython.pyx +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/core/vector.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/datalib/__init__.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/datalib/ecmwf/hres.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/datalib/ecmwf/ifs.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/datalib/gfs/__init__.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/datalib/gfs/gfs.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/datalib/gfs/variables.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/datalib/goes.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/datalib/spire/__init__.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/datalib/spire/spire.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/ext/bada.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/ext/cirium.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/ext/empirical_grid.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/ext/synthetic_flight.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/__init__.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/accf.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/cocip/__init__.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/cocip/cocip.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/cocip/cocip_params.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/cocip/cocip_uncertainty.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/cocip/contrail_properties.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/cocip/output_formats.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/cocip/radiative_forcing.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/cocip/radiative_heating.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/cocip/unterstrasser_wake_vortex.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/cocip/wake_vortex.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/cocip/wind_shear.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/cocipgrid/__init__.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/cocipgrid/cocip_grid.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/cocipgrid/cocip_grid_params.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/dry_advection.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/emissions/__init__.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/emissions/black_carbon.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/emissions/ffm2.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/humidity_scaling/__init__.py +0 -0
- /pycontrails-0.50.1/pycontrails/models/humidity_scaling/quantiles/era5-quantiles.pq → /pycontrails-0.51.0/pycontrails/models/humidity_scaling/quantiles/era5-pressure-level-quantiles.pq +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/issr.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/pcc.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/pcr.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/ps_model/__init__.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/sac.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/models/tau_cirrus.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/physics/__init__.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/physics/constants.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/physics/geo.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/physics/jet.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/py.typed +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/utils/__init__.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/utils/dependencies.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/utils/iteration.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/utils/json.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails/utils/temp.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails.egg-info/dependency_links.txt +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/pycontrails.egg-info/top_level.txt +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/setup.cfg +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/setup.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/__init__.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/_deprecated.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/benchmark/cocip/Makefile +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/benchmark/cocip/README.md +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/benchmark/cocip/benchmark.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/benchmark/cocip/compare.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/benchmark/cocip/data.md +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/benchmark/cocip/output.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/benchmark/cocip/review.ipynb +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/benchmark/cocip-fortran/README.md +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/benchmark/north-atlantic-study/.gcloudignore +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/benchmark/north-atlantic-study/README.md +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/benchmark/north-atlantic-study/support.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/benchmark/north-atlantic-study/validate.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/fixtures/cocip-met.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/fixtures/cocip-met2.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/fixtures/ecmwf-met.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/fixtures/gfs-met.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/__init__.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/static/NOAA_Solar_Calculations_day.csv +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/static/cocip-output-flts-20190101-eu.pq +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/static/flight-cocip2.csv +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/static/flight-meridian.csv +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/static/flight-metadata.json +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/static/flight-spire-data-cleaning.pq +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/static/flight.csv +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/static/flt-wypts-20190101-eu.pq +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/static/met-20190101-eu.nc +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/static/met-accf-pl.nc +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/static/met-accf-sl.nc +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/static/met-ecmwf-pl.nc +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/static/met-ecmwf-sl.nc +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/static/met-era5-cocip1.nc +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/static/met-era5-cocip2.nc +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/static/met-gfs.nc +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/static/polygon-bug.nc +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/static/rad-20190101-eu.nc +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/static/rad-era5-cocip1.nc +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/static/rad-era5-cocip2.nc +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/static/rad-gfs.nc +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_accf.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_airports.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_cache.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_cocip.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_cocip_radiative_forcing.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_cocip_uncertainty.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_coordinates.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_dry_advection.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_dtypes.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_fleet.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_flightplan.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_fuel.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_geo.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_gfs.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_goes.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_grid_to_netcdf.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_init.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_interpolation.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_met_cache.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_models.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_pcc.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_sac_issr.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_spire.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_tau_cirrus.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_units.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_unterstrasser_wake_vortex.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_utils.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_vector.py +0 -0
- {pycontrails-0.50.1 → pycontrails-0.51.0}/tests/unit/test_zarr.py +0 -0
|
@@ -20,6 +20,10 @@
|
|
|
20
20
|
{
|
|
21
21
|
"name": "Tom Dean",
|
|
22
22
|
"affiliation": "Breakthrough Energy"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "Tristan Abbott",
|
|
26
|
+
"affiliation": "Breakthrough Energy"
|
|
23
27
|
}
|
|
24
28
|
],
|
|
25
29
|
"license": "Apache-2.0",
|
|
@@ -42,4 +46,4 @@
|
|
|
42
46
|
"type": "Researcher"
|
|
43
47
|
}
|
|
44
48
|
]
|
|
45
|
-
}
|
|
49
|
+
}
|
|
@@ -1,6 +1,57 @@
|
|
|
1
1
|
|
|
2
2
|
# Changelog
|
|
3
3
|
|
|
4
|
+
## v0.51.0
|
|
5
|
+
|
|
6
|
+
### Breaking changes
|
|
7
|
+
|
|
8
|
+
- Geodesic interpolation is now used in `Flight.resample_and_fill` when the great circle distance between waypoints (rather than the total segment length including vertical displacement) exceeds a threshold. This may change the interpolation method used when resampling flight segments with lengths close to the geodesic interpolation threshold.
|
|
9
|
+
- Fixed typo in `thermo.c_pm` will decrease computed values of moist heat capacity with non-zero specific humidity. We expect the downstream impact on contrail predictions by `ISSR`, `SAC`, `PCR`, and `Cocip` models to be minimal.
|
|
10
|
+
- `np.nan` is now used as the default `fill_value` in `MetDataArray.to_polygon_feature` and `MetDataArray.to_polygon_feature_collection`. This ensures that NaN values are never included in polygon interiors unless a non-NaN `fill_value` is explicitly passed as a keyword argument.
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
- Add `ERA5ModelLevel` and `HRESModelLevel` interfaces for accessing ERA5 and HRES data on model levels.
|
|
15
|
+
- Update [ECMWF tutorial notebook](https://py.contrails.org/notebooks/ECMWF.html) with instructions for using model-level datalibs.
|
|
16
|
+
- Add `HistogramMatching` humidity scaling calibrated for model-level ERA5 data.
|
|
17
|
+
- Modify `polygon.find_multipolygon`, `MetDataArray.to_polygon_feature`, `MetDataArray.to_polygon_feature_collection`, and `MetDataArray.to_polyhedra` to permit finding regions with values above or below a threshold.
|
|
18
|
+
|
|
19
|
+
### Fixes
|
|
20
|
+
|
|
21
|
+
- Use horizontal great circle distance to determine whether geodesic interpolation is used in `Flight.resample_and_fill`. This ensures geodesic interpolation is used between sufficiently distant waypoints even when one or both waypoints contain NaN altitude data.
|
|
22
|
+
- Fix typo in moist heat capacity equation `thermo.c_pm`.
|
|
23
|
+
|
|
24
|
+
### Internals
|
|
25
|
+
|
|
26
|
+
- Create static copy of dataframe for determining pressure at ECMWF model levels.
|
|
27
|
+
- Extract model-level utilities in `ARCOERA5` to their own module for reuse in `ERA5ModelLevel` and `HRESModelLevel`.
|
|
28
|
+
- Update Makefile so `make ensure-era5-cached` uses default cache directory when run locally.
|
|
29
|
+
- Bump pinned black and ruff versions.
|
|
30
|
+
- Disable mypy type checking on `functools.wraps` in `support_arraylike` decorator to avoid error that appears starting on mypy 1.10.0.
|
|
31
|
+
- Update pinned `Cocip` test output values after moist heat capacity bugfix.
|
|
32
|
+
- Add static files with ECMWF model levels and model-level ERA5 RHI quantiles to packaged data.
|
|
33
|
+
- Pass `exc_type=ImportError` to `pytest.importorskip` in test fixtures that use pycontrails extensions to suppress pytest warning when extensions are not installed.
|
|
34
|
+
- Bump minimum pytest version 8.2 to ensure the `exc_type` kwarg is available.
|
|
35
|
+
|
|
36
|
+
## v0.50.2
|
|
37
|
+
|
|
38
|
+
### Breaking changes
|
|
39
|
+
|
|
40
|
+
- Replaces engine-uid `01P10IA024` with `04P10IA027` (superseded in the IACO EDB).
|
|
41
|
+
|
|
42
|
+
### Features
|
|
43
|
+
|
|
44
|
+
- Adds support for the `E190` aircraft type in the PS model
|
|
45
|
+
- Adds `Flight.distance_to_coords` which takes in a distance along a flight trajectory in meters and returns geodesic coordinates.
|
|
46
|
+
- Adds methods to `ps_operational_limits` to find the maximum and minimum mach numbers for a given set of operating conditions.
|
|
47
|
+
- Updates ICAO aircraft engine emissions databank (EDB) from v28c to v29b.
|
|
48
|
+
|
|
49
|
+
### Internals
|
|
50
|
+
|
|
51
|
+
- New data for gaseous and nvPM emissions for PW812D, PW812GA, RR Trent 7000 with improved nvPM combustor
|
|
52
|
+
- Update nvPM emissions for IAE V2530-A5, PW1500G and PW1900G
|
|
53
|
+
- Update PS model coeffiencts to match the latest version provided by Ian Poll
|
|
54
|
+
|
|
4
55
|
## v0.50.1
|
|
5
56
|
|
|
6
57
|
### Breaking changes
|
|
@@ -142,12 +142,11 @@ ensure-gcp-credentials:
|
|
|
142
142
|
"See https://cloud.google.com/docs/authentication/application-default-credentials$(END_COLOR)"; \
|
|
143
143
|
exit 1)
|
|
144
144
|
|
|
145
|
-
|
|
146
|
-
# Cache common ERA5 data for nb-tests and doctests in DiskCacheStore(cache_dir=".doc-test-cache")
|
|
145
|
+
# Cache common ERA5 data for nb-tests and doctests in DiskCacheStore
|
|
147
146
|
ensure-era5-cached:
|
|
148
147
|
python -c 'from pycontrails.datalib.ecmwf import ERA5; \
|
|
149
148
|
from pycontrails import DiskCacheStore; \
|
|
150
|
-
cache = DiskCacheStore(
|
|
149
|
+
cache = DiskCacheStore(); \
|
|
151
150
|
time = "2022-03-01", "2022-03-01T23"; \
|
|
152
151
|
lev = [300, 250, 200]; \
|
|
153
152
|
met_vars = ["t", "q", "u", "v", "w", "ciwc", "z", "cc"]; \
|
|
@@ -250,4 +249,13 @@ docs-serve: doc8
|
|
|
250
249
|
|
|
251
250
|
docs-pdf: doc8
|
|
252
251
|
sphinx-build -b latex $(DOCS_DIR) $(DOCS_BUILD_DIR)/latex
|
|
252
|
+
|
|
253
|
+
# GIF in notebooks/advection.ipynb kills the pdflatex process
|
|
254
|
+
# If advection notebook changes, this will have to get updated
|
|
255
|
+
rm docs/_build/latex/notebooks_advection_20_0.png
|
|
256
|
+
|
|
257
|
+
# this needs to get run twice
|
|
253
258
|
cd $(DOCS_BUILD_DIR)/latex && make
|
|
259
|
+
cd $(DOCS_BUILD_DIR)/latex && make
|
|
260
|
+
|
|
261
|
+
echo "PDF exported to $(DOCS_BUILD_DIR)/latex/pycontrails.pdf"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pycontrails
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.51.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,7 @@ Requires-Dist: xarray>=2022.3
|
|
|
36
36
|
Provides-Extra: complete
|
|
37
37
|
Requires-Dist: pycontrails[ecmwf,gcp,gfs,goes,jupyter,pyproj,vis,zarr]; extra == "complete"
|
|
38
38
|
Provides-Extra: dev
|
|
39
|
-
Requires-Dist: black[jupyter]==24.
|
|
39
|
+
Requires-Dist: black[jupyter]==24.4.1; extra == "dev"
|
|
40
40
|
Requires-Dist: dep_license; extra == "dev"
|
|
41
41
|
Requires-Dist: fastparquet>=0.8; extra == "dev"
|
|
42
42
|
Requires-Dist: ipdb>=0.13; extra == "dev"
|
|
@@ -47,10 +47,10 @@ Requires-Dist: platformdirs>=3.0; extra == "dev"
|
|
|
47
47
|
Requires-Dist: pre-commit>=2.10; extra == "dev"
|
|
48
48
|
Requires-Dist: psutil; extra == "dev"
|
|
49
49
|
Requires-Dist: pyarrow>=5.0; extra == "dev"
|
|
50
|
-
Requires-Dist: pytest>=8.
|
|
50
|
+
Requires-Dist: pytest>=8.2; extra == "dev"
|
|
51
51
|
Requires-Dist: pytest-cov>=2.11; extra == "dev"
|
|
52
52
|
Requires-Dist: requests>=2.25; extra == "dev"
|
|
53
|
-
Requires-Dist: ruff==0.1
|
|
53
|
+
Requires-Dist: ruff==0.4.1; extra == "dev"
|
|
54
54
|
Provides-Extra: docs
|
|
55
55
|
Requires-Dist: doc8>=1.1; extra == "docs"
|
|
56
56
|
Requires-Dist: furo>=2023.3; extra == "docs"
|
|
@@ -55,8 +55,11 @@ ECMWF
|
|
|
55
55
|
:toctree: api/
|
|
56
56
|
|
|
57
57
|
datalib.ecmwf.ERA5
|
|
58
|
+
datalib.ecmwf.era5_model_level
|
|
58
59
|
datalib.ecmwf.HRES
|
|
60
|
+
datalib.ecmwf.hres_model_level
|
|
59
61
|
datalib.ecmwf.hres.get_forecast_filename
|
|
62
|
+
datalib.ecmwf.model_levels
|
|
60
63
|
datalib.ecmwf.IFS
|
|
61
64
|
datalib.ecmwf.variables
|
|
62
65
|
|
|
@@ -37,6 +37,7 @@ extensions = [
|
|
|
37
37
|
"sphinx.ext.autosummary",
|
|
38
38
|
"sphinx.ext.todo",
|
|
39
39
|
"sphinx.ext.intersphinx",
|
|
40
|
+
"sphinx.ext.imgconverter",
|
|
40
41
|
"sphinx.ext.mathjax",
|
|
41
42
|
"sphinx.ext.napoleon",
|
|
42
43
|
"sphinx.ext.extlinks",
|
|
@@ -269,3 +270,7 @@ html_sourcelink_suffix = ""
|
|
|
269
270
|
html_js_files = [
|
|
270
271
|
("https://plausible.io/js/script.js", {"data-domain": "py.contrails.org", "defer": "defer"}),
|
|
271
272
|
]
|
|
273
|
+
|
|
274
|
+
# -- Options for Latex output -------------------------------------------------
|
|
275
|
+
|
|
276
|
+
latex_logo = "_static/img/logo.png"
|