pycontrails 0.50.2__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.2 → pycontrails-0.51.0}/.zenodo.json +5 -1
- {pycontrails-0.50.2 → pycontrails-0.51.0}/CHANGELOG.md +32 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/Makefile +11 -3
- {pycontrails-0.50.2 → pycontrails-0.51.0}/PKG-INFO +4 -4
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/api.rst +3 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/conf.py +5 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/notebooks/ECMWF.ipynb +2439 -526
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/_version.py +2 -2
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/core/datalib.py +22 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/core/flight.py +43 -1
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/core/met.py +33 -5
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/core/polygon.py +10 -3
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/core/rgi_cython.c +125 -125
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/datalib/ecmwf/__init__.py +6 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/datalib/ecmwf/arco_era5.py +2 -53
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/datalib/ecmwf/common.py +4 -0
- {pycontrails-0.50.2 → 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.2 → pycontrails-0.51.0}/pycontrails/datalib/ecmwf/variables.py +12 -0
- {pycontrails-0.50.2 → 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.2 → pycontrails-0.51.0}/pycontrails/physics/thermo.py +1 -1
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/utils/types.py +3 -2
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails.egg-info/PKG-INFO +4 -4
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails.egg-info/SOURCES.txt +6 -1
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails.egg-info/requires.txt +3 -3
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pyproject.toml +7 -5
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/conftest.py +2 -2
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/static/cocip-contrail-output.json +983 -983
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/static/cocip-contrail-output2.json +4118 -4118
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/static/cocip-flight-output.json +241 -241
- {pycontrails-0.50.2 → 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.2 → pycontrails-0.51.0}/tests/unit/test_cocip_grid.py +3 -1
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_cocip_grid_parity.py +3 -1
- {pycontrails-0.50.2 → 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.2 → pycontrails-0.51.0}/tests/unit/test_flight.py +13 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_humidity_scaling.py +99 -1
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_met.py +98 -4
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_polygons.py +31 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_thermo_sac.py +14 -1
- pycontrails-0.50.2/tests/unit/static/cocip-output-contrail-edges.json +0 -242
- pycontrails-0.50.2/tests/unit/test_ecmwf.py +0 -596
- {pycontrails-0.50.2 → pycontrails-0.51.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/.github/dependabot.yaml +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/.github/pull_request_template.md +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/.github/workflows/benchmark.yaml +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/.github/workflows/docs.yaml +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/.github/workflows/doctest.yaml +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/.github/workflows/release.yaml +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/.github/workflows/scorecard.yaml +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/.github/workflows/test.yaml +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/.gitignore +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/.pre-commit-config.yaml +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/CONTRIBUTING.md +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/LICENSE +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/NOTICE +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/README.md +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/RELEASE.md +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/_static/css/style.css +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/_static/img/colab.png +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/_static/img/favicon.png +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/_static/img/logo-dark.png +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/_static/img/logo.png +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/_static/pycontrails.bib +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/changelog.rst +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/contributing.rst +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/develop.rst +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/flight.rst +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/index.rst +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/install.rst +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/integrations/ACCF.ipynb +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/literature.rst +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/meteorology.rst +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/models.rst +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/notebooks/ARCO-ERA5.ipynb +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/notebooks/AircraftPerformance.ipynb +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/notebooks/Cache.ipynb +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/notebooks/CoCiP.ipynb +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/notebooks/Flight.ipynb +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/notebooks/GFS.ipynb +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/notebooks/GOES.ipynb +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/notebooks/ISSR.ipynb +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/notebooks/Meteorology.ipynb +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/notebooks/SAC.ipynb +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/notebooks/advection.ipynb +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/notebooks/airports.ipynb +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/notebooks/data/.gitignore +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/notebooks/data/flight-ap.csv +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/notebooks/data/flight-cocip.csv +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/notebooks/data/flight-fdr.csv +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/notebooks/data/flight-noisy.csv +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/notebooks/data/flight.csv +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/notebooks/flightplan.ipynb +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/notebooks/model-levels.ipynb +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/notebooks/run-cocip-on-flight.ipynb +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/notebooks/run-cocip-with-fdr.ipynb +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/notebooks/specific-humidity-interpolation.ipynb +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/notebooks.rst +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/observations.rst +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/tutorials.rst +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/docs/utilities.rst +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/__init__.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/core/__init__.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/core/aircraft_performance.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/core/airports.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/core/cache.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/core/coordinates.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/core/fleet.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/core/flightplan.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/core/fuel.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/core/interpolation.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/core/met_var.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/core/models.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/core/rgi_cython.pyx +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/core/vector.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/datalib/__init__.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/datalib/ecmwf/hres.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/datalib/ecmwf/ifs.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/datalib/gfs/__init__.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/datalib/gfs/gfs.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/datalib/gfs/variables.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/datalib/goes.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/datalib/spire/__init__.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/datalib/spire/spire.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/ext/bada.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/ext/cirium.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/ext/empirical_grid.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/ext/synthetic_flight.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/__init__.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/accf.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/cocip/__init__.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/cocip/cocip.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/cocip/cocip_params.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/cocip/cocip_uncertainty.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/cocip/contrail_properties.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/cocip/output_formats.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/cocip/radiative_forcing.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/cocip/radiative_heating.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/cocip/unterstrasser_wake_vortex.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/cocip/wake_vortex.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/cocip/wind_shear.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/cocipgrid/__init__.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/cocipgrid/cocip_grid.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/cocipgrid/cocip_grid_params.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/dry_advection.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/emissions/__init__.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/emissions/black_carbon.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/emissions/emissions.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/emissions/ffm2.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/emissions/static/default-engine-uids.csv +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/emissions/static/edb-gaseous-v29b-engines.csv +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/emissions/static/edb-nvpm-v29b-engines.csv +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/humidity_scaling/__init__.py +0 -0
- /pycontrails-0.50.2/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.2 → pycontrails-0.51.0}/pycontrails/models/issr.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/pcc.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/pcr.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/ps_model/__init__.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/ps_model/ps_aircraft_params.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/ps_model/ps_grid.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/ps_model/ps_model.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/ps_model/ps_operational_limits.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/ps_model/static/ps-aircraft-params-20240417.csv +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/sac.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/models/tau_cirrus.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/physics/__init__.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/physics/constants.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/physics/geo.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/physics/jet.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/physics/units.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/py.typed +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/utils/__init__.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/utils/dependencies.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/utils/iteration.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/utils/json.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails/utils/temp.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails.egg-info/dependency_links.txt +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/pycontrails.egg-info/top_level.txt +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/setup.cfg +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/setup.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/__init__.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/_deprecated.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/benchmark/cocip/Makefile +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/benchmark/cocip/README.md +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/benchmark/cocip/benchmark.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/benchmark/cocip/compare.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/benchmark/cocip/data.md +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/benchmark/cocip/output.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/benchmark/cocip/review.ipynb +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/benchmark/cocip-fortran/README.md +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/benchmark/north-atlantic-study/.gcloudignore +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/benchmark/north-atlantic-study/README.md +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/benchmark/north-atlantic-study/support.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/benchmark/north-atlantic-study/validate.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/fixtures/cocip-met.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/fixtures/cocip-met2.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/fixtures/ecmwf-met.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/fixtures/gfs-met.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/__init__.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/static/NOAA_Solar_Calculations_day.csv +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/static/cocip-output-flts-20190101-eu.pq +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/static/flight-cocip2.csv +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/static/flight-meridian.csv +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/static/flight-metadata.json +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/static/flight-spire-data-cleaning.pq +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/static/flight.csv +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/static/flt-wypts-20190101-eu.pq +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/static/met-20190101-eu.nc +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/static/met-accf-pl.nc +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/static/met-accf-sl.nc +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/static/met-ecmwf-pl.nc +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/static/met-ecmwf-sl.nc +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/static/met-era5-cocip1.nc +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/static/met-era5-cocip2.nc +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/static/met-gfs.nc +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/static/polygon-bug.nc +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/static/rad-20190101-eu.nc +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/static/rad-era5-cocip1.nc +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/static/rad-era5-cocip2.nc +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/static/rad-gfs.nc +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_accf.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_airports.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_cache.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_cocip.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_cocip_radiative_forcing.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_cocip_uncertainty.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_coordinates.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_dry_advection.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_dtypes.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_emissions.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_fleet.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_flightplan.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_fuel.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_geo.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_gfs.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_goes.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_grid_to_netcdf.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_init.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_interpolation.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_met_cache.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_models.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_pcc.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_ps_model.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_sac_issr.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_spire.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_tau_cirrus.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_units.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_unterstrasser_wake_vortex.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_utils.py +0 -0
- {pycontrails-0.50.2 → pycontrails-0.51.0}/tests/unit/test_vector.py +0 -0
- {pycontrails-0.50.2 → 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,38 @@
|
|
|
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
|
+
|
|
4
36
|
## v0.50.2
|
|
5
37
|
|
|
6
38
|
### 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"
|