pycontrails 0.56.0__cp312-cp312-macosx_11_0_arm64.whl → 0.58.0__cp312-cp312-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.
- pycontrails/_version.py +3 -3
- pycontrails/core/aircraft_performance.py +1 -1
- pycontrails/core/cache.py +2 -2
- pycontrails/core/fleet.py +2 -7
- pycontrails/core/flight.py +2 -7
- pycontrails/core/interpolation.py +42 -64
- pycontrails/core/met.py +36 -16
- pycontrails/core/polygon.py +3 -3
- pycontrails/core/rgi_cython.cpython-312-darwin.so +0 -0
- pycontrails/core/vector.py +3 -8
- pycontrails/datalib/_met_utils/metsource.py +4 -7
- pycontrails/datalib/ecmwf/common.py +2 -2
- pycontrails/datalib/ecmwf/hres.py +2 -2
- pycontrails/datalib/ecmwf/ifs.py +1 -1
- pycontrails/datalib/geo_utils.py +261 -0
- pycontrails/datalib/gfs/gfs.py +59 -65
- pycontrails/datalib/goes.py +193 -399
- pycontrails/datalib/himawari/__init__.py +27 -0
- pycontrails/datalib/himawari/header_struct.py +266 -0
- pycontrails/datalib/himawari/himawari.py +667 -0
- pycontrails/datalib/leo_utils/sentinel_metadata.py +9 -9
- pycontrails/ext/synthetic_flight.py +2 -2
- pycontrails/models/cocip/cocip_uncertainty.py +1 -1
- pycontrails/models/cocip/contrail_properties.py +1 -1
- pycontrails/models/cocip/output_formats.py +1 -1
- pycontrails/models/cocipgrid/cocip_grid.py +3 -3
- pycontrails/models/dry_advection.py +1 -1
- pycontrails/models/extended_k15.py +4 -4
- pycontrails/models/humidity_scaling/humidity_scaling.py +2 -2
- pycontrails/models/ps_model/ps_grid.py +2 -2
- pycontrails/models/sac.py +1 -1
- pycontrails/models/tau_cirrus.py +1 -1
- pycontrails/physics/thermo.py +1 -1
- pycontrails/utils/iteration.py +1 -1
- {pycontrails-0.56.0.dist-info → pycontrails-0.58.0.dist-info}/METADATA +6 -6
- {pycontrails-0.56.0.dist-info → pycontrails-0.58.0.dist-info}/RECORD +40 -36
- {pycontrails-0.56.0.dist-info → pycontrails-0.58.0.dist-info}/WHEEL +0 -0
- {pycontrails-0.56.0.dist-info → pycontrails-0.58.0.dist-info}/licenses/LICENSE +0 -0
- {pycontrails-0.56.0.dist-info → pycontrails-0.58.0.dist-info}/licenses/NOTICE +0 -0
- {pycontrails-0.56.0.dist-info → pycontrails-0.58.0.dist-info}/top_level.txt +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"""Download and parse Sentinel metadata."""
|
|
2
2
|
|
|
3
|
+
import datetime
|
|
3
4
|
import os
|
|
4
5
|
import re
|
|
5
6
|
import xml.etree.ElementTree as ET
|
|
6
7
|
from collections.abc import Collection
|
|
7
|
-
from datetime import datetime, timedelta, timezone
|
|
8
8
|
|
|
9
9
|
import numpy as np
|
|
10
10
|
import numpy.typing as npt
|
|
@@ -464,10 +464,10 @@ def parse_ephemeris_sentinel(datatsrip_metadata_path: str) -> pd.DataFrame:
|
|
|
464
464
|
if position_elem is None or position_elem.text is None:
|
|
465
465
|
continue # skip if missing
|
|
466
466
|
|
|
467
|
-
gps_time = datetime.strptime(gps_time_elem.text, "%Y-%m-%dT%H:%M:%S")
|
|
467
|
+
gps_time = datetime.datetime.strptime(gps_time_elem.text, "%Y-%m-%dT%H:%M:%S")
|
|
468
468
|
|
|
469
469
|
# Convert GPS to UTC time as there is a few seconds between them
|
|
470
|
-
utc_time = gps_to_utc(gps_time).replace(tzinfo=
|
|
470
|
+
utc_time = gps_to_utc(gps_time).replace(tzinfo=datetime.UTC)
|
|
471
471
|
|
|
472
472
|
# Parse positions in ECEF coordinate system
|
|
473
473
|
x, y, z = map(float, position_elem.text.split())
|
|
@@ -643,30 +643,30 @@ def get_time_delay_detectors(
|
|
|
643
643
|
# Time helper functions
|
|
644
644
|
|
|
645
645
|
|
|
646
|
-
def gps_to_utc(gps_time: datetime) -> datetime:
|
|
646
|
+
def gps_to_utc(gps_time: datetime.datetime) -> datetime.datetime:
|
|
647
647
|
"""Convert GPS time (datetime object) to UTC time.
|
|
648
648
|
|
|
649
649
|
https://gssc.esa.int/navipedia/index.php/Transformations_between_Time_Systems
|
|
650
650
|
"""
|
|
651
651
|
|
|
652
|
-
gps_tai_offset = timedelta(seconds=19)
|
|
653
|
-
utc_tai_offset = timedelta(seconds=37)
|
|
652
|
+
gps_tai_offset = datetime.timedelta(seconds=19)
|
|
653
|
+
utc_tai_offset = datetime.timedelta(seconds=37)
|
|
654
654
|
|
|
655
655
|
# Convert GPS time to UTC
|
|
656
656
|
return gps_time + gps_tai_offset - utc_tai_offset
|
|
657
657
|
|
|
658
658
|
|
|
659
|
-
def _calculate_average_time(times: Collection[datetime]) -> datetime:
|
|
659
|
+
def _calculate_average_time(times: Collection[datetime.datetime]) -> datetime.datetime:
|
|
660
660
|
"""Return the average time from a list of times."""
|
|
661
661
|
# Compute the average time
|
|
662
662
|
avg_timestamp = sum(t.timestamp() for t in times) / len(times)
|
|
663
|
-
return datetime.fromtimestamp(avg_timestamp)
|
|
663
|
+
return datetime.datetime.fromtimestamp(avg_timestamp)
|
|
664
664
|
|
|
665
665
|
|
|
666
666
|
def _calculate_timedeltas(detector_times: dict[int, str]) -> dict[int, pd.Timedelta]:
|
|
667
667
|
"""Calculate the time difference between a detector and the average time."""
|
|
668
668
|
detector_times_dt = {
|
|
669
|
-
detector_id: datetime.strptime(time_str, "%Y-%m-%dT%H:%M:%S.%f")
|
|
669
|
+
detector_id: datetime.datetime.strptime(time_str, "%Y-%m-%dT%H:%M:%S.%f")
|
|
670
670
|
for detector_id, time_str in detector_times.items()
|
|
671
671
|
}
|
|
672
672
|
|
|
@@ -305,8 +305,8 @@ class SyntheticFlight:
|
|
|
305
305
|
*src,
|
|
306
306
|
az,
|
|
307
307
|
npts,
|
|
308
|
-
m_per_timestep,
|
|
309
|
-
return_back_azimuth=False,
|
|
308
|
+
m_per_timestep,
|
|
309
|
+
return_back_azimuth=False,
|
|
310
310
|
)
|
|
311
311
|
longitude = np.asarray(result.lons)
|
|
312
312
|
latitude = np.asarray(result.lats)
|
|
@@ -30,7 +30,7 @@ class habit_dirichlet(rv_frozen):
|
|
|
30
30
|
- Table 2 in :cite:`schumannEffectiveRadiusIce2011`
|
|
31
31
|
"""
|
|
32
32
|
|
|
33
|
-
def __init__(self, C: float = 96.0):
|
|
33
|
+
def __init__(self, C: float = 96.0) -> None:
|
|
34
34
|
self.C = C
|
|
35
35
|
|
|
36
36
|
def rvs(self, *args: Any, **kwds: Any) -> npt.NDArray[np.float32]:
|
|
@@ -236,7 +236,7 @@ def initial_ice_particle_number(
|
|
|
236
236
|
phase, [:math:`# m^{-1}`]
|
|
237
237
|
"""
|
|
238
238
|
if min_aei is not None:
|
|
239
|
-
aei = np.clip(aei, min=min_aei) # type: ignore[
|
|
239
|
+
aei = np.clip(aei, min=min_aei) # type: ignore[call-overload]
|
|
240
240
|
return fuel_dist * aei
|
|
241
241
|
|
|
242
242
|
|
|
@@ -2228,7 +2228,7 @@ def compare_cocip_with_goes(
|
|
|
2228
2228
|
fig = plt.figure(figsize=(1.2 * x_dim, y_dim))
|
|
2229
2229
|
pc = ccrs.PlateCarree()
|
|
2230
2230
|
ax = fig.add_subplot(projection=pc, extent=bbox)
|
|
2231
|
-
ax.coastlines()
|
|
2231
|
+
ax.coastlines()
|
|
2232
2232
|
ax.imshow(rgb, extent=extent, transform=transform)
|
|
2233
2233
|
|
|
2234
2234
|
ax.set_xticks([spatial_bbox[0], spatial_bbox[2]], crs=ccrs.PlateCarree())
|
|
@@ -114,7 +114,7 @@ class CocipGrid(models.Model):
|
|
|
114
114
|
rad: MetDataset,
|
|
115
115
|
params: dict[str, Any] | None = None,
|
|
116
116
|
**params_kwargs: Any,
|
|
117
|
-
):
|
|
117
|
+
) -> None:
|
|
118
118
|
super().__init__(met, params=params, **params_kwargs)
|
|
119
119
|
|
|
120
120
|
compute_tau_cirrus = self.params["compute_tau_cirrus_in_model_init"]
|
|
@@ -386,7 +386,7 @@ class CocipGrid(models.Model):
|
|
|
386
386
|
"dt_integration": dt_integration_str,
|
|
387
387
|
"aircraft_type": self.get_source_param("aircraft_type"),
|
|
388
388
|
"pycontrails_version": pycontrails.__version__,
|
|
389
|
-
**self.source.attrs,
|
|
389
|
+
**self.source.attrs,
|
|
390
390
|
}
|
|
391
391
|
if ap_model := self.params["aircraft_performance"]:
|
|
392
392
|
attrs["ap_model"] = type(ap_model).__name__
|
|
@@ -2210,7 +2210,7 @@ def result_to_metdataset(
|
|
|
2210
2210
|
# Update source
|
|
2211
2211
|
for k, v in data_vars.items(): # type: ignore[assignment]
|
|
2212
2212
|
source[k] = v
|
|
2213
|
-
source.attrs.update(attrs)
|
|
2213
|
+
source.attrs.update(attrs)
|
|
2214
2214
|
|
|
2215
2215
|
# Return reference to source
|
|
2216
2216
|
return source
|
|
@@ -24,12 +24,12 @@ DEFAULT_EXHAUST_T = 600.0 # Exhaust temperature, [K]
|
|
|
24
24
|
EXPERIMENTAL_WARNING = True
|
|
25
25
|
|
|
26
26
|
|
|
27
|
-
class ParticleType(enum.
|
|
27
|
+
class ParticleType(enum.StrEnum):
|
|
28
28
|
"""Enumeration of particle types."""
|
|
29
29
|
|
|
30
|
-
NVPM =
|
|
31
|
-
VPM =
|
|
32
|
-
AMBIENT =
|
|
30
|
+
NVPM = enum.auto()
|
|
31
|
+
VPM = enum.auto()
|
|
32
|
+
AMBIENT = enum.auto()
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
@dataclasses.dataclass(frozen=True)
|
|
@@ -442,7 +442,7 @@ class ExponentialBoostLatitudeCorrectionHumidityScaling(HumidityScaling):
|
|
|
442
442
|
met: MetDataset | None = None,
|
|
443
443
|
params: dict[str, Any] | None = None,
|
|
444
444
|
**params_kwargs: Any,
|
|
445
|
-
):
|
|
445
|
+
) -> None:
|
|
446
446
|
if (params is None or "level_type" not in params) and ("level_type" not in params_kwargs):
|
|
447
447
|
msg = (
|
|
448
448
|
"The default level_type will change from 'pressure' to 'model' "
|
|
@@ -863,7 +863,7 @@ class HistogramMatching(HumidityScaling):
|
|
|
863
863
|
met: MetDataset | None = None,
|
|
864
864
|
params: dict[str, Any] | None = None,
|
|
865
865
|
**params_kwargs: Any,
|
|
866
|
-
):
|
|
866
|
+
) -> None:
|
|
867
867
|
if (params is None or "level_type" not in params) and (
|
|
868
868
|
params_kwargs is None or "level_type" not in params_kwargs
|
|
869
869
|
):
|
|
@@ -639,9 +639,9 @@ def ps_nominal_optimize_mach(
|
|
|
639
639
|
if sin_a is None or cos_a is None:
|
|
640
640
|
msg = "Segment angles must be provide if wind data is specified"
|
|
641
641
|
raise ValueError(msg)
|
|
642
|
-
headwind = -(northward_wind * cos_a + eastward_wind * sin_a)
|
|
642
|
+
headwind = -(northward_wind * cos_a + eastward_wind * sin_a)
|
|
643
643
|
else:
|
|
644
|
-
headwind = 0.0
|
|
644
|
+
headwind = 0.0
|
|
645
645
|
|
|
646
646
|
min_mach = ps_operational_limits.minimum_mach_num(
|
|
647
647
|
air_pressure=level * 100.0,
|
pycontrails/models/sac.py
CHANGED
|
@@ -133,7 +133,7 @@ class SAC(Model):
|
|
|
133
133
|
|
|
134
134
|
G = slope_mixing_line(specific_humidity, air_pressure, engine_efficiency, ei_h2o, q_fuel)
|
|
135
135
|
T_sat_liquid_ = T_sat_liquid(G)
|
|
136
|
-
rh_crit_sac = rh_critical_sac(air_temperature, T_sat_liquid_, G)
|
|
136
|
+
rh_crit_sac = rh_critical_sac(air_temperature, T_sat_liquid_, G)
|
|
137
137
|
rh = thermo.rh(specific_humidity, air_temperature, air_pressure) # type: ignore[type-var]
|
|
138
138
|
sac_ = sac(rh, rh_crit_sac)
|
|
139
139
|
|
pycontrails/models/tau_cirrus.py
CHANGED
|
@@ -91,7 +91,7 @@ def tau_cirrus(met: MetDataset) -> xr.DataArray:
|
|
|
91
91
|
# dask.array.gradient expects at least 2 elements in each chunk
|
|
92
92
|
level_axis = geopotential_height.get_axis_num("level")
|
|
93
93
|
if geopotential_height.chunks:
|
|
94
|
-
level_chunks = geopotential_height.chunks[level_axis]
|
|
94
|
+
level_chunks = geopotential_height.chunks[level_axis]
|
|
95
95
|
if any(chunk < 2 for chunk in level_chunks):
|
|
96
96
|
geopotential_height = geopotential_height.chunk(level=-1)
|
|
97
97
|
|
pycontrails/physics/thermo.py
CHANGED
|
@@ -269,7 +269,7 @@ def mk05_e_sat_liquid_prime(T: ArrayScalarLike) -> ArrayScalarLike:
|
|
|
269
269
|
Derivative of :func:`mk05_e_sat_liquid`
|
|
270
270
|
"""
|
|
271
271
|
tanh_term = np.tanh(0.0415 * (T - 218.8))
|
|
272
|
-
return mk05_e_sat_liquid(T) * (
|
|
272
|
+
return mk05_e_sat_liquid(T) * (
|
|
273
273
|
6763.22 / T**2
|
|
274
274
|
- 4.21 / T
|
|
275
275
|
+ 0.000367
|
pycontrails/utils/iteration.py
CHANGED
|
@@ -6,7 +6,7 @@ from collections.abc import Iterator
|
|
|
6
6
|
from typing import Any
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
def chunk_list(lst: list, n: int) -> Iterator[list[Any]]:
|
|
9
|
+
def chunk_list(lst: list[Any], n: int) -> Iterator[list[Any]]:
|
|
10
10
|
"""Yield successive n-sized chunks from list."""
|
|
11
11
|
|
|
12
12
|
for i in range(0, len(lst), n):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pycontrails
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.58.0
|
|
4
4
|
Summary: Python library for modeling aviation climate impacts
|
|
5
5
|
Author-email: "Contrails.org" <py@contrails.org>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -13,23 +13,23 @@ Classifier: Development Status :: 4 - Beta
|
|
|
13
13
|
Classifier: Intended Audience :: Science/Research
|
|
14
14
|
Classifier: Operating System :: OS Independent
|
|
15
15
|
Classifier: Programming Language :: Python :: 3
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
17
16
|
Classifier: Programming Language :: Python :: 3.11
|
|
18
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
19
18
|
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
20
20
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
21
21
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
22
22
|
Classifier: Topic :: Scientific/Engineering :: Atmospheric Science
|
|
23
23
|
Classifier: Topic :: Scientific/Engineering :: GIS
|
|
24
24
|
Classifier: Typing :: Typed
|
|
25
|
-
Requires-Python: >=3.
|
|
25
|
+
Requires-Python: >=3.11
|
|
26
26
|
Description-Content-Type: text/markdown
|
|
27
27
|
License-File: LICENSE
|
|
28
28
|
License-File: NOTICE
|
|
29
29
|
Requires-Dist: dask>=2022.3
|
|
30
30
|
Requires-Dist: numpy>=1.22
|
|
31
31
|
Requires-Dist: pandas>=2.0
|
|
32
|
-
Requires-Dist: scipy>=1.
|
|
32
|
+
Requires-Dist: scipy>=1.12
|
|
33
33
|
Requires-Dist: typing-extensions>=4.5; python_version < "3.12"
|
|
34
34
|
Requires-Dist: xarray>=2022.3
|
|
35
35
|
Provides-Extra: complete
|
|
@@ -74,7 +74,6 @@ Requires-Dist: google-cloud-storage>=2.1; extra == "gcp"
|
|
|
74
74
|
Requires-Dist: platformdirs>=3.0; extra == "gcp"
|
|
75
75
|
Requires-Dist: tqdm>=4.61; extra == "gcp"
|
|
76
76
|
Provides-Extra: gfs
|
|
77
|
-
Requires-Dist: boto3>=1.20; extra == "gfs"
|
|
78
77
|
Requires-Dist: cfgrib>=0.9; extra == "gfs"
|
|
79
78
|
Requires-Dist: eccodes>=2.38; extra == "gfs"
|
|
80
79
|
Requires-Dist: netcdf4>=1.6.1; extra == "gfs"
|
|
@@ -94,6 +93,7 @@ Requires-Dist: google-cloud-bigquery-storage>=2.25; extra == "sat"
|
|
|
94
93
|
Requires-Dist: pillow>=10.3; extra == "sat"
|
|
95
94
|
Requires-Dist: pyproj>=3.5; extra == "sat"
|
|
96
95
|
Requires-Dist: rasterio>=1.3; extra == "sat"
|
|
96
|
+
Requires-Dist: s3fs>=2022.3; extra == "sat"
|
|
97
97
|
Requires-Dist: scikit-image>=0.18; extra == "sat"
|
|
98
98
|
Requires-Dist: shapely>=2.0; extra == "sat"
|
|
99
99
|
Provides-Extra: open3d
|
|
@@ -140,7 +140,7 @@ Documentation and examples available at [py.contrails.org](https://py.contrails.
|
|
|
140
140
|
|
|
141
141
|
### Install with pip
|
|
142
142
|
|
|
143
|
-
You can install pycontrails from PyPI with `pip` (Python 3.
|
|
143
|
+
You can install pycontrails from PyPI with `pip` (Python 3.11 or later required):
|
|
144
144
|
|
|
145
145
|
```bash
|
|
146
146
|
$ pip install pycontrails
|
|
@@ -1,75 +1,79 @@
|
|
|
1
|
-
pycontrails-0.
|
|
2
|
-
pycontrails-0.
|
|
3
|
-
pycontrails-0.
|
|
4
|
-
pycontrails-0.
|
|
5
|
-
pycontrails-0.
|
|
6
|
-
pycontrails-0.
|
|
7
|
-
pycontrails/_version.py,sha256=
|
|
1
|
+
pycontrails-0.58.0.dist-info/RECORD,,
|
|
2
|
+
pycontrails-0.58.0.dist-info/WHEEL,sha256=V1loQ6TpxABu1APUg0MoTRBOzSKT5xVc3skizX-ovCU,136
|
|
3
|
+
pycontrails-0.58.0.dist-info/top_level.txt,sha256=Z8J1R_AiBAyCVjNw6jYLdrA68PrQqTg0t3_Yek_IZ0Q,29
|
|
4
|
+
pycontrails-0.58.0.dist-info/METADATA,sha256=-pOZxATs-SGOiS7FppQtQYehP9MYFbQV2l_VnbptyJg,9129
|
|
5
|
+
pycontrails-0.58.0.dist-info/licenses/LICENSE,sha256=gJ-h7SFFD1mCfR6a7HILvEtodDT6Iig8bLXdgqR6ucA,10175
|
|
6
|
+
pycontrails-0.58.0.dist-info/licenses/NOTICE,sha256=fiBPdjYibMpDzf8hqcn7TvAQ-yeK10q_Nqq24DnskYg,1962
|
|
7
|
+
pycontrails/_version.py,sha256=ife3IDQF-DAoy1CwSUU90Z0xGG9P1GsYeBh-Ic3uecI,714
|
|
8
8
|
pycontrails/__init__.py,sha256=9ypSB2fKZlKghTvSrjWo6OHm5qfASwiTIvlMew3Olu4,2037
|
|
9
9
|
pycontrails/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
|
-
pycontrails/core/vector.py,sha256=
|
|
10
|
+
pycontrails/core/vector.py,sha256=hms3hea2Y86LOuZFfOqzGZToqpOVksgXikM_S5w355w,73498
|
|
11
11
|
pycontrails/core/models.py,sha256=3mDTqp1V5aae9akuYwbMGIUEkESKSYTjZeyu2IiMW7s,43915
|
|
12
|
-
pycontrails/core/interpolation.py,sha256=
|
|
13
|
-
pycontrails/core/fleet.py,sha256=
|
|
14
|
-
pycontrails/core/flight.py,sha256=
|
|
12
|
+
pycontrails/core/interpolation.py,sha256=TpLDfx-Bx2tGDjWJOyU4n9Dkz6Obl05dB7Ol5diYdsk,24816
|
|
13
|
+
pycontrails/core/fleet.py,sha256=a_vVwAjMbjkhszg7ejP3V0yly_wJ9Va_OQEATG-9UHw,16572
|
|
14
|
+
pycontrails/core/flight.py,sha256=dmqO1PxADMHIcK9U8XSnuXbP59ftQgeKvdI2xGP04ig,81460
|
|
15
15
|
pycontrails/core/fuel.py,sha256=kJZ3P1lPm1L6rdPREM55XQ-VfJ_pt35cP4sO2Nnvmjs,4332
|
|
16
|
-
pycontrails/core/polygon.py,sha256=
|
|
17
|
-
pycontrails/core/cache.py,sha256=
|
|
16
|
+
pycontrails/core/polygon.py,sha256=kXYwj1Xy-mo8GEWXFAO_OJEtZbGx11DE_sZw6iyNvN4,17995
|
|
17
|
+
pycontrails/core/cache.py,sha256=JQIy1sQf0Vil7wlEk9ZIvVacnOD4wM3X8-UkMFjR2wQ,28177
|
|
18
18
|
pycontrails/core/__init__.py,sha256=p0O09HxdeXU0X5Z3zrHMlTfXa92YumT3fJ8wJBI5ido,856
|
|
19
19
|
pycontrails/core/flightplan.py,sha256=0mvA3IO19Sap-7gwpmEIV35_mg6ChvajwhurvjZZt_U,7521
|
|
20
|
-
pycontrails/core/met.py,sha256=
|
|
21
|
-
pycontrails/core/aircraft_performance.py,sha256=
|
|
20
|
+
pycontrails/core/met.py,sha256=JosS0DXGEB4NBQ40WU1b4yG04h3DkT7Vs-P0jK-UkCY,104453
|
|
21
|
+
pycontrails/core/aircraft_performance.py,sha256=CPIgIi5nUuCHiNVLAvZcWECRfakmMd-wUWd3lMA6oGM,28204
|
|
22
22
|
pycontrails/core/airports.py,sha256=CzZrgJNZ7wtNv8vg9sJczMhFov7k0gmrGR4tRKCH8i8,6782
|
|
23
23
|
pycontrails/core/met_var.py,sha256=g69vqbxpJeXEQU8vrrcoUR1PX3zCo2-k3au1Lv2TiIw,12027
|
|
24
|
-
pycontrails/core/rgi_cython.cpython-312-darwin.so,sha256=
|
|
24
|
+
pycontrails/core/rgi_cython.cpython-312-darwin.so,sha256=uXrkb5I98yF39zb0Xy9o_F2AHN7q9Y1K_SxCpjWYT04,340192
|
|
25
25
|
pycontrails/core/coordinates.py,sha256=0ySsHtqTon7GMbuwmmxMbI92j3ueMteJZh4xxNm5zto,5391
|
|
26
|
-
pycontrails/datalib/goes.py,sha256=
|
|
26
|
+
pycontrails/datalib/goes.py,sha256=kZIhx1cKIcNtIxQ3IiuN45aCpwDzzTOxi0Y4fjyaOLs,27481
|
|
27
27
|
pycontrails/datalib/landsat.py,sha256=6ylDkAjnyX7b4ZbHn4bprO8HB8ADPFyMkwWehIs8FLg,20915
|
|
28
|
+
pycontrails/datalib/geo_utils.py,sha256=w6VYhJQeMpBXaBclqANv4Nn0yqPIxlQr6GTUpjArTj0,9070
|
|
28
29
|
pycontrails/datalib/__init__.py,sha256=hW9NWdFPC3y_2vHMteQ7GgQdop3917MkDaf5ZhU2RBY,369
|
|
29
30
|
pycontrails/datalib/sentinel.py,sha256=ed1l1avq8lBvQinY_vNSsWRcpqxUdAPY61AGyPcLawo,23532
|
|
30
|
-
pycontrails/datalib/
|
|
31
|
+
pycontrails/datalib/himawari/himawari.py,sha256=uJXhu1URdu3Hen9wMwkgxyPHdjd_xyIt9E7WblVy2xQ,23327
|
|
32
|
+
pycontrails/datalib/himawari/__init__.py,sha256=SWupVbeuyK07IPDCgiNjN6hoLB7hlceabJ3fixhDkl0,619
|
|
33
|
+
pycontrails/datalib/himawari/header_struct.py,sha256=WbPkNBNUVm8tGKU8wpj4rldY17g5MHQ_OfbWicZSokc,9975
|
|
34
|
+
pycontrails/datalib/_met_utils/metsource.py,sha256=mlKcRko5ZKuYK5uwWn6AAgUSJLMQAYq1nFqskVMGgYo,23999
|
|
31
35
|
pycontrails/datalib/ecmwf/arco_era5.py,sha256=7HXQU5S02PzX9Ew2ZrDKSp0tDEG1eeVAvbP3decmm20,12437
|
|
32
36
|
pycontrails/datalib/ecmwf/era5.py,sha256=4ULNdDlUN0kP6Tbp8D_-Bc12nAsLf0iNfZaDoj_AoZU,18952
|
|
33
37
|
pycontrails/datalib/ecmwf/era5_model_level.py,sha256=AO7ePIGZtavx5nQSPYP4p07RNZeg3bbzmoZC7RUC4Gg,19354
|
|
34
|
-
pycontrails/datalib/ecmwf/hres.py,sha256=
|
|
38
|
+
pycontrails/datalib/ecmwf/hres.py,sha256=tvIXPJjXgijtVdsSyPGtvKf0h5GUczBSsovKEbCgBxg,29624
|
|
35
39
|
pycontrails/datalib/ecmwf/variables.py,sha256=lU3BNe265XVhCXvdMwZqfkWQwtsetZxVRLSfPqHFKAE,9913
|
|
36
40
|
pycontrails/datalib/ecmwf/hres_model_level.py,sha256=CcxMKiFJyLvM9njmBVywAXJxyWE7atsgHXBubKJQqHM,17779
|
|
37
41
|
pycontrails/datalib/ecmwf/__init__.py,sha256=wdfhplEaW2UKTItIoshTtVEjbPyfDYoprTJNxbKZuvA,2021
|
|
38
|
-
pycontrails/datalib/ecmwf/common.py,sha256=
|
|
42
|
+
pycontrails/datalib/ecmwf/common.py,sha256=axOxvdrey9YD34uk0Ocav08MxKvC2uVaiwvyQgFZMEw,3970
|
|
39
43
|
pycontrails/datalib/ecmwf/model_levels.py,sha256=_kgpnogaS6MlfvTX9dB5ASTHFUlZuQ_DRb-VADwEa0k,16996
|
|
40
|
-
pycontrails/datalib/ecmwf/ifs.py,sha256=
|
|
44
|
+
pycontrails/datalib/ecmwf/ifs.py,sha256=_1UarorPp9VlgFZc-NnZy8YnfEqBdp7GV1A-ye6JqS8,10733
|
|
41
45
|
pycontrails/datalib/ecmwf/static/model_level_dataframe_v20240418.csv,sha256=PmvGLRzn6uuCKSwiasSuVcehvvmSaqP7cnLuN6hhCQQ,9788
|
|
42
|
-
pycontrails/datalib/gfs/gfs.py,sha256=
|
|
46
|
+
pycontrails/datalib/gfs/gfs.py,sha256=VqS0MRLawgzkBDpjDUYoswXByIy6XUqA9XP7lM1ueBk,22238
|
|
43
47
|
pycontrails/datalib/gfs/variables.py,sha256=4ALR4zhYW8tQVlNVHrd0CK8oRNSe_2OkW3ELeaImtAI,3135
|
|
44
48
|
pycontrails/datalib/gfs/__init__.py,sha256=pXNjb9cJC6ngpuCnoHnmVZ2RHzbHZ0AlsyGvgcdcl2E,684
|
|
45
49
|
pycontrails/datalib/spire/spire.py,sha256=h25BVgSr7E71Ox3-y9WgqFvp-54L08yzb2Ou-iMl7wM,24242
|
|
46
50
|
pycontrails/datalib/spire/__init__.py,sha256=3-My8yQItS6PL0DqXgNaltLqvN6T7nbnNnLD-sy7kt4,186
|
|
47
51
|
pycontrails/datalib/spire/exceptions.py,sha256=U0V_nZTLhxJwrzldvU9PdESx8-zLddRH3FmzkJyFyrI,1714
|
|
48
|
-
pycontrails/datalib/leo_utils/sentinel_metadata.py,sha256=
|
|
52
|
+
pycontrails/datalib/leo_utils/sentinel_metadata.py,sha256=UXpv0XPmtQezVfprcFYNlRpV7nherCDW4oKStBZTdT8,25552
|
|
49
53
|
pycontrails/datalib/leo_utils/landsat_metadata.py,sha256=B455-Yq6HTj0Se0dS4c_2F5ZjcATu2yNK1gyoIlgLMg,10628
|
|
50
54
|
pycontrails/datalib/leo_utils/__init__.py,sha256=-SEAc1f7zEbJHcKjgwLuhnIwte9W-ystFNLvfC4RE94,213
|
|
51
55
|
pycontrails/datalib/leo_utils/vis.py,sha256=-fLcm1D5cP6lThVHovV3MJSiadWyTUAvYDMvr4drMU4,1802
|
|
52
56
|
pycontrails/datalib/leo_utils/search.py,sha256=KbHQ2GARacDuUz3zEJuATSga-R32dQFVTqhZgndHUZI,8686
|
|
53
57
|
pycontrails/datalib/leo_utils/correction.py,sha256=cHf4PhHNYMqdVAFYNiTnjcVyqr1vCBMCKi0IjKB_3pw,9564
|
|
54
58
|
pycontrails/datalib/leo_utils/static/bq_roi_query.sql,sha256=xq6-tJyz0-bUwW0KjQymqygjH3WlQBmyBtP7Ci7SBe8,260
|
|
55
|
-
pycontrails/ext/synthetic_flight.py,sha256=
|
|
59
|
+
pycontrails/ext/synthetic_flight.py,sha256=DdDy1gih8bwdBjsTsvi4mK3lJhcNKlhyllpOWaaASio,16770
|
|
56
60
|
pycontrails/ext/cirium.py,sha256=DFPfRwLDwddpucAPRQhyT4bDGh0VvvoViMUd3pidam8,415
|
|
57
61
|
pycontrails/ext/empirical_grid.py,sha256=FPNQA0x4nVwBXFlbs3DgIapSrXFYhoc8b8IX0M4xhBc,4363
|
|
58
62
|
pycontrails/ext/bada.py,sha256=YlQq4nnFyWza1Am2e2ZucpaICHDuUFRTrtVzIKMzf9s,1091
|
|
59
|
-
pycontrails/utils/iteration.py,sha256=
|
|
63
|
+
pycontrails/utils/iteration.py,sha256=YGcex8pBDegU9dbDJmarxqdPzebAk_Gnc8DK3khY9SY,324
|
|
60
64
|
pycontrails/utils/__init__.py,sha256=Gt_57sBgfliFSxx9sDpuchykFDxmM11Wg9xAeSqPcnI,32
|
|
61
65
|
pycontrails/utils/types.py,sha256=1AaY1x_qGlYAl08xg6PS0MPKm3OZwFBM7xLI_nHK7EY,4869
|
|
62
66
|
pycontrails/utils/temp.py,sha256=lGU0b_R8ze4yKlsOusHIIBaoNFBrmrB3vBjgHRlfcXk,1109
|
|
63
67
|
pycontrails/utils/json.py,sha256=oTiO8xh603esfBGaGVmA5eUzR0NhAqNpQCegMMgnSbg,5896
|
|
64
68
|
pycontrails/utils/dependencies.py,sha256=ATP45xYdUbIyGFzgbOe5SbokMytvB84TcexUEFnEUZE,2559
|
|
65
|
-
pycontrails/models/extended_k15.py,sha256=
|
|
69
|
+
pycontrails/models/extended_k15.py,sha256=ZNL1XDvw-aG24_zGbP6Xkn203oVNqIwMau2exkiADS0,47994
|
|
66
70
|
pycontrails/models/pcc.py,sha256=0Qdl4u8PmUEpNYd398glTChkbTwsh83wYPt0Bmi8qd8,11068
|
|
67
|
-
pycontrails/models/tau_cirrus.py,sha256=
|
|
71
|
+
pycontrails/models/tau_cirrus.py,sha256=wMhh8xQ1byW9WdzRSJIAVDMeyZTBl_PUKMXdF6Zy1uE,5740
|
|
68
72
|
pycontrails/models/__init__.py,sha256=dQTOLQb7RdUdUwslt5se__5y_ymbInBexQmNrmAeOdE,33
|
|
69
73
|
pycontrails/models/issr.py,sha256=_qIKDgO0Owxeb0Q4WJlxcn1FJEvF3QDU-cqh2fpDsBo,7404
|
|
70
|
-
pycontrails/models/sac.py,sha256=
|
|
74
|
+
pycontrails/models/sac.py,sha256=xTPTuCwYf8_goC5xJXxRl0NRZADuNOzyGJh13cuunQM,15490
|
|
71
75
|
pycontrails/models/accf.py,sha256=_tunWpw1sYW8ES8RvpdhNahXwaf4LwdHMEdXhv7-cCI,13566
|
|
72
|
-
pycontrails/models/dry_advection.py,sha256=
|
|
76
|
+
pycontrails/models/dry_advection.py,sha256=CwR37hwQEAWNrFKBrCjUmaaB3D-ToaQrxq2x7Ek5Hc4,20470
|
|
73
77
|
pycontrails/models/pcr.py,sha256=Xde0aF8cMV9jTQ_uI2UvdHSLqotVUgPutb1Wgq7LtfY,5374
|
|
74
78
|
pycontrails/models/emissions/__init__.py,sha256=CZB2zIkLUI3NGNmq2ddvRYjEtiboY6PWJjiEiXj_zII,478
|
|
75
79
|
pycontrails/models/emissions/ffm2.py,sha256=mAvBHnp-p3hIn2fjKGq50eaMHi0jcb5hA5uXbJGeE9I,12068
|
|
@@ -83,36 +87,36 @@ pycontrails/models/apcemm/inputs.py,sha256=88GylkiaymEW_XZeFxLsICI9wV6kl8wVYsuyT
|
|
|
83
87
|
pycontrails/models/apcemm/utils.py,sha256=Ex6EqXin6yoJv2WWhBotSzhjzUlFNZm2MDgL4CvvX6E,17082
|
|
84
88
|
pycontrails/models/apcemm/apcemm.py,sha256=rKvIaEsqtLbZ5h4o4EOY4Ge4-HdPn2X4M1lEUFDvr68,39975
|
|
85
89
|
pycontrails/models/apcemm/static/apcemm_yaml_template.yaml,sha256=uAZkc57OUvDMjgX6F5f6hgDh3Hgg1NbHWRUFSiv0DEI,6745
|
|
86
|
-
pycontrails/models/humidity_scaling/humidity_scaling.py,sha256=
|
|
90
|
+
pycontrails/models/humidity_scaling/humidity_scaling.py,sha256=l5S63mH6K5DOWk8LYtlbOz8wNbJQBcWd-DqCBUxKsik,38595
|
|
87
91
|
pycontrails/models/humidity_scaling/__init__.py,sha256=nqsab_j9BCwMbTfCn4BjXMdhItlvNKkgUJ9-lb8RyIo,1119
|
|
88
92
|
pycontrails/models/humidity_scaling/quantiles/era5-pressure-level-quantiles.pq,sha256=tfYhbafF9Z-gGCg6VQ1YBlOaK_01e65Dc6s9b-hQ6Zo,286375
|
|
89
93
|
pycontrails/models/humidity_scaling/quantiles/era5-model-level-quantiles.pq,sha256=pShCvNUo0NYtAHhT9IBRuj38X9jejdlKfv-ZoOKmtKI,35943
|
|
90
94
|
pycontrails/models/cocip/radiative_forcing.py,sha256=WleEc6hqrAlqJYtL3oZjRW7gJr_pPQNESJdOXi6oKqE,44686
|
|
91
95
|
pycontrails/models/cocip/wind_shear.py,sha256=m6ZlWjORfI-lI-D74Z_dIMOHnK4FDYmkb0S6vSpKTO8,3868
|
|
92
96
|
pycontrails/models/cocip/cocip.py,sha256=PgNuBzvTdkrANCjS_N9GscOkT9WXTaQUkI-IGxmMG9g,104847
|
|
93
|
-
pycontrails/models/cocip/output_formats.py,sha256=
|
|
97
|
+
pycontrails/models/cocip/output_formats.py,sha256=nnEfwBdWRE7InoL9f8YLVtqK3cN4izbKuRMYds_6qOU,83950
|
|
94
98
|
pycontrails/models/cocip/__init__.py,sha256=CWrkNd6S3ZJq04pjTc2W22sVAJeJD3bJJRy_zLW8Kkc,962
|
|
95
99
|
pycontrails/models/cocip/cocip_params.py,sha256=BWmTt6yE4m-LM7lyCtj05FK3wVvU9n7iVnuauGq3jtA,12808
|
|
96
100
|
pycontrails/models/cocip/wake_vortex.py,sha256=F5S8n4eBrBM-7qNcVUtX3IrXD7Kt9pWnrKj6UK-HGeA,14555
|
|
97
|
-
pycontrails/models/cocip/cocip_uncertainty.py,sha256=
|
|
101
|
+
pycontrails/models/cocip/cocip_uncertainty.py,sha256=TZ85xAbDc5zRgQKP7wb3AfHoUIvkfHycuX86dwZCqwM,12257
|
|
98
102
|
pycontrails/models/cocip/radiative_heating.py,sha256=1U4SQWwogtyQ2u6J996kAHP0OfpZ3hH2_x4Cyt3Cy8U,18984
|
|
99
|
-
pycontrails/models/cocip/contrail_properties.py,sha256=
|
|
103
|
+
pycontrails/models/cocip/contrail_properties.py,sha256=BRldMsxNIYlKHg5ozD5_wWtJ7OGTcQvinkQUioHqaqk,55732
|
|
100
104
|
pycontrails/models/cocip/unterstrasser_wake_vortex.py,sha256=bIRS-Z4MRMdkYtth2RaDe5h1ZN0HvCE_Sw96PXQEHKQ,18931
|
|
101
105
|
pycontrails/models/ps_model/__init__.py,sha256=Fuum5Rq8ya8qkvbeq2wh6NDo-42RCRnK1Y-2syYy0Ck,553
|
|
102
106
|
pycontrails/models/ps_model/ps_model.py,sha256=fgFekJpGuAu73KvpfLhlAbIwR7JJGwQpLILWmrONywc,31925
|
|
103
107
|
pycontrails/models/ps_model/ps_aircraft_params.py,sha256=I2nBkdnRo9YGMn-0k35ooYpzPNJkHyEH5cU3K-Cz8b0,13350
|
|
104
108
|
pycontrails/models/ps_model/ps_operational_limits.py,sha256=XwMHO8yu8EZUWtxRgjRKwxmCrmKGoHO7Ob6nlfkrthI,16441
|
|
105
|
-
pycontrails/models/ps_model/ps_grid.py,sha256=
|
|
109
|
+
pycontrails/models/ps_model/ps_grid.py,sha256=IvBkPAJI3bAv8xx4pRZ6x4Sv8Pei1gmp5utTWhY9wgI,26169
|
|
106
110
|
pycontrails/models/ps_model/static/ps-aircraft-params-20250328.csv,sha256=LUYuWozE8fv4ZxuPhQIyVi0Kz4aYGyRjPcH5bSl4oNs,26185
|
|
107
111
|
pycontrails/models/ps_model/static/ps-synonym-list-20250328.csv,sha256=phtrf0m-UYQ7gjoKtIIwINzftTSNd-Bwe9CPen_Gvc8,1048
|
|
108
112
|
pycontrails/models/cocipgrid/cocip_grid_params.py,sha256=l4vBPrOKCJDz5Y1uMjmOGVyUcSWgfZtFWbjW968OPz8,5875
|
|
109
113
|
pycontrails/models/cocipgrid/__init__.py,sha256=ar6bF_8Pusbb-myujz_q5ntFylQTNH8yiM8fxP7Zk30,262
|
|
110
|
-
pycontrails/models/cocipgrid/cocip_grid.py,sha256=
|
|
114
|
+
pycontrails/models/cocipgrid/cocip_grid.py,sha256=4BOmSMQEKxl4DYluq7q8bh1DWKlgNGw0N--0qaguomA,92633
|
|
111
115
|
pycontrails/physics/geo.py,sha256=ITK23l1A2lzjNPTFC8ZKyQH59I5Cy_TvuvM_gbALo94,36297
|
|
112
116
|
pycontrails/physics/units.py,sha256=p-6PzFLpVCMpvmfrhXVh3Hs-nMJw9Y1x-hvgnL9Lo9c,12281
|
|
113
117
|
pycontrails/physics/constants.py,sha256=JHYL2IJY7del2BE_1QfKaEwtIwkbtyHvyxlm_JPHR90,3201
|
|
114
118
|
pycontrails/physics/__init__.py,sha256=_1eWbEy6evEWdfJCEkwDiSdpiDNzNWEPVqaPekHyhwU,44
|
|
115
|
-
pycontrails/physics/thermo.py,sha256=
|
|
119
|
+
pycontrails/physics/thermo.py,sha256=mGVduIY1c1DM6dVAdGcklGIJmscHXo3glDXmdeUtAZk,15376
|
|
116
120
|
pycontrails/physics/jet.py,sha256=Je1d3vgbBEaVIAL1WZ3C-4p2f9fy9dWOjP5vFVsGGh8,30358
|
|
117
121
|
pycontrails/physics/static/iata-cargo-load-factors-20250221.csv,sha256=ixsnQk1DyGxHMo0pDy4aOoQIwgOyrGfhMRPumEwPMBc,3841
|
|
118
122
|
pycontrails/physics/static/iata-passenger-load-factors-20250221.csv,sha256=Q2olRIqUpbOaavvM5ikG8m1v1YQAN3KLNHeFDPvM53Q,3835
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|