@@ -345,40 +345,46 @@ def magnitude_range(self) -> xr.DataArray:
345
345
The range of the dataset
346
346
"""
347
347
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
+
348
354
# 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)
351
357
352
- def min_agg (ds ):
353
- return ds .min (skipna = True )
358
+ # def min_agg(ds):
359
+ # return ds.min(skipna=True)
354
360
355
361
# avoid divde by zero warning
356
- a_d = abs (self ._ds .copy ())
362
+ # a_d = abs(self._ds.copy())
357
363
# 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)
359
365
# print('log_ds = ', log_ds.data)
360
366
# print('data: min abs nonzero = ', self.min_abs_nonzero)
361
367
# 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)
369
375
# print('max exp= ', my_max)
370
376
# 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:
380
386
381
- self ._magnitude_range = my_max - my_min
387
+ # self._magnitude_range = my_max - my_min
382
388
383
389
return self ._magnitude_range
384
390
@@ -974,7 +980,7 @@ def quantile_value(self) -> xr.DataArray:
974
980
@property
975
981
def max_abs (self ) -> xr .DataArray :
976
982
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 )
978
984
self ._max_abs .attrs = self ._ds .attrs
979
985
if hasattr (self ._ds , 'units' ):
980
986
self ._max_abs .attrs ['units' ] = f'{ self ._ds .units } '
@@ -1005,7 +1011,7 @@ def min_abs_nonzero(self) -> xr.DataArray:
1005
1011
@property
1006
1012
def max_val (self ) -> xr .DataArray :
1007
1013
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 )
1009
1015
self ._max_val .attrs = self ._ds .attrs
1010
1016
if hasattr (self ._ds , 'units' ):
1011
1017
self ._max_val .attrs ['units' ] = f'{ self ._ds .units } '
@@ -1015,7 +1021,7 @@ def max_val(self) -> xr.DataArray:
1015
1021
@property
1016
1022
def min_val (self ) -> xr .DataArray :
1017
1023
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 )
1019
1025
self ._min_val .attrs = self ._ds .attrs
1020
1026
if hasattr (self ._ds , 'units' ):
1021
1027
self ._min_val .attrs ['units' ] = f'{ self ._ds .units } '
0 commit comments