pycontrails 0.49.3__cp310-cp310-win_amd64.whl → 0.49.5__cp310-cp310-win_amd64.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.cp310-win_amd64.pyd +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,23 +1,23 @@
1
1
  pycontrails/__init__.py,sha256=8WUs6hZAAIH1yKfwYJ8UEqNsk5voRyLmmD3Dje9DZaE,2055
2
- pycontrails/_version.py,sha256=wk84ngGc_b_cTAIskYimM6EOGHo0Uld671pa-GDLYi4,429
2
+ pycontrails/_version.py,sha256=3A20dhM8-dQpEHRAXTyDh6OEAHYxc4ZEecto-hahwxs,429
3
3
  pycontrails/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  pycontrails/core/__init__.py,sha256=eNypVTz1kHBSKAJX3CgfKw-VKrMRRkKTutmjSlrfeUs,870
5
5
  pycontrails/core/aircraft_performance.py,sha256=ikeJmdvFRDa1RdfR-JKfhQbiiIzL0c2vzcBmobmoxMs,22511
6
6
  pycontrails/core/airports.py,sha256=nGKXN3jOtzsDCaJZVFNO3e3w-U3lqMTz5Ww5jALiRJY,6984
7
7
  pycontrails/core/cache.py,sha256=NNrFNUvmDEkeS0d1VpDNWmF225a8u2d-TGcpRgQd9Qs,28838
8
8
  pycontrails/core/coordinates.py,sha256=cb8RprpoSgRTFbAXTPNfuUHVnOxyV3zZ0Ac88P5YbBw,5465
9
- pycontrails/core/datalib.py,sha256=qq7YtxbkIl2IW7R4lKaYHq3KJpMLmFkgiBagHaJhStQ,23223
9
+ pycontrails/core/datalib.py,sha256=cf922AA0raBGWBs_UKRifvkFEDDhBJ_DmZQIdmcMZvI,23221
10
10
  pycontrails/core/fleet.py,sha256=WKF_s_gRXHmB9b1OW7RUkM1TzfvVD8Ab0Md-qKRwkzs,16544
11
- pycontrails/core/flight.py,sha256=mct0rlTQs5hmsUABBMyHRSlUIE4Gc9hsr9dNcov62gI,78029
11
+ pycontrails/core/flight.py,sha256=ehxpo-Ofr4unQpeSR1ZXmbFGClyW628cA000oJZ_Jp8,77974
12
12
  pycontrails/core/flightplan.py,sha256=cpMZ6VCYbfwh3vnew2XgVEHnqBx1NzeAhrTVCvlbbss,7569
13
13
  pycontrails/core/fuel.py,sha256=06YUDhvC8Rx6KbUXRB9qLTsJX2V7tLbzjwAfDH0R6l8,4472
14
- pycontrails/core/interpolation.py,sha256=tOQ254BpmDqT8B97bP2rM1MKxW_u_ZMDccyF3V1YLNw,24419
15
- pycontrails/core/met.py,sha256=SBBQf_cdOfTdJx--qSj4HwWFjB9N8G0N4ZyrGlls5Zk,91816
14
+ pycontrails/core/interpolation.py,sha256=pDSQx8b3UjwWzKRKn_yKd3h2XsUA_ARRnZjIaH6sf60,24719
15
+ pycontrails/core/met.py,sha256=DT3CAi3zucPTRgp-n_Q6CpdJ52ZwtSCFEonPIzTapWM,95120
16
16
  pycontrails/core/met_var.py,sha256=ZGvnYCXWnr0-A-bLmuhl1y2GIdL1X6pbzM-D-kcDpBg,9502
17
- pycontrails/core/models.py,sha256=91anwgydBQP4CM1MoYrbyArw3pS7Fn3WqfRKtMYETME,39756
17
+ pycontrails/core/models.py,sha256=rK7Nh5VIbNBUrJGE7Q8fnwveuuycPa-KkUJltV4SRZA,40042
18
18
  pycontrails/core/polygon.py,sha256=ukcYh4TzGxz-ggipYe1m6DR50aEBgQhxWkEtjoTqC3w,18227
