@@ -69,13 +69,21 @@ def eddy_id(args=None):
69
69
parser .add_argument ("longitude" )
70
70
parser .add_argument ("latitude" )
71
71
parser .add_argument ("path_out" )
72
- help = "Wavelength for mesoscale filter in km"
73
- parser .add_argument ("--cut_wavelength" , default = 500 , type = float , help = help )
72
+ help = (
73
+ "Wavelength for mesoscale filter in km to remove low scale if 2 args is given first one will be"
74
+ "used to remove high scale and second value to remove low scale"
75
+ )
76
+ parser .add_argument (
77
+ "--cut_wavelength" , default = [500 ], type = float , help = help , nargs = "+"
78
+ )
74
79
parser .add_argument ("--filter_order" , default = 3 , type = int )
75
80
help = "Step between 2 isoline in m"
76
81
parser .add_argument ("--isoline_step" , default = 0.002 , type = float , help = help )
77
82
help = "Error max accepted to fit circle in percent"
78
83
parser .add_argument ("--fit_errmax" , default = 55 , type = float , help = help )
84
+ parser .add_argument (
85
+ "--lat_max" , default = 85 , type = float , help = "Maximal latitude filtered"
86
+ )
79
87
parser .add_argument ("--height_unit" , default = None , help = "Force height unit" )
80
88
parser .add_argument ("--speed_unit" , default = None , help = "Force speed unit" )
81
89
parser .add_argument ("--unregular" , action = "store_true" , help = "if grid is unregular" )
@@ -102,14 +110,25 @@ def eddy_id(args=None):
102
110
action = DictAction ,
103
111
)
104
112
args = parser .parse_args (args ) if args else parser .parse_args ()
113
+
114
+ cut_wavelength = args .cut_wavelength
115
+ nb_cw = len (cut_wavelength )
116
+ if nb_cw > 2 or nb_cw == 0 :
117
+ raise Exception ("You must specify 1 or 2 values for cut wavelength." )
118
+ elif nb_cw == 1 :
119
+ cut_wavelength = [0 , * cut_wavelength ]
120
+ inf_bnds , upper_bnds = cut_wavelength
121
+
105
122
date = datetime .strptime (args .datetime , "%Y%m%d" )
106
123
kwargs = dict (
107
124
step = args .isoline_step ,
108
125
shape_error = args .fit_errmax ,
109
126
pixel_limit = (5 , 2000 ),
110
127
force_height_unit = args .height_unit ,
111
128
force_speed_unit = args .speed_unit ,
129
+ nb_step_to_be_mle = 0 ,
112
130
)
131
+
113
132
a , c = identification (
114
133
args .filename ,
115
134
args .longitude ,
@@ -119,7 +138,9 @@ def eddy_id(args=None):
119
138
args .u ,
120
139
args .v ,
121
140
unregular = args .unregular ,
122
- cut_wavelength = args .cut_wavelength ,
141
+ cut_wavelength = upper_bnds ,
142
+ cut_highwavelength = inf_bnds ,
143
+ lat_max = args .lat_max ,
123
144
filter_order = args .filter_order ,
124
145
indexs = args .indexs ,
125
146
sampling = args .sampling ,
@@ -141,6 +162,8 @@ def identification(
141
162
v = "None" ,
142
163
unregular = False ,
143
164
cut_wavelength = 500 ,
165
+ cut_highwavelength = 0 ,
166
+ lat_max = 85 ,
144
167
filter_order = 1 ,
145
168
indexs = None ,
146
169
** kwargs
@@ -150,6 +173,9 @@ def identification(
150
173
if u == "None" and v == "None" :
151
174
grid .add_uv (h )
152
175
u , v = "u" , "v"
176
+ kw_filter = dict (order = filter_order , lat_max = lat_max )
177
+ if cut_highwavelength != 0 :
178
+ grid .bessel_low_filter (h , cut_highwavelength , ** kw_filter )
153
179
if cut_wavelength != 0 :
154
- grid .bessel_high_filter (h , cut_wavelength , order = filter_order )
180
+ grid .bessel_high_filter (h , cut_wavelength , ** kw_filter )
155
181
return grid .eddy_identification (h , u , v , date , ** kwargs )
0 commit comments