pycontrails 0.49.3__cp311-cp311-macosx_11_0_arm64.whl → 0.49.5__cp311-cp311-macosx_11_0_arm64.whl

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 (29) hide show
  1. pycontrails/_version.py +2 -2
  2. pycontrails/core/datalib.py +1 -1
  3. pycontrails/core/flight.py +11 -11
  4. pycontrails/core/interpolation.py +29 -19
  5. pycontrails/core/met.py +192 -104
  6. pycontrails/core/models.py +29 -15
  7. pycontrails/core/rgi_cython.cpython-311-darwin.so +0 -0
  8. pycontrails/core/vector.py +14 -15
  9. pycontrails/datalib/gfs/gfs.py +1 -1
  10. pycontrails/datalib/spire/spire.py +23 -19
  11. pycontrails/ext/synthetic_flight.py +3 -1
  12. pycontrails/models/accf.py +6 -4
  13. pycontrails/models/cocip/cocip.py +48 -18
  14. pycontrails/models/cocip/cocip_params.py +13 -10
  15. pycontrails/models/cocip/output_formats.py +62 -52
  16. pycontrails/models/cocipgrid/cocip_grid.py +459 -275
  17. pycontrails/models/cocipgrid/cocip_grid_params.py +12 -18
  18. pycontrails/models/emissions/ffm2.py +10 -8
  19. pycontrails/models/pcc.py +1 -1
  20. pycontrails/models/ps_model/ps_aircraft_params.py +1 -1
  21. pycontrails/models/ps_model/static/{ps-aircraft-params-20231117.csv → ps-aircraft-params-20240209.csv} +12 -3
  22. pycontrails/utils/json.py +12 -10
  23. {pycontrails-0.49.3.dist-info → pycontrails-0.49.5.dist-info}/METADATA +2 -2
  24. {pycontrails-0.49.3.dist-info → pycontrails-0.49.5.dist-info}/RECORD +28 -29
  25. pycontrails/models/cocipgrid/cocip_time_handling.py +0 -342
  26. {pycontrails-0.49.3.dist-info → pycontrails-0.49.5.dist-info}/LICENSE +0 -0
  27. {pycontrails-0.49.3.dist-info → pycontrails-0.49.5.dist-info}/NOTICE +0 -0
  28. {pycontrails-0.49.3.dist-info → pycontrails-0.49.5.dist-info}/WHEEL +0 -0
  29. {pycontrails-0.49.3.dist-info → pycontrails-0.49.5.dist-info}/top_level.txt +0 -0
@@ -4,8 +4,6 @@ from __future__ import annotations
4
4
 
5
5
  import dataclasses
6
6
 
7
- import numpy as np
8
-
9
7
  from pycontrails.core.aircraft_performance import AircraftPerformanceGrid
10
8
  from pycontrails.core.fuel import Fuel, JetA
11
9
  from pycontrails.models.cocip.cocip_params import CocipParams
@@ -31,13 +29,6 @@ class CocipGridParams(CocipParams):
31
29
  #: magnifies mesh split size before SAC is computed.
32
30
  target_split_size_pre_SAC_boost: float = 3.0
33
31
 
34
- #: Time slice for loading met interpolators into memory, by default np.timedelta64(1, "h").
35
- #: Must be a multiple of `np.timedelta64(1, "h")`. The higher the multiple, the more
36
- #: memory consumed by the method `eval`. If None, the full met dataset is loaded
37
- #: at once.
38
- # TODO: Move this to CocipParams once that model is ready for fancy time handling
39
- met_slice_dt: np.timedelta64 | None = np.timedelta64(1, "h")
40
-
41
32
  #: Display `tqdm` progress bar showing batch evaluation progress.
42
33
  show_progress: bool = True
43
34
 
@@ -49,6 +40,7 @@ class CocipGridParams(CocipParams):
49
40
  #: can be problematic with a small nominal segment length and a large
50
41
  #: `dt_integration` parameter. On the other hand, too large of a nominal segment
51
42
  #: length diminishes the "locality" of the grid point.
43
+ #:
52
44
  #: .. versionadded 0.32.2:: EXPERIMENTAL: If None, run CoCiP in "segment-free"
53
45
  #: mode. This mode does not include any terms involving segments (wind shear,
54
46
  #: segment_length, any derived terms). See :attr:`CocipGridParams.azimuth`
@@ -75,38 +67,40 @@ class CocipGridParams(CocipParams):
75
67
  azimuth: float | None = 0.0
76
68
 
77
69
  #: Experimental parameter used to approximate ``dsn_dz`` from ``ds_dz`` via
78
- #: ``dsn_dz = ds_dz * dsn_dz_factor``. A value of 0.0 disables any normal
79
- #: wind shear effects. An initial unpublished experiment suggests that
70
+ #: ``dsn_dz = ds_dz * dsn_dz_factor``.
71
+ #: A value of 0.0 disables any normal wind shear effects.
72
+ #: An initial unpublished experiment suggests that
80
73
  #: ``dsn_dz_factor = 0.665`` adequately approximates the mean EF predictions
81
74
  #: of :class:`CocipGrid` over all azimuths.
82
- #: .. versionadded 0.32.2::
75
+ #:
76
+ #: .. versionadded:: 0.32.2.
83
77
  dsn_dz_factor: float = 0.0
84
78
 
85
79
  #: --------------------
86
80
  #: Aircraft Performance
87
81
  #: --------------------
88
82
 
89
- #: Aircraft wingspan, [:math:`m`]. If included in :attr:`CocipGrid.source``,
83
+ #: Aircraft wingspan, [:math:`m`]. If included in :attr:`CocipGrid.source`,
90
84
  #: this parameter is unused. Otherwise, if this parameter is None, the
