Skip to content

Commit b23a271

Browse files
author
adelepoulle
committed
Reduce number of level, with max and min of grid
1 parent 10e990a commit b23a271

File tree

1 file changed

+27
-12
lines changed

1 file changed

+27
-12
lines changed

src/scripts/EddyIdentification

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ from re import compile as re_compile
3333
from os.path import exists
3434
from os import mkdir
3535
from multiprocessing import Pool
36-
import numpy as np
36+
from numpy import array, arange, atleast_1d, unique, round, int, place, interp, pi
3737

3838
from py_eddy_tracker import EddyParser
3939
from 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

Comments
 (0)