Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
* Branstator, Grant, and Haiyan Teng. “Two Limits of Initial-Value
Decadal Predictability in a CGCM." Journal of Climate 23, no. 23
(August 27, 2010): 6292-6311. https://doi.org/10/bwq92h.
See also:
https://xrft.readthedocs.io/en/latest/api.html#xrft.xrft.power_spectrum
"""
# set nans to 0
if isinstance(da, xr.Dataset):
raise ValueError('require xr.Dataset')
da = da.fillna(0.0)
# dim should be list
if isinstance(dim, str):
dim = [dim]
assert isinstance(dim, list)
ps = power_spectrum(da, dim=dim, **kwargs)
# take pos
for d in dim:
ps = ps.where(ps[f'freq_{d}'] > 0)
# weighted average
vwmp = ps
for d in dim:
vwmp = vwmp.sum(f'freq_{d}') / ((vwmp * vwmp[f'freq_{d}']).sum(f'freq_{d}'))
for d in dim:
del vwmp[f'freq_{d}_spacing']
# try to copy coords
try:
vwmp = copy_coords_from_to(da.drop(dim), vwmp)
except ValueError:
warnings.warn("Couldn't keep coords.")
return vwmp