Division Test Cases

To facilitate testing, we have provided a suite of canonical examples that cover the basic, simple scenarios that can occur in segmentation and tracking. Here we describe them and show visualizations of each case.

Metrics should test all the basic and division error cases. The examples are generated by functions in the tests/examples/ directory.

plot_matched([ex_graphs.empty_pred_div(1), ex_graphs.empty_gt_div(1)], "Empty Divisions")
../_images/0d8ce1fa4bdd7d7edb173f997861a32ca8590782cfcbd51964cd084d808c1cb0.png
plot_matched([ex_graphs.good_div(t) for t in [0, 1, 2]], "Correct Divisions")
../_images/ba7ecfcab6346bfd284434eee7fade15e56172fe0e85e7e379c87255c70c8213.png
plot_matched([ex_graphs.fp_div(t) for t in [0, 1]], "False Positive Division")
../_images/1c8b96608bf46aa9506985a139698cbf14ff1e99a69644b9c33ce0b1b049836b.png
plot_matched([ex_graphs.one_child(t) for t in [0, 1]], "Only One Child")
../_images/6ba6a30dd9b762fdff11f270681b7036a157cafdbf0e24067612baca923a3432.png
plot_matched([ex_graphs.no_children(t) for t in [0, 1]], "No Children")
../_images/f66a19e4a80418ac548cf05475a3dfefd0f75e3bfd005d75c756ad3998e65ad9.png
plot_matched([ex_graphs.wrong_child(t) for t in [0, 1]], "Incorrect Child")
../_images/1077c9092e8b590f7d58601c13724428957891c522654a15e1d6543a2999f52c.png
plot_matched([ex_graphs.wrong_children(t) for t in [0, 1]], "Incorrect Children")
../_images/1114eb6fabfbd71416e42d29b99670245a900c891ecc0d01abc576ab5222ba81.png
plot_matched([ex_graphs.div_daughter_gap(), ex_graphs.div_daughter_dual_gap()], "Skip edge divisions")
../_images/1407c53158db2be7ea4bae09ab54460bc66d0447ab1553e1274f22a289c1a18c.png

Shifted Division Cases

plot_matched([ex_graphs.div_parent_gap(), ex_graphs.div_parent_daughter_gap(), ex_graphs.div_shifted_one_side_skip()], "Skip edge shifted divisions")
../_images/5bfdf4407fcf807f276ce7c3f406e0f96857ff2f47252a8682ef032d9592cc09.png
plot_matched([ex_graphs.div_1early_end(), ex_graphs.div_1early_mid()], "1 Frame Early")
../_images/9ebb1cbea17b1b1783b82df452013aa9a563ac58e4653d0a2bc58c89ebc583bb.png
plot_matched([ex_graphs.div_2early_end(), ex_graphs.div_2early_mid()], "2 Frames Early")
../_images/e3de4eb7bea12f3d36712b37382aec91d41534ea9e42a5fd704c4953341c9b7c.png
plot_matched([ex_graphs.div_1late_end(), ex_graphs.div_1late_mid()], "1 Frame Late")
../_images/13c224c714be2def4ce7ee31bb4ac9df034ee71300255ce76a95373c3ee94681.png
plot_matched([ex_graphs.div_2late_end(), ex_graphs.div_2late_mid()], "2 Frames Late")
../_images/a42b19580e839bb9071f335c487310160fb2cb737c775af402be4e7286ca1922.png
plot_matched([ex_graphs.div_shift_min_match()], "Minimal matching for shifted divisions")
../_images/c5f8523cadf75b93c1a2ba510b043e1b87c660701eef49075f87d27be439b707.png
plot_matched(
    [ex_graphs.div_shift_bad_match_pred(), ex_graphs.div_shift_bad_match_daughter()],
    "Insufficient matching for shifted divisions",
)
../_images/5da57ca8ecb6e49aab21eb455dc11fad11494d28dab4336cbd72a2bf3ca8c5df.png