pypromice 1.4.4__py3-none-any.whl → 1.5.1__py3-none-any.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 pypromice might be problematic. Click here for more details.
- pypromice/process/L1toL2.py +13 -10
- pypromice/process/L2toL3.py +221 -221
- pypromice/process/aws.py +1 -39
- pypromice/process/join_l3.py +3 -3
- pypromice/process/resample.py +6 -5
- pypromice/process/value_clipping.py +0 -2
- pypromice/process/write.py +21 -37
- pypromice/resources/variable_aliases_GC-Net.csv +6 -6
- pypromice/resources/variables.csv +3 -3
- pypromice/tx/payload_formats.csv +1 -0
- {pypromice-1.4.4.dist-info → pypromice-1.5.1.dist-info}/METADATA +18 -8
- {pypromice-1.4.4.dist-info → pypromice-1.5.1.dist-info}/RECORD +16 -16
- {pypromice-1.4.4.dist-info → pypromice-1.5.1.dist-info}/WHEEL +1 -1
- {pypromice-1.4.4.dist-info → pypromice-1.5.1.dist-info}/LICENSE.txt +0 -0
- {pypromice-1.4.4.dist-info → pypromice-1.5.1.dist-info}/entry_points.txt +0 -0
- {pypromice-1.4.4.dist-info → pypromice-1.5.1.dist-info}/top_level.txt +0 -0
pypromice/process/aws.py
CHANGED
|
@@ -94,7 +94,7 @@ class AWS(object):
|
|
|
94
94
|
formats = {dataset.attrs["format"].lower() for dataset in self.L0}
|
|
95
95
|
if "raw" in formats:
|
|
96
96
|
self.format = "raw"
|
|
97
|
-
elif "
|
|
97
|
+
elif "stm" in formats:
|
|
98
98
|
self.format = "STM"
|
|
99
99
|
elif "tx" in formats:
|
|
100
100
|
self.format = "tx"
|
|
@@ -123,22 +123,6 @@ class AWS(object):
|
|
|
123
123
|
self.getL2()
|
|
124
124
|
self.getL3()
|
|
125
125
|
|
|
126
|
-
def writeL2(self, outpath):
|
|
127
|
-
"""Write L2 data to .csv and .nc file"""
|
|
128
|
-
if os.path.isdir(outpath):
|
|
129
|
-
self.writeArr(self.L2, outpath)
|
|
130
|
-
else:
|
|
131
|
-
logger.info(f"Outpath f{outpath} does not exist. Unable to save to file")
|
|
132
|
-
pass
|
|
133
|
-
|
|
134
|
-
def writeL3(self, outpath):
|
|
135
|
-
"""Write L3 data to .csv and .nc file"""
|
|
136
|
-
if os.path.isdir(outpath):
|
|
137
|
-
self.writeArr(self.L3, outpath)
|
|
138
|
-
else:
|
|
139
|
-
logger.info(f"Outpath f{outpath} does not exist. Unable to save to file")
|
|
140
|
-
pass
|
|
141
|
-
|
|
142
126
|
def getL1(self):
|
|
143
127
|
"""Perform L0 to L1 data processing"""
|
|
144
128
|
logger.info("Level 1 processing...")
|
|
@@ -164,28 +148,6 @@ class AWS(object):
|
|
|
164
148
|
logger.info("Level 3 processing...")
|
|
165
149
|
self.L3 = toL3(self.L2, data_adjustments_dir=self.data_issues_repository / "adjustments")
|
|
166
150
|
|
|
167
|
-
def writeArr(self, dataset, outpath, t=None):
|
|
168
|
-
"""Write L3 data to .nc and .csv hourly and daily files
|
|
169
|
-
|
|
170
|
-
Parameters
|
|
171
|
-
----------
|
|
172
|
-
dataset : xarray.Dataset
|
|
173
|
-
Dataset to write to file
|
|
174
|
-
outpath : str
|
|
175
|
-
Output directory
|
|
176
|
-
t : str
|
|
177
|
-
Resampling string. This is automatically defined based
|
|
178
|
-
on the data type if not given. The default is None.
|
|
179
|
-
"""
|
|
180
|
-
if t is not None:
|
|
181
|
-
write.prepare_and_write(dataset, outpath, self.vars, self.meta, t)
|
|
182
|
-
else:
|
|
183
|
-
f = [l.attrs["format"] for l in self.L0]
|
|
184
|
-
if "raw" in f or "STM" in f:
|
|
185
|
-
write.prepare_and_write(dataset, outpath, self.vars, self.meta, "10min")
|
|
186
|
-
else:
|
|
187
|
-
write.prepare_and_write(dataset, outpath, self.vars, self.meta, "60min")
|
|
188
|
-
|
|
189
151
|
def loadConfig(self, config_file, inpath):
|
|
190
152
|
"""Load configuration from .toml file
|
|
191
153
|
|
pypromice/process/join_l3.py
CHANGED
|
@@ -538,9 +538,9 @@ def join_l3(config_folder, site, folder_l3, folder_gcnet, outpath, variables, me
|
|
|
538
538
|
v = pypromice.resources.load_variables(variables)
|
|
539
539
|
m = pypromice.resources.load_metadata(metadata)
|
|
540
540
|
if outpath is not None:
|
|
541
|
-
prepare_and_write(l3_merged, outpath, v, m, "60min")
|
|
542
|
-
prepare_and_write(l3_merged, outpath, v, m, "1D")
|
|
543
|
-
prepare_and_write(l3_merged, outpath, v, m, "M")
|
|
541
|
+
prepare_and_write(l3_merged, outpath, v, m, "60min", nc_compression=True)
|
|
542
|
+
prepare_and_write(l3_merged, outpath, v, m, "1D", nc_compression=True)
|
|
543
|
+
prepare_and_write(l3_merged, outpath, v, m, "M", nc_compression=True)
|
|
544
544
|
return l3_merged, sorted_list_station_data
|
|
545
545
|
|
|
546
546
|
|
pypromice/process/resample.py
CHANGED
|
@@ -51,12 +51,13 @@ def resample_dataset(ds_h, t):
|
|
|
51
51
|
# taking the 10 min data and using it as instantaneous values:
|
|
52
52
|
is_10_minutes_timestamp = (ds_h.time.diff(dim='time') / np.timedelta64(1, 's') == 600)
|
|
53
53
|
if (t == '60min') and is_10_minutes_timestamp.any():
|
|
54
|
-
cols_to_update = ['p_i', 't_i', 'rh_i', '
|
|
54
|
+
cols_to_update = ['p_i', 't_i', 'rh_i', 'rh_i_wrt_ice_or_water', 'wspd_i', 'wdir_i','wspd_x_i','wspd_y_i']
|
|
55
|
+
cols_origin = ['p_u', 't_u', 'rh_u', 'rh_u_wrt_ice_or_water', 'wspd_u', 'wdir_u','wspd_x_u','wspd_y_u']
|
|
55
56
|
timestamp_10min = ds_h.time.where(is_10_minutes_timestamp, drop=True).to_index()
|
|
56
57
|
timestamp_round_hour = df_d.index
|
|
57
58
|
timestamp_to_update = timestamp_round_hour.intersection(timestamp_10min)
|
|
58
59
|
|
|
59
|
-
for col in cols_to_update:
|
|
60
|
+
for col, col_org in zip(cols_to_update, cols_origin):
|
|
60
61
|
if col not in df_d.columns:
|
|
61
62
|
df_d[col] = np.nan
|
|
62
63
|
else:
|
|
@@ -67,7 +68,7 @@ def resample_dataset(ds_h, t):
|
|
|
67
68
|
timestamp_to_update = timestamp_to_update[missing_instantaneous]
|
|
68
69
|
df_d.loc[timestamp_to_update, col] = ds_h.reindex(
|
|
69
70
|
time= timestamp_to_update
|
|
70
|
-
)[
|
|
71
|
+
)[col_org].values
|
|
71
72
|
if col == 'p_i':
|
|
72
73
|
df_d.loc[timestamp_to_update, col] = df_d.loc[timestamp_to_update, col].values-1000
|
|
73
74
|
|
|
@@ -95,8 +96,8 @@ def resample_dataset(ds_h, t):
|
|
|
95
96
|
|
|
96
97
|
df_d[var] = (p_vap.to_series().resample(t).mean() \
|
|
97
98
|
/ es_wtr.to_series().resample(t).mean())*100
|
|
98
|
-
if var+'
|
|
99
|
-
df_d[var+'
|
|
99
|
+
if var+'_wrt_ice_or_water' in df_d.keys():
|
|
100
|
+
df_d[var+'_wrt_ice_or_water'] = (p_vap.to_series().resample(t).mean() \
|
|
100
101
|
/ es_cor.to_series().resample(t).mean())*100
|
|
101
102
|
|
|
102
103
|
# passing each variable attribute to the ressample dataset
|
|
@@ -11,8 +11,6 @@ def clip_values(
|
|
|
11
11
|
):
|
|
12
12
|
"""
|
|
13
13
|
Clip values in dataset to defined "hi" and "lo" variables from dataframe.
|
|
14
|
-
There is a special treatment here for rh_u and rh_l variables, where values
|
|
15
|
-
are clipped and not assigned to NaN. This is for replication purposes
|
|
16
14
|
|
|
17
15
|
Parameters
|
|
18
16
|
----------
|
pypromice/process/write.py
CHANGED
|
@@ -17,7 +17,13 @@ logger = logging.getLogger(__name__)
|
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
def prepare_and_write(
|
|
20
|
-
dataset,
|
|
20
|
+
dataset,
|
|
21
|
+
output_path: Path | str,
|
|
22
|
+
vars_df=None,
|
|
23
|
+
meta_dict=None,
|
|
24
|
+
time="60min",
|
|
25
|
+
resample=True,
|
|
26
|
+
nc_compression:bool=False,
|
|
21
27
|
):
|
|
22
28
|
"""Prepare data with resampling, formating and metadata population; then
|
|
23
29
|
write data to .nc and .csv hourly and daily files
|
|
@@ -100,14 +106,14 @@ def prepare_and_write(
|
|
|
100
106
|
elif t == 86400:
|
|
101
107
|
# removing instantaneous values from daily and monthly files
|
|
102
108
|
for v in col_names:
|
|
103
|
-
if
|
|
109
|
+
if v in ['p_i', 't_i', 'rh_i', 'wspd_i', 'wdir_i', 'wspd_x_i', 'wspd_y_i']:
|
|
104
110
|
col_names.remove(v)
|
|
105
111
|
out_csv = output_dir / f"{name}_day.csv"
|
|
106
112
|
out_nc = output_dir / f"{name}_day.nc"
|
|
107
113
|
else:
|
|
108
114
|
# removing instantaneous values from daily and monthly files
|
|
109
115
|
for v in col_names:
|
|
110
|
-
if
|
|
116
|
+
if v in ['p_i', 't_i', 'rh_i', 'wspd_i', 'wdir_i', 'wspd_x_i', 'wspd_y_i']:
|
|
111
117
|
col_names.remove(v)
|
|
112
118
|
out_csv = output_dir / f"{name}_month.csv"
|
|
113
119
|
out_nc = output_dir / f"{name}_month.nc"
|
|
@@ -117,40 +123,11 @@ def prepare_and_write(
|
|
|
117
123
|
writeCSV(out_csv, d2, col_names)
|
|
118
124
|
|
|
119
125
|
# Write to netcdf file
|
|
120
|
-
writeNC(out_nc, d2, col_names)
|
|
126
|
+
writeNC(out_nc, d2, col_names, compression=nc_compression)
|
|
121
127
|
logger.info(f"Written to {out_csv}")
|
|
122
128
|
logger.info(f"Written to {out_nc}")
|
|
123
129
|
|
|
124
130
|
|
|
125
|
-
def writeAll(outpath, station_id, l3_h, l3_d, l3_m, csv_order=None):
|
|
126
|
-
"""Write L3 hourly, daily and monthly datasets to .nc and .csv
|
|
127
|
-
files
|
|
128
|
-
|
|
129
|
-
Parameters
|
|
130
|
-
----------
|
|
131
|
-
outpath : str
|
|
132
|
-
Output file path
|
|
133
|
-
station_id : str
|
|
134
|
-
Station name
|
|
135
|
-
l3_h : xr.Dataset
|
|
136
|
-
L3 hourly data
|
|
137
|
-
l3_d : xr.Dataset
|
|
138
|
-
L3 daily data
|
|
139
|
-
l3_m : xr.Dataset
|
|
140
|
-
L3 monthly data
|
|
141
|
-
csv_order : list, optional
|
|
142
|
-
List order of variables
|
|
143
|
-
"""
|
|
144
|
-
if not os.path.isdir(outpath):
|
|
145
|
-
os.mkdir(outpath)
|
|
146
|
-
outfile_h = os.path.join(outpath, station_id + "_hour")
|
|
147
|
-
outfile_d = os.path.join(outpath, station_id + "_day")
|
|
148
|
-
outfile_m = os.path.join(outpath, station_id + "_month")
|
|
149
|
-
for o, l in zip([outfile_h, outfile_d, outfile_m], [l3_h, l3_d, l3_m]):
|
|
150
|
-
writeCSV(o + ".csv", l, csv_order)
|
|
151
|
-
writeNC(o + ".nc", l)
|
|
152
|
-
|
|
153
|
-
|
|
154
131
|
def writeCSV(outfile, Lx, csv_order):
|
|
155
132
|
"""Write data product to CSV file
|
|
156
133
|
|
|
@@ -170,8 +147,8 @@ def writeCSV(outfile, Lx, csv_order):
|
|
|
170
147
|
Lcsv.to_csv(outfile)
|
|
171
148
|
|
|
172
149
|
|
|
173
|
-
def writeNC(outfile, Lx, col_names=None):
|
|
174
|
-
"""Write data product to NetCDF file
|
|
150
|
+
def writeNC(outfile, Lx, col_names=None, compression=False):
|
|
151
|
+
"""Write data product to NetCDF file with compression
|
|
175
152
|
|
|
176
153
|
Parameters
|
|
177
154
|
----------
|
|
@@ -187,7 +164,14 @@ def writeNC(outfile, Lx, col_names=None):
|
|
|
187
164
|
else:
|
|
188
165
|
names = list(Lx.keys())
|
|
189
166
|
|
|
190
|
-
|
|
167
|
+
encoding = {var: dict() for var in names}
|
|
168
|
+
|
|
169
|
+
if compression:
|
|
170
|
+
comp = dict(zlib=True, complevel=4)
|
|
171
|
+
for var in names:
|
|
172
|
+
encoding[var].update(comp)
|
|
173
|
+
|
|
174
|
+
Lx[names].to_netcdf(outfile, mode="w", format="NETCDF4", compute=True, encoding=encoding)
|
|
191
175
|
|
|
192
176
|
|
|
193
177
|
def getColNames(vars_df, ds, remove_nan_fields=False):
|
|
@@ -484,7 +468,7 @@ def reformat_time(dataset):
|
|
|
484
468
|
return dataset
|
|
485
469
|
|
|
486
470
|
|
|
487
|
-
def reformat_lon(dataset, exempt=["UWN", "Roof_GEUS", "Roof_PROMICE"]):
|
|
471
|
+
def reformat_lon(dataset, exempt=["UWN", "Roof_GEUS", "Roof_PROMICE", "ORO"]):
|
|
488
472
|
"""Switch gps_lon to negative values (degrees_east). We do this here, and
|
|
489
473
|
NOT in addMeta, otherwise we switch back to positive when calling getMeta
|
|
490
474
|
in joinL2"""
|
|
@@ -5,19 +5,19 @@ p_l,
|
|
|
5
5
|
t_u,TA2
|
|
6
6
|
t_l,TA1
|
|
7
7
|
rh_u,RH2
|
|
8
|
-
|
|
8
|
+
rh_u_wrt_ice_or_water,RH2_cor
|
|
9
9
|
qh_u,Q2
|
|
10
10
|
rh_l,RH1
|
|
11
|
-
|
|
11
|
+
rh_l_wrt_ice_or_water,RH1_cor
|
|
12
12
|
qh_l,Q1
|
|
13
13
|
wspd_u,VW2
|
|
14
14
|
wspd_l,VW1
|
|
15
15
|
wdir_u,DW2
|
|
16
16
|
wdir_l,DW1
|
|
17
|
-
dsr,
|
|
18
|
-
dsr_cor,
|
|
19
|
-
usr,
|
|
20
|
-
usr_cor,
|
|
17
|
+
dsr,ISWR
|
|
18
|
+
dsr_cor,
|
|
19
|
+
usr,OSWR
|
|
20
|
+
usr_cor,
|
|
21
21
|
albedo,Alb
|
|
22
22
|
dlr,
|
|
23
23
|
ulr,
|
|
@@ -6,10 +6,10 @@ p_l,air_pressure,Air pressure (lower boom),hPa,physicalMeasurement,time,FALSE,,6
|
|
|
6
6
|
t_u,air_temperature,Air temperature (upper boom),degrees_C,physicalMeasurement,time,FALSE,,-80,40,"",all,1,1,1,4
|
|
7
7
|
t_l,air_temperature,Air temperature (lower boom),degrees_C,physicalMeasurement,time,FALSE,,-80,40,"",two-boom,1,1,1,4
|
|
8
8
|
rh_u,relative_humidity,Relative humidity (upper boom),%,physicalMeasurement,time,FALSE,,0,100,"",all,1,1,1,4
|
|
9
|
-
|
|
9
|
+
rh_u_wrt_ice_or_water,relative_humidity_with_respect_to_ice_or_water,Relative humidity (upper boom) with respect to saturation over ice in subfreezing conditions and over water otherwise,%,modelResult,time,FALSE,L2 or later,0,150,"",all,0,1,1,4
|
|
10
10
|
qh_u,specific_humidity,Specific humidity (upper boom),kg/kg,modelResult,time,FALSE,L2 or later,0,100,"",all,0,1,1,4
|
|
11
11
|
rh_l,relative_humidity,Relative humidity (lower boom),%,physicalMeasurement,time,FALSE,,0,100,"",two-boom,1,1,1,4
|
|
12
|
-
|
|
12
|
+
rh_l_wrt_ice_or_water,relative_humidity_with_respect_to_ice_or_water,Relative humidity (lower boom) with respect to saturation over ice in subfreezing conditions and over water otherwise,%,modelResult,time,FALSE,L2 or later,0,150,"",two-boom,0,1,1,4
|
|
13
13
|
qh_l,specific_humidity,Specific humidity (lower boom),kg/kg,modelResult,time,FALSE,L2 or later,0,100,,two-boom,0,1,1,4
|
|
14
14
|
wspd_u,wind_speed,Wind speed (upper boom),m s-1,physicalMeasurement,time,FALSE,,0,100,wdir_u wspd_x_u wspd_y_u,all,1,1,1,4
|
|
15
15
|
wspd_l,wind_speed,Wind speed (lower boom),m s-1,physicalMeasurement,time,FALSE,,0,100,wdir_l wspd_x_l wspd_y_l,two-boom,1,1,1,4
|
|
@@ -99,7 +99,7 @@ t_rad,temperature_of_radiation_sensor,Radiation sensor temperature,degrees_C,phy
|
|
|
99
99
|
p_i,air_pressure,Air pressure (instantaneous) minus 1000,hPa,physicalMeasurement,time,TRUE,,-350,100,,all,1,1,1,4
|
|
100
100
|
t_i,air_temperature,Air temperature (instantaneous),degrees_C,physicalMeasurement,time,TRUE,,-80,40,,all,1,1,1,4
|
|
101
101
|
rh_i,relative_humidity,Relative humidity (instantaneous),%,physicalMeasurement,time,TRUE,,0,150,"",all,1,1,1,4
|
|
102
|
-
|
|
102
|
+
rh_i_wrt_ice_or_water,relative_humidity_with_respect_to_ice_or_water,Relative humidity (instantaneous) with respect to saturation over ice in subfreezing conditions and over water otherwise,%,modelResult,time,TRUE,L2 or later,0,100,,all,0,1,1,4
|
|
103
103
|
wspd_i,wind_speed,Wind speed (instantaneous),m s-1,physicalMeasurement,time,TRUE,,0,100,wdir_i wspd_x_i wspd_y_i,all,1,1,1,4
|
|
104
104
|
wdir_i,wind_from_direction,Wind from direction (instantaneous),degrees,physicalMeasurement,time,TRUE,,1,360,wspd_x_i wspd_y_i,all,1,1,1,4
|
|
105
105
|
wspd_x_i,wind_speed_from_x_direction,Wind speed from x direction (instantaneous),m s-1,modelResult,time,TRUE,L2 or later,-100,100,"",all,0,1,1,4
|
pypromice/tx/payload_formats.csv
CHANGED
|
@@ -67,6 +67,7 @@ type,expected_values,format,description,flags,notes
|
|
|
67
67
|
90,48, tfffffffffffffffffffffffffffffffffgnefffffffffff,THE GC-NET VERSION!,don’t use,GC-NET stations
|
|
68
68
|
90,48,tfffffffffffffffffffffffffffffffffgnefffffffffff,THE GC-NET VERSION!,,GC-NET stations
|
|
69
69
|
95,46,tfffffffffffffffffffffffffffffffgnefffffffffff,THE GC-NET VERSION!,,GC-NET stations
|
|
70
|
+
115,47,tfffffffffffffffffffffffffffffffffgneffffffffff,PREMAS version,,PREMAS stations
|
|
70
71
|
220,29,tfffffffffffffffffffffffnefff,ZAMG Freya 2015 summer message,,ZAMG Freya aws
|
|
71
72
|
221,0,,,,ZAMG Freya aws
|
|
72
73
|
222,29,tfffffffffffffffffffffffnefff,ZAMG Freya 2015 winter message,,ZAMG Freya aws
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
2
|
Name: pypromice
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.5.1
|
|
4
4
|
Summary: PROMICE/GC-Net data processing toolbox
|
|
5
5
|
Home-page: https://github.com/GEUS-Glaciology-and-Climate/pypromice
|
|
6
6
|
Author: GEUS Glaciology and Climate
|
|
@@ -18,16 +18,26 @@ Classifier: Operating System :: OS Independent
|
|
|
18
18
|
Requires-Python: >=3.10
|
|
19
19
|
Description-Content-Type: text/markdown
|
|
20
20
|
License-File: LICENSE.txt
|
|
21
|
-
Requires-Dist: numpy
|
|
22
|
-
Requires-Dist: pandas
|
|
23
|
-
Requires-Dist: xarray
|
|
21
|
+
Requires-Dist: numpy~=1.23
|
|
22
|
+
Requires-Dist: pandas>=1.5.0
|
|
23
|
+
Requires-Dist: xarray>=2022.6.0
|
|
24
24
|
Requires-Dist: toml
|
|
25
|
-
Requires-Dist: scipy
|
|
25
|
+
Requires-Dist: scipy>=1.9.0
|
|
26
26
|
Requires-Dist: Bottleneck
|
|
27
27
|
Requires-Dist: netcdf4
|
|
28
|
-
Requires-Dist: pyDataverse
|
|
28
|
+
Requires-Dist: pyDataverse==0.3.1
|
|
29
29
|
Requires-Dist: eccodes
|
|
30
|
-
Requires-Dist: scikit-learn
|
|
30
|
+
Requires-Dist: scikit-learn>=1.1.0
|
|
31
|
+
Dynamic: author
|
|
32
|
+
Dynamic: classifier
|
|
33
|
+
Dynamic: description
|
|
34
|
+
Dynamic: description-content-type
|
|
35
|
+
Dynamic: home-page
|
|
36
|
+
Dynamic: keywords
|
|
37
|
+
Dynamic: project-url
|
|
38
|
+
Dynamic: requires-dist
|
|
39
|
+
Dynamic: requires-python
|
|
40
|
+
Dynamic: summary
|
|
31
41
|
|
|
32
42
|
# pypromice
|
|
33
43
|
[](https://badge.fury.io/py/pypromice) [](https://anaconda.org/conda-forge/pypromice) [](https://anaconda.org/conda-forge/pypromice) [](https://www.doi.org/10.22008/FK2/3TSBF0) [](https://doi.org/10.21105/joss.05298) [](https://pypromice.readthedocs.io/en/latest/?badge=latest)
|
|
@@ -12,19 +12,19 @@ pypromice/postprocess/make_metadata_csv.py,sha256=lUw8fZC6dzG10IePZ4d7eZIrTbquHY
|
|
|
12
12
|
pypromice/postprocess/positions_seed.csv,sha256=0kVCQ8UfEALdeXNYCddmwxpseRqLRudbFStqp_bZRBw,224
|
|
13
13
|
pypromice/postprocess/real_time_utilities.py,sha256=2GZUua5R8ocp-TnIjEA4ig8lC4TlI3SkiimzLxoHXFE,9476
|
|
14
14
|
pypromice/process/L0toL1.py,sha256=aQmVEXhtRisHNrJuPGIg7NA4hjjmV9jUBu1DClRIGzs,23175
|
|
15
|
-
pypromice/process/L1toL2.py,sha256=
|
|
16
|
-
pypromice/process/L2toL3.py,sha256=
|
|
15
|
+
pypromice/process/L1toL2.py,sha256=PM6lToL-WXbZk5p2m90XCxY9S_RNNV1QUB3klZlQDzc,30832
|
|
16
|
+
pypromice/process/L2toL3.py,sha256=XqnUGKO17ADJkTOn0p8TESeCAKQGtPXpFadNfF52g6E,61378
|
|
17
17
|
pypromice/process/__init__.py,sha256=xvd0I-9nIyVw4M4qjgkQ5vXYpNuKcVSkIVIROQsZDo0,147
|
|
18
|
-
pypromice/process/aws.py,sha256=
|
|
18
|
+
pypromice/process/aws.py,sha256=5N4rLptO23Ic9mgyR5K8NhtNmGPa9xb9Cu7SgzAgoi8,7561
|
|
19
19
|
pypromice/process/get_l2.py,sha256=ALXJCMJ8qgg0_dEKx-dV5TQ9IAJnLLLGPUxlr5QVfpk,3076
|
|
20
20
|
pypromice/process/get_l2tol3.py,sha256=4Qu2d5rT25H2dObyCc70ivtJg3vw6WA-hzI-kRD6ybQ,4544
|
|
21
21
|
pypromice/process/join_l2.py,sha256=ifjuhFR9scVvZt3xuy-ELp-iRchxV1dEK9qJ4UNh5bE,4567
|
|
22
|
-
pypromice/process/join_l3.py,sha256=
|
|
22
|
+
pypromice/process/join_l3.py,sha256=F90uvcy85iSl6GWxyj6C3K4j2eAoQvhQB8XqOXpShvo,20221
|
|
23
23
|
pypromice/process/load.py,sha256=iaFvJeaDanAA60caVj4BWupZpqgQNj3CiNU4csz9FdU,4585
|
|
24
|
-
pypromice/process/resample.py,sha256=
|
|
24
|
+
pypromice/process/resample.py,sha256=VhcQ0UD5LkqFPHlwEFmwYIz3kLkUfvxTenxYadmCsSE,7301
|
|
25
25
|
pypromice/process/utilities.py,sha256=1pqSaF3bIbvRNtOjb25mbegHfuW9MY4KpCBDVXWyML8,1773
|
|
26
|
-
pypromice/process/value_clipping.py,sha256=
|
|
27
|
-
pypromice/process/write.py,sha256=
|
|
26
|
+
pypromice/process/value_clipping.py,sha256=_pTAxogsqfkjwBQslGyyE3jZzhYY6_Wp-g5ZPHcudMc,1506
|
|
27
|
+
pypromice/process/write.py,sha256=ZpA9NAgtnzJIbnjEiJ0sOtsE0J1haHASbjHqzMvBDJE,15818
|
|
28
28
|
pypromice/qc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
29
29
|
pypromice/qc/github_data_issues.py,sha256=gbbF62oMMWbXiLnsrs60vXbwfAqSUP113plhidVeqCU,13353
|
|
30
30
|
pypromice/qc/persistence.py,sha256=2ruS5w_QXt8730jwh6dwN1F3h7MGKFYStfO3T0YmmCY,6582
|
|
@@ -34,20 +34,20 @@ pypromice/qc/percentiles/outlier_detector.py,sha256=5_458aMm9MAubfYv7oIz1Lp9ME6S
|
|
|
34
34
|
pypromice/qc/percentiles/thresholds.csv,sha256=KTQcYsg2VCZmR-Rf1Zzx1Jn-ZmR5yPPWWXYZ0Z03PDQ,9516
|
|
35
35
|
pypromice/resources/__init__.py,sha256=MpKmvV11R4tcqmyvJpXQt-_It3oRI0WEIQNbMST--4w,907
|
|
36
36
|
pypromice/resources/file_attributes.csv,sha256=NFqfg6u0PmPzY2bqE2bp646E4LUiPLqvzhyxDauXoPU,7014
|
|
37
|
-
pypromice/resources/variable_aliases_GC-Net.csv,sha256=
|
|
38
|
-
pypromice/resources/variables.csv,sha256=
|
|
37
|
+
pypromice/resources/variable_aliases_GC-Net.csv,sha256=ts10e0AI1Fz_TtEj8qdRFIZBTkE8pt_VtJGp5hSBUBI,993
|
|
38
|
+
pypromice/resources/variables.csv,sha256=cW8JbQMb5rlge9I3EjbWuKACg3nvbVmbd84W3ouFJdI,13282
|
|
39
39
|
pypromice/tx/__init__.py,sha256=-62bhHWJGfzFh5JwHcLqRj2jcGzmqzYOLWByhO706YY,30
|
|
40
40
|
pypromice/tx/get_l0tx.py,sha256=b34-96KGshTyTN2tBFaAIBl7oZZzbRB_JR7sXtDNfXA,6957
|
|
41
41
|
pypromice/tx/get_msg.py,sha256=OGS60OHjy4Wf8JExTfOdK-9xhjFdjhuChxoTSPe_MjI,3417
|
|
42
|
-
pypromice/tx/payload_formats.csv,sha256=
|
|
42
|
+
pypromice/tx/payload_formats.csv,sha256=A46-XcYdpe9-gzmADylP2UVizLi_UphF-BPT5u3Lyn8,7903
|
|
43
43
|
pypromice/tx/payload_types.csv,sha256=C1-xCmHytAqqAzgzPwBLWqabzWu6s6tKAd8AjVd935s,457
|
|
44
44
|
pypromice/tx/tx.py,sha256=mghUjwGqUKe_4JWuAEgWMyH4ME2QRufeMPPHoL72R08,34267
|
|
45
45
|
pypromice/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
46
46
|
pypromice/utilities/dependency_graph.py,sha256=bqoXasC8pg5ipjBd6rqDhfHwIq11t2_cFlNT72ncw4w,3135
|
|
47
47
|
pypromice/utilities/git.py,sha256=7EUGjDs_VZucrckakXKyZEclDAZ_mKIxhTWzhopCIxM,1785
|
|
48
|
-
pypromice-1.
|
|
49
|
-
pypromice-1.
|
|
50
|
-
pypromice-1.
|
|
51
|
-
pypromice-1.
|
|
52
|
-
pypromice-1.
|
|
53
|
-
pypromice-1.
|
|
48
|
+
pypromice-1.5.1.dist-info/LICENSE.txt,sha256=gXf5dRMhNSbfLPYYTY_5hsZ1r7UU1OaKQEAQUhuIBkM,18092
|
|
49
|
+
pypromice-1.5.1.dist-info/METADATA,sha256=Pk2LL4EmF_PBWe5VSaNo5uWyVINQO2FA68DKf6Xzyl0,4970
|
|
50
|
+
pypromice-1.5.1.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
|
|
51
|
+
pypromice-1.5.1.dist-info/entry_points.txt,sha256=ufX1npmY3nqMPtSVRKVxn3MhG9IyFHD5FjPZQcELVXo,618
|
|
52
|
+
pypromice-1.5.1.dist-info/top_level.txt,sha256=cBdfwgSbWDQq3a07nKRjrfmLC7jdaYXs98GG58HpTks,10
|
|
53
|
+
pypromice-1.5.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|