gfdlvitals 3.0.9__py3-none-any.whl → 3.0.11__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.
- gfdlvitals/averagers/cubesphere.py +3 -1
- gfdlvitals/averagers/ice.py +4 -1
- gfdlvitals/averagers/land_lm4.py +3 -1
- gfdlvitals/averagers/latlon.py +3 -1
- gfdlvitals/averagers/tripolar.py +3 -1
- gfdlvitals/extensions.py +3 -8
- gfdlvitals/util/extract_ocean_scalar.py +10 -4
- gfdlvitals/util/xrtools.py +6 -0
- gfdlvitals/version.py +1 -1
- {gfdlvitals-3.0.9.dist-info → gfdlvitals-3.0.11.dist-info}/METADATA +2 -2
- {gfdlvitals-3.0.9.dist-info → gfdlvitals-3.0.11.dist-info}/RECORD +17 -17
- {gfdlvitals-3.0.9.dist-info → gfdlvitals-3.0.11.dist-info}/WHEEL +1 -1
- {gfdlvitals-3.0.9.data → gfdlvitals-3.0.11.data}/scripts/db2nc +0 -0
- {gfdlvitals-3.0.9.data → gfdlvitals-3.0.11.data}/scripts/gfdlvitals +0 -0
- {gfdlvitals-3.0.9.data → gfdlvitals-3.0.11.data}/scripts/plotdb +0 -0
- {gfdlvitals-3.0.9.dist-info → gfdlvitals-3.0.11.dist-info}/LICENSE +0 -0
- {gfdlvitals-3.0.9.dist-info → gfdlvitals-3.0.11.dist-info}/top_level.txt +0 -0
|
@@ -62,7 +62,9 @@ def xr_average(fyear, tar, modules):
|
|
|
62
62
|
_masked_area.sum().data,
|
|
63
63
|
)
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
t_bounds = dset.time_bnds
|
|
66
|
+
dt = t_bounds.isel(nv=1) - t_bounds.isel(nv=0)
|
|
67
|
+
weights = dt.astype("float") * _masked_area
|
|
66
68
|
_dset_weighted = xrtools.xr_weighted_avg(dset, weights)
|
|
67
69
|
xrtools.xr_to_db(
|
|
68
70
|
_dset_weighted, fyear, f"{fyear}.{region}Ave{modules[member]}.db"
|
gfdlvitals/averagers/ice.py
CHANGED
|
@@ -136,7 +136,10 @@ def xr_average(fyear, tar, modules):
|
|
|
136
136
|
newvars = {x: x + "_min" for x in list(_dset_min.variables)}
|
|
137
137
|
_dset_min = _dset_min.rename(newvars)
|
|
138
138
|
|
|
139
|
-
|
|
139
|
+
t_bounds = dset.time_bnds
|
|
140
|
+
dt = t_bounds.isel(nv=1) - t_bounds.isel(nv=0)
|
|
141
|
+
weights = dt.astype("float")
|
|
142
|
+
|
|
140
143
|
_dset_weighted = xrtools.xr_weighted_avg(_dset, weights)
|
|
141
144
|
newvars = {x: x + "_mean" for x in list(_dset_weighted.variables)}
|
|
142
145
|
_dset_weighted = _dset_weighted.rename(newvars)
|
gfdlvitals/averagers/land_lm4.py
CHANGED
|
@@ -111,7 +111,9 @@ def xr_average(fyear, tar, modules):
|
|
|
111
111
|
|
|
112
112
|
# _masked_area = _masked_area.fillna(0)
|
|
113
113
|
|
|
114
|
-
|
|
114
|
+
t_bounds = dset.time_bnds
|
|
115
|
+
dt = t_bounds.isel(nv=1) - t_bounds.isel(nv=0)
|
|
116
|
+
weights = dt.astype("float") * _masked_area
|
|
115
117
|
if _measure == "soil_area":
|
|
116
118
|
area_x_depth = _masked_area * depth
|
|
117
119
|
gmeantools.write_sqlite_data(
|
gfdlvitals/averagers/latlon.py
CHANGED
|
@@ -57,7 +57,9 @@ def xr_average(fyear, tar, modules):
|
|
|
57
57
|
_masked_area.sum().data,
|
|
58
58
|
)
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
t_bounds = dset.time_bnds
|
|
61
|
+
dt = t_bounds.isel(nv=1) - t_bounds.isel(nv=0)
|
|
62
|
+
weights = dt.astype("float") * _masked_area
|
|
61
63
|
_dset_weighted = xrtools.xr_weighted_avg(dset, weights)
|
|
62
64
|
xrtools.xr_to_db(
|
|
63
65
|
_dset_weighted, fyear, f"{fyear}.{region}Ave{modules[member]}.db"
|
gfdlvitals/averagers/tripolar.py
CHANGED
|
@@ -62,7 +62,9 @@ def xr_average(fyear, tar, modules):
|
|
|
62
62
|
_masked_area.sum().data,
|
|
63
63
|
)
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
t_bounds = dset.time_bnds
|
|
66
|
+
dt = t_bounds.isel(nv=1) - t_bounds.isel(nv=0)
|
|
67
|
+
weights = dt.astype("float") * _masked_area
|
|
66
68
|
_dset_weighted = xrtools.xr_weighted_avg(dset, weights)
|
|
67
69
|
xrtools.xr_to_db(
|
|
68
70
|
_dset_weighted, fyear, f"{fyear}.{region}Ave{modules[member]}.db"
|
gfdlvitals/extensions.py
CHANGED
|
@@ -617,26 +617,21 @@ def open_db(
|
|
|
617
617
|
for var in variables:
|
|
618
618
|
tsobj = Timeseries(dbfile, var, legacy_land=legacy_land, start=start, end=end)
|
|
619
619
|
if len(tsobj.t) > 0:
|
|
620
|
-
data[var] = tsobj.data
|
|
621
|
-
years = years + list(tsobj.t)
|
|
620
|
+
data[var] = pd.Series(tsobj.data, index=list(tsobj.t))
|
|
622
621
|
attributes[var] = {
|
|
623
622
|
"long_name": tsobj.long_name,
|
|
624
623
|
"units": tsobj.units,
|
|
625
624
|
"cell_measure": tsobj.cell_measure,
|
|
626
625
|
}
|
|
627
626
|
|
|
628
|
-
years = sorted(list(set(years)))
|
|
629
|
-
years = [x + float(yearshift) for x in years]
|
|
630
|
-
|
|
631
|
-
variables = list(set(variables) - set(skipped))
|
|
632
|
-
|
|
633
627
|
if start is None:
|
|
634
628
|
start = -1 * math.inf
|
|
635
629
|
|
|
636
630
|
if end is None:
|
|
637
631
|
end = math.inf
|
|
638
632
|
|
|
639
|
-
df = pd.DataFrame(data
|
|
633
|
+
df = pd.DataFrame(data)
|
|
634
|
+
df.index = df.index + float(yearshift)
|
|
640
635
|
df = df[(df.index >= start) & (df.index <= end)]
|
|
641
636
|
df.index = cftime.num2date(
|
|
642
637
|
(df.index * 365.0) - (365.0 / 2.0) - 1,
|
|
@@ -19,18 +19,21 @@ def mom6(fdata, fyear, outdir, outname="globalAveOcean.db"):
|
|
|
19
19
|
Path to output directory
|
|
20
20
|
"""
|
|
21
21
|
|
|
22
|
-
ignore_list = ["time_bounds", "time_bnds", "average_T2", "average_T1", "average_DT"]
|
|
22
|
+
ignore_list = ["time_bounds", "time_bnds", "average_T2", "average_T1", "average_DT", "nv"]
|
|
23
23
|
|
|
24
24
|
var_dict = fdata.variables.keys()
|
|
25
25
|
var_dict = list(set(var_dict) - set(ignore_list))
|
|
26
26
|
|
|
27
27
|
for varname in var_dict:
|
|
28
|
-
if len(fdata.variables[varname].shape)
|
|
28
|
+
if len(fdata.variables[varname].shape) <= 2:
|
|
29
29
|
units = gmeantools.extract_metadata(fdata, varname, "units")
|
|
30
30
|
long_name = gmeantools.extract_metadata(fdata, varname, "long_name")
|
|
31
31
|
result = fdata.variables[varname]
|
|
32
32
|
if result.shape[0] == 12:
|
|
33
|
-
result
|
|
33
|
+
if len(result.shape) == 2:
|
|
34
|
+
result = result[:, 0]
|
|
35
|
+
else:
|
|
36
|
+
result = result[:]
|
|
34
37
|
result = np.ma.average(
|
|
35
38
|
result,
|
|
36
39
|
weights=[
|
|
@@ -50,7 +53,10 @@ def mom6(fdata, fyear, outdir, outname="globalAveOcean.db"):
|
|
|
50
53
|
axis=0,
|
|
51
54
|
)
|
|
52
55
|
elif result.shape[0] == 1:
|
|
53
|
-
result
|
|
56
|
+
if len(result.shape) == 2:
|
|
57
|
+
result = result[0, 0]
|
|
58
|
+
else:
|
|
59
|
+
result = result[0]
|
|
54
60
|
sqlfile = f"{outdir}/{fyear}.{outname}"
|
|
55
61
|
gmeantools.write_metadata(sqlfile, varname, "units", units)
|
|
56
62
|
gmeantools.write_metadata(sqlfile, varname, "long_name", long_name)
|
gfdlvitals/util/xrtools.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
""" Tools for working with xarray datasets """
|
|
2
2
|
|
|
3
3
|
import xarray as xr
|
|
4
|
+
import numpy as np
|
|
4
5
|
|
|
5
6
|
from gfdlvitals.util.gmeantools import write_sqlite_data
|
|
6
7
|
from gfdlvitals.util.gmeantools import write_metadata
|
|
@@ -84,8 +85,13 @@ def xr_weighted_avg(dset, weights):
|
|
|
84
85
|
variables = list(dset.variables.keys())
|
|
85
86
|
for x in variables:
|
|
86
87
|
if sorted(dset[x].dims) == sorted(weight.dims):
|
|
88
|
+
if 'timedelta' in str(dset[x].dtype):
|
|
89
|
+
dset[x] = dset[x].astype(np.float32)
|
|
87
90
|
_dset[x] = dset[x]
|
|
88
91
|
|
|
92
|
+
if isinstance(weight, xr.DataArray):
|
|
93
|
+
weight = weight.fillna(0.0)
|
|
94
|
+
|
|
89
95
|
_dset_weighted = _dset.weighted(weight).mean()
|
|
90
96
|
for x in list(_dset_weighted.variables):
|
|
91
97
|
_dset_weighted[x] = _dset_weighted[x].astype(dset[x].dtype)
|
gfdlvitals/version.py
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
docs/source/conf.py,sha256=KWXm19n5XaW1kMIw64FNCuTqAnKDsjkeyQ6MHPQmP9s,2337
|
|
2
2
|
gfdlvitals/__init__.py,sha256=TS9rlf4WiV2SnMdH-J99noYxJtZGtsU2IsUs17iSxaI,377
|
|
3
3
|
gfdlvitals/cli.py,sha256=AKt1hWlhuuSkK8hgpts7OTAxY2B_ZrEH5BuL_CWnbC4,5156
|
|
4
|
-
gfdlvitals/extensions.py,sha256=
|
|
4
|
+
gfdlvitals/extensions.py,sha256=gi7Y3n56N_dfGBu4a4ocJxPGF731BEBR0btu5aL27uA,18477
|
|
5
5
|
gfdlvitals/plot.py,sha256=X5zB5ChxhuBs6OANMdU-9WH_ZUbGEnaNCWXrhllYpT0,12539
|
|
6
6
|
gfdlvitals/sample.py,sha256=wvjmx--IbvKKT0AIucw5GE1DCYcVQPtAr7VGY4rMUaA,225
|
|
7
|
-
gfdlvitals/version.py,sha256=
|
|
7
|
+
gfdlvitals/version.py,sha256=BghlqG1OlHDUh5HeT1Gia9ipnZDU4210sYotGhI77Vg,60
|
|
8
8
|
gfdlvitals/averagers/__init__.py,sha256=q9VRiraniy0-HwrwOZNw7wmGZEgQxYuSeOvpPMz0dYI,248
|
|
9
|
-
gfdlvitals/averagers/cubesphere.py,sha256=
|
|
10
|
-
gfdlvitals/averagers/ice.py,sha256=
|
|
9
|
+
gfdlvitals/averagers/cubesphere.py,sha256=q1SF-Qlmxdgia_u_oYXNgw-NtpkgMuZk-ZMKuNSnLbI,2254
|
|
10
|
+
gfdlvitals/averagers/ice.py,sha256=uBZczgBCtxPGv3BnOhAzMDcaCfUKvIZ8P5BQyX5LSVI,5707
|
|
11
11
|
gfdlvitals/averagers/land_lm3.py,sha256=HfzfGeCCB344kOfYutansuXCkV80uZaDZA7ULw72WHA,1879
|
|
12
|
-
gfdlvitals/averagers/land_lm4.py,sha256=
|
|
13
|
-
gfdlvitals/averagers/latlon.py,sha256=
|
|
14
|
-
gfdlvitals/averagers/tripolar.py,sha256=
|
|
12
|
+
gfdlvitals/averagers/land_lm4.py,sha256=S6mtGolA5iY_BFiWh5nO5bWy7vv-T_RSE7u1TO-IrPE,4864
|
|
13
|
+
gfdlvitals/averagers/latlon.py,sha256=5KQSU6jyp5mrIIlE5pAQwYtPZKmJWa3VrD9XD9kI9mY,2209
|
|
14
|
+
gfdlvitals/averagers/tripolar.py,sha256=HOIWI-BWTmouh3VrjSCFBTNNYQtGbHGNX0TPru3lzyk,2351
|
|
15
15
|
gfdlvitals/diags/__init__.py,sha256=1w_CSncdjJRC6ingsqfAI6EPy0KgK2J2NCTD_ifYpj8,104
|
|
16
16
|
gfdlvitals/diags/amoc.py,sha256=bDyKfLe0MkNp2nyfyG-yABma1vw5EbWqExN2WfFDXwE,3219
|
|
17
17
|
gfdlvitals/diags/fms.py,sha256=UDUAxihg9kZGRwxYaSOslLPrhYgNBrtBwJJFSUsLFFg,2568
|
|
@@ -44,20 +44,20 @@ gfdlvitals/resources/fonts/Roboto_Condensed/RobotoCondensed-LightItalic.ttf,sha2
|
|
|
44
44
|
gfdlvitals/resources/fonts/Roboto_Condensed/RobotoCondensed-Regular.ttf,sha256=8Fq2wereREu_Tj4AcQdW6VwqHQmhBCWWcUmAIhnAwMs,169848
|
|
45
45
|
gfdlvitals/util/__init__.py,sha256=e_EzzVZZu5Gu2w8rVBZqfYi38cQlUyEh11HSzeeYGPw,324
|
|
46
46
|
gfdlvitals/util/average.py,sha256=-f3-nHx8PaLu535VQHN0wX5NUDXBWD1WmKiqO8UShqM,12107
|
|
47
|
-
gfdlvitals/util/extract_ocean_scalar.py,sha256=
|
|
47
|
+
gfdlvitals/util/extract_ocean_scalar.py,sha256=ygxxTj2R4s6Y258LnmGT1-qfkQt181MPuA_zwgS1coM,2082
|
|
48
48
|
gfdlvitals/util/git.py,sha256=tt9qNHEDMLW2SuzHtr0P5_iuoKAj_3g-GKEEMfkoNJc,1596
|
|
49
49
|
gfdlvitals/util/gmeantools.py,sha256=dy-ZeQPv7V5TBWm6EKZtZvrEjtAQJOax3B_gm8vdxcE,12543
|
|
50
50
|
gfdlvitals/util/merge.py,sha256=pzihnvME1ym2MCyc2BeeQq7Jk10GECSoFBcvTubTY-g,1120
|
|
51
51
|
gfdlvitals/util/netcdf.py,sha256=CYmP8HQ4iwTvC3HltjF_6_C2FrEEGocWoSiCfHWETQA,2217
|
|
52
|
-
gfdlvitals/util/xrtools.py,sha256=
|
|
53
|
-
gfdlvitals-3.0.
|
|
54
|
-
gfdlvitals-3.0.
|
|
55
|
-
gfdlvitals-3.0.
|
|
52
|
+
gfdlvitals/util/xrtools.py,sha256=4gIDkBIG_tW-lBHUfETmsOoDy3oKO0eUoGFaWOmvtEY,2924
|
|
53
|
+
gfdlvitals-3.0.11.data/scripts/db2nc,sha256=htD-aVKLHGeszfvx_3gH1iYs2bXyCIRRZ_BZYvAjxyQ,5793
|
|
54
|
+
gfdlvitals-3.0.11.data/scripts/gfdlvitals,sha256=z7jnQIebmlz6eo0qv0X2UWgVU9TAERJ9a38YIbucVjA,172
|
|
55
|
+
gfdlvitals-3.0.11.data/scripts/plotdb,sha256=m_QS96umb3aFIfr1fdfDa81pT8RP-AJ9LhP9Bbr4LQs,1632
|
|
56
56
|
scripts/db2nc,sha256=_KqHUowYB8Ff1td6Cb0isWtwlNbnJrMUNri9Ge8kd1E,5807
|
|
57
57
|
scripts/gfdlvitals,sha256=k5RYzFXWN_2Ckr2mdRbJ-IyMdCQAxuE3RBkGpIXvp3U,186
|
|
58
58
|
scripts/plotdb,sha256=Rf79UOCwGy9f5HxtgSeiYUiiotS2Bqh-Unr0G4yykyg,1645
|
|
59
|
-
gfdlvitals-3.0.
|
|
60
|
-
gfdlvitals-3.0.
|
|
61
|
-
gfdlvitals-3.0.
|
|
62
|
-
gfdlvitals-3.0.
|
|
63
|
-
gfdlvitals-3.0.
|
|
59
|
+
gfdlvitals-3.0.11.dist-info/LICENSE,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
60
|
+
gfdlvitals-3.0.11.dist-info/METADATA,sha256=y_q8Cu-b5OciOFHzh0o8LUPuZ10RuRdYiBWX_wGpbbQ,1293
|
|
61
|
+
gfdlvitals-3.0.11.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
|
|
62
|
+
gfdlvitals-3.0.11.dist-info/top_level.txt,sha256=_nlHTn5dcU38mu0h1NZouDSBQouNvihfTSmua76bwLs,24
|
|
63
|
+
gfdlvitals-3.0.11.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|