@@ -284,7 +284,7 @@ def daily_extend(
284
284
285
285
last_ts = base_ts
286
286
for date in metadata_db .get_days (start_day ):
287
- ts , excluded_samples = extend (
287
+ ts , excluded_samples , added_back_samples = extend (
288
288
alignment_store = alignment_store ,
289
289
metadata_db = metadata_db ,
290
290
date = date ,
@@ -303,10 +303,24 @@ def daily_extend(
303
303
yield ts , excluded_samples , date
304
304
305
305
# Update list of reconsidered samples.
306
- reconsidered_samples . extend ( excluded_samples )
306
+ # Remove oldest reconsidered samples.
307
307
if len (reconsidered_samples ) > 0 :
308
308
while reconsidered_samples [0 ].date == earliest_date :
309
309
reconsidered_samples .popleft ()
310
+ # Remove samples just added back.
311
+ if len (added_back_samples ) > 0 :
312
+ # TODO: Horrible. This needs to be reworked after
313
+ # storing pickled Samples in a SQLite db.
314
+ samples_to_remove = []
315
+ for sample_added_back in added_back_samples :
316
+ for sample_reconsidered in reconsidered_samples :
317
+ if sample_added_back .strain == sample_reconsidered .strain :
318
+ samples_to_remove .append (sample_added_back )
319
+ continue
320
+ for sample in samples_to_remove :
321
+ reconsidered_samples .remove (sample )
322
+ # Add new excluded samples.
323
+ reconsidered_samples .extend (excluded_samples )
310
324
311
325
earliest_date += datetime .timedelta (days = 1 )
312
326
@@ -414,7 +428,7 @@ def extend(
414
428
)
415
429
ts = increment_time (date , base_ts )
416
430
417
- ts , excluded_samples = add_matching_results (
431
+ ts , excluded_samples , _ = add_matching_results (
418
432
samples = samples ,
419
433
ts = ts ,
420
434
date = date ,
@@ -424,7 +438,7 @@ def extend(
424
438
show_progress = show_progress ,
425
439
)
426
440
427
- ts , _ = add_matching_results (
441
+ ts , _ , added_back_samples = add_matching_results (
428
442
samples = reconsidered_samples ,
429
443
ts = ts ,
430
444
date = date ,
@@ -434,7 +448,7 @@ def extend(
434
448
show_progress = show_progress ,
435
449
)
436
450
437
- return ts , excluded_samples
451
+ return ts , excluded_samples , added_back_samples
438
452
439
453
440
454
def match_path_ts (samples , ts , path , reversions ):
@@ -524,6 +538,7 @@ def add_matching_results(
524
538
logger .info (f"Got { len (grouped_matches )} distinct paths" )
525
539
526
540
attach_nodes = []
541
+ added_samples = []
527
542
528
543
with tqdm .tqdm (
529
544
grouped_matches .items (),
@@ -535,6 +550,8 @@ def add_matching_results(
535
550
if len (match_samples ) < min_group_size :
536
551
continue
537
552
553
+ added_samples .extend (match_samples )
554
+
538
555
# print(path, reversions, len(match_samples))
539
556
# Delete the reversions from these samples so that we don't
540
557
# build them into the trees
@@ -594,7 +611,7 @@ def add_matching_results(
594
611
# print(ts.draw_text())
595
612
ts = coalesce_mutations (ts , attach_nodes )
596
613
597
- return ts , excluded_samples
614
+ return ts , excluded_samples , added_samples
598
615
599
616
600
617
def fetch_samples_from_pickle_file (date , num_past_days = None , in_dir = None ):
0 commit comments