1515from numpy import bincount , bytes_ , empty , in1d , unique
1616from yaml import safe_load
1717
18- from .. import EddyParser
18+ from .. import TIME_MODELS , EddyParser
1919from ..observations .observation import EddiesObservations , reverse_index
2020from ..observations .tracking import TrackEddiesObservations
2121from ..tracking import Correspondances
@@ -223,7 +223,7 @@ def browse_dataset_in(
223223 data_dir ,
224224 files_model ,
225225 date_regexp ,
226- date_model ,
226+ date_model = None ,
227227 start_date = None ,
228228 end_date = None ,
229229 sub_sampling_step = 1 ,
@@ -238,11 +238,7 @@ def browse_dataset_in(
238238 filenames = bytes_ (glob (full_path ))
239239
240240 dataset_list = empty (
241- len (filenames ),
242- dtype = [
243- ("filename" , "S500" ),
244- ("date" , "datetime64[D]" ),
245- ],
241+ len (filenames ), dtype = [("filename" , "S500" ), ("date" , "datetime64[s]" )],
246242 )
247243 dataset_list ["filename" ] = filenames
248244
@@ -268,10 +264,21 @@ def browse_dataset_in(
268264 str_date = result .groups ()[0 ]
269265
270266 if str_date is not None :
271- item ["date" ] = datetime .strptime (str_date , date_model ).date ()
267+ if date_model is None :
268+ model_found = False
269+ for model in TIME_MODELS :
270+ try :
271+ item ["date" ] = datetime .strptime (str_date , model )
272+ model_found = True
273+ break
274+ except ValueError :
275+ pass
276+ if not model_found :
277+ raise Exception ("No time model found" )
278+ else :
279+ item ["date" ] = datetime .strptime (str_date , date_model )
272280
273281 dataset_list .sort (order = ["date" , "filename" ])
274-
275282 steps = unique (dataset_list ["date" ][1 :] - dataset_list ["date" ][:- 1 ])
276283 if len (steps ) > 1 :
277284 raise Exception ("Several days steps in grid dataset %s" % steps )
@@ -304,7 +311,7 @@ def track(
304311 correspondances_only = False ,
305312 ** kw_c ,
306313):
307- kw = dict (date_regexp = ".*_([0-9]*?).[nz].*" , date_model = "%Y%m%d" )
314+ kw = dict (date_regexp = ".*_([0-9]*?).[nz].*" )
308315 if isinstance (pattern , list ):
309316 kw .update (dict (data_dir = None , files_model = None , files = pattern ))
310317 else :
@@ -323,10 +330,9 @@ def track(
323330 c = Correspondances (datasets = datasets ["filename" ], ** kw_c )
324331 c .track ()
325332 logger .info ("Track finish" )
326- t0 , t1 = c .period
327333 kw_save = dict (
328- date_start = t0 ,
329- date_stop = t1 ,
334+ date_start = datasets [ "date" ][ 0 ] ,
335+ date_stop = datasets [ "date" ][ - 1 ] ,
330336 date_prod = datetime .now (),
331337 path = output_dir ,
332338 sign_type = c .current_obs .sign_legend ,
@@ -351,11 +357,13 @@ def track(
351357
352358 short_c = c ._copy ()
353359 short_c .shorter_than (size_max = nb_obs_min )
354- c .longer_than (size_min = nb_obs_min )
355-
356- long_track = c .merge (raw_data = raw )
357360 short_track = short_c .merge (raw_data = raw )
358361
362+ if c .longer_than (size_min = nb_obs_min ) is False :
363+ long_track = short_track .empty_dataset ()
364+ else :
365+ long_track = c .merge (raw_data = raw )
366+
359367 # We flag obs
360368 if c .virtual :
361369 long_track ["virtual" ][:] = long_track ["time" ] == 0
0 commit comments