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.
@@ -62,7 +62,9 @@ def xr_average(fyear, tar, modules):
62
62
  _masked_area.sum().data,
63
63
  )
64
64
 
65
- weights = dset.average_DT.astype("float") * _masked_area
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"
@@ -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
- weights = dset.average_DT.astype("float")
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)
@@ -111,7 +111,9 @@ def xr_average(fyear, tar, modules):
111
111
 
112
112
  # _masked_area = _masked_area.fillna(0)
113
113
 
114
- weights = dset.average_DT.astype("float") * _masked_area
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(
@@ -57,7 +57,9 @@ def xr_average(fyear, tar, modules):
57
57
  _masked_area.sum().data,
58
58
  )
59
59
 
60
- weights = dset.average_DT.astype("float") * _masked_area
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"
@@ -62,7 +62,9 @@ def xr_average(fyear, tar, modules):
62
62
  _masked_area.sum().data,
63
63
  )
64
64
 
65
- weights = dset.average_DT.astype("float") * _masked_area
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, index=years)
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) == 2:
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 = result[:, 0]
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 = result[0, 0]
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)
@@ -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,3 +1,3 @@
1
1
  """momlevel: version information"""
2
2
 
3
- __version__ = "3.0.9"
3
+ __version__ = "3.0.11"
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: gfdlvitals
3
- Version: 3.0.9
3
+ Version: 3.0.11
4
4
  Summary: Tools for calculating scalar diagnostics from GFDL models
5
5
  Home-page: https://github.com/jkrasting/gfdlvitals
6
6
  Author: John Krasting
@@ -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=1HbVBSO1XRypbzHAcmmJxyfyLA7UmGl3m5TdgWlZV2w,18598
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=d9tZGukCPNrxCp5IHYV1vljyMB3lf59YuH03fD9AE1k,59
7
+ gfdlvitals/version.py,sha256=BghlqG1OlHDUh5HeT1Gia9ipnZDU4210sYotGhI77Vg,60
8
8
  gfdlvitals/averagers/__init__.py,sha256=q9VRiraniy0-HwrwOZNw7wmGZEgQxYuSeOvpPMz0dYI,248
9
- gfdlvitals/averagers/cubesphere.py,sha256=vxdEr14pwP3kr9NLMRYu6_WiHi-sR3LGy9A72ouIEr0,2170
10
- gfdlvitals/averagers/ice.py,sha256=s3Ou1vNkgXa9pNpeoX-HPWoQ40Vut-fDudQQSwDYYek,5622
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=CPKh0QQA6pIB5Iof50L6yCz3FHji8Q4N3Z568fecoIo,4772
13
- gfdlvitals/averagers/latlon.py,sha256=HCRyDEj3ucOZ8M0LE4Wox4jZnaOPXPwHgAnNUOexYuA,2125
14
- gfdlvitals/averagers/tripolar.py,sha256=dtjE8mBqteIPdvP0_Z2w8IzRmcty0QZawuNNuY7SKoA,2267
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=ouvqQuUD1VaG3M2olkml8MUCu0rwQIkqGHWIEX_H97U,1860
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=Dck9YId_aQxGdfOJ54NVpZWPjfyTeWvdiljYz5NmOgc,2708
53
- gfdlvitals-3.0.9.data/scripts/db2nc,sha256=htD-aVKLHGeszfvx_3gH1iYs2bXyCIRRZ_BZYvAjxyQ,5793
54
- gfdlvitals-3.0.9.data/scripts/gfdlvitals,sha256=z7jnQIebmlz6eo0qv0X2UWgVU9TAERJ9a38YIbucVjA,172
55
- gfdlvitals-3.0.9.data/scripts/plotdb,sha256=m_QS96umb3aFIfr1fdfDa81pT8RP-AJ9LhP9Bbr4LQs,1632
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.9.dist-info/LICENSE,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
- gfdlvitals-3.0.9.dist-info/METADATA,sha256=0xuGfsGPd1bIpAiQA-lP7HKL0-VYZERLDyRVQNWyuho,1292
61
- gfdlvitals-3.0.9.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
62
- gfdlvitals-3.0.9.dist-info/top_level.txt,sha256=_nlHTn5dcU38mu0h1NZouDSBQouNvihfTSmua76bwLs,24
63
- gfdlvitals-3.0.9.dist-info/RECORD,,
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,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.43.0)
2
+ Generator: setuptools (76.0.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5