91
85
  #: :attr:`aircraft_performance` model is used to estimate the wingspan.
92
86
  wingspan: float | None = None
93
87
 
94
- #: Nominal aircraft mass, [:math:`kg`]. If included in :attr:`CocipGrid.source``,
88
+ #: Nominal aircraft mass, [:math:`kg`]. If included in :attr:`CocipGrid.source`,
95
89
  #: this parameter is unused. Otherwise, if this parameter is None, the
96
90
  #: :attr:`aircraft_performance` model is used to estimate the aircraft mass.
97
91
  aircraft_mass: float | None = None
98
92
 
99
- #: Cruising true airspeed, [:math:`m * s^{-1}`]. If included in :attr:`CocipGrid.source``,
93
+ #: Cruising true airspeed, [:math:`m * s^{-1}`]. If included in :attr:`CocipGrid.source`,
100
94
  #: this parameter is unused. Otherwise, if this parameter is None, the
101
95
  #: :attr:`aircraft_performance` model is used to estimate the true airspeed.
102
96
  true_airspeed: float | None = None
103
97
 
104
- #: Nominal engine efficiency, [:math:`0 - 1`]. If included in :attr:`CocipGrid.source``,
98
+ #: Nominal engine efficiency, [:math:`0 - 1`]. If included in :attr:`CocipGrid.source`,
105
99
  #: this parameter is unused. Otherwise, if this parameter is None, the
106
100
  #: :attr:`aircraft_performance` model is used to estimate the engine efficiency.
107
101
  engine_efficiency: float | None = None
108
102
 
109
- #: Nominal fuel flow, [:math:`kg s^{-1}`]. If included in :attr:`CocipGrid.source``,
103
+ #: Nominal fuel flow, [:math:`kg s^{-1}`]. If included in :attr:`CocipGrid.source`,
110
104
  #: this parameter is unused. Otherwise, if this parameter is None, the
111
105
  #: :attr:`aircraft_performance` model is used to estimate the fuel flow.
112
106
  fuel_flow: float | None = None
@@ -129,7 +123,7 @@ class CocipGridParams(CocipParams):
129
123
  # ------------
130
124
 
131
125
  #: Attach additional formation specific data to the output. If True, attach
132
- #: all possible formation data. See :func:`contrail_grid._supported_verbose_outputs_formation`
126
+ #: all possible formation data. See :ref:pycontrails.models.cocipgrid.cocip_grid`
133
127
  #: for a list of supported formation data.
134
128
  verbose_outputs_formation: bool | set[str] = False
135
129
 
@@ -150,14 +150,16 @@ def co_hc_emissions_index_profile(
150
150
  ff_intersect = (ei_hi - c) / m
151
151
  # Ensure intersection is between 30% and 85% fuel mass flow rate
152
152
  ff_intersect = np.clip(ff_intersect, fuel_flow_edb[1] + 0.01, fuel_flow_edb[2] - 0.01)
153
- ff_profile = np.array([
154
- ff_low_power,
155
- fuel_flow_edb[0],
156
- fuel_flow_edb[1],
157
- ff_intersect,
158
- fuel_flow_edb[2],
159
- fuel_flow_edb[3],
160
- ])
153
+ ff_profile = np.array(
154
+ [
155
+ ff_low_power,
156
+ fuel_flow_edb[0],
157
+ fuel_flow_edb[1],
158
+ ff_intersect,
159
+ fuel_flow_edb[2],
160
+ fuel_flow_edb[3],
161
+ ]
162
+ )
161
163
  ei_profile = np.array([ei_co_low_power, ei_edb[0], ei_edb[1], ei_hi, ei_hi, ei_hi])
162
164
 
163
165
  # Permutation 3: Point-to-point fit (Figure 13 of DuBois & Paynter, 2006)
pycontrails/models/pcc.py CHANGED
@@ -75,7 +75,7 @@ class PCC(Model):
75
75
  self,
76
76
  met: MetDataset,
77
77
  surface: MetDataset,
78
- params: dict[str, Any] = {},
78
+ params: dict[str, Any] | None = None,
79
79
  **params_kwargs: Any,
80
80
  ) -> None:
81
81
  super().__init__(met, params=params, **params_kwargs)
@@ -14,7 +14,7 @@ import pandas as pd
14
14
  from pycontrails.physics import constants as c
15
15
 
16
16
  #: Path to the Poll-Schumann aircraft parameters CSV file.
17
- PS_FILE_PATH = pathlib.Path(__file__).parent / "static" / "ps-aircraft-params-20231117.csv"
17
+ PS_FILE_PATH = pathlib.Path(__file__).parent / "static" / "ps-aircraft-params-20240209.csv"
18
18
 
19
19
 
20
20
  @dataclasses.dataclass(frozen=True)
@@ -9,11 +9,14 @@ A320,Airbus,A320-200,1987,2,no,0,73500,64500,60500,41244,19256,0.823,0.561,0.262
9
9
  A321,Airbus,A321-100,1993,2,no,8,89000,75500,71500,46856,24644,0.803,0.526,0.277,122.4,34.15,3.95,0.027,0.9063,9.53,8.631,1.009,0.748,0.869,0.073,0.591,5.019,269.3,2.69,0.25,0.753,0.0347,0.342,0.528,0.694,5.433,391,0.82,20883,37618
10
10
  A332,Airbus,A330-200,1992,2,no,52,233000,182000,170000,116840,53160,0.73,0.501,0.228,361.6,60.3,5.64,0.017,0.8686,10.06,6.692,0.987,0.762,0.872,0.076,0.528,6.899,609.5,5.94,0.49,0.786,0.025,0.371,0.535,0.686,5.404,410,0.86,22875,36865
