pycontrails 0.53.1__tar.gz → 0.54.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pycontrails might be problematic. Click here for more details.

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