@@ -438,6 +438,21 @@ def bounds(self):
438438
439439 def eddy_identification (self , grid_height , uname , vname , date , step = 0.005 , shape_error = 55 ,
440440 array_sampling = 50 , pixel_limit = None ):
441+ """
442+
443+ Args:
444+ grid_height:
445+ uname:
446+ vname:
447+ date:
448+ step: must be in meter (m)
449+ shape_error: must be in percent (%)
450+ array_sampling:
451+ pixel_limit:
452+
453+ Returns:
454+
455+ """
441456 if not isinstance (date , datetime ):
442457 raise Exception ('Date argument be a datetime object' )
443458 # The inf limit must be in pixel and sup limit in surface
@@ -447,6 +462,14 @@ def eddy_identification(self, grid_height, uname, vname, date, step=0.005, shape
447462 # Compute an interpolator for eke
448463 self .init_speed_coef (uname , vname )
449464
465+ # Get unit of h grid
466+ h_units = self .units (grid_height )
467+ units = UnitRegistry ()
468+ in_h_unit = units .parse_expression (h_units )
469+ if in_h_unit is not None :
470+ factor , _ = in_h_unit .to ('m' ).to_tuple ()
471+ step /= factor
472+
450473 # Get h grid
451474 data = self .grid (grid_height )
452475
@@ -614,13 +637,11 @@ def eddy_identification(self, grid_height, uname, vname, date, step=0.005, shape
614637 eddies_collection .obs ['contour_lon_s' ] = ((eddies_collection .obs ['contour_lon_s' ].T - ref ) % 360 + ref ).T
615638
616639 a_and_c .append (eddies_collection )
617- h_units = self .units (grid_height )
618- units = UnitRegistry ()
619- in_unit = units .parse_expression (h_units )
620- if in_unit is not None :
640+
641+ if in_h_unit is not None :
621642 for name in ['amplitude' , 'height_max_speed_contour' , 'height_external_contour' , 'height_inner_contour' ]:
622643 out_unit = units .parse_expression (VAR_DESCR [name ]['nc_attr' ]['units' ])
623- factor , _ = in_unit .to (out_unit ).to_tuple ()
644+ factor , _ = in_h_unit .to (out_unit ).to_tuple ()
624645 a_and_c [0 ].obs [name ] *= factor
625646 a_and_c [1 ].obs [name ] *= factor
626647 return a_and_c
0 commit comments