Skip to content

Commit ccbce73

Browse files
authored
Merge pull request #355 from NCAR/dev
Dev
2 parents aacd0bc + def1010 commit ccbce73

File tree

2 files changed

+33
-27
lines changed

2 files changed

+33
-27
lines changed

ldcpy/calcs.py

+32-26
Original file line numberDiff line numberDiff line change
@@ -345,40 +345,46 @@ def magnitude_range(self) -> xr.DataArray:
345345
The range of the dataset
346346
"""
347347
if not self._is_memoized('_magnitude_range'):
348+
mag_min = self.min_abs_nonzero
349+
mag_max = self.max_abs
350+
mag_range = np.log10(mag_max) - np.log10(mag_min)
351+
# print('RANGE = ', mag_range)
352+
self._magnitude_range = mag_range
353+
348354
# Get the range in exponent space
349-
def max_agg(ds):
350-
return ds.max(skipna=True)
355+
# def max_agg(ds):
356+
# return ds.max(skipna=True)
351357

352-
def min_agg(ds):
353-
return ds.min(skipna=True)
358+
# def min_agg(ds):
359+
# return ds.min(skipna=True)
354360

355361
# avoid divde by zero warning
356-
a_d = abs(self._ds.copy())
362+
# a_d = abs(self._ds.copy())
357363
# print('a_d = ', a_d.data)
358-
log_ds = np.log10(a_d, where=a_d.data > 0)
364+
# log_ds = np.log10(a_d, where=a_d.data > 0)
359365
# print('log_ds = ', log_ds.data)
360366
# print('data: min abs nonzero = ', self.min_abs_nonzero)
361367
# print('data: max value = ', self.max_val)
362-
if len(self._not_agg_dims) == 0:
363-
my_max = max_agg(log_ds)
364-
my_min = min_agg(log_ds)
365-
else:
366-
stack = log_ds.stack(multi_index=tuple(self._not_agg_dims))
367-
my_max = stack.groupby('multi_index').map(max_agg)
368-
my_min = stack.groupby('multi_index').map(min_agg)
368+
# if len(self._not_agg_dims) == 0:
369+
# my_max = max_agg(log_ds)
370+
# my_min = min_agg(log_ds)
371+
# else:
372+
# stack = log_ds.stack(multi_index=tuple(self._not_agg_dims))
373+
# my_max = stack.groupby('multi_index').map(max_agg)
374+
# my_min = stack.groupby('multi_index').map(min_agg)
369375
# print('max exp= ', my_max)
370376
# print('min exp = ', my_min)
371-
if (
372-
np.isinf(my_max).any()
373-
or np.isinf(my_min).any()
374-
or np.isnan(my_max).any()
375-
or np.isnan(my_min).any()
376-
):
377-
self._magnitude_range = -1
378-
return self._magnitude_range
379-
else:
377+
# if (
378+
# np.isinf(my_max).any()
379+
# or np.isinf(my_min).any()
380+
# or np.isnan(my_max).any()
381+
# or np.isnan(my_min).any()
382+
# ):
383+
# self._magnitude_range = -1
384+
# return self._magnitude_range
385+
# else:
380386

381-
self._magnitude_range = my_max - my_min
387+
# self._magnitude_range = my_max - my_min
382388

383389
return self._magnitude_range
384390

@@ -974,7 +980,7 @@ def quantile_value(self) -> xr.DataArray:
974980
@property
975981
def max_abs(self) -> xr.DataArray:
976982
if not self._is_memoized('_max_abs'):
977-
self._max_abs = abs(self._ds).max(dim=self._agg_dims)
983+
self._max_abs = abs(self._ds).max(dim=self._agg_dims, skipna=True)
978984
self._max_abs.attrs = self._ds.attrs
979985
if hasattr(self._ds, 'units'):
980986
self._max_abs.attrs['units'] = f'{self._ds.units}'
@@ -1005,7 +1011,7 @@ def min_abs_nonzero(self) -> xr.DataArray:
10051011
@property
10061012
def max_val(self) -> xr.DataArray:
10071013
if not self._is_memoized('_max_val'):
1008-
self._max_val = self._ds.max(dim=self._agg_dims)
1014+
self._max_val = self._ds.max(dim=self._agg_dims, skipna=True)
10091015
self._max_val.attrs = self._ds.attrs
10101016
if hasattr(self._ds, 'units'):
10111017
self._max_val.attrs['units'] = f'{self._ds.units}'
@@ -1015,7 +1021,7 @@ def max_val(self) -> xr.DataArray:
10151021
@property
10161022
def min_val(self) -> xr.DataArray:
10171023
if not self._is_memoized('_min_val'):
1018-
self._min_val = self._ds.min(dim=self._agg_dims)
1024+
self._min_val = self._ds.min(dim=self._agg_dims, skipna=True)
10191025
self._min_val.attrs = self._ds.attrs
10201026
if hasattr(self._ds, 'units'):
10211027
self._min_val.attrs['units'] = f'{self._ds.units}'

tests/test_calcs.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ def test_mean(self):
163163

164164
def test_magnitude_range(self):
165165
value = float(test_overall_calcs.magnitude_range.values)
166-
print('VALUE = ', value)
166+
# print('VALUE = ', value)
167167
self.assertTrue(np.isclose(value, 2, rtol=1e-04))
168168

169169
def test_mean_abs(self):

0 commit comments

Comments
 (0)