11
11
  A333,Airbus,A330-300,1992,2,no,52,233000,187000,175000,120132,54868,0.751,0.516,0.235,361.6,60.3,5.64,0.017,0.8686,10.06,6.9,0.99,0.761,0.872,0.076,0.535,6.571,604.5,5.84,0.49,0.786,0.0258,0.36,0.534,0.687,5.511,410,0.86,22875,36865
12
+ A338,Airbus,A330-800,2018,2,no,800,242000,186000,174000,132000,42000,0.719,0.545,0.174,374,64.00,5.64,0.016,0.8660,10.95,6.213,0.959,0.781,0.874,0.078,0.530,8.292,656,4.96,0.48,0.786,0.0229,0.399,0.445,0.763,6.243,414.5,0.86,22875,36865
13
+ A339,Airbus,A330-900,2017,2,no,900,242000,191000,181000,135000,46000,0.748,0.558,0.190,374,64.00,5.64,0.016,0.8660,10.95,6.463,0.962,0.779,0.873,0.077,0.539,8.129,656,4.96,0.48,0.786,0.0239,0.401,0.445,0.763,6.229,414.5,0.86,22875,36865
12
14
  A342,Airbus,A340-200,1991,4,no,1,257000,181000,169000,125242,43758,0.658,0.487,0.17,361.6,60.3,5.64,0.017,0.8686,10.06,7.077,0.982,0.767,0.872,0.076,0.538,6.741,579.5,5.52,0.48,0.786,0.0261,0.368,0.498,0.725,5.778,415,0.86,22875,36865
13
15
  A343,Airbus,A340-300,1991,4,no,1,257000,186000,174000,125242,48758,0.677,0.487,0.19,361.6,60.3,5.64,0.017,0.8686,10.06,7.384,0.987,0.765,0.871,0.075,0.548,6.483,579.5,5.52,0.48,0.786,0.0273,0.363,0.498,0.725,5.891,415,0.86,22875,36865
14
16
  A345,Airbus,A340-500,2002,4,no,1,372000,243000,230000,170370,59630,0.618,0.458,0.16,437.3,63.45,5.64,0.016,0.8563,9.21,6.731,0.985,0.762,0.874,0.078,0.512,6.994,1036.4,8.79,0.92,0.796,0.0245,0.374,0.479,0.74,5.022,414.5,0.86,22875,36865
15
17
  A346,Airbus,A340-600,2001,4,no,1,368000,259000,245000,176364,68636,0.666,0.479,0.187,437.3,63.45,5.64,0.016,0.8563,9.21,7.057,0.991,0.759,0.873,0.077,0.523,7.091,1050.8,8.96,0.92,0.796,0.0258,0.39,0.479,0.74,5.103,415,0.86,22875,36865
16
- A359,Airbus,A350-900,2013,2,no,9,275000,207000,195700,146600,49100,0.712,0.533,0.179,445,64.75,5.96,0.017,0.848,9.42,6.14,0.962,0.791,0.874,0.078,0.493,8.128,758,5.64,0.58,0.82,0.0225,0.405,0.445,0.764,6.18,431,0.89,24441,36319
18
+ A359,Airbus,A350-900,2013,2,no,9,275000,207000,195700,146600,49100,0.712,0.533,0.179,445,64.75,5.96,0.017,0.848,9.42,6.14,0.962,0.791,0.874,0.078,0.493,8.601,758,5.64,0.58,0.82,0.0225,0.428,0.445,0.764,6.119,431,0.89,24441,36319
19
+ A35K,Airbus,A350-1000,2016,2,yes,2,319000,236000,223000,155000,67300,0.699,0.486,0.211,465.0,64.75,5.96,0.017,0.8480,9.02,6.183,0.967,0.789,0.874,0.078,0.500,8.074,873,7.01,0.65,0.820,0.0223,0.396,0.467,0.749,6.170,414.5,0.89,24441,36319
17
20
  A388,Airbus,A380-800,2005,4,no,2,569000,391000,366000,275000,91000,0.643,0.483,0.16,845,79.8,7.142,0.016,0.866,7.54,6.132,0.967,0.794,0.876,0.082,0.446,7.478,1350.7,10.57,1.07,0.82,0.0216,0.398,0.47,0.747,5.981,431,0.89,24441,36319
18
21
  B712,Boeing,B717-200,1998,2,no,HGW,54884,49898,45586,31071,14515,0.831,0.566,0.264,92.75,28.4,3.4,0.029,0.9063,8.7,8.722,1.02,0.692,0.867,0.072,0.579,4.569,179,1.82,0.2,0.7,0.0365,0.349,0.545,0.675,5.626,371,0.82,20883,37618
19
22
  B732,Boeing,B737-200,1967,2,no,5,52390,46720,43092,27125,15967,0.823,0.518,0.305,99,28.35,3.76,0.035,0.9063,8.12,8.406,1.04,0.678,0.867,0.073,0.556,3.424,137.1,2.3,0.28,0.7,0.0358,0.276,0.627,0.557,4.631,370,0.82,20883,37618
@@ -24,6 +27,9 @@ B736,Boeing,B737-600,1997,2,no,3,65544,55112,51936,36378,15558,0.792,0.555,0.237
24
27
  B737,Boeing,B737-700,1997,2,no,3,70080,58604,55202,37648,17554,0.788,0.537,0.25,124.6,34.3,3.76,0.024,0.9063,9.44,7.611,0.997,0.758,0.871,0.075,0.567,5.086,214.1,2.18,0.21,0.758,0.0315,0.327,0.531,0.691,5.936,410,0.82,20883,37618
25
28
  B738,Boeing,B737-800,1997,2,no,3,79016,66361,61689,41413,20276,0.781,0.524,0.257,124.6,34.3,3.76,0.024,0.9063,9.44,8.182,1.005,0.754,0.87,0.074,0.581,4.999,233.4,2.43,0.22,0.758,0.0335,0.334,0.533,0.688,5.86,410,0.82,20883,37618