19
- pycontrails/core/rgi_cython.cp310-win_amd64.pyd,sha256=4LkzRlD5uULrVm7elfxv8XkEHiT_lFoWAYgyaGjw23o,255488
20
- pycontrails/core/vector.py,sha256=OOC3Cl77IZgqrzVC6BCj2brUtv2BU11FqOw7_aEGuX0,73896
19
+ pycontrails/core/rgi_cython.cp310-win_amd64.pyd,sha256=PIT2f0kAefBMkGAxLQXWmVpATb6SjiZlNeywzblFWKM,257536
20
+ pycontrails/core/vector.py,sha256=QeHavtQYc44z3VFCsF_2PJTzMie7MBAkt6ReTKSLMXE,73864
21
21
  pycontrails/datalib/__init__.py,sha256=WnXqgv20SrHZLjFZ9qpQEwRnf0QvfZU-YvMqh7PAUwg,246
22
22
  pycontrails/datalib/goes.py,sha256=Ky7elxQJyKsk6dlJ22wsOtpaZn34LaEQCqqdX3M4a5s,26932
23
23
  pycontrails/datalib/ecmwf/__init__.py,sha256=7-05ELdTfcX6N-yhwe-fGH4E7FlBW9Hjx5aAXPZiTpc,1151
@@ -27,40 +27,39 @@ pycontrails/datalib/ecmwf/hres.py,sha256=agGc9Oope2yd0u_7nH4RuxOHkiU6dc_JvxAxdSI
27
27
  pycontrails/datalib/ecmwf/ifs.py,sha256=PTdP-sRUYPAxDmAhxMDffdfUH4H3qMpTWahu4mn87GA,10877
28
28
  pycontrails/datalib/ecmwf/variables.py,sha256=APjW0fwQ_euK7hmxNhlujcLjx7WN1CPa9DxNZ27HsXg,8940
29
29
  pycontrails/datalib/gfs/__init__.py,sha256=VcE2j62ITbY7F3tEtgaLrfyjHWci-4mvLtnVg3SVgtE,712
30
- pycontrails/datalib/gfs/gfs.py,sha256=zbKatUgRGm7yItoJxlD1y-fkpRRk7RcXmbrzQssnO4U,22215
30
+ pycontrails/datalib/gfs/gfs.py,sha256=QgJ1YI9aGi75V-A4dsabvkbIZrqiZ4GUltncFaJQ6kw,22213
31
31
  pycontrails/datalib/gfs/variables.py,sha256=u2rAsjCJTehB6MhQj9YhlZYovdwoscqAH33T5aBDzSw,2961
32
32
  pycontrails/datalib/spire/__init__.py,sha256=YiS2SMSNU0bLHfbh41nQuKB8MnQNU8o3MldreM1nrM0,362
33
- pycontrails/datalib/spire/spire.py,sha256=-WOJLtCNFzHy43wElajrAC_cW9feJAKX3M5vWVT6YCY,25970
33
+ pycontrails/datalib/spire/spire.py,sha256=aW0wh5GDrszFb20ZMzmWKQ4uHbOCmHvVt9Sf4U3AyTI,26070
34
34
  pycontrails/ext/bada.py,sha256=S0qfNYsp1cGqkHGPu-IkAwk66lD79yikRlrq9uwgPpI,1104
35
35
  pycontrails/ext/cirium.py,sha256=zRPVBBWwocZKkX3XhonSBf54x7P_xnjRcA7psI0Kqnw,429
36
36
  pycontrails/ext/empirical_grid.py,sha256=1WHyt1VOWEr7bMlnXo1tEKJgePvLKjKsCCee2w22gf8,4502
37
- pycontrails/ext/synthetic_flight.py,sha256=G3CZDvtSGXcKZDzuxUBf7zBv5NLvYXjQt_JUSBYxwiU,17039
37
+ pycontrails/ext/synthetic_flight.py,sha256=CxKDAX8Jao9VXuy_eRksS8zqIaMYgiv9az5DWBwRWJw,17105
38
38
  pycontrails/models/__init__.py,sha256=TKhrXe1Pu1-mV1gctx8cUAMrVxCCAtBkbZi9olfWq8s,34
