@@ -33,7 +33,7 @@ from re import compile as re_compile
3333from os .path import exists
3434from os import mkdir
3535from multiprocessing import Pool
36- import numpy as np
36+ from numpy import array , arange , atleast_1d , unique , round , int , place , interp , pi
3737
3838from py_eddy_tracker import EddyParser
3939from py_eddy_tracker .property_functions import \
@@ -101,16 +101,16 @@ if __name__ == '__main__':
101101 ]['CONTOUR_PARAMETER_SLA' ]['MAX_SLA' ]
102102 INTERVAL = CONFIG ['CONTOUR_PARAMETER'
103103 ]['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 ,
105105 INTERVAL )
106106 # AMPMIN = CONFIG['AMPMIN']
107107 # AMPMAX = CONFIG['AMPMAX']
108108
109109 SMOOTHING = CONFIG ['SMOOTHING' ]
110110 if SMOOTHING :
111111 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' ])
114114 SMOOTHING_TYPE = CONFIG ['SMOOTHING_SLA' ]['TYPE' ]
115115
116116 # End user configuration setup options
@@ -129,10 +129,10 @@ if __name__ == '__main__':
129129
130130 DATASET_FILES = glob (DATA_DIR + FILES_MODEL )
131131
132- DATASET_LIST = np . array (DATASET_FILES ,
132+ DATASET_LIST = array (DATASET_FILES ,
133133 dtype = [('date' , 'datetime64[D]' ),
134134 ('filename' , 'S256' )])
135- DATASET_LIST ['filename' ] = np . array (DATASET_FILES )
135+ DATASET_LIST ['filename' ] = array (DATASET_FILES )
136136
137137 logging .info ('%s grids available' , DATASET_LIST .shape [0 ])
138138 for item in DATASET_LIST :
@@ -145,7 +145,7 @@ if __name__ == '__main__':
145145 MASK_DATE = (DATASET_LIST ['date' ] >= START_DATE ) * (
146146 DATASET_LIST ['date' ] <= END_DATE )
147147
148- STEPS = np . unique (DATASET_LIST ['date' ][1 :] - DATASET_LIST ['date' ][:- 1 ])
148+ STEPS = unique (DATASET_LIST ['date' ][1 :] - DATASET_LIST ['date' ][:- 1 ])
149149 if len (STEPS ) != 1 :
150150 raise Exception ('Several days steps in grid dataset %s' % STEPS )
151151 else :
@@ -171,11 +171,11 @@ if __name__ == '__main__':
171171
172172 # See Chelton section B2 (0.4 degree radius)
173173 # 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 ) /
175175 SLA_GRD .resolution ** 2 )
176- PIXMAX = np . round ((np . pi * CONFIG ['RADMAX' ] ** 2 ) /
176+ PIXMAX = round ((pi * CONFIG ['RADMAX' ] ** 2 ) /
177177 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 ))
179179
180180 # Figure to get contours of parameter
181181 FIG = Figure ()
@@ -208,9 +208,9 @@ if __name__ == '__main__':
208208 if 'Gaussian' in SMOOTHING_TYPE :
209209 logging .info ('applying Gaussian high-pass filter' )
210210 # Set landpoints to zero
211- np . place (sla , SLA_GRD .mask , 0. )
211+ place (sla , SLA_GRD .mask , 0. )
212212 if hasattr (sla , 'data' ):
213- np . place (sla , sla .data == SLA_GRD .fillval , 0. )
213+ place (sla , sla .data == SLA_GRD .fillval , 0. )
214214 # High pass filter, see
215215 # http://stackoverflow.com/questions/6094957/high-pass-filter-
216216 # for-image-processing-in-python-by-using-scipy-numpy
@@ -256,6 +256,21 @@ if __name__ == '__main__':
256256
257257 if 'SLA' in DIAGNOSTIC_TYPE :
258258 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+
259274 CONTOURS = CONT_AX .contour (
260275 SLA_GRD .lon ,
261276 SLA_GRD .lat ,
0 commit comments