pycontrails 0.52.0__tar.gz → 0.52.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pycontrails might be problematic. Click here for more details.
- {pycontrails-0.52.0 → pycontrails-0.52.1}/.pre-commit-config.yaml +1 -1
- {pycontrails-0.52.0 → pycontrails-0.52.1}/CHANGELOG.md +19 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/Makefile +8 -1
- {pycontrails-0.52.0/pycontrails.egg-info → pycontrails-0.52.1}/PKG-INFO +18 -7
- {pycontrails-0.52.0 → pycontrails-0.52.1}/README.md +15 -3
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/index.rst +10 -2
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/install.rst +16 -9
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/_version.py +2 -2
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/core/coordinates.py +5 -5
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/core/flight.py +4 -4
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/core/interpolation.py +2 -2
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/core/met.py +23 -14
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/core/polygon.py +1 -1
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/core/rgi_cython.c +155 -155
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/core/vector.py +1 -1
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/datalib/_met_utils/metsource.py +0 -4
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/datalib/goes.py +10 -3
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/cocip/cocip_uncertainty.py +9 -9
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/cocip/output_formats.py +3 -2
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/physics/geo.py +1 -1
- {pycontrails-0.52.0 → pycontrails-0.52.1/pycontrails.egg-info}/PKG-INFO +18 -7
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails.egg-info/requires.txt +2 -3
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pyproject.toml +3 -4
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/conftest.py +13 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_cocip.py +5 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_ecmwf.py +8 -2
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_met.py +24 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_sac_issr.py +10 -1
- {pycontrails-0.52.0 → pycontrails-0.52.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/.github/dependabot.yaml +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/.github/pull_request_template.md +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/.github/workflows/docs.yaml +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/.github/workflows/doctest.yaml +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/.github/workflows/release.yaml +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/.github/workflows/scorecard.yaml +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/.github/workflows/test.yaml +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/.gitignore +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/.zenodo.json +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/CONTRIBUTING.md +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/LICENSE +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/NOTICE +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/RELEASE.md +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/_static/css/style.css +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/_static/img/colab.png +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/_static/img/favicon.png +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/_static/img/logo-dark.png +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/_static/img/logo.png +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/_static/pycontrails.bib +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/api.rst +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/changelog.rst +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/conf.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/contributing.rst +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/develop.rst +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/flight.rst +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/integrations/ACCF.ipynb +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/integrations/APCEMM.ipynb +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/literature.rst +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/meteorology.rst +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/models.rst +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/notebooks/ARCO-ERA5.ipynb +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/notebooks/AircraftPerformance.ipynb +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/notebooks/Cache.ipynb +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/notebooks/CoCiP.ipynb +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/notebooks/ECMWF.ipynb +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/notebooks/Flight.ipynb +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/notebooks/GFS.ipynb +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/notebooks/GOES.ipynb +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/notebooks/ISSR.ipynb +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/notebooks/Landsat.ipynb +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/notebooks/Meteorology.ipynb +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/notebooks/SAC.ipynb +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/notebooks/Sentinel.ipynb +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/notebooks/advection.ipynb +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/notebooks/airports.ipynb +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/notebooks/data/.gitignore +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/notebooks/data/flight-ap.csv +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/notebooks/data/flight-cocip.csv +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/notebooks/data/flight-fdr.csv +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/notebooks/data/flight-noisy.csv +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/notebooks/data/flight.csv +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/notebooks/data/iagos-flight-landsat.csv +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/notebooks/data/iagos-flight-sentinel.csv +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/notebooks/flightplan.ipynb +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/notebooks/model-levels.ipynb +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/notebooks/run-cocip-on-flight.ipynb +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/notebooks/run-cocip-with-fdr.ipynb +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/notebooks/specific-humidity-interpolation.ipynb +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/notebooks.rst +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/observations.rst +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/tutorials.rst +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/docs/utilities.rst +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/__init__.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/core/__init__.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/core/aircraft_performance.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/core/airports.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/core/cache.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/core/fleet.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/core/flightplan.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/core/fuel.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/core/met_var.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/core/models.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/core/rgi_cython.pyx +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/datalib/__init__.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/datalib/_leo_utils/search.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/datalib/_leo_utils/static/bq_roi_query.sql +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/datalib/_leo_utils/vis.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/datalib/ecmwf/__init__.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/datalib/ecmwf/arco_era5.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/datalib/ecmwf/common.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/datalib/ecmwf/era5.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/datalib/ecmwf/era5_model_level.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/datalib/ecmwf/hres.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/datalib/ecmwf/hres_model_level.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/datalib/ecmwf/ifs.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/datalib/ecmwf/model_levels.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/datalib/ecmwf/static/model_level_dataframe_v20240418.csv +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/datalib/ecmwf/variables.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/datalib/gfs/__init__.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/datalib/gfs/gfs.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/datalib/gfs/variables.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/datalib/landsat.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/datalib/sentinel.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/datalib/spire.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/ext/bada.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/ext/cirium.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/ext/empirical_grid.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/ext/synthetic_flight.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/__init__.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/accf.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/apcemm/__init__.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/apcemm/apcemm.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/apcemm/inputs.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/apcemm/static/apcemm_yaml_template.yaml +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/apcemm/utils.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/cocip/__init__.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/cocip/cocip.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/cocip/cocip_params.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/cocip/contrail_properties.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/cocip/radiative_forcing.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/cocip/radiative_heating.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/cocip/unterstrasser_wake_vortex.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/cocip/wake_vortex.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/cocip/wind_shear.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/cocipgrid/__init__.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/cocipgrid/cocip_grid.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/cocipgrid/cocip_grid_params.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/dry_advection.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/emissions/__init__.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/emissions/black_carbon.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/emissions/emissions.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/emissions/ffm2.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/emissions/static/default-engine-uids.csv +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/emissions/static/edb-gaseous-v29b-engines.csv +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/emissions/static/edb-nvpm-v29b-engines.csv +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/humidity_scaling/__init__.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/humidity_scaling/humidity_scaling.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/humidity_scaling/quantiles/era5-model-level-quantiles.pq +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/humidity_scaling/quantiles/era5-pressure-level-quantiles.pq +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/issr.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/pcc.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/pcr.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/ps_model/__init__.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/ps_model/ps_aircraft_params.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/ps_model/ps_grid.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/ps_model/ps_model.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/ps_model/ps_operational_limits.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/ps_model/static/ps-aircraft-params-20240524.csv +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/ps_model/static/ps-synonym-list-20240524.csv +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/sac.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/models/tau_cirrus.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/physics/__init__.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/physics/constants.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/physics/jet.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/physics/thermo.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/physics/units.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/py.typed +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/utils/__init__.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/utils/dependencies.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/utils/iteration.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/utils/json.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/utils/temp.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails/utils/types.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails.egg-info/SOURCES.txt +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails.egg-info/dependency_links.txt +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/pycontrails.egg-info/top_level.txt +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/setup.cfg +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/setup.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/__init__.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/_deprecated.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/benchmark/cocip/Makefile +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/benchmark/cocip/README.md +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/benchmark/cocip/benchmark.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/benchmark/cocip/compare.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/benchmark/cocip/data.md +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/benchmark/cocip/output.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/benchmark/cocip/review.ipynb +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/benchmark/cocip-fortran/README.md +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/benchmark/north-atlantic-study/.gcloudignore +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/benchmark/north-atlantic-study/README.md +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/benchmark/north-atlantic-study/support.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/benchmark/north-atlantic-study/validate.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/fixtures/cocip-met.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/fixtures/cocip-met2.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/fixtures/ecmwf-met.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/fixtures/gfs-met.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/__init__.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/static/NOAA_Solar_Calculations_day.csv +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/static/cocip-contrail-output.json +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/static/cocip-contrail-output2.json +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/static/cocip-flight-output.json +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/static/cocip-flight-output2.json +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/static/cocip-output-contrail-edges.json +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/static/cocip-output-flts-20190101-eu.pq +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/static/flight-cocip2.csv +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/static/flight-meridian.csv +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/static/flight-metadata.json +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/static/flight-spire-data-cleaning.pq +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/static/flight.csv +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/static/flt-wypts-20190101-eu.pq +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/static/met-20190101-eu.nc +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/static/met-accf-pl.nc +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/static/met-accf-sl.nc +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/static/met-ecmwf-pl.nc +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/static/met-ecmwf-sl.nc +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/static/met-era5-cocip1.nc +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/static/met-era5-cocip2.nc +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/static/met-gfs.nc +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/static/polygon-bug.nc +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/static/rad-20190101-eu.nc +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/static/rad-era5-cocip1.nc +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/static/rad-era5-cocip2.nc +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/static/rad-gfs.nc +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_accf.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_airports.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_apcemm.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_cache.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_cocip_grid.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_cocip_grid_parity.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_cocip_radiative_forcing.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_cocip_uncertainty.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_coordinates.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_datalib_metsource.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_dry_advection.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_dtypes.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_emissions.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_fleet.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_flight.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_flightplan.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_fuel.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_geo.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_gfs.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_goes.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_grid_to_netcdf.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_humidity_scaling.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_init.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_interpolation.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_leo.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_met_cache.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_models.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_pcc.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_polygons.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_ps_model.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_spire.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_tau_cirrus.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_thermo_sac.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_units.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_unterstrasser_wake_vortex.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_utils.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_vector.py +0 -0
- {pycontrails-0.52.0 → pycontrails-0.52.1}/tests/unit/test_zarr.py +0 -0
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v0.52.1
|
|
4
|
+
|
|
5
|
+
### Breaking changes
|
|
6
|
+
|
|
7
|
+
- Remove `lock=False` as a default keyword argument to `xr.open_mfdataset` in the `MetDataSource.open_dataset` method. This reverts a change from [v0.44.1](https://github.com/contrailcirrus/pycontrails/releases/tag/v0.44.1) and prevents segmentation faults when using recent versions of [netCDF4](https://pypi.org/project/netCDF4/) (1.7.0 and above).
|
|
8
|
+
- GOES imagery is now loaded from a temporary file on disk rather than directly from memory when using `GOES.get` without a cachestore.
|
|
9
|
+
|
|
10
|
+
### Internals
|
|
11
|
+
|
|
12
|
+
- Remove upper limits on netCDF4 and numpy versions.
|
|
13
|
+
- Remove h5netcdf dependency.
|
|
14
|
+
- Update doctests with numpy 2 scalar representation (see [NEP 51](https://numpy.org/neps/nep-0051-scalar-representation.html)). Doctests will now fail when run with numpy 1.
|
|
15
|
+
- Run certain tests in `test_ecmwf.py` and `test_met.py` using the single-threaded dask scheduler to prevent tests from hanging while waiting for a lock that is never released. (This issue was [encountered previously](https://github.com/contrailcirrus/pycontrails/pull/68), and removing `lock=False` in `MetDataSource.open_dataset` reverts the fix.)
|
|
16
|
+
- Document pycontrails installation from conda-forge.
|
|
17
|
+
|
|
18
|
+
### Fixes
|
|
19
|
+
|
|
20
|
+
- Ensure the `MetDataset` vertical coordinates `"air_pressure"` and `"altitude"` have the correct dtype.
|
|
21
|
+
|
|
3
22
|
## v0.52.0
|
|
4
23
|
|
|
5
24
|
### Breaking changes
|
|
@@ -133,6 +133,13 @@ main-test-status:
|
|
|
133
133
|
DOCS_DIR = docs
|
|
134
134
|
DOCS_BUILD_DIR = docs/_build
|
|
135
135
|
|
|
136
|
+
# Check that numpy 2 is being used
|
|
137
|
+
ensure-numpy-2:
|
|
138
|
+
[[ $$(python -c 'import numpy as np; print(np.__version__)') == 2.* ]] \
|
|
139
|
+
|| ( \
|
|
140
|
+
echo -e "$(COLOR_YELLOW)NumPy 2 required for doctests$(END_COLOR)"; \
|
|
141
|
+
exit 1)
|
|
142
|
+
|
|
136
143
|
# Check for GCP credentials
|
|
137
144
|
ensure-gcp-credentials:
|
|
138
145
|
python -c 'from google.cloud import storage; storage.Client()' \
|
|
@@ -163,7 +170,7 @@ ensure-era5-cached:
|
|
|
163
170
|
cache-era5-gcp: ensure-era5-cached
|
|
164
171
|
gcloud storage cp -r -n .doc-test-cache/* gs://contrails-301217-unit-test/doc-test-cache/
|
|
165
172
|
|
|
166
|
-
doctest: ensure-era5-cached ensure-gcp-credentials
|
|
173
|
+
doctest: ensure-numpy-2 ensure-era5-cached ensure-gcp-credentials
|
|
167
174
|
pytest --doctest-modules \
|
|
168
175
|
--ignore-glob=pycontrails/ext/* \
|
|
169
176
|
pycontrails -vv
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pycontrails
|
|
3
|
-
Version: 0.52.
|
|
3
|
+
Version: 0.52.1
|
|
4
4
|
Summary: Python library for modeling aviation climate impacts
|
|
5
5
|
Author-email: Breakthrough Energy <py@contrails.org>
|
|
6
6
|
License: Apache-2.0
|
|
@@ -28,7 +28,7 @@ Description-Content-Type: text/markdown
|
|
|
28
28
|
License-File: LICENSE
|
|
29
29
|
License-File: NOTICE
|
|
30
30
|
Requires-Dist: dask>=2022.3
|
|
31
|
-
Requires-Dist: numpy
|
|
31
|
+
Requires-Dist: numpy>=1.22
|
|
32
32
|
Requires-Dist: overrides>=6.1
|
|
33
33
|
Requires-Dist: pandas>=2.2
|
|
34
34
|
Requires-Dist: scipy>=1.10
|
|
@@ -70,7 +70,7 @@ Requires-Dist: cdsapi>=0.4; extra == "ecmwf"
|
|
|
70
70
|
Requires-Dist: cfgrib>=0.9; extra == "ecmwf"
|
|
71
71
|
Requires-Dist: eccodes>=1.4; extra == "ecmwf"
|
|
72
72
|
Requires-Dist: ecmwf-api-client>=1.6; extra == "ecmwf"
|
|
73
|
-
Requires-Dist: netcdf4
|
|
73
|
+
Requires-Dist: netcdf4>=1.6.1; extra == "ecmwf"
|
|
74
74
|
Requires-Dist: platformdirs>=3.0; extra == "ecmwf"
|
|
75
75
|
Requires-Dist: requests>=2.25; extra == "ecmwf"
|
|
76
76
|
Requires-Dist: lxml>=5.1.0; extra == "ecmwf"
|
|
@@ -94,7 +94,6 @@ Requires-Dist: gcsfs>=2022.3; extra == "sat"
|
|
|
94
94
|
Requires-Dist: geojson>=3.1; extra == "sat"
|
|
95
95
|
Requires-Dist: google-cloud-bigquery>=3.23; extra == "sat"
|
|
96
96
|
Requires-Dist: google-cloud-bigquery-storage>=2.25; extra == "sat"
|
|
97
|
-
Requires-Dist: h5netcdf>=1.2; extra == "sat"
|
|
98
97
|
Requires-Dist: pillow>=10.3; extra == "sat"
|
|
99
98
|
Requires-Dist: pyproj>=3.5; extra == "sat"
|
|
100
99
|
Requires-Dist: rasterio>=1.3; extra == "sat"
|
|
@@ -121,7 +120,7 @@ Requires-Dist: zarr>=2.12; extra == "zarr"
|
|
|
121
120
|
|
|
122
121
|
| | |
|
|
123
122
|
|---------------|-------------------------------------------------------------------|
|
|
124
|
-
| **Version** | [](https://pypi.python.org/pypi/pycontrails) [](https://pypi.python.org/pypi/pycontrails) |
|
|
123
|
+
| **Version** | [](https://pypi.python.org/pypi/pycontrails) [](https://anaconda.org/conda-forge/pycontrails) [](https://pypi.python.org/pypi/pycontrails) |
|
|
125
124
|
| **Citation** | [](https://zenodo.org/badge/latestdoi/617248930) |
|
|
126
125
|
| **Tests** | [](https://github.com/contrailcirrus/pycontrails/actions/workflows/test.yaml) [](https://github.com/contrailcirrus/pycontrails/actions/workflows/docs.yaml) [](https://github.com/contrailcirrus/pycontrails/actions/workflows/release.yaml) [](https://securityscorecards.dev/viewer?uri=github.com/contrailcirrus/pycontrails)|
|
|
127
126
|
| **License** | [](https://github.com/contrailcirrus/pycontrails/blob/main/LICENSE) |
|
|
@@ -140,7 +139,9 @@ Documentation and examples available at [py.contrails.org](https://py.contrails.
|
|
|
140
139
|
|
|
141
140
|
## Install
|
|
142
141
|
|
|
143
|
-
|
|
142
|
+
### Install with pip
|
|
143
|
+
|
|
144
|
+
You can install pycontrails from PyPI with `pip` (Python 3.9 or later required):
|
|
144
145
|
|
|
145
146
|
```bash
|
|
146
147
|
$ pip install pycontrails
|
|
@@ -155,7 +156,17 @@ Install the latest development version directly from GitHub:
|
|
|
155
156
|
pip install git+https://github.com/contrailcirrus/pycontrails.git
|
|
156
157
|
```
|
|
157
158
|
|
|
158
|
-
|
|
159
|
+
### Install with conda
|
|
160
|
+
|
|
161
|
+
You can install pycontrails from the [conda-forge](https://conda-forge.org/) channel with `conda` (or other `conda`-like package managers such as `mamba`):
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
conda install -c conda-forge pycontrails
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
The conda-forge package includes all optional runtime dependencies.
|
|
168
|
+
|
|
169
|
+
See more installation options in the [install documentation](https://py.contrails.org/install).
|
|
159
170
|
|
|
160
171
|
## Get Involved
|
|
161
172
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
| | |
|
|
6
6
|
|---------------|-------------------------------------------------------------------|
|
|
7
|
-
| **Version** | [](https://pypi.python.org/pypi/pycontrails) [](https://pypi.python.org/pypi/pycontrails) |
|
|
7
|
+
| **Version** | [](https://pypi.python.org/pypi/pycontrails) [](https://anaconda.org/conda-forge/pycontrails) [](https://pypi.python.org/pypi/pycontrails) |
|
|
8
8
|
| **Citation** | [](https://zenodo.org/badge/latestdoi/617248930) |
|
|
9
9
|
| **Tests** | [](https://github.com/contrailcirrus/pycontrails/actions/workflows/test.yaml) [](https://github.com/contrailcirrus/pycontrails/actions/workflows/docs.yaml) [](https://github.com/contrailcirrus/pycontrails/actions/workflows/release.yaml) [](https://securityscorecards.dev/viewer?uri=github.com/contrailcirrus/pycontrails)|
|
|
10
10
|
| **License** | [](https://github.com/contrailcirrus/pycontrails/blob/main/LICENSE) |
|
|
@@ -23,7 +23,9 @@ Documentation and examples available at [py.contrails.org](https://py.contrails.
|
|
|
23
23
|
|
|
24
24
|
## Install
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
### Install with pip
|
|
27
|
+
|
|
28
|
+
You can install pycontrails from PyPI with `pip` (Python 3.9 or later required):
|
|
27
29
|
|
|
28
30
|
```bash
|
|
29
31
|
$ pip install pycontrails
|
|
@@ -38,7 +40,17 @@ Install the latest development version directly from GitHub:
|
|
|
38
40
|
pip install git+https://github.com/contrailcirrus/pycontrails.git
|
|
39
41
|
```
|
|
40
42
|
|
|
41
|
-
|
|
43
|
+
### Install with conda
|
|
44
|
+
|
|
45
|
+
You can install pycontrails from the [conda-forge](https://conda-forge.org/) channel with `conda` (or other `conda`-like package managers such as `mamba`):
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
conda install -c conda-forge pycontrails
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
The conda-forge package includes all optional runtime dependencies.
|
|
52
|
+
|
|
53
|
+
See more installation options in the [install documentation](https://py.contrails.org/install).
|
|
42
54
|
|
|
43
55
|
## Get Involved
|
|
44
56
|
|
|
@@ -11,11 +11,11 @@ Learn more on `contrails.org <https://contrails.org>`_.
|
|
|
11
11
|
:header-rows: 0
|
|
12
12
|
|
|
13
13
|
* - **Version**
|
|
14
|
-
- |PyPI version| |Supported python versions|
|
|
14
|
+
- |PyPI version| |conda-forge version| |Supported python versions|
|
|
15
15
|
* - **Citation**
|
|
16
16
|
- |DOI|
|
|
17
17
|
* - **Tests**
|
|
18
|
-
- |Unit test| |Docs| |Release|
|
|
18
|
+
- |Unit test| |Docs| |Release| |OpenSSF scorecard|
|
|
19
19
|
* - **License**
|
|
20
20
|
- |Apache License 2.0|
|
|
21
21
|
* - **Community**
|
|
@@ -80,6 +80,10 @@ Learn more on `contrails.org <https://contrails.org>`_.
|
|
|
80
80
|
:alt: Supported python versions
|
|
81
81
|
:target: https://pypi.python.org/pypi/pycontrails
|
|
82
82
|
|
|
83
|
+
.. |conda-forge version| image:: https://anaconda.org/conda-forge/pycontrails/badges/version.svg
|
|
84
|
+
:alt: conda-forge version
|
|
85
|
+
:target: https://anaconda.org/conda-forge/pycontrails
|
|
86
|
+
|
|
83
87
|
.. |DOI| image:: https://zenodo.org/badge/617248930.svg
|
|
84
88
|
:alt: DOI
|
|
85
89
|
:target: https://zenodo.org/badge/latestdoi/617248930
|
|
@@ -96,6 +100,10 @@ Learn more on `contrails.org <https://contrails.org>`_.
|
|
|
96
100
|
:alt: Release
|
|
97
101
|
:target: https://github.com/contrailcirrus/pycontrails/actions/workflows/release.yaml
|
|
98
102
|
|
|
103
|
+
.. |OpenSSF scorecard| image:: https://api.securityscorecards.dev/projects/github.com/contrailcirrus/pycontrails/badge
|
|
104
|
+
:alt: OpenSSF scorecard
|
|
105
|
+
:target: https://securityscorecards.dev/viewer?uri=github.com/contrailcirrus/pycontrails
|
|
106
|
+
|
|
99
107
|
.. |Apache License 2.0| image:: https://img.shields.io/pypi/l/pycontrails.svg
|
|
100
108
|
:alt: Apache License 2.0
|
|
101
109
|
:target: https://github.com/contrailcirrus/pycontrails/blob/main/LICENSE
|
|
@@ -2,15 +2,22 @@
|
|
|
2
2
|
Install
|
|
3
3
|
=======
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
conda install
|
|
6
|
+
-------------
|
|
7
7
|
|
|
8
|
-
-
|
|
8
|
+
Install the latest release from `conda-forge <https://conda-forge.org>`__ using ``conda``:
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
.. code-block:: bash
|
|
11
|
+
|
|
12
|
+
$ conda install -c conda-forge pycontrails
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
The conda-forge package includes all optional runtime dependencies.
|
|
16
|
+
|
|
17
|
+
pip install
|
|
18
|
+
-----------
|
|
12
19
|
|
|
13
|
-
|
|
20
|
+
With Python 3.9 or later, install the latest release from PyPI using ``pip``:
|
|
14
21
|
|
|
15
22
|
.. code-block:: bash
|
|
16
23
|
|
|
@@ -29,13 +36,13 @@ Install the latest development version directly from GitHub:
|
|
|
29
36
|
|
|
30
37
|
|
|
31
38
|
Optional Dependencies
|
|
32
|
-
|
|
39
|
+
~~~~~~~~~~~~~~~~~~~~~
|
|
33
40
|
|
|
34
41
|
The ``pycontrails`` package uses optional dependencies for specific features:
|
|
35
42
|
|
|
36
43
|
.. code-block:: bash
|
|
37
44
|
|
|
38
|
-
# install all
|
|
45
|
+
# install all optional runtime dependencies
|
|
39
46
|
$ pip install "pycontrails[complete]"
|
|
40
47
|
|
|
41
48
|
# install specific optional dependencies
|
|
@@ -57,7 +64,7 @@ for the latest optional dependencies.
|
|
|
57
64
|
|
|
58
65
|
|
|
59
66
|
Pre-built wheels
|
|
60
|
-
|
|
67
|
+
~~~~~~~~~~~~~~~~
|
|
61
68
|
|
|
62
69
|
Wheels for common platforms are available on `PyPI <https://pypi.org/project/pycontrails/>`__. Currently, wheels are available for:
|
|
63
70
|
|
|
@@ -59,27 +59,27 @@ def slice_domain(
|
|
|
59
59
|
>>> # Call with request as np.array
|
|
60
60
|
>>> request = np.linspace(-20, 20, 100)
|
|
61
61
|
>>> slice_domain(domain, request)
|
|
62
|
-
slice(640, 801, None)
|
|
62
|
+
slice(np.int64(640), np.int64(801), None)
|
|
63
63
|
|
|
64
64
|
>>> # Call with request as tuple
|
|
65
65
|
>>> request = -20, 20
|
|
66
66
|
>>> slice_domain(domain, request)
|
|
67
|
-
slice(640, 801, None)
|
|
67
|
+
slice(np.int64(640), np.int64(801), None)
|
|
68
68
|
|
|
69
69
|
>>> # Call with a buffer
|
|
70
70
|
>>> request = -16, 13
|
|
71
71
|
>>> buffer = 4, 7
|
|
72
72
|
>>> slice_domain(domain, request, buffer)
|
|
73
|
-
slice(640, 801, None)
|
|
73
|
+
slice(np.int64(640), np.int64(801), None)
|
|
74
74
|
|
|
75
75
|
>>> # Call with request as a single number
|
|
76
76
|
>>> request = -20
|
|
77
77
|
>>> slice_domain(domain, request)
|
|
78
|
-
slice(640, 641, None)
|
|
78
|
+
slice(np.int64(640), np.int64(641), None)
|
|
79
79
|
|
|
80
80
|
>>> request = -19.9
|
|
81
81
|
>>> slice_domain(domain, request)
|
|
82
|
-
slice(640, 642, None)
|
|
82
|
+
slice(np.int64(640), np.int64(642), None)
|
|
83
83
|
|
|
84
84
|
"""
|
|
85
85
|
# if the length of domain coordinates is <= 2, return the whole domain
|
|
@@ -384,7 +384,7 @@ class Flight(GeoVectorDataset):
|
|
|
384
384
|
... time=pd.date_range('2021-01-01T12', '2021-01-01T14', periods=200),
|
|
385
385
|
... )
|
|
386
386
|
>>> fl.max_distance_gap
|
|
387
|
-
7391.27...
|
|
387
|
+
np.float64(7391.27...)
|
|
388
388
|
"""
|
|
389
389
|
if self.attrs["crs"] != "EPSG:4326":
|
|
390
390
|
raise NotImplementedError("Only implemented for EPSG:4326 CRS.")
|
|
@@ -415,7 +415,7 @@ class Flight(GeoVectorDataset):
|
|
|
415
415
|
... time=pd.date_range('2021-01-01T12', '2021-01-01T14', periods=200),
|
|
416
416
|
... )
|
|
417
417
|
>>> fl.length
|
|
418
|
-
1436924.67...
|
|
418
|
+
np.float64(1436924.67...)
|
|
419
419
|
"""
|
|
420
420
|
if self.attrs["crs"] != "EPSG:4326":
|
|
421
421
|
raise NotImplementedError("Only implemented for EPSG:4326 CRS.")
|
|
@@ -1520,11 +1520,11 @@ class Flight(GeoVectorDataset):
|
|
|
1520
1520
|
|
|
1521
1521
|
>>> # Length (in meters) of waypoints whose temperature exceeds 236K
|
|
1522
1522
|
>>> fl.length_met("air_temperature", threshold=236)
|
|
1523
|
-
4132178.159...
|
|
1523
|
+
np.float64(4132178.159...)
|
|
1524
1524
|
|
|
1525
1525
|
>>> # Proportion (with respect to distance) of waypoints whose temperature exceeds 236K
|
|
1526
1526
|
>>> fl.proportion_met("air_temperature", threshold=236)
|
|
1527
|
-
0.663552...
|
|
1527
|
+
np.float64(0.663552...)
|
|
1528
1528
|
"""
|
|
1529
1529
|
if key not in self.data:
|
|
1530
1530
|
raise KeyError(f"Column {key} does not exist in data.")
|
|
@@ -621,11 +621,11 @@ class EmissionsProfileInterpolator:
|
|
|
621
621
|
>>> epi = EmissionsProfileInterpolator(xp, fp)
|
|
622
622
|
>>> # Interpolate a single value
|
|
623
623
|
>>> epi.interp(5)
|
|
624
|
-
0.150000...
|
|
624
|
+
np.float64(0.150000...)
|
|
625
625
|
|
|
626
626
|
>>> # Interpolate a single value on a logarithmic scale
|
|
627
627
|
>>> epi.log_interp(5)
|
|
628
|
-
1.105171...
|
|
628
|
+
np.float64(1.105171...)
|
|
629
629
|
|
|
630
630
|
>>> # Demonstrate speed up compared with xarray.DataArray interpolation
|
|
631
631
|
>>> import time, xarray as xr
|
|
@@ -1375,9 +1375,10 @@ class MetDataArray(MetBase):
|
|
|
1375
1375
|
|
|
1376
1376
|
# try to create DataArray out of input data and **kwargs
|
|
1377
1377
|
if not isinstance(data, xr.DataArray):
|
|
1378
|
-
|
|
1378
|
+
warnings.warn(
|
|
1379
1379
|
"Input 'data' must be an xarray DataArray. "
|
|
1380
|
-
"Passing arbitrary kwargs will be removed in future versions."
|
|
1380
|
+
"Passing arbitrary kwargs will be removed in future versions.",
|
|
1381
|
+
DeprecationWarning,
|
|
1381
1382
|
)
|
|
1382
1383
|
data = xr.DataArray(data, **kwargs)
|
|
1383
1384
|
|
|
@@ -2609,13 +2610,14 @@ def _load(hash: str, cachestore: CacheStore, chunks: dict[str, int]) -> xr.Datas
|
|
|
2609
2610
|
|
|
2610
2611
|
|
|
2611
2612
|
def _add_vertical_coords(data: XArrayType) -> XArrayType:
|
|
2612
|
-
"""Add "air_pressure" and "altitude" coordinates to data.
|
|
2613
|
+
"""Add "air_pressure" and "altitude" coordinates to data.
|
|
2613
2614
|
|
|
2614
|
-
|
|
2615
|
+
.. versionchanged:: 0.52.1
|
|
2616
|
+
Ensure that the ``dtype`` of the additional vertical coordinates agree
|
|
2617
|
+
with the ``dtype`` of the underlying gridded data.
|
|
2618
|
+
"""
|
|
2615
2619
|
|
|
2616
|
-
|
|
2617
|
-
if "air_pressure" in coords and "altitude" in coords:
|
|
2618
|
-
return data
|
|
2620
|
+
data["level"].attrs.update(units="hPa", long_name="Pressure", positive="down")
|
|
2619
2621
|
|
|
2620
2622
|
# XXX: use the dtype of the data to determine the precision of these coordinates
|
|
2621
2623
|
# There are two competing conventions here:
|
|
@@ -2625,25 +2627,32 @@ def _add_vertical_coords(data: XArrayType) -> XArrayType:
|
|
|
2625
2627
|
# It is more important for air_pressure and altitude to be grid-aligned than to be
|
|
2626
2628
|
# coordinate-aligned, so we use the dtype of the data to determine the precision of
|
|
2627
2629
|
# these coordinates
|
|
2628
|
-
|
|
2629
|
-
|
|
2630
|
-
|
|
2631
|
-
|
|
2632
|
-
|
|
2630
|
+
dtype = (
|
|
2631
|
+
np.result_type(*data.data_vars.values(), np.float32)
|
|
2632
|
+
if isinstance(data, xr.Dataset)
|
|
2633
|
+
else data.dtype
|
|
2634
|
+
)
|
|
2633
2635
|
|
|
2634
|
-
|
|
2636
|
+
level = data["level"].values
|
|
2637
|
+
|
|
2638
|
+
if "air_pressure" not in data.coords:
|
|
2635
2639
|
data = data.assign_coords(air_pressure=("level", level * 100.0))
|
|
2636
2640
|
data.coords["air_pressure"].attrs.update(
|
|
2637
2641
|
standard_name=AirPressure.standard_name,
|
|
2638
2642
|
long_name=AirPressure.long_name,
|
|
2639
2643
|
units=AirPressure.units,
|
|
2640
2644
|
)
|
|
2641
|
-
if "
|
|
2645
|
+
if data.coords["air_pressure"].dtype != dtype:
|
|
2646
|
+
data.coords["air_pressure"] = data.coords["air_pressure"].astype(dtype, copy=False)
|
|
2647
|
+
|
|
2648
|
+
if "altitude" not in data.coords:
|
|
2642
2649
|
data = data.assign_coords(altitude=("level", units.pl_to_m(level)))
|
|
2643
2650
|
data.coords["altitude"].attrs.update(
|
|
2644
2651
|
standard_name=Altitude.standard_name,
|
|
2645
2652
|
long_name=Altitude.long_name,
|
|
2646
2653
|
units=Altitude.units,
|
|
2647
2654
|
)
|
|
2655
|
+
if data.coords["altitude"].dtype != dtype:
|
|
2656
|
+
data.coords["altitude"] = data.coords["altitude"].astype(dtype, copy=False)
|
|
2648
2657
|
|
|
2649
2658
|
return data
|