39
- pycontrails/models/accf.py,sha256=zj7Cfs8oyj0RdqiWhAdAvUMmMNBFiJWHLg_RbVG4yYY,12921
39
+ pycontrails/models/accf.py,sha256=72-2oRCSM98cwHxmKmO5ECaRPbiRE010jX5nTQDfHCs,12965
40
40
  pycontrails/models/dry_advection.py,sha256=z4XbEa0ihmcKyCrdaYbWEOYQ4yt9KfmpJ7jYhZ6g5lU,16622
41
41
  pycontrails/models/issr.py,sha256=uDMEFjQH_wh3jcQexMgFFq3-XrM7DEz4kZcgLSGqAM4,7550
42
- pycontrails/models/pcc.py,sha256=Tmelj9C9w_QzflDQWFGZvw-VdqFrlnzCOQoIS3BTBqE,11434
42
+ pycontrails/models/pcc.py,sha256=M5KhtRgdCP9pfDFgui7ibbijtRBTjx3QOJL_m1tQYfs,11443
43
43
  pycontrails/models/pcr.py,sha256=G_0yR5PsCMeJBP6tZFi3M7A6Wcq8s71UvosdA7ozUkI,5502
44
44
  pycontrails/models/sac.py,sha256=Cj4Hi3324wjqLQ7I2CPVkrIh2Fq5W5pKpGrwhYADoHI,16420
45
45
  pycontrails/models/tau_cirrus.py,sha256=eXt3yRrcFBaZNNeH6ZOuU4XEZU2rOfrLKEOC7f0_Ywo,5194
46
46
  pycontrails/models/cocip/__init__.py,sha256=X_MlkJzQ-henQ0xGq-1bfCMajH6s9tlK5QLnN7yfQ68,929
47
- pycontrails/models/cocip/cocip.py,sha256=a8tinj0gj0TAxyjEGgjboydimMfRl2A4QiYnElStjS8,96889
48
- pycontrails/models/cocip/cocip_params.py,sha256=EToFpTlRcNWAuKb3LWw2FDeXrbMw3zrneZwGctUds7I,10501
47
+ pycontrails/models/cocip/cocip.py,sha256=nILOmLjk0DQynIkn-NVjeN1K8ufb9Xno5iyz9JTr6wI,98325
48
+ pycontrails/models/cocip/cocip_params.py,sha256=xvrvUMEzE490Uxh654behS6nJ2CU1g4CzadTZId7KCc,10561
49
49
  pycontrails/models/cocip/cocip_uncertainty.py,sha256=lksROIRLt-jxEdjJTiLP9Da-FYt1GjZKaIxwDaH2Ytg,12069
50
50
  pycontrails/models/cocip/contrail_properties.py,sha256=dRq5o-YuC-s487Fs54OHpAuS8LkxM-HATNVclHKUhL0,57362
51
- pycontrails/models/cocip/output_formats.py,sha256=zzcdcgJDOxU4N4PiZDFPApT2TGTIVYCXh61gw41pw1E,78952
51
+ pycontrails/models/cocip/output_formats.py,sha256=sYGYosAL6BQvntKXdeomAph-K6EKOgsI2VQynLEHxnM,79228
52
52
  pycontrails/models/cocip/radiative_forcing.py,sha256=SYmQ8lL8gpWbf6he2C9mKSjODtytbFcdnMdBM-LtBKE,46206
53
53
  pycontrails/models/cocip/radiative_heating.py,sha256=N7FTR20luERmokprdqMOl-d8-cTYZZ2ZSsTdxZnLHfs,19368
54
54
  pycontrails/models/cocip/wake_vortex.py,sha256=d3oLkTWIocwYb99fl6t99LtEsbKkdsupAfoUY-GmbTI,13783
55
55
  pycontrails/models/cocip/wind_shear.py,sha256=Dm181EsiCBJWTnRTZ3ZI3YXscBRnhA6ANnKer004b2Q,3980
56
56
  pycontrails/models/cocipgrid/__init__.py,sha256=OYSdZ1Htbr_IP7N_HuOAj1Pa_KLHtdEeJfXP-cN-gnU,271
