@@ -33,7 +33,7 @@ from re import compile as re_compile
33
33
from os .path import exists
34
34
from os import mkdir
35
35
from multiprocessing import Pool
36
- import numpy as np
36
+ from numpy import array , arange , atleast_1d , unique , round , int , place , interp , pi
37
37
38
38
from py_eddy_tracker import EddyParser
39
39
from py_eddy_tracker .property_functions import \
@@ -101,16 +101,16 @@ if __name__ == '__main__':
101
101
]['CONTOUR_PARAMETER_SLA' ]['MAX_SLA' ]
102
102
INTERVAL = CONFIG ['CONTOUR_PARAMETER'
103
103
]['CONTOUR_PARAMETER_SLA' ]['INTERVAL' ]
104
- CONFIG ['CONTOUR_PARAMETER' ] = np . arange (- MAX_SLA , MAX_SLA + INTERVAL ,
104
+ CONFIG ['CONTOUR_PARAMETER' ] = arange (- MAX_SLA , MAX_SLA + INTERVAL ,
105
105
INTERVAL )
106
106
# AMPMIN = CONFIG['AMPMIN']
107
107
# AMPMAX = CONFIG['AMPMAX']
108
108
109
109
SMOOTHING = CONFIG ['SMOOTHING' ]
110
110
if SMOOTHING :
111
111
if 'SLA' in DIAGNOSTIC_TYPE :
112
- ZWL = np . atleast_1d (CONFIG ['SMOOTHING_SLA' ]['ZWL' ])
113
- MWL = np . atleast_1d (CONFIG ['SMOOTHING_SLA' ]['MWL' ])
112
+ ZWL = atleast_1d (CONFIG ['SMOOTHING_SLA' ]['ZWL' ])
113
+ MWL = atleast_1d (CONFIG ['SMOOTHING_SLA' ]['MWL' ])
114
114
SMOOTHING_TYPE = CONFIG ['SMOOTHING_SLA' ]['TYPE' ]
115
115
116
116
# End user configuration setup options
@@ -129,10 +129,10 @@ if __name__ == '__main__':
129
129
130
130
DATASET_FILES = glob (DATA_DIR + FILES_MODEL )
131
131
132
- DATASET_LIST = np . array (DATASET_FILES ,
132
+ DATASET_LIST = array (DATASET_FILES ,
133
133
dtype = [('date' , 'datetime64[D]' ),
134
134
('filename' , 'S256' )])
135
- DATASET_LIST ['filename' ] = np . array (DATASET_FILES )
135
+ DATASET_LIST ['filename' ] = array (DATASET_FILES )
136
136
137
137
logging .info ('%s grids available' , DATASET_LIST .shape [0 ])
138
138
for item in DATASET_LIST :
@@ -145,7 +145,7 @@ if __name__ == '__main__':
145
145
MASK_DATE = (DATASET_LIST ['date' ] >= START_DATE ) * (
146
146
DATASET_LIST ['date' ] <= END_DATE )
147
147
148
- STEPS = np . unique (DATASET_LIST ['date' ][1 :] - DATASET_LIST ['date' ][:- 1 ])
148
+ STEPS = unique (DATASET_LIST ['date' ][1 :] - DATASET_LIST ['date' ][:- 1 ])
149
149
if len (STEPS ) != 1 :
150
150
raise Exception ('Several days steps in grid dataset %s' % STEPS )
151
151
else :
@@ -171,11 +171,11 @@ if __name__ == '__main__':
171
171
172
172
# See Chelton section B2 (0.4 degree radius)
173
173
# These should give 8 and 1000 for 0.25 deg resolution
174
- PIXMIN = np . round ((np . pi * CONFIG ['RADMIN' ] ** 2 ) /
174
+ PIXMIN = round ((pi * CONFIG ['RADMIN' ] ** 2 ) /
175
175
SLA_GRD .resolution ** 2 )
176
- PIXMAX = np . round ((np . pi * CONFIG ['RADMAX' ] ** 2 ) /
176
+ PIXMAX = round ((pi * CONFIG ['RADMAX' ] ** 2 ) /
177
177
SLA_GRD .resolution ** 2 )
178
- logging .info ('Pixel range = %s-%s' , np . int (PIXMIN ), np . int (PIXMAX ))
178
+ logging .info ('Pixel range = %s-%s' , int (PIXMIN ), int (PIXMAX ))
179
179
180
180
# Figure to get contours of parameter
181
181
FIG = Figure ()
@@ -208,9 +208,9 @@ if __name__ == '__main__':
208
208
if 'Gaussian' in SMOOTHING_TYPE :
209
209
logging .info ('applying Gaussian high-pass filter' )
210
210
# Set landpoints to zero
211
- np . place (sla , SLA_GRD .mask , 0. )
211
+ place (sla , SLA_GRD .mask , 0. )
212
212
if hasattr (sla , 'data' ):
213
- np . place (sla , sla .data == SLA_GRD .fillval , 0. )
213
+ place (sla , sla .data == SLA_GRD .fillval , 0. )
214
214
# High pass filter, see
215
215
# http://stackoverflow.com/questions/6094957/high-pass-filter-
216
216
# for-image-processing-in-python-by-using-scipy-numpy
@@ -256,6 +256,21 @@ if __name__ == '__main__':
256
256
257
257
if 'SLA' in DIAGNOSTIC_TYPE :
258
258
logging .info ('Processing SLA contours for eddies' )
259
+ MIN_SLA , MAX_SLA = A_EDDY .sla .min (), A_EDDY .sla .max ()
260
+ if (MIN_SLA < A_EDDY .contour_parameter [0 ]) or (
261
+ MAX_SLA > A_EDDY .contour_parameter [- 1 ]):
262
+ logging .warning ('SLA values [%f,%f] is larger than levels %s' ,
263
+ MIN_SLA , MAX_SLA , A_EDDY .contour_parameter )
264
+
265
+ i_min , i_max = interp (
266
+ (MIN_SLA , MAX_SLA ),
267
+ A_EDDY .contour_parameter ,
268
+ arange (len (A_EDDY .contour_parameter ))
269
+ )
270
+ i_min , i_max = max (0 , int (i_min - 2 )), int (i_max + 2 )
271
+ A_EDDY .contour_parameter = A_EDDY .contour_parameter [i_min :i_max ]
272
+ C_EDDY .contour_parameter = C_EDDY .contour_parameter [i_min :i_max ]
273
+
259
274
CONTOURS = CONT_AX .contour (
260
275
SLA_GRD .lon ,
261
276
SLA_GRD .lat ,
0 commit comments