@@ -516,7 +516,7 @@ def basic_formula_ellips_major_axis(lats, cmin=1.5, cmax=10., c0=1.5, lat1=13.5,
516516 m = abs_lats > lat1
517517 m += abs_lats < lat2
518518
519- major_axis [- m ] = a * abs_lats [- m ] + b
519+ major_axis [~ m ] = a * abs_lats [~ m ] + b
520520 if not degrees :
521521 major_axis *= 111.2
522522 return major_axis
@@ -583,7 +583,7 @@ def solve_simultaneous(cost):
583583
584584 @staticmethod
585585 def solve_first (cost , multiple_link = False ):
586- mask = - cost .mask
586+ mask = ~ cost .mask
587587 # Count number of link by self obs and other obs
588588 self_links = mask .sum (axis = 1 )
589589 other_links = mask .sum (axis = 0 )
@@ -607,7 +607,7 @@ def solve_first(cost, multiple_link=False):
607607 # Cost to resolve conflict
608608 cost_reduce = cost [i_self_keep ][:, i_other_keep ]
609609 shape = cost_reduce .shape
610- nb_conflict = (- cost_reduce .mask ).sum ()
610+ nb_conflict = (~ cost_reduce .mask ).sum ()
611611 logging .debug ('Shape conflict matrix : %s, %d conflicts' , shape , nb_conflict )
612612
613613 if nb_conflict >= (shape [0 ] + shape [1 ]):
@@ -647,8 +647,6 @@ def tracking(self, other):
647647 mask_accept_dist = self .mask_function (other )
648648 indexs_closest = where (mask_accept_dist )
649649
650- # self.across_ground(self.obs[indexs_closest[0]], other.obs[indexs_closest[1]])
651-
652650 cost_values = self .cost_function (
653651 self .obs [indexs_closest [0 ]],
654652 other .obs [indexs_closest [1 ]],
@@ -726,58 +724,6 @@ def elements(self):
726724 elements .extend (['track' , 'segment_size' , 'dlon' , 'dlat' ])
727725 return elements
728726
729- @classmethod
730- def init_move_function (cls , obs_a , obs_b , out ):
731- """Store information to init move function
732- """
733- out ['dlon' ] = obs_b ['lon' ] - obs_a ['lon' ]
734- out ['dlat' ] = obs_b ['lat' ] - obs_a ['lat' ]
735-
736- @classmethod
737- def move_function (cls , obs_a , obs_b , out ):
738- """Basic move on the previous one
739- Position N-2 : A
740- Position N-1 : B
741- Forecast Position : C
742-
743- New position C = B + AB
744- """
745- out ['lon' ] = obs_b ['lon' ] + out ['dlon' ]
746- out ['lat' ] = obs_b ['lat' ] + out ['dlat' ]
747-
748- @classmethod
749- def forecast_move (cls , obs_a , obs_b , out ):
750- """Forecast move of an eddy
751- work to do
752- """
753- # New dead
754- for key in obs_b .dtype .fields .keys ():
755- # Copy all parameters (which are not listed below)
756- # from the previous observations
757- if key in ['lon' , 'lat' , 'time' , 'segment_size' ,
758- 'dlon' , 'dlat' ] or 'contour_' in key :
759- continue
760- out [key ] = obs_b [key ]
761- cls .init_move_function (obs_a , obs_b , out )
762- cls .move_function (obs_a , obs_b , out )
763-
764- # Previous dead eddies
765- # Add previous virtual
766- if nb_virtual_extend > 0 :
767- obs_to_extend = self .previous_virtual_obs .obs [i_virtual_dead_id
768- ][alive_virtual_obs ]
769- for key in obs_b .dtype .fields .keys ():
770- if key in ['lon' , 'lat' , 'time' , 'track' , 'segment_size' ,
771- 'dlon' , 'dlat' ] or 'contour_' in key :
772- continue
773- out [key ][nb_dead :] = obs_to_extend [key ]
774- out ['lon' ][nb_dead :] = obs_to_extend ['lon' ] + obs_to_extend ['dlon' ]
775- out ['lat' ][nb_dead :] = obs_to_extend ['lat' ] + obs_to_extend ['dlat' ]
776- out ['track' ][nb_dead :] = obs_to_extend ['track' ]
777- out ['segment_size' ][nb_dead :] = obs_to_extend ['segment_size' ]
778- # Count
779- out ['segment_size' ][:] += 1
780-
781727
782728class TrackEddiesObservations (EddiesObservations ):
783729 """Class to practice Tracking on observations
0 commit comments