57
- pycontrails/models/cocipgrid/cocip_grid.py,sha256=7fGUWUa58ArsqwSMkULIsvHsFm05K79L9pH1nGRtnKA,85953
58
- pycontrails/models/cocipgrid/cocip_grid_params.py,sha256=4537wWTs_-9DZdKiZGGQmCz5yCbQFAAnZV9Aeg8zABU,6371
59
- pycontrails/models/cocipgrid/cocip_time_handling.py,sha256=Zcm9-kH-SZLt8RU8FCCn5PEH8P6K8YdtKqKhQAS3AbM,14207
57
+ pycontrails/models/cocipgrid/cocip_grid.py,sha256=mcz8_G4YyiyqkuAAZiwWZk-NOtcxKJY57pVkhSunHSQ,92278
58
+ pycontrails/models/cocipgrid/cocip_grid_params.py,sha256=I-Ua1ifeqOx12SbbFwau2s17LjemvUZ6ihJhmJIqpdA,5911
60
59
  pycontrails/models/emissions/__init__.py,sha256=BXzV2pBps8j3xbaF1n9uPdVVLI5MBIGYx8xqDJezYIE,499
61
60
  pycontrails/models/emissions/black_carbon.py,sha256=9DRqB487pH8Iq83FXggA5mPLYEAA8NpsKx24f8uTEF4,20828
62
61
  pycontrails/models/emissions/emissions.py,sha256=WYypixqzR9a1wqfevxEKIrk3NIAIp0fKBMqOHkawsWo,48917
63
- pycontrails/models/emissions/ffm2.py,sha256=nywGz_bKPSftaTJKgaCHftGLMpFlJwafMnfowKy7tS0,12316
62
+ pycontrails/models/emissions/ffm2.py,sha256=wtiWk00_Rby2_xJN-pMY6Ays0CZwFhvqDRFmIIkwunU,12368
64
63
  pycontrails/models/emissions/static/default-engine-uids.csv,sha256=Fr_SXHQwna7V73bdlU-0CZLTfkBTQ5EYvQaZWHyFqtE,6456
65
64
  pycontrails/models/emissions/static/edb-gaseous-v28c-engines.csv,sha256=UJjnqdyOwkokzz3Vd5bSXCpn8Sm-mSygOdC8CrGhhqo,119459
66
65
  pycontrails/models/emissions/static/edb-nvpm-v28c-engines.csv,sha256=JKYYEd42dQSeNujub6HgwbUoVZG84iHzBY9YO086lxA,63651
@@ -68,11 +67,11 @@ pycontrails/models/humidity_scaling/__init__.py,sha256=-xqDCJzKJx2nX6yl-gglHheQH
68
67
  pycontrails/models/humidity_scaling/humidity_scaling.py,sha256=0e2hOpVDK36ghKqBNjJo19mSlkR1SJq1qtb48NX5Coo,35692
69
68
  pycontrails/models/humidity_scaling/quantiles/era5-quantiles.pq,sha256=tfYhbafF9Z-gGCg6VQ1YBlOaK_01e65Dc6s9b-hQ6Zo,286375
70
69
  pycontrails/models/ps_model/__init__.py,sha256=QggqLRpqUh6imcn7GFPcKFSU4s3WjgfdvO8hH_OO8NY,512
71
- pycontrails/models/ps_model/ps_aircraft_params.py,sha256=OEs3bZ_7I-L7E3EjZzrCYgINjh9Mies8VYasq42Msuw,12452
70
+ pycontrails/models/ps_model/ps_aircraft_params.py,sha256=LNiTyYUq4i2X6MqOUu7e0lljWug-SC9lU8IzJZx4LTU,12452
72
71
  pycontrails/models/ps_model/ps_grid.py,sha256=mOJhtDI8A05L8m-xMO3sbNW_7oPyRnLvlaIVEoXzODE,19172
73
72
  pycontrails/models/ps_model/ps_model.py,sha256=j7-37E3S_qu3xZGkVJZEBXxQoJ-QKXIub-2-YFMQLas,32478
74
73
  pycontrails/models/ps_model/ps_operational_limits.py,sha256=-2qwQBRr1qHUALSIEGdQM7bxi47BeJpU744epVyy1jI,10701
