@@ -69,13 +69,21 @@ def eddy_id(args=None):
6969 parser .add_argument ("longitude" )
7070 parser .add_argument ("latitude" )
7171 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+ )
7479 parser .add_argument ("--filter_order" , default = 3 , type = int )
7580 help = "Step between 2 isoline in m"
7681 parser .add_argument ("--isoline_step" , default = 0.002 , type = float , help = help )
7782 help = "Error max accepted to fit circle in percent"
7883 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+ )
7987 parser .add_argument ("--height_unit" , default = None , help = "Force height unit" )
8088 parser .add_argument ("--speed_unit" , default = None , help = "Force speed unit" )
8189 parser .add_argument ("--unregular" , action = "store_true" , help = "if grid is unregular" )
@@ -102,14 +110,25 @@ def eddy_id(args=None):
102110 action = DictAction ,
103111 )
104112 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+
105122 date = datetime .strptime (args .datetime , "%Y%m%d" )
106123 kwargs = dict (
107124 step = args .isoline_step ,
108125 shape_error = args .fit_errmax ,
109126 pixel_limit = (5 , 2000 ),
110127 force_height_unit = args .height_unit ,
111128 force_speed_unit = args .speed_unit ,
129+ nb_step_to_be_mle = 0 ,
112130 )
131+
113132 a , c = identification (
114133 args .filename ,
115134 args .longitude ,
@@ -119,7 +138,9 @@ def eddy_id(args=None):
119138 args .u ,
120139 args .v ,
121140 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 ,
123144 filter_order = args .filter_order ,
124145 indexs = args .indexs ,
125146 sampling = args .sampling ,
@@ -141,6 +162,8 @@ def identification(
141162 v = "None" ,
142163 unregular = False ,
143164 cut_wavelength = 500 ,
165+ cut_highwavelength = 0 ,
166+ lat_max = 85 ,
144167 filter_order = 1 ,
145168 indexs = None ,
146169 ** kwargs
@@ -150,6 +173,9 @@ def identification(
150173 if u == "None" and v == "None" :
151174 grid .add_uv (h )
152175 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 )
153179 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 )
155181 return grid .eddy_identification (h , u , v , date , ** kwargs )
0 commit comments