@@ -93,7 +93,10 @@ def nb_tracks(self):
93
93
Will count and send number of track
94
94
"""
95
95
if self .__nb_track is None :
96
- self .__nb_track = (self .nb_obs_by_track != 0 ).sum ()
96
+ if len (self ) == 0 :
97
+ self .__nb_track = 0
98
+ else :
99
+ self .__nb_track = (self .nb_obs_by_track != 0 ).sum ()
97
100
return self .__nb_track
98
101
99
102
def __repr__ (self ):
@@ -326,18 +329,23 @@ def extract_with_length(self, bounds):
326
329
327
330
.. minigallery:: py_eddy_tracker.TrackEddiesObservations.extract_with_length
328
331
"""
332
+ if len (self ) == 0 :
333
+ return self .empty_dataset ()
329
334
b0 , b1 = bounds
330
- if b0 >= 0 and b1 >= 0 :
335
+ if b0 >= 0 and b1 != - 1 :
331
336
track_mask = (self .nb_obs_by_track >= b0 ) * (self .nb_obs_by_track <= b1 )
332
- elif b0 < 0 and b1 >= 0 :
337
+ elif b0 == - 1 and b1 >= 0 :
333
338
track_mask = self .nb_obs_by_track <= b1
334
- elif b0 >= 0 and b1 < 0 :
339
+ elif b0 >= 0 and b1 == - 1 :
335
340
track_mask = self .nb_obs_by_track > b0
336
341
else :
337
342
logger .warning ("No valid value for bounds" )
338
343
raise Exception ("One bounds must be positiv" )
339
344
return self .extract_with_mask (track_mask .repeat (self .nb_obs_by_track ))
340
345
346
+ def empty_dataset (self ):
347
+ return self .new_like (self , 0 )
348
+
341
349
def loess_filter (self , half_window , xfield , yfield , inplace = True ):
342
350
track = self .obs ["track" ]
343
351
x = self .obs [xfield ]
@@ -427,6 +435,8 @@ def plot(self, ax, ref=None, **kwargs):
427
435
"""
428
436
if "label" in kwargs :
429
437
kwargs ["label" ] += " (%s eddies)" % (self .nb_obs_by_track != 0 ).sum ()
438
+ if len (self ) == 0 :
439
+ return ax .plot ([], [], ** kwargs )
430
440
x , y = split_line (self .longitude , self .latitude , self .tracks )
431
441
if ref is not None :
432
442
x , y = wrap_longitude (x , y , ref , cut = True )
0 commit comments