75
- pycontrails/models/ps_model/static/ps-aircraft-params-20231117.csv,sha256=Oniasj0Gbjy12g7FNQE4P47UHQ4MVhwMP2rxI9PgEHU,12622
74
+ pycontrails/models/ps_model/static/ps-aircraft-params-20240209.csv,sha256=rPp6Ews2dKEWHP0i3II0-y7w95ZyVsXtWwIYcm3BsPE,14742
76
75
  pycontrails/physics/__init__.py,sha256=AScCMSMSZjKxfL6mssdSLwcja1ml7MzREThQp5PLr9U,45
77
76
  pycontrails/physics/constants.py,sha256=JdlUyfxAgrMsF8VFNobe1Q7BXBghLu19QKQkX6vgLHQ,3100
78
77
  pycontrails/physics/geo.py,sha256=Dwc9dUzUlHGCDVqFdh492vJZsC5CB8J45cJnsHaMRF4,31229
@@ -82,12 +81,12 @@ pycontrails/physics/units.py,sha256=rDHeF1r27wYtzrbU0OjZVsIKa4REvFekNjOrILGkEPw,
82
81
  pycontrails/utils/__init__.py,sha256=VmklFC-5I5lGFQEzuomlPk_bM6CoM9XDljfjCovG3vw,33
83
82
  pycontrails/utils/dependencies.py,sha256=oJDnykg1WtMWn1wSE2OKC6czj2hGD1Irh3zrI5g160I,2552
84
83
  pycontrails/utils/iteration.py,sha256=En2YY4NiNwCNtAVO8HL6tv9byBGKs8MKSI7R8P-gZy4,332
85
- pycontrails/utils/json.py,sha256=syFkAVc3B-WwEDOPrcZF8h1Je7rl2bx74N0HskrJCw0,6112
84
+ pycontrails/utils/json.py,sha256=xCv71CKVZNHk4MyoYC-hl7dXObXXbI7P8gcNCn3AUoU,6172
86
85
  pycontrails/utils/temp.py,sha256=5XXqQoEfWjz1OrhoOBZD5vkkCFeuq9LpZkyhc38gIeY,1159
87
86
  pycontrails/utils/types.py,sha256=f8FNSSzW-1ISgJ0zDtCwZgpuzpt26sUABiHHusS414s,4725
88
- pycontrails-0.49.3.dist-info/LICENSE,sha256=HVr8JnZfTaA-12BfKUQZi5hdrB3awOwLWs5X_ga5QzA,10353
89
- pycontrails-0.49.3.dist-info/METADATA,sha256=XSNFJquG8hUUsHYBDKm8sMtHKxEumZ_mvQ5kYBb8AP0,8429
90
- pycontrails-0.49.3.dist-info/NOTICE,sha256=qYeNEp8OjDK5jSW3hTlr9LQRjZeEhXQm0zDei5UFaYs,1969
91
- pycontrails-0.49.3.dist-info/WHEEL,sha256=5JPYeYl5ZdvdSkrGS4u21mmpPzpFx42qrXOSIgWf4pg,102
92
- pycontrails-0.49.3.dist-info/top_level.txt,sha256=Z8J1R_AiBAyCVjNw6jYLdrA68PrQqTg0t3_Yek_IZ0Q,29
93
- pycontrails-0.49.3.dist-info/RECORD,,
87
+ pycontrails-0.49.5.dist-info/LICENSE,sha256=HVr8JnZfTaA-12BfKUQZi5hdrB3awOwLWs5X_ga5QzA,10353
88
+ pycontrails-0.49.5.dist-info/METADATA,sha256=VPxASRleJeBK3MiyIOnXN3lCJf27w7uDA88ALwA_7R8,8429
89
+ pycontrails-0.49.5.dist-info/NOTICE,sha256=qYeNEp8OjDK5jSW3hTlr9LQRjZeEhXQm0zDei5UFaYs,1969
90
+ pycontrails-0.49.5.dist-info/WHEEL,sha256=5JPYeYl5ZdvdSkrGS4u21mmpPzpFx42qrXOSIgWf4pg,102
91
+ pycontrails-0.49.5.dist-info/top_level.txt,sha256=Z8J1R_AiBAyCVjNw6jYLdrA68PrQqTg0t3_Yek_IZ0Q,29
92
+ pycontrails-0.49.5.dist-info/RECORD,,