15
15
from numpy import bincount , bytes_ , empty , in1d , unique
16
16
from yaml import safe_load
17
17
18
- from .. import EddyParser
18
+ from .. import TIME_MODELS , EddyParser
19
19
from ..observations .observation import EddiesObservations , reverse_index
20
20
from ..observations .tracking import TrackEddiesObservations
21
21
from ..tracking import Correspondances
@@ -223,7 +223,7 @@ def browse_dataset_in(
223
223
data_dir ,
224
224
files_model ,
225
225
date_regexp ,
226
- date_model ,
226
+ date_model = None ,
227
227
start_date = None ,
228
228
end_date = None ,
229
229
sub_sampling_step = 1 ,
@@ -238,11 +238,7 @@ def browse_dataset_in(
238
238
filenames = bytes_ (glob (full_path ))
239
239
240
240
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]" )],
246
242
)
247
243
dataset_list ["filename" ] = filenames
248
244
@@ -268,10 +264,21 @@ def browse_dataset_in(
268
264
str_date = result .groups ()[0 ]
269
265
270
266
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 )
272
280
273
281
dataset_list .sort (order = ["date" , "filename" ])
274
-
275
282
steps = unique (dataset_list ["date" ][1 :] - dataset_list ["date" ][:- 1 ])
276
283
if len (steps ) > 1 :
277
284
raise Exception ("Several days steps in grid dataset %s" % steps )
@@ -304,7 +311,7 @@ def track(
304
311
correspondances_only = False ,
305
312
** kw_c ,
306
313
):
307
- kw = dict (date_regexp = ".*_([0-9]*?).[nz].*" , date_model = "%Y%m%d" )
314
+ kw = dict (date_regexp = ".*_([0-9]*?).[nz].*" )
308
315
if isinstance (pattern , list ):
309
316
kw .update (dict (data_dir = None , files_model = None , files = pattern ))
310
317
else :
@@ -323,10 +330,9 @@ def track(
323
330
c = Correspondances (datasets = datasets ["filename" ], ** kw_c )
324
331
c .track ()
325
332
logger .info ("Track finish" )
326
- t0 , t1 = c .period
327
333
kw_save = dict (
328
- date_start = t0 ,
329
- date_stop = t1 ,
334
+ date_start = datasets [ "date" ][ 0 ] ,
335
+ date_stop = datasets [ "date" ][ - 1 ] ,
330
336
date_prod = datetime .now (),
331
337
path = output_dir ,
332
338
sign_type = c .current_obs .sign_legend ,
@@ -351,11 +357,13 @@ def track(
351
357
352
358
short_c = c ._copy ()
353
359
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 )
357
360
short_track = short_c .merge (raw_data = raw )
358
361
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
+
359
367
# We flag obs
360
368
if c .virtual :
361
369
long_track ["virtual" ][:] = long_track ["time" ] == 0
0 commit comments