@@ -31,7 +31,8 @@ from matplotlib.dates import date2num, num2julian
31
31
from matplotlib .figure import Figure
32
32
from os .path import exists
33
33
from os import mkdir
34
- from numpy import array , arange , atleast_1d , unique , round , int , interp , pi
34
+ from numpy import array , arange , atleast_1d , unique , round , int , interp , pi , \
35
+ float_ , errstate , ma
35
36
36
37
from py_eddy_tracker import EddyParser
37
38
from py_eddy_tracker .property_functions import \
@@ -173,13 +174,20 @@ if __name__ == '__main__':
173
174
if 'Gaussian' in CONFIG ['SMOOTHING_SLA' ]['TYPE' ]:
174
175
logging .info ('applying Gaussian high-pass filter' )
175
176
# Set landpoints to zero
177
+ m = SLA_GRD .mask
176
178
sla [SLA_GRD .mask ] = 0.
177
179
if hasattr (sla , 'data' ):
180
+ m += sla .data == SLA_GRD .fillval
178
181
sla [sla .data == SLA_GRD .fillval ] = 0.
179
182
# High pass filter, see
180
183
# http://stackoverflow.com/questions/6094957/high-pass-filter-
181
184
# for-image-processing-in-python-by-using-scipy-numpy
182
- sla -= gaussian_filter (sla , [MRES , ZRES ])
185
+ v = gaussian_filter (sla , sigma = [MRES , ZRES ])
186
+ w = gaussian_filter (float_ (- m ), sigma = [MRES , ZRES ])
187
+
188
+ with errstate (invalid = 'ignore' ):
189
+ sla -= ma .array (v / w , mask = (w == 0 ) + m )
190
+
183
191
logging .info ('applying Gaussian high-pass filter -- OK' )
184
192
185
193
elif 'Hanning' in SMOOTHING_TYPE :
0 commit comments