26
29
  B739,Boeing,B737-900ER,2006,2,no,2,85139,71350,67721,44676,23045,0.795,0.525,0.271,124.6,34.32,3.76,0.024,0.9063,9.45,7.928,1,0.756,0.87,0.075,0.571,5.022,233.4,2.43,0.22,0.758,0.032,0.326,0.533,0.688,5.947,410,0.82,20883,37618
30
+ B37M,Boeing,B737 MAX 7,2018,2,yes,,80285,66043,62913,42033,20880,0.784,0.524,0.260,121.9,33.26,3.76,0.026,0.9063,9.08,7.585,0.976,0.779,0.872,0.076,0.573,6.239,248,2.00,0.19,0.763,0.0305,0.376,0.458,0.755,6.281,410.0,0.82,20883,37618
31
+ B38M,Boeing,B737 MAX 8,2016,2,yes,,82644,69308,65952,45072,20880,0.798,0.545,0.253,121.9,33.26,3.76,0.026,0.9063,9.08,7.869,0.979,0.777,0.872,0.075,0.581,6.153,248,2.00,0.19,0.763,0.0316,0.379,0.458,0.755,6.253,410.0,0.82,20883,37618
32
+ B39M,Boeing,B737 MAX 9,2017,2,yes,,88314,74343,70987,50107,20880,0.804,0.567,0.236,121.9,33.26,3.76,0.026,0.9063,9.08,8.058,0.994,0.769,0.872,0.076,0.599,6.184,248,2.00,0.19,0.763,0.0331,0.387,0.458,0.755,6.234,410.0,0.82,20883,37618
27
33
  B742,Boeing,B747-200B,1971,4,no,4,371900,285700,238780,175970,62810,0.642,0.473,0.169,511,59.64,6.5,0.024,0.7934,6.96,7.019,1.038,0.692,0.868,0.074,0.458,5.305,882.3,9.11,0.9,0.81,0.0259,0.336,0.541,0.679,4.622,450,0.9,24977,36141
28
34
  B743,Boeing,B747-300,1980,4,no,0,377800,260320,242630,174820,67810,0.642,0.463,0.179,511,59.64,6.5,0.024,0.7826,6.96,6.882,1.042,0.683,0.867,0.073,0.453,5.367,898.8,9.19,0.91,0.81,0.0253,0.337,0.542,0.679,4.992,450,0.9,24977,36141
29
35
  B744,Boeing,B747-400,1985,4,no,5,396894,285764,246075,178756,67319,0.62,0.45,0.17,547,64.44,6.5,0.02,0.7934,7.59,6.688,1.029,0.698,0.869,0.074,0.465,6.044,1021.3,9.79,0.82,0.81,0.0245,0.357,0.537,0.684,4.991,450,0.92,26070,35788
@@ -37,8 +43,11 @@ B77L,Boeing,B777-200LR,2005,2,no,1,347450,223168,209107,145150,63957,0.602,0.418
37
43
  B772,Boeing,B777-200,1994,2,no,6,286900,206350,195030,135600,59430,0.68,0.473,0.207,427.8,60.93,6.2,0.021,0.8517,8.68,6.462,0.976,0.774,0.873,0.078,0.484,6.827,781.2,6.89,0.57,0.811,0.0235,0.368,0.49,0.731,5.441,431,0.89,24441,36319
38
44
  B77W,Boeing,B777-300ER,1994,2,no,1,351530,251290,237673,167820,69853,0.676,0.477,0.199,427.8,64.8,6.2,0.018,0.8517,9.82,7.159,0.998,0.767,0.872,0.076,0.542,7.171,1027.8,9.38,0.76,0.811,0.0264,0.388,0.489,0.732,5.045,431,0.89,24441,36319
39
45
  B773,Boeing,B777-300,1997,2,no,4,299370,237680,224530,159570,64960,0.75,0.533,0.217,427.8,60.93,6.2,0.021,0.8517,8.68,7.069,0.989,0.767,0.872,0.076,0.503,6.693,744.8,6.87,0.56,0.811,0.0258,0.382,0.507,0.716,5.802,431,0.89,24441,36319
40
- B788,Boeing,B787-8,2009,2,no,1,227930,172365,161025,117707,43318,0.706,0.516,0.19,360,60.12,5.77,0.018,0.8462,10.04,6.383,0.968,0.785,0.873,0.077,0.518,8.148,633,4.82,0.45,0.815,0.0238,0.41,0.445,0.764,6.149,431,0.9,24977,36141
41
- B789,Boeing,B787-9,2013,2,no,1,254011,192777,181437,128850,52587,0.714,0.507,0.207,360,60.12,5.77,0.018,0.8462,10.04,6.478,0.968,0.785,0.873,0.077,0.518,8.108,633,4.82,0.45,0.815,0.0238,0.408,0.445,0.764,6.215,431,0.9,24977,36141
46
+ B788,Boeing,B787-8,2009,2,no,1,227930,172365,161025,117707,43318,0.706,0.516,0.19,360,60.12,5.77,0.018,0.8462,10.04,6.383,0.968,0.784,0.873,0.077,0.508,7.98,633,4.82,0.45,0.815,0.0238,0.409,0.445,0.764,6.06,431,0.9,24977,36141
47
+ B789,Boeing,B787-9,2013,2,no,1,254011,192777,181437,128850,52587,0.714,0.507,0.207,360,60.12,5.77,0.018,0.8462,10.04,6.478,0.968,0.784,0.873,0.077,0.509,7.938,633,4.82,0.45,0.815,0.0239,0.408,0.445,0.764,6.126,431,0.9,24977,36141
48
+ B78X,Boeing,B787-10,2017,2,no,,254011,201848,192776,135500,57276,0.759,0.533,0.225,377.0,60.12,5.77,0.018,0.8462,9.59,6.607,0.971,0.782,0.873,0.077,0.513,7.635,689,5.33,0.47,0.815,0.0243,0.397,0.448,0.762,6.185,411.0,0.9,24977,36141
49
+ BCS1,Airbus,A220-100,2013,2,yes,,60781,51029,48987,35222,13765,0.806,0.579,0.226,115.0,32.50,3.51,0.023,0.8988,9.18,7.341,0.961,0.776,0.873,0.076,0.576,6.222,201,1.44,0.15,0.754,0.0304,0.367,0.393,0.785,6.227,410.0,0.82,20883,37618
50
+ BCS3,Airbus,A220-300,2013,2,yes,,70896,61008,58060,37082,20978,0.819,0.523,0.296,115.0,32.50,3.51,0.023,0.8988,9.18,7.724,0.964,0.775,0.872,0.075,0.585,6.190,201,1.44,0.15,0.754,0.0316,0.373,0.393,0.785,6.258,410.0,0.82,20883,37618
42
51
  E135,Embraer,EMB-135LR,1995,2,no,0,20000,18500,15999,11500,4499,0.8,0.575,0.225,51.18,20.04,2.25,0.025,0.9239,7.85,8.018,1.012,0.709,0.869,0.074,0.562,3.429,66.1,0.72,0.09,0.704,0.037,0.273,0.541,0.68,6.609,370,0.78,18996,38408
43
52
  E145,Embraer,EMB-145LR,1995,2,no,0,22000,19300,17900,12114,5786,0.814,0.551,0.263,51.18,20.04,2.25,0.025,0.9239,7.85,8.38,1.018,0.706,0.868,0.073,0.57,3.686,74.3,0.82,0.1,0.704,0.0382,0.299,0.543,0.678,6.404,370,0.78,18996,38408
44
53
  E170,Embraer,EMB-170LR,2002,2,no,0,37200,32800,29800,20700,9100,0.801,0.556,0.245,72.72,25.3,3.15,0.031,0.9239,8.8,8.144,1.005,0.742,0.87,0.074,0.579,4.094,120.1,1.32,0.13,0.733,0.0355,0.296,0.533,0.688,6.314,410,0.82,20883,37618
pycontrails/utils/json.py CHANGED
@@ -169,16 +169,18 @@ def dataframe_to_geojson_points(
169
169
  properties = {"time": int(row.time.timestamp())}
170
170
  used_keys = ["time", "latitude", "longitude", "altitude"]
171
171
  unused_keys = [k for k in row.keys() if k not in used_keys] # noqa: SIM118
172
- properties.update({
173
- k: (
174
- row[k]
175
- if not isinstance(row[k], float)
176
- or isinstance(row[k], float)
177
- and not np.isnan(row[k])
178
- else None
179
- )
180
- for k in unused_keys
181
- })
172
+ properties.update(
173
+ {
174
+ k: (
175
+ row[k]
176
+ if not isinstance(row[k], float)
177
+ or isinstance(row[k], float)
178
+ and not np.isnan(row[k])
179
+ else None
180
+ )
181
+ for k in unused_keys
182
+ }
183
+ )
182
184
 
183
185
  geometry = {"type": "Point", "coordinates": point}
184
186
  return {"type": "Feature", "geometry": geometry, "properties": properties}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pycontrails
3
- Version: 0.49.3
3
+ Version: 0.49.5
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.1.1 ; extra == 'dev'
39
+ Requires-Dist: black[jupyter] ==24.2.0 ; 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'
@@ -1,25 +1,25 @@
1
- pycontrails-0.49.3.dist-info/RECORD,,
2
- pycontrails-0.49.3.dist-info/LICENSE,sha256=gJ-h7SFFD1mCfR6a7HILvEtodDT6Iig8bLXdgqR6ucA,10175
3
- pycontrails-0.49.3.dist-info/WHEEL,sha256=qZ5gUYMG4t2JcLLcFLlOXld9g3WjqyANneXZkxLH8gU,110
4
- pycontrails-0.49.3.dist-info/NOTICE,sha256=gKI8DcN1WhiXB2SFRKDogcjONldGubTvBxiOYdC4CXU,1926
5
- pycontrails-0.49.3.dist-info/top_level.txt,sha256=Z8J1R_AiBAyCVjNw6jYLdrA68PrQqTg0t3_Yek_IZ0Q,29
6
- pycontrails-0.49.3.dist-info/METADATA,sha256=a9yuJwOJMWOL5TUp2HYUCpqPRF6_0l1BGtryH6GfueY,8270
7
- pycontrails/_version.py,sha256=mQJrt-C955Ur-2MoHIylqs8LtQOBDYUxBI4LcePYoJM,413
1
+ pycontrails-0.49.5.dist-info/RECORD,,
2
+ pycontrails-0.49.5.dist-info/LICENSE,sha256=gJ-h7SFFD1mCfR6a7HILvEtodDT6Iig8bLXdgqR6ucA,10175
3
+ pycontrails-0.49.5.dist-info/WHEEL,sha256=qZ5gUYMG4t2JcLLcFLlOXld9g3WjqyANneXZkxLH8gU,110
4
+ pycontrails-0.49.5.dist-info/NOTICE,sha256=gKI8DcN1WhiXB2SFRKDogcjONldGubTvBxiOYdC4CXU,1926
5
+ pycontrails-0.49.5.dist-info/top_level.txt,sha256=Z8J1R_AiBAyCVjNw6jYLdrA68PrQqTg0t3_Yek_IZ0Q,29
6
+ pycontrails-0.49.5.dist-info/METADATA,sha256=rDzd21VDquxdBt5vofTqKPe8mJyZi4xdAVMSnjBku18,8270
7
+ pycontrails/_version.py,sha256=nH-3YHqHjzaEFGxsYlRP1yKzx4o1iBZGXleKwGLmKPg,413
8
8
  pycontrails/__init__.py,sha256=c_Vtz7CvdiVAL8ggluash9-8tGcLO_5Vvu-3_Ie47CE,1985
9
9
  pycontrails/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
- pycontrails/core/rgi_cython.cpython-311-darwin.so,sha256=pfT0pxDfHeQ3nYxiaRn_zWcwLp8sowvTLlni0V3Wd7k,317693
11
- pycontrails/core/vector.py,sha256=_fzpnSgyq8eGcWrEEox_OByxGMr34DyPozlD7lEKg78,71703
12
- pycontrails/core/models.py,sha256=3L9hI7mq6rRpN1N1i9wf3iV_fYLcRTpeN8xzLkgm9JY,38602
13
- pycontrails/core/interpolation.py,sha256=BlSeYGXFjlqpyRQroTda0Hbnv9bv5e723IO_pffjndI,23748
10
+ pycontrails/core/rgi_cython.cpython-311-darwin.so,sha256=aWMhN9z4dd5aMTHxAW13SggX6ITVGo_oDC2KvYxFi04,317693
11
+ pycontrails/core/vector.py,sha256=oAuPxKo2okFgrWZaZuBRzxyKdJ8TtsyNJf1NWoSDKfc,71672
12
+ pycontrails/core/models.py,sha256=OzzVGjEi0R7bWtr9hx4NboNePJLPwYwFeZOUm19EVJ8,38874
13
+ pycontrails/core/interpolation.py,sha256=8M0eO2_fX8KOquxhgMkut8E2Yg73BFWYp9wVzECJC1U,24038
14
14
  pycontrails/core/fleet.py,sha256=84oTb8RJ3-bPVvZn3O2ljMEZLwJ9Q-E455ZzQJ4QaQU,16075
15
- pycontrails/core/flight.py,sha256=weRduFyw33DHEDxTzKUtksYJNhoLocOkI0pi0cgYLVU,75947
15
+ pycontrails/core/flight.py,sha256=ovJzPShgM_i0_Gm5EOrvWTk3vNh8K8wu4raOxXxo36g,75892
16
16
  pycontrails/core/fuel.py,sha256=kJZ3P1lPm1L6rdPREM55XQ-VfJ_pt35cP4sO2Nnvmjs,4332
17
17
  pycontrails/core/polygon.py,sha256=eX0gLL6OA_3658hjT0uraoyQWn4WvKYS-uxh3YCkTZY,17685
18
- pycontrails/core/datalib.py,sha256=OHfknwj903LKF3ITsHbygYdUWrHTUQPYSHUBg66WDdQ,22522
18
+ pycontrails/core/datalib.py,sha256=7Lco4y-1nA0Kf1ANG7N1fCe2fCLOLzO_5PQlfnnkxfo,22520
19
19
  pycontrails/core/cache.py,sha256=rCBZiRSVoFkRwf_ay7O-eba2PaYoXdlJSz1znZPuOQk,27957
20
20
  pycontrails/core/__init__.py,sha256=4ZE7x1gMa_Q7GcgcWpPP9fQ-sTulCXWmMjsCJ0odakY,840
21
21
  pycontrails/core/flightplan.py,sha256=s7tHbjMFbHAJkSWV6hPkghuW6jDb1n5UhWAo9XbJ9z0,7349
22
- pycontrails/core/met.py,sha256=XQ6C-CxaXXXJl2t2cCW1gMBCMDbsMudkhHqjd1HMb0o,89281
22
+ pycontrails/core/met.py,sha256=V2iHV2NZftWU5hBSWJ3Da26j27IC4j-3WbydtPS_DdY,92497
23
23
  pycontrails/core/aircraft_performance.py,sha256=4yNGfArt741HNFjxpWvEu86BTzie9LaPjC4KH3dXYts,21966
24
24
  pycontrails/core/airports.py,sha256=aeyAXVkioIRomrP79UtNrxindL4f1DJyXFaojZCuBBw,6758
25
25
  pycontrails/core/met_var.py,sha256=zyXWI_9dRS4FfH1Io_k0YcIxZIsp8y4YPiC_Oayi_gs,9195
@@ -32,12 +32,12 @@ pycontrails/datalib/ecmwf/variables.py,sha256=akqjUS3WKnSzV1Y0KkHLylH7QByvitc3wo
32
32
  pycontrails/datalib/ecmwf/__init__.py,sha256=F9a-iRz27nmVuQpMUwx5hjSCW95KnRmsHsa7m1_T86Y,1108
33
33
  pycontrails/datalib/ecmwf/common.py,sha256=xyHDqlFynGi9y3gvMfSsYTVNCJxpCNQYUVnmNx2rM7o,3707
34
34
  pycontrails/datalib/ecmwf/ifs.py,sha256=s__NOQcUfbvxVPyCE7qgO8cxYLJoh7PWj7zZS-nKR7g,10594
35
- pycontrails/datalib/gfs/gfs.py,sha256=ELx7ufVrF2Xbk207paJDwdTtfNnuys-1cfvkaz-CTxo,21571
35
+ pycontrails/datalib/gfs/gfs.py,sha256=2x16iOCBRzUEb_GeGPCWNPpeeTJ9wxYkvpYsgYR3OaM,21569
36
36
  pycontrails/datalib/gfs/variables.py,sha256=KESzB1sTD3hsU8T-qZFD29oFM3l2ZcEtjAE_H7BHKIE,2861
37
37
  pycontrails/datalib/gfs/__init__.py,sha256=tWxgqmlW8Uo07J-3fBTXPrteatzTka9mSXomhWy3NVA,684
38
- pycontrails/datalib/spire/spire.py,sha256=7iZg8gwhbqT-ffLQnum4NX0Y3l4jL9o-M7wm7CCj_2U,25235
38
+ pycontrails/datalib/spire/spire.py,sha256=66SnMdA8KOS69USjKmqrJmTKPK08Ehih9tnlsCt-AJw,25331
39
39
  pycontrails/datalib/spire/__init__.py,sha256=4EZPJUmNnF8v2n6QhBvSi_3rYXRBX2zGcPE-WEA-dP8,343
40
- pycontrails/ext/synthetic_flight.py,sha256=79krfMdbVNbOWqccJzZV9V-K_jqflcDtnrJ_z2xYAcQ,16615
40
+ pycontrails/ext/synthetic_flight.py,sha256=65LxC1ZZNJrd8YcSgg6739ouPNf0VgVCOfEhK4W4YkI,16679
41
41
  pycontrails/ext/cirium.py,sha256=DFPfRwLDwddpucAPRQhyT4bDGh0VvvoViMUd3pidam8,415
42
42
  pycontrails/ext/empirical_grid.py,sha256=WSC266aKsQLzCmtrZJCpLdDBykZ9rlFE9xEXmZjbgHo,4362
43
43
  pycontrails/ext/bada.py,sha256=j4Tj7oWSV_6UxYYa9_OjC1yTVzJMQdNRDI4aUQam_xM,1063
@@ -45,18 +45,18 @@ pycontrails/utils/iteration.py,sha256=q_vb39VjxRr4hqTyPYko3gK4sboJOJf_Evq6m_2DL-
45
45
  pycontrails/utils/__init__.py,sha256=Gt_57sBgfliFSxx9sDpuchykFDxmM11Wg9xAeSqPcnI,32
46
46
  pycontrails/utils/types.py,sha256=oKMJdZYugcU8YXoF2Pux6S4_aX5ymTbMEJrDJtEjY1E,4564
47
47
  pycontrails/utils/temp.py,sha256=lGU0b_R8ze4yKlsOusHIIBaoNFBrmrB3vBjgHRlfcXk,1109
48
- pycontrails/utils/json.py,sha256=PRmRceXvgeIHwNRhOk4WTbNmOh7otfn6G8udzqVM6BE,5924
48
+ pycontrails/utils/json.py,sha256=4PL7xkt-O9VGvngHh8F1nfbSbgoxjNlDZDUQRxYfcCM,5982
49
49
  pycontrails/utils/dependencies.py,sha256=LBKnhlZHTKDOGFr3J17cnfbQbBtO3uGkKBVoOIhW01s,2488
50
- pycontrails/models/pcc.py,sha256=9u1vDmiXld22LaYl7iG2_c0alr_qEOb5PbgsIr1tgRs,11107
50
+ pycontrails/models/pcc.py,sha256=7hIlg_4-F6Ce7KVFyuIZBZY6uDr1h4KRMqBDlpGkzHE,11116
51
51
  pycontrails/models/tau_cirrus.py,sha256=yNYw4ukT68w2ATGFZr3p8AZxB6A2xufXQq7XP2U51y0,5026
52
52
  pycontrails/models/__init__.py,sha256=dQTOLQb7RdUdUwslt5se__5y_ymbInBexQmNrmAeOdE,33
53
53
  pycontrails/models/issr.py,sha256=nfNJHKGyVEwkBun3u1kjR0WVPLK2zrdPjLGBnK5MWMs,7340
54
54
  pycontrails/models/sac.py,sha256=B-0acGuYs2ajFYtSMGP4LO328OsAjQ7v2bnQ5HCw4Ak,15961
55
- pycontrails/models/accf.py,sha256=50jSDStXOMx0SYOT6iANfPoFcxs0dwF7BI52mzF9O3Y,12517
55
+ pycontrails/models/accf.py,sha256=20XWID_6aoFLDOfanf5ncay_azPbZSA2NoowJSZbM20,12559
56
56
  pycontrails/models/dry_advection.py,sha256=_HJA02GPjlJH2OKhX3BAvQWJX0iV-bOu57hWPl2Ue60,16145
57
57
  pycontrails/models/pcr.py,sha256=ZzbEuTOuDdUmmL5T3Wk3HL-O8XzX3HMnn98WcPbASaU,5348
58
58
  pycontrails/models/emissions/__init__.py,sha256=N_EE768TNRDbdmXaxly2Pwun7UmVBTVPc4k89VBz5ys,478
59
- pycontrails/models/emissions/ffm2.py,sha256=3DwE2KNAHhnrylv_n7pXQbHsYyc-yIl6oLN6jtyfvpw,11982
59
+ pycontrails/models/emissions/ffm2.py,sha256=h_bmB4pxxvC1ptqz5jB_rpf9QgaAv9J7Lu-6QpMiFtk,12032
60
60
  pycontrails/models/emissions/emissions.py,sha256=mBRDPRRiM_7veYOGbZ4K3BYi-GA21tO28R57sWwQ7-Q,47564
61
61
  pycontrails/models/emissions/black_carbon.py,sha256=F2SCUiV39zg2mUxbWsct6vvr_JgHdyB59DVWkw40eX0,20234
62
62
  pycontrails/models/emissions/static/edb-gaseous-v28c-engines.csv,sha256=9mok7P9NQSNJnej_gna29pTbgBuZsfI9N5OOoj1S4WI,118901
@@ -67,24 +67,23 @@ pycontrails/models/humidity_scaling/__init__.py,sha256=nqsab_j9BCwMbTfCn4BjXMdhI
67
67
  pycontrails/models/humidity_scaling/quantiles/era5-quantiles.pq,sha256=tfYhbafF9Z-gGCg6VQ1YBlOaK_01e65Dc6s9b-hQ6Zo,286375
68
68
  pycontrails/models/cocip/radiative_forcing.py,sha256=ERuFcYMo0_1iiOricnZ8D4ext23bMnTCeZwg9vd6Vzs,44944
69
69
  pycontrails/models/cocip/wind_shear.py,sha256=p8d3iaNzxPA3MoxFEM1ZDKt0aticoD6U9cv0QmbuBzs,3860
70
- pycontrails/models/cocip/cocip.py,sha256=mezAgtLDsYf71fyI8iryDhd7Y2v6GORvbUhaLIkA7aA,94410
71
- pycontrails/models/cocip/output_formats.py,sha256=VQ3526w-7dO4C3OZ7LbPSgOLQhELJNBZEjEPm9VGNBA,76883
70
+ pycontrails/models/cocip/cocip.py,sha256=X4b_samWXtG5jD83W6vrlrc4MR-8SyG_uhSdhz55pD4,95816
71
+ pycontrails/models/cocip/output_formats.py,sha256=d9naGliEEVuk2ER0KZEY5R2FHQZIY5NcP6PamlHcBM0,77149
72
72
  pycontrails/models/cocip/__init__.py,sha256=7Wy_CnmVqg_Gpg2UhIlisJOJ3naL6c5BBzTSJqdbiM4,902
73
- pycontrails/models/cocip/cocip_params.py,sha256=ModFN_xvboOF8bfJggmztCLhLZoi7_Ag7dxdbf46VBQ,10245
73
+ pycontrails/models/cocip/cocip_params.py,sha256=sc3j0nUHIdXXGEhnqRFGZEohEVPBu0UMSef1BMRiU1g,10302
74
74
  pycontrails/models/cocip/wake_vortex.py,sha256=Q5YMEK59jTYzAPt4x24ylugqThzhrN2BOTLBiD-KeC0,13408
75
75
  pycontrails/models/cocip/cocip_uncertainty.py,sha256=4JtlCVFpLBnPRlvyEp9QFpRfHFK9joSTnxe0NJdONG4,11784
76
76
  pycontrails/models/cocip/radiative_heating.py,sha256=YRpwfXgFnf89iuJiIM96q-jbdcMAwlX8QLsADTKMABE,18848
77
77
  pycontrails/models/cocip/contrail_properties.py,sha256=FA6KOMGYxr6s_dks3AtK8X7anyjM6sVfr-EDJrxNjcA,55840
78
78
  pycontrails/models/ps_model/__init__.py,sha256=5L-HympF1gJaZ6xiNkIQJygJhkDxM3-ejS_T2z-83hQ,495
79
79
  pycontrails/models/ps_model/ps_model.py,sha256=t2NJu8ct5MSCQAqFinZOzpHKSmroOuiJFx0ornCAuEY,31496
80
- pycontrails/models/ps_model/ps_aircraft_params.py,sha256=NaqMCi7ibEk56bEypUpyV7PwPEgPYf9e4RKYydqAhiQ,12104
80
+ pycontrails/models/ps_model/ps_aircraft_params.py,sha256=7PlJtTo5EP7FLHKQ-EK4jFswYyA8t2dA0xcyMlPiqG8,12104
81
81
  pycontrails/models/ps_model/ps_operational_limits.py,sha256=bMIUKU5_K-H6ld_ZKoLle3hBW28o3RzVy1P5N4C8jg0,10371
82
82
  pycontrails/models/ps_model/ps_grid.py,sha256=PyuiGKvknx6x34FGeNoxJ47uVf90Bd-EgbAN3CKpOZQ,18667
83
- pycontrails/models/ps_model/static/ps-aircraft-params-20231117.csv,sha256=qKefuoyq6yKrHVEXsZvXsXgJ2uPCJIUHSxYo7sxg408,12568
84
- pycontrails/models/cocipgrid/cocip_grid_params.py,sha256=DiKWJIDkYmitg0aW0hZqOe-8eftXsE2PrxdpS9tMnOo,6233
83
+ pycontrails/models/ps_model/static/ps-aircraft-params-20240209.csv,sha256=lZ_gzhOfB-Ul8VUnzyiffYyLTRJ3wab1rlOgh_N-byA,14679
84
+ pycontrails/models/cocipgrid/cocip_grid_params.py,sha256=Vnpzm-nc6TtSQexXychCg8Sp5o5ZGlvEU8-ZJ3DP87k,5779
85
85
  pycontrails/models/cocipgrid/__init__.py,sha256=ar6bF_8Pusbb-myujz_q5ntFylQTNH8yiM8fxP7Zk30,262
86
- pycontrails/models/cocipgrid/cocip_time_handling.py,sha256=zCkULQwLDQDYKC6jlznk7Rs1AzYSnUUzLiqQvwMA3oA,13865
87
- pycontrails/models/cocipgrid/cocip_grid.py,sha256=aBINxQ4uxTMI1XQB-JAxmMp3oIpPPJzZQ3_WN7492qU,83662
86
+ pycontrails/models/cocipgrid/cocip_grid.py,sha256=WKtFCJT6cDVI_QmAJ7jgWkgK5h3iSav1rOYsrlAPT1o,89803
88
87
  pycontrails/physics/geo.py,sha256=lqEpTLhex2r-o-6EHSSEiPC8xqZ-NlwwCBob9-cJA_w,30240
89
88
  pycontrails/physics/units.py,sha256=W_pOCZ7abjQnUIFhrMEelPTrk18ihJQitPSpnTd2toI,12256
90
89
  pycontrails/physics/constants.py,sha256=fFDMpXMlldE6c5RbjaIn4UqGpXvX32mLuCG0RnxmtHE,2990