Skip to content

Commit afe7c33

Browse files
authored
Merge pull request #376 from w-k-jones/add_predictive_tracking_pbc
Uncomment `dist_func` parameter to enable PBCs with predictive tracking
2 parents f0b6809 + a3813e9 commit afe7c33

File tree

2 files changed

+72
-1
lines changed

2 files changed

+72
-1
lines changed

tobac/tests/test_tracking.py

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -650,3 +650,74 @@ def test_time_cell_min(
650650
np.sum(all_feats_tracked_drop_no_cells["orig_cell_num"] == i)
651651
== expected_val
652652
)
653+
654+
655+
def test_trackpy_predict_PBC():
656+
"""Test if predictive tracking with PBCs works correctly"""
657+
658+
test_features = pd.DataFrame(
659+
{
660+
"feature": [1, 2, 3, 4, 5, 6, 7, 8],
661+
"hdim_1": [85, 15, 95, 5, 5, 95, 15, 85],
662+
"hdim_2": [50, 45, 50, 45, 50, 45, 50, 45],
663+
"frame": [0, 0, 1, 1, 2, 2, 3, 3],
664+
"time": [
665+
datetime.datetime(2000, 1, 1),
666+
datetime.datetime(2000, 1, 1),
667+
datetime.datetime(2000, 1, 1, 0, 5),
668+
datetime.datetime(2000, 1, 1, 0, 5),
669+
datetime.datetime(2000, 1, 1, 0, 10),
670+
datetime.datetime(2000, 1, 1, 0, 10),
671+
datetime.datetime(2000, 1, 1, 0, 15),
672+
datetime.datetime(2000, 1, 1, 0, 15),
673+
],
674+
}
675+
)
676+
677+
output_random_no_pbc = tobac.linking_trackpy(
678+
test_features, None, 1, 1, d_max=10, method_linking="random"
679+
)
680+
681+
# Assert cell does not cross border
682+
assert output_random_no_pbc["cell"].tolist() == [1, 2, 1, 2, 2, 1, 2, 1]
683+
684+
output_random_pbc = tobac.linking_trackpy(
685+
test_features,
686+
None,
687+
1,
688+
1,
689+
d_max=10,
690+
method_linking="random",
691+
PBC_flag="hdim_1",
692+
min_h1=0,
693+
max_h1=100,
694+
min_h2=0,
695+
max_h2=100,
696+
)
697+
698+
# Assert cell does not cross border even with PBC because of random tracking
699+
assert output_random_pbc["cell"].tolist() == [1, 2, 1, 2, 2, 1, 2, 1]
700+
701+
output_predict_no_pbc = tobac.linking_trackpy(
702+
test_features, None, 1, 1, d_max=10, method_linking="predict"
703+
)
704+
705+
# Assert that without PBCs predictive tracking creates 4 cells because the d_max criteria is too small
706+
assert output_predict_no_pbc["cell"].tolist() == [1, 2, 1, 2, 3, 4, 3, 4]
707+
708+
output_predict_pbc = tobac.linking_trackpy(
709+
test_features,
710+
None,
711+
1,
712+
1,
713+
d_max=10,
714+
method_linking="predict",
715+
PBC_flag="hdim_1",
716+
min_h1=0,
717+
max_h1=100,
718+
min_h2=0,
719+
max_h2=100,
720+
)
721+
722+
# Assert with PBCs and prdictive tracking the cells should cross the border
723+
assert output_predict_pbc["cell"].tolist() == [1, 2, 1, 2, 1, 2, 1, 2]

tobac/tracking.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,7 @@ def linking_trackpy(
385385
link_strategy="auto",
386386
adaptive_step=adaptive_step,
387387
adaptive_stop=adaptive_stop,
388-
# dist_func=dist_func
388+
dist_func=dist_func
389389
# copy_features=False, diagnostics=False,
390390
# hash_size=None, box_size=None, verify_integrity=True,
391391
# retain_index=False

0 commit comments

Comments
 (0)