From 182759929cf286b0ad58b1c6314758e5e367acda Mon Sep 17 00:00:00 2001 From: Morgan Schwartz Date: Tue, 10 Dec 2024 12:03:32 -0500 Subject: [PATCH 1/4] Add tests cases to docs using example notebook --- docs/source/examples/test-cases.nblink | 3 + docs/source/index.rst | 2 +- .../matched_graph/Empty Ground Truth.svg | 993 ---------- .../matched_graph/Empty Prediction.svg | 991 ---------- .../matched_graph/False Negative Edge.svg | 1402 --------------- .../matched_graph/False Negative Node.svg | 1599 ----------------- .../matched_graph/False Positive Edge.svg | 1402 --------------- .../matched_graph/False Positive Node.svg | 1563 ---------------- .../matched_graph/Good Matching.svg | 1064 ----------- .../One Ground Truth to Two Predictions.svg | 1595 ---------------- .../Two Ground Truth to One Prediction.svg | 1563 ---------------- .../segmentation/2d/False Negative.svg | 1119 ------------ .../segmentation/2d/False Positive.svg | 1072 ----------- .../segmentation/2d/Good Segmentation.png | Bin 15505 -> 0 bytes .../segmentation/2d/Good Segmentation.svg | 1161 ------------ .../segmentation/2d/Oversegmentation.svg | 1174 ------------ .../segmentation/2d/Undersegmentation.svg | 1161 ------------ .../test_cases/segmentation/2d/good_seg.png | Bin 12899 -> 0 bytes docs/source/test_cases/test_description.rst | 33 - docs/write_graph_test_cases.py | 105 -- docs/write_seg_test_cases.py | 51 - examples/test-cases.ipynb | 458 +++++ tests/examples/example_matched_graphs.py | 18 +- tests/examples/example_segmentations.py | 11 - 24 files changed, 471 insertions(+), 18069 deletions(-) create mode 100644 docs/source/examples/test-cases.nblink delete mode 100644 docs/source/test_cases/matched_graph/Empty Ground Truth.svg delete mode 100644 docs/source/test_cases/matched_graph/Empty Prediction.svg delete mode 100644 docs/source/test_cases/matched_graph/False Negative Edge.svg delete mode 100644 docs/source/test_cases/matched_graph/False Negative Node.svg delete mode 100644 docs/source/test_cases/matched_graph/False Positive Edge.svg delete mode 100644 docs/source/test_cases/matched_graph/False Positive Node.svg delete mode 100644 docs/source/test_cases/matched_graph/Good Matching.svg delete mode 100644 docs/source/test_cases/matched_graph/One Ground Truth to Two Predictions.svg delete mode 100644 docs/source/test_cases/matched_graph/Two Ground Truth to One Prediction.svg delete mode 100644 docs/source/test_cases/segmentation/2d/False Negative.svg delete mode 100644 docs/source/test_cases/segmentation/2d/False Positive.svg delete mode 100644 docs/source/test_cases/segmentation/2d/Good Segmentation.png delete mode 100644 docs/source/test_cases/segmentation/2d/Good Segmentation.svg delete mode 100644 docs/source/test_cases/segmentation/2d/Oversegmentation.svg delete mode 100644 docs/source/test_cases/segmentation/2d/Undersegmentation.svg delete mode 100644 docs/source/test_cases/segmentation/2d/good_seg.png delete mode 100644 docs/source/test_cases/test_description.rst delete mode 100644 docs/write_graph_test_cases.py delete mode 100644 docs/write_seg_test_cases.py create mode 100644 examples/test-cases.ipynb diff --git a/docs/source/examples/test-cases.nblink b/docs/source/examples/test-cases.nblink new file mode 100644 index 00000000..8d3d8a3b --- /dev/null +++ b/docs/source/examples/test-cases.nblink @@ -0,0 +1,3 @@ +{ + "path": "../../../examples/test-cases.ipynb" +} \ No newline at end of file diff --git a/docs/source/index.rst b/docs/source/index.rst index 395beb32..7ee4f43a 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -7,7 +7,7 @@ :caption: Examples: examples/ctc - test_cases/test_description + examples/test-cases .. toctree:: :maxdepth: 2 diff --git a/docs/source/test_cases/matched_graph/Empty Ground Truth.svg b/docs/source/test_cases/matched_graph/Empty Ground Truth.svg deleted file mode 100644 index d8a17ea2..00000000 --- a/docs/source/test_cases/matched_graph/Empty Ground Truth.svg +++ /dev/null @@ -1,993 +0,0 @@ - - - - - - - - 2024-09-18T15:21:21.854409 - image/svg+xml - - - Matplotlib v3.9.1, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/source/test_cases/matched_graph/Empty Prediction.svg b/docs/source/test_cases/matched_graph/Empty Prediction.svg deleted file mode 100644 index f0d89e84..00000000 --- a/docs/source/test_cases/matched_graph/Empty Prediction.svg +++ /dev/null @@ -1,991 +0,0 @@ - - - - - - - - 2024-09-18T15:21:21.903671 - image/svg+xml - - - Matplotlib v3.9.1, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/source/test_cases/matched_graph/False Negative Edge.svg b/docs/source/test_cases/matched_graph/False Negative Edge.svg deleted file mode 100644 index 62416d33..00000000 --- a/docs/source/test_cases/matched_graph/False Negative Edge.svg +++ /dev/null @@ -1,1402 +0,0 @@ - - - - - - - - 2024-09-18T15:21:22.142712 - image/svg+xml - - - Matplotlib v3.9.1, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/source/test_cases/matched_graph/False Negative Node.svg b/docs/source/test_cases/matched_graph/False Negative Node.svg deleted file mode 100644 index 70e21e0f..00000000 --- a/docs/source/test_cases/matched_graph/False Negative Node.svg +++ /dev/null @@ -1,1599 +0,0 @@ - - - - - - - - 2024-09-18T15:21:22.035286 - image/svg+xml - - - Matplotlib v3.9.1, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/source/test_cases/matched_graph/False Positive Edge.svg b/docs/source/test_cases/matched_graph/False Positive Edge.svg deleted file mode 100644 index 12c1a3c3..00000000 --- a/docs/source/test_cases/matched_graph/False Positive Edge.svg +++ /dev/null @@ -1,1402 +0,0 @@ - - - - - - - - 2024-09-18T15:21:22.309195 - image/svg+xml - - - Matplotlib v3.9.1, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/source/test_cases/matched_graph/False Positive Node.svg b/docs/source/test_cases/matched_graph/False Positive Node.svg deleted file mode 100644 index b15162d4..00000000 --- a/docs/source/test_cases/matched_graph/False Positive Node.svg +++ /dev/null @@ -1,1563 +0,0 @@ - - - - - - - - 2024-09-18T15:21:22.231907 - image/svg+xml - - - Matplotlib v3.9.1, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/source/test_cases/matched_graph/Good Matching.svg b/docs/source/test_cases/matched_graph/Good Matching.svg deleted file mode 100644 index 3f57c462..00000000 --- a/docs/source/test_cases/matched_graph/Good Matching.svg +++ /dev/null @@ -1,1064 +0,0 @@ - - - - - - - - 2024-09-18T15:21:21.952469 - image/svg+xml - - - Matplotlib v3.9.1, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/source/test_cases/matched_graph/One Ground Truth to Two Predictions.svg b/docs/source/test_cases/matched_graph/One Ground Truth to Two Predictions.svg deleted file mode 100644 index 7bd3755e..00000000 --- a/docs/source/test_cases/matched_graph/One Ground Truth to Two Predictions.svg +++ /dev/null @@ -1,1595 +0,0 @@ - - - - - - - - 2024-09-18T15:21:22.492286 - image/svg+xml - - - Matplotlib v3.9.1, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/source/test_cases/matched_graph/Two Ground Truth to One Prediction.svg b/docs/source/test_cases/matched_graph/Two Ground Truth to One Prediction.svg deleted file mode 100644 index 51caa64c..00000000 --- a/docs/source/test_cases/matched_graph/Two Ground Truth to One Prediction.svg +++ /dev/null @@ -1,1563 +0,0 @@ - - - - - - - - 2024-09-18T15:21:22.397033 - image/svg+xml - - - Matplotlib v3.9.1, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/source/test_cases/segmentation/2d/False Negative.svg b/docs/source/test_cases/segmentation/2d/False Negative.svg deleted file mode 100644 index 7f15f32c..00000000 --- a/docs/source/test_cases/segmentation/2d/False Negative.svg +++ /dev/null @@ -1,1119 +0,0 @@ - - - - - - - - 2024-09-10T14:28:15.699311 - image/svg+xml - - - Matplotlib v3.9.2, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/source/test_cases/segmentation/2d/False Positive.svg b/docs/source/test_cases/segmentation/2d/False Positive.svg deleted file mode 100644 index b105fc78..00000000 --- a/docs/source/test_cases/segmentation/2d/False Positive.svg +++ /dev/null @@ -1,1072 +0,0 @@ - - - - - - - - 2024-09-10T14:28:15.619104 - image/svg+xml - - - Matplotlib v3.9.2, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/source/test_cases/segmentation/2d/Good Segmentation.png b/docs/source/test_cases/segmentation/2d/Good Segmentation.png deleted file mode 100644 index bd384dd9ab9ea5d457412cdbeffdb9f5f85bb42a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15505 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 bdz3Lf=7)k#pEHH7fWb;D-N?Rn`@#PJl5U*w diff --git a/docs/source/test_cases/segmentation/2d/Good Segmentation.svg b/docs/source/test_cases/segmentation/2d/Good Segmentation.svg deleted file mode 100644 index 59fad995..00000000 --- a/docs/source/test_cases/segmentation/2d/Good Segmentation.svg +++ /dev/null @@ -1,1161 +0,0 @@ - - - - - - - - 2024-09-10T14:28:15.530626 - image/svg+xml - - - Matplotlib v3.9.2, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/source/test_cases/segmentation/2d/Oversegmentation.svg b/docs/source/test_cases/segmentation/2d/Oversegmentation.svg deleted file mode 100644 index 518c2b23..00000000 --- a/docs/source/test_cases/segmentation/2d/Oversegmentation.svg +++ /dev/null @@ -1,1174 +0,0 @@ - - - - - - - - 2024-09-10T14:28:15.780199 - image/svg+xml - - - Matplotlib v3.9.2, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/source/test_cases/segmentation/2d/Undersegmentation.svg b/docs/source/test_cases/segmentation/2d/Undersegmentation.svg deleted file mode 100644 index 596d6939..00000000 --- a/docs/source/test_cases/segmentation/2d/Undersegmentation.svg +++ /dev/null @@ -1,1161 +0,0 @@ - - - - - - - - 2024-09-10T14:28:15.862769 - image/svg+xml - - - Matplotlib v3.9.2, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/source/test_cases/segmentation/2d/good_seg.png b/docs/source/test_cases/segmentation/2d/good_seg.png deleted file mode 100644 index b68c7513b61077221ebb0b7e44741d4c2c397185..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12899 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 SbuCbmh}wD0bGgdqcmE3^Z(CLX diff --git a/docs/source/test_cases/test_description.rst b/docs/source/test_cases/test_description.rst deleted file mode 100644 index db256304..00000000 --- a/docs/source/test_cases/test_description.rst +++ /dev/null @@ -1,33 +0,0 @@ -Description of Unit Test Canonical Examples -=========================================== - -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. - -Matchers should test all the segmentation cases. Metrics should test all the -tracking cases. The examples are generated by functions in the `tests/examples/` -directory. - -Segmentation Canonical Examples -------------------------------- - -.. image:: segmentation/2d/Good\ Segmentation.svg -.. image:: segmentation/2d/False\ Negative.svg -.. image:: segmentation/2d/False\ Positive.svg -.. image:: segmentation/2d/Oversegmentation.svg -.. image:: segmentation/2d/Undersegmentation.svg - - -Matched Graph Canonical Examples --------------------------------- - -.. image:: matched_graph/Good\ Matching.svg -.. image:: matched_graph/False\ Negative\ Node.svg -.. image:: matched_graph/False\ Negative\ Edge.svg -.. image:: matched_graph/False\ Positive\ Node.svg -.. image:: matched_graph/False\ Positive\ Edge.svg -.. image:: matched_graph/Two\ Ground\ Truth\ to\ One\ Prediction.svg -.. image:: matched_graph/One\ Ground\ Truth\ to\ Two\ Predictions.svg -.. image:: matched_graph/Empty\ Ground\ Truth.svg -.. image:: matched_graph/Empty\ Prediction.svg \ No newline at end of file diff --git a/docs/write_graph_test_cases.py b/docs/write_graph_test_cases.py deleted file mode 100644 index 0359616a..00000000 --- a/docs/write_graph_test_cases.py +++ /dev/null @@ -1,105 +0,0 @@ -import sys - -from traccuracy._tracking_graph import TrackingGraph - -sys.path.append("../tests/examples") -from pathlib import Path - -import matplotlib.pyplot as plt -from example_matched_graphs import ( - empty_gt, - empty_pred, - fn_edge_matched, - fn_node_matched, - fp_edge_matched, - fp_node_matched, - good_matched, - one_to_two, - two_to_one, -) -from matplotlib.patches import Patch - - -def get_loc(graph, node): - return graph.graph.nodes[node]["t"], graph.graph.nodes[node]["y"] - - -def plot_graph(ax, graph: TrackingGraph, color="black"): - if graph.graph.number_of_nodes() == 0: - return 0 - ids = list(graph.graph.nodes) - print(ids) - x = [graph.graph.nodes[node]["t"] for node in ids] - y = [graph.graph.nodes[node]["y"] for node in ids] - ax.scatter(x, y, color=color) - for _x, _y, _id in zip(x, y, ids): - ax.text(_x + 0.05, _y + 0.05, str(_id)) - - for u, v in graph.graph.edges(): - print(u, v) - xs = [graph.graph.nodes[u]["t"], graph.graph.nodes[v]["t"]] - ys = [graph.graph.nodes[u]["y"], graph.graph.nodes[v]["y"]] - ax.plot(xs, ys, color=color) - - return max(y) - - -def plot_matching(ax, matched, color="grey"): - for u, v in matched.mapping: - xs = [ - matched.gt_graph.graph.nodes[u]["t"], - matched.pred_graph.graph.nodes[v]["t"], - ] - ys = [ - matched.gt_graph.graph.nodes[u]["y"], - matched.pred_graph.graph.nodes[v]["y"], - ] - ax.plot(xs, ys, color=color, linestyle="dashed") - - -def save_matched(examples, title): - gt_color = "black" - pred_color = "blue" - mapping_color = "grey" - fig, ax = plt.subplots(1, len(examples) + 1, figsize=(3 * len(examples) + 1, 2)) - for i, matched in enumerate(examples): - axis = ax[i] - maxY = plot_graph(axis, matched.gt_graph, color=gt_color) - maxY = max([maxY, plot_graph(axis, matched.pred_graph, color=pred_color)]) - plot_matching(axis, matched, color=mapping_color) - axis.set_ybound(-0.5, maxY + 0.5) - axis.set_xbound(-0.5, 2.5) - axis.set_ylabel("Y Value") - axis.set_xlabel("Time") - - handles = [ - Patch(color=gt_color), - Patch(color=pred_color), - Patch(color=mapping_color), - ] - labels = ["Ground Truth", "Prediction", "Mapping"] - ax[-1].legend(handles=handles, labels=labels, loc="center") - ax[-1].set_axis_off() - fig.tight_layout() - fig.suptitle(title) - fig.savefig(outpath) - - -if __name__ == "__main__": - graph_examples = { - "Empty Ground Truth": [empty_gt()], - "Empty Prediction": [empty_pred()], - "Good Matching": [good_matched()], - "False Negative Node": [fn_node_matched(t) for t in [0, 1, 2]], - "False Negative Edge": [fn_edge_matched(t) for t in [0, 1]], - "False Positive Node": [fp_node_matched(t) for t in [0, 1, 2]], - "False Positive Edge": [fp_edge_matched(t) for t in [0, 1]], - "Two Ground Truth to One Prediction": [two_to_one(t) for t in [0, 1, 2]], - "One Ground Truth to Two Predictions": [one_to_two(t) for t in [0, 1, 2]], - } - outdir = Path("source/test_cases/matched_graph/") - print(outdir.exists()) - for name, matched in graph_examples.items(): - print(name) - outpath = outdir / f"{name}.svg" - save_matched(matched, name) diff --git a/docs/write_seg_test_cases.py b/docs/write_seg_test_cases.py deleted file mode 100644 index 15683716..00000000 --- a/docs/write_seg_test_cases.py +++ /dev/null @@ -1,51 +0,0 @@ -import sys - -sys.path.append("../tests/examples") -from pathlib import Path - -import matplotlib.pyplot as plt -import numpy as np -from example_segmentations import ( - false_negative_segmentation_2d, - false_positive_segmentation_2d, - good_segmentation_2d, - oversegmentation_2d, - undersegmentation_2d, -) -from matplotlib.colors import ListedColormap -from matplotlib.patches import Patch - - -def save_pair(gt, pred, outpath, title): - max_label = np.max([gt, pred]) - colors = ["black", "red", "blue", "green"] - colormap = ListedColormap(colors) - fig, ax = plt.subplots(1, 2, figsize=(6, 4)) - ax[0].imshow(gt, cmap=colormap, vmax=4) - ax[0].set_title("Ground Truth") - # ax[0].set_axis_off() - ax[1].imshow(pred, cmap=colormap, vmax=4) - ax[1].set_title("Predicted") - - handles = [Patch(color=colors[i]) for i in range(1, max_label + 1)] - labels = [str(i) for i in range(1, max_label + 1)] - ax[1].legend(handles=handles, labels=labels, title="Label IDs", loc="upper right") - fig.suptitle(title) - fig.tight_layout() - fig.savefig(outpath) - - -if __name__ == "__main__": - two_d_examples = { - "Good Segmentation": good_segmentation_2d(), - "False Positive": false_positive_segmentation_2d(), - "False Negative": false_negative_segmentation_2d(), - "Oversegmentation": oversegmentation_2d(), - "Undersegmentation": undersegmentation_2d(), - } - outdir = Path("source/test_cases/segmentation/2d") - print(outdir.exists()) - for name, arrs in two_d_examples.items(): - outpath = outdir / f"{name}.svg" - gt, pred = arrs - save_pair(gt, pred, outpath, name) diff --git a/examples/test-cases.ipynb b/examples/test-cases.ipynb new file mode 100644 index 00000000..9f872ffa --- /dev/null +++ b/examples/test-cases.ipynb @@ -0,0 +1,458 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Standard Test Cases" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "\n", + "from traccuracy._tracking_graph import TrackingGraph\n", + "\n", + "sys.path.append(\"../tests/examples\")\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from example_matched_graphs import (\n", + " empty_gt,\n", + " empty_pred,\n", + " fn_edge_matched,\n", + " fn_node_matched,\n", + " fp_edge_matched,\n", + " fp_node_matched,\n", + " good_matched,\n", + " one_to_two,\n", + " two_to_one,\n", + ")\n", + "from example_segmentations import (\n", + " false_negative_segmentation_2d,\n", + " false_positive_segmentation_2d,\n", + " good_segmentation_2d,\n", + " oversegmentation_2d,\n", + " undersegmentation_2d,\n", + ")\n", + "from matplotlib.colors import ListedColormap\n", + "from matplotlib.patches import Patch" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "nbsphinx": "hidden" + }, + "outputs": [], + "source": [ + "def get_loc(graph, node):\n", + " return graph.graph.nodes[node][\"t\"], graph.graph.nodes[node][\"y\"]\n", + "\n", + "\n", + "def plot_graph(ax, graph: TrackingGraph, color=\"black\"):\n", + " if graph.graph.number_of_nodes() == 0:\n", + " return 0\n", + " ids = list(graph.graph.nodes)\n", + " x = [graph.graph.nodes[node][\"t\"] for node in ids]\n", + " y = [graph.graph.nodes[node][\"y\"] for node in ids]\n", + " ax.scatter(x, y, color=color)\n", + " for _x, _y, _id in zip(x, y, ids):\n", + " ax.text(_x + 0.05, _y + 0.05, str(_id))\n", + "\n", + " for u, v in graph.graph.edges():\n", + " xs = [graph.graph.nodes[u][\"t\"], graph.graph.nodes[v][\"t\"]]\n", + " ys = [graph.graph.nodes[u][\"y\"], graph.graph.nodes[v][\"y\"]]\n", + " ax.plot(xs, ys, color=color)\n", + "\n", + " return max(y)\n", + "\n", + "\n", + "def plot_matching(ax, matched, color=\"grey\"):\n", + " for u, v in matched.mapping:\n", + " xs = [\n", + " matched.gt_graph.graph.nodes[u][\"t\"],\n", + " matched.pred_graph.graph.nodes[v][\"t\"],\n", + " ]\n", + " ys = [\n", + " matched.gt_graph.graph.nodes[u][\"y\"],\n", + " matched.pred_graph.graph.nodes[v][\"y\"],\n", + " ]\n", + " ax.plot(xs, ys, color=color, linestyle=\"dashed\")\n", + "\n", + "\n", + "def plot_matched(examples, title):\n", + " gt_color = \"black\"\n", + " pred_color = \"blue\"\n", + " mapping_color = \"grey\"\n", + " fig, ax = plt.subplots(1, len(examples) + 1, figsize=(3 * len(examples) + 1, 2))\n", + " for i, matched in enumerate(examples):\n", + " axis = ax[i]\n", + " maxY = plot_graph(axis, matched.gt_graph, color=gt_color)\n", + " maxY = max([maxY, plot_graph(axis, matched.pred_graph, color=pred_color)])\n", + " plot_matching(axis, matched, color=mapping_color)\n", + " axis.set_ybound(-0.5, maxY + 0.5)\n", + " axis.set_xbound(-0.5, 2.5)\n", + " axis.set_ylabel(\"Y Value\")\n", + " axis.set_xlabel(\"Time\")\n", + "\n", + " handles = [\n", + " Patch(color=gt_color),\n", + " Patch(color=pred_color),\n", + " Patch(color=mapping_color),\n", + " ]\n", + " labels = [\"Ground Truth\", \"Prediction\", \"Mapping\"]\n", + " ax[-1].legend(handles=handles, labels=labels, loc=\"center\")\n", + " ax[-1].set_axis_off()\n", + " plt.tight_layout()\n", + " fig.suptitle(title, y=1.05)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Graph Cases" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_matched([empty_gt()], \"Empty Ground Truth\")" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAADXCAYAAAAN8rb3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA3e0lEQVR4nO3dd1gU1/oH8O/uAktfQLp0MdgFQRFLxIiAGoMxsUUFlKtJBCPBEkiMYC+giV5rzBW8RqMxltiiclHsIqLGhqhExAJYkEUg0vb8/vBhfq4Ud3BhWXw/z7OP7pkzZ95ZF15nzplzBIwxBkIIIURBQlUHQAghRL1Q4iCEEMILJQ5CCCG8UOIghBDCCyUOQgghvFDiIIQQwgslDkIIIbxQ4iCEEMILJQ5CCCG8UOIgRMWysrIgEAiQkJDAlcXExEAgECjtGMnJyRAIBEhOTlZam+TdRYmD1CghIQECgaDW19mzZxs9puvXryMmJgZZWVlKbTc4OFju3AwNDdG5c2csXboUpaWlSj1WQ1u9erVcAiKkIWioOgDStM2ZMweOjo7Vyp2dnRs9luvXr2P27Nnw9vaGg4ODUtsWi8X4+eefAQAFBQXYsWMHpk2bhtTUVGzdulWpx1LEzJkzERkZyXu/1atXw9TUFMHBwXLl77//Pv755x9oaWkpKULyLqPEQeo0YMAAeHh4qDqMBqehoYExY8Zw7ydNmgRPT09s27YNy5Ytg7W1dbV9GGN48eIFdHR0GiQeDQ3l/XgKhUJoa2srrT3ybqNbVeStVN2fj4uLw6pVq+Dk5ARdXV34+vri3r17YIxh7ty5sLGxgY6ODgICApCfny/XhoODAz788EMcPnwYrq6u0NbWRrt27bBz506uTkJCAoYNGwYA6Nu3L3dbKTk5GUFBQTA1NUV5eXm1+Hx9feHi4sL7vIRCIby9vblzfDXOQ4cOwcPDAzo6Oli3bh2Al1cp4eHhsLW1hVgshrOzMxYvXgyZTCbXbkFBAYKDgyGRSGBkZISgoCAUFBRUO35tfRy//PILunXrBl1dXRgbG+P999/H4cOHufiuXbuGY8eOcZ9P1TnU1sexfft2uLu7Q0dHB6amphgzZgwePHggVyc4OBj6+vp48OABhgwZAn19fZiZmWHatGmorKzk+cmS5oASB6mTVCrFkydP5F5Pnz6tVm/z5s1YvXo1Jk+ejKlTp+LYsWMYPnw4Zs6ciYMHD+Kbb77BxIkTsXfvXkybNq3a/rdu3cKIESMwYMAALFy4EBoaGhg2bBgSExMBvLzV8tVXXwEAvv32W2zatAmbNm1C27ZtMXbsWDx9+hSHDh2SazM3NxdHjhyRu5LgIzMzEwDQokULriwjIwOjRo1C//79sXz5cri6uqKkpAR9+vTBL7/8gsDAQKxYsQI9e/ZEVFQUIiIiuH0ZYwgICMCmTZswZswYzJs3D/fv30dQUJBC8cyePRtjx46FpqYm5syZg9mzZ8PW1hZHjhwBAPz444+wsbFBmzZtuM/nu+++q7W9hIQEDB8+HCKRCAsXLsSECROwc+dO9OrVq1oyq6yshJ+fH1q0aIG4uDj06dMHS5cuxU8//aTox0maE0ZIDeLj4xmAGl9isZird+fOHQaAmZmZsYKCAq48KiqKAWCdO3dm5eXlXPmoUaOYlpYWe/HiBVdmb2/PALAdO3ZwZVKplFlZWTE3NzeubPv27QwAO3r0qFyslZWVzMbGho0YMUKufNmyZUwgELC///67znMNCgpienp67PHjx+zx48fs9u3bbMGCBUwgELBOnTpVi/PgwYNy+8+dO5fp6emxmzdvypVHRkYykUjEsrOzGWOM7d69mwFgS5Ys4epUVFSw3r17MwAsPj6eK4+Ojmav/njeunWLCYVC9vHHH7PKykq548hkMu7v7du3Z3369Kl2jkePHpX77MrKypi5uTnr0KED++eff7h6+/btYwDYrFmz5D4fAGzOnDlybbq5uTF3d/dqxyLNH11xkDqtWrUKiYmJcq8///yzWr1hw4ZBIpFw7z09PQEAY8aMkbtX7+npibKysmq3Q6ytrfHxxx9z7w0NDREYGIiLFy8iNze3zhiFQiFGjx6NPXv24Pnz51z55s2b0aNHjxo7919XXFwMMzMzmJmZwdnZGd9++y28vLywa9cuuXqOjo7w8/OTK9u+fTt69+4NY2NjuSszHx8fVFZW4vjx4wCAAwcOQENDA19++SW3r0gkwuTJk98Y3+7duyGTyTBr1iwIhfI/tvUZtnv+/Hk8evQIkyZNkuv7GDRoENq0aYP9+/dX2+eLL76Qe9+7d2/8/fffvI9N1B91jpM6devWTaHOcTs7O7n3VUnE1ta2xvJnz57JlTs7O1f7Bfjee+8BeNnHYGlpWefxAwMDsXjxYuzatQuBgYHIyMhAWloa1q5d+8bYAUBbWxt79+4F8HKElaOjI2xsbKrVqykJ3bp1C5cvX4aZmVmNbT969AgAcPfuXVhZWUFfX19uuyJ9MJmZmRAKhWjXrt0b6yri7t27tR67TZs2OHnypFyZtrZ2tfMzNjau9u9I3g2UOIhSiEQiXuVMySsWt2vXDu7u7lw/wy+//AItLS0MHz5cof1FIhF8fHzeWK+mEVQymQz9+/fHjBkzatynKgGqs9r+Hcm7iRIHaRJu374NxpjcVcfNmzcBgHtm4023ZAIDAxEREYGcnBxs2bIFgwYNgrGxcYPFXKVVq1YoKip6Y+Kxt7dHUlISioqK5K46MjIyFDqGTCbD9evX4erqWms9RW9b2dvbc8f+4IMP5LZlZGRw2wmpCfVxkCbh4cOHcv0JhYWF+O9//wtXV1fuNpWenh4A1Dh8FQBGjRoFgUCAKVOm4O+//673aCq+hg8fjjNnzlQb1QW8jLWiogIAMHDgQFRUVGDNmjXc9srKSvz73/9+4zGGDBkCoVCIOXPmVBvi++rVm56eXq2fz6s8PDxgbm6OtWvXyj0d/+effyI9PR2DBg16Yxvk3UVXHKROf/75J27cuFGtvEePHnByclLacd577z2EhIQgNTUVFhYW2LBhA/Ly8hAfH8/VcXV1hUgkwuLFiyGVSiEWi/HBBx/A3NwcAGBmZgZ/f39s374dRkZGjfbLb/r06dizZw8+/PBDBAcHw93dHcXFxbhy5Qp+//13ZGVlwdTUFIMHD0bPnj0RGRmJrKws7lkVqVT6xmM4Ozvju+++w9y5c9G7d28MHToUYrEYqampsLa2xsKFCwEA7u7uWLNmDebNmwdnZ2eYm5tXu6IAAE1NTSxevBjjxo1Dnz59MGrUKOTl5WH58uVwcHDA119/rfTPiTQjKh7VRZqouobj4pWho1XDcWNjY+X2rxr+uX379hrbTU1N5crs7e3ZoEGD2KFDh1inTp2YWCxmbdq0qbYvY4ytX7+eOTk5MZFIVOPQ3N9++40BYBMnTlT4XKuG475JVZw1ef78OYuKimLOzs5MS0uLmZqash49erC4uDhWVlbG1Xv69CkbO3YsMzQ0ZBKJhI0dO5ZdvHjxjcNxq2zYsIG5ubkxsVjMjI2NWZ8+fVhiYiK3PTc3lw0aNIgZGBgwANzQ3NeH41bZtm0b156JiQkbPXo0u3//vkKfT20xkuZPwJiSeykJ4cnBwQEdOnTAvn373rqtP/74A0OGDMHx48fRu3dvJURHCHkd9XGQZmX9+vVwcnJCr169VB0KIc0W9XGQZmHr1q24fPky9u/fj+XLlyt1LQtCiDxKHKRZGDVqFPT19RESEoJJkyapOhxCmjXq4yCEEMIL9XEQQgjhRe0Sx6pVq+Dg4ABtbW14enri3LlztdatafnT1xezYYxh1qxZsLKygo6ODnx8fHDr1q2GPg1CCFFbapU4tm3bhoiICERHR+PChQvo3Lkz/Pz8uEnkamJoaIicnBzuVTW5W5UlS5ZgxYoVWLt2LVJSUqCnpwc/Pz+8ePGioU+HEELUklr1cXh6eqJr165YuXIlgJeTy9na2mLy5Mk1rs+ckJCA8PDwWqdgYIzB2toaU6dO5RYXkkqlsLCwQEJCAkaOHNlg50IIIepKba44ysrKkJaWJjeRnFAohI+PD86cOVPrfkVFRbC3t4etrS0CAgJw7do1btudO3eQm5sr16ZEIoGnp2edbRJCyLtMbYbjPnnyBJWVlbCwsJArt7CwqHEuJeDlWgMbNmxAp06dIJVKERcXhx49euDatWuwsbHhFgiqqc26Fg8qLS2VmxhOJpMhPz8fLVq0oOcHSL0xxvD8+XNYW1tXW6yJkKZEbRJHfXh5ecHLy4t736NHD7Rt2xbr1q3D3Llz693uwoULMXv2bGWESEg19+7dq3ERKUKaCrVJHKamphCJRMjLy5Mrz8vLe+PqcFU0NTXh5uaG27dvAwC3X15eHqysrOTarGvNg6ioKERERHDvpVIp7OzscO/ePRgaGip6SoTIKSwshK2tLQwMDFQdCiF1UpvEoaWlBXd3dyQlJWHIkCEAXt4iSkpKQlhYmEJtVFZW4sqVKxg4cCCAl8uAWlpaIikpiUsUhYWFSElJkVsX+nVisRhisbhauaGhISUO8tbodidp6tQmcQBAREQEgoKC4OHhgW7duuHHH39EcXExxo0bB+DlCnAtW7bk1iaYM2cOunfvDmdnZxQUFCA2NhZ3797Fv/71LwAvf0DDw8Mxb948tG7dGo6Ojvj+++9hbW3NJSdCCCHy1CpxjBgxAo8fP8asWbOQm5sLV1dXHDx4kOvczs7OlutUfPbsGSZMmIDc3FwYGxvD3d0dp0+fRrt27bg6M2bMQHFxMSZOnIiCggL06tULBw8erPagICGEkJfU6jmOpqqwsBASiQRSqZRuVZF6o+8RURc05o8QQggvlDgIIYTwQomDEEIIL5Q4CCGE8EKJgxBCCC+UOAghhPBCiYMQQggvlDgIIYTwQomDEEIIL5Q4CCGE8EKJgxBCCC+UOAghhPBCiYMQQggvlDgIIYTwQomDEEIIL5Q4CCGE8EKJgxBCCC+UOAghhPBCiYMQQggvlDgIIYTwQomDEEIIL2qXOFatWgUHBwdoa2vD09MT586dq7Xu+vXr0bt3bxgbG8PY2Bg+Pj7V6gcHB0MgEMi9/P39G/o0CCFEbalV4ti2bRsiIiIQHR2NCxcuoHPnzvDz88OjR49qrJ+cnIxRo0bh6NGjOHPmDGxtbeHr64sHDx7I1fP390dOTg73+vXXXxvjdAghRC0JGGNM1UEoytPTE127dsXKlSsBADKZDLa2tpg8eTIiIyPfuH9lZSWMjY2xcuVKBAYGAnh5xVFQUIDdu3fXO67CwkJIJBJIpVIYGhrWux3yblP296iyshLl5eVKiIw0V5qamhCJRLz302iAWBpEWVkZ0tLSEBUVxZUJhUL4+PjgzJkzCrVRUlKC8vJymJiYyJUnJyfD3NwcxsbG+OCDDzBv3jy0aNFCqfET0lgYY8jNzUVBQYGqQyFqwMjICJaWlhAIBArvozaJ48mTJ6isrISFhYVcuYWFBW7cuKFQG9988w2sra3h4+PDlfn7+2Po0KFwdHREZmYmvv32WwwYMABnzpypNROXlpaitLSUe19YWFiPMyKkYVQlDXNzc+jq6vL6hUDeHYwxlJSUcLf6raysFN5XbRLH21q0aBG2bt2K5ORkaGtrc+UjR47k/t6xY0d06tQJrVq1QnJyMvr161djWwsXLsTs2bMbPGZC+KqsrOSSBl01kzfR0dEBADx69Ajm5uYK37ZSm85xU1NTiEQi5OXlyZXn5eXB0tKyzn3j4uKwaNEiHD58GJ06daqzrpOTE0xNTXH79u1a60RFRUEqlXKve/fuKX4ihDSgqj4NXV1dFUdC1EXVd4VPf5jaJA4tLS24u7sjKSmJK5PJZEhKSoKXl1et+y1ZsgRz587FwYMH4eHh8cbj3L9/H0+fPq3zsk0sFsPQ0FDuRUhTQreniKLq811Rm8QBABEREVi/fj02btyI9PR0fPnllyguLsa4ceMAAIGBgXKd54sXL8b333+PDRs2wMHBAbm5ucjNzUVRUREAoKioCNOnT8fZs2eRlZWFpKQkBAQEwNnZGX5+fio5R0KI+omJiYGrq6uqwwAAeHt7Izw8vEGPoVZ9HCNGjMDjx48xa9Ys5ObmwtXVFQcPHuQ6zLOzsyEU/n8uXLNmDcrKyvDpp5/KtRMdHY2YmBiIRCJcvnwZGzduREFBAaytreHr64u5c+dCLBY36rkR0tCys7Px5MmTRjueqakp7OzseO2Tm5uLhQsXYv/+/bh//z4kEgmcnZ0xZswYBAUFqeUtuJiYmDf2idbnqYjk5GT07dsXz549g5GRUT2jqx+1ShwAEBYWhrCwsBq3JScny73Pysqqsy0dHR0cOnRISZER0nRlZ2fDxcUFL168aLRjamtrIyMjQ+Hk8ffff6Nnz54wMjLCggUL0LFjR4jFYly5cgU//fQTWrZsiY8++qjGfcvLy6GpqanM8JVm2rRp+OKLL7j3Xbt2xcSJEzFhwoQa65eVlUFLS6uxwqsXtbpVRQipnydPnjRq0gCAFy9e8LrCmTRpEjQ0NHD+/HkMHz4cbdu2hZOTEwICArB//34MHjyYqysQCLBmzRp89NFH0NPTw/z58wG8vMvQqlUraGlpwcXFBZs2beL2ycrKgkAgwKVLl7iygoICCAQC7j+dycnJEAgESEpKgoeHB3R1ddGjRw9kZGTIxbpo0SJYWFjAwMAAISEhdX62+vr6sLS05F4ikQgGBgbc+5EjRyIsLAzh4eEwNTWFn5/fG2PNyspC3759AQDGxsYQCAQIDg7m6spkMsyYMQMmJiawtLRETEyMwv8Oiqh34igrK0NGRgYqKiqUGQ8h5B309OlTHD58GKGhodDT06uxzuuduDExMfj4449x5coVjB8/Hrt27cKUKVMwdepUXL16FZ9//jnGjRuHo0eP8o7nu+++w9KlS3H+/HloaGhg/Pjx3LbffvsNMTExWLBgAc6fPw8rKyusXr2a9zFetXHjRmhpaeHUqVNYu3btG+vb2tpix44dAICMjAzk5ORg+fLlcu3p6ekhJSUFS5YswZw5c5CYmPhWMb6Kd+IoKSlBSEgIdHV10b59e2RnZwMAJk+ejEWLFiktMELIu+P27dtgjMHFxUWu3NTUFPr6+tDX18c333wjt+2zzz7DuHHj4OTkBDs7O8TFxSE4OBiTJk3Ce++9h4iICAwdOhRxcXG845k/fz769OmDdu3aITIyEqdPn+auKn788UeEhIQgJCQELi4umDdvHtq1a1f/kwfQunVrLFmyBC4uLtU+g5qIRCJuBgxzc3NYWlpCIpFw2zt16oTo6Gi0bt0agYGB8PDwkBuR+rZ4J46oqCj89ddf1R6k8/HxwbZt25QWGCGEnDt3DpcuXUL79u3lZmsAUG14fXp6Onr27ClX1rNnT6Snp/M+7qvPe1UNza96wjo9PR2enp5y9et6JEAR7u7ub7X/615/Xs3KyqrWyWDrg3fn+O7du7Ft2zZ0795d7tKxffv2yMzMVFpghJB3h7OzMwQCQbW+BCcnJwD//4Tzq2q7pVWbqhGXr45gqu2ht1c72qt+z8lkMl7H4+P1c+ETa01eHyggEAiUGj/vK47Hjx/D3Ny8WnlxcTE9dEQIqZcWLVqgf//+WLlyJYqLi+vVRtu2bXHq1Cm5slOnTnG3kczMzAAAOTk53PZXO5/5HCclJUWu7OzZs7zbqYsisVaNvKqsrFTqsRXB+4rDw8MD+/fvx+TJkwH8fzb++eef3/pyjRDy7lq9ejV69uwJDw8PxMTEoFOnThAKhUhNTcWNGzfeeDtn+vTpGD58ONzc3ODj44O9e/di586d+N///gfg5VVL9+7dsWjRIjg6OuLRo0eYOXMm7zinTJmC4OBgeHh4oGfPnti8eTOuXbvGXR0pgyKx2tvbQyAQYN++fRg4cCB0dHSgr6+vtBjqwjtxLFiwAAMGDMD169dRUVGB5cuX4/r16zh9+jSOHTvWEDESQt4BrVq1wsWLF7FgwQJERUXh/v37EIvFaNeuHaZNm4ZJkybVuf+QIUOwfPlyxMXFYcqUKXB0dER8fDy8vb25Ohs2bEBISAjc3d3h4uKCJUuWwNfXl1ecI0aMQGZmJmbMmIEXL17gk08+wZdffqn0Z8LeFGvLli0xe/ZsREZGYty4cQgMDERCQoJSY6hNvRZyyszMxKJFi/DXX3+hqKgIXbp0wTfffIOOHTs2RIxNHi3kRJRBGd+jFy9e4M6dO3B0dJQbvKIODwAS1ajtO1OXej053qpVK6xfv74+uxIlOX78OGJjY5GWloacnBzs2rULQ4YMUXVYClu4cCF27tyJGzduQEdHBz169MDixYsVGorYVKxZswZr1qzhZiho3749Zs2ahQEDBqg2sBrY2dkhIyOjyU85QtQD78RR9dxGbeiL0jiKi4vRuXNnjB8/HkOHDlV1OLwdO3YMoaGh6Nq1KyoqKvDtt9/C19cX169f5z1aRlVsbGywaNEitG7dGowxbNy4EQEBAbh48SLat2+v6vCqsbOzo59PohS8b1UJhcI6R0+poodf1VR9q0ogEKjdFcfrqkbrHTt2DO+//76qw6k3ExMTxMbGIiQkhPe+DXmripDaNMqtqosXL8q9Ly8vx8WLF7Fs2TJuvhhC+JJKpQBQbT14dVFZWYnt27ejuLiYRheSZo934ujcuXO1Mg8PD1hbWyM2NlYtb5sQ1ZLJZAgPD0fPnj3RoUMHVYfDy5UrV+Dl5YUXL15AX18fu3bteuvpJwhp6pQ2rbqLiwtSU1OV1Rx5h4SGhuLq1as4efKkqkPhzcXFBZcuXYJUKsXvv/+OoKAgHDt2jJIHadZ4J47CwkK594wx5OTkICYmBq1bt1ZaYOTdEBYWhn379uH48eOwsbFRdTi8aWlpwdnZGcDL+YZSU1OxfPlyrFu3TsWREdJweCcOIyOjap3jjDHY2tpi69atSguMNG+MMUyePBm7du1CcnIyHB0dVR2SUshksmqT8RHS3PBOHK/PbS8UCmFmZgZnZ2doaKjdgoJqq6ioCLdv3+be37lzB5cuXYKJiYlaDLkMDQ3Fli1b8Mcff8DAwAC5ubkAAIlEUuOEdk1RVFQUBgwYADs7Ozx//hxbtmxBcnIyrSpJmj9G3ppUKmUAmFQqbbRjHj16lAGo9goKCmq0GN5GTbEDYPHx8aoOTWHjx49n9vb2TEtLi5mZmbF+/fqxw4cP17s9ZXyP/vnnH3b9+nX2zz//1LuN5i4oKIgFBARw7/v06cOmTJnyVm0qow1Vqc93RqFLhD179iiciGpbE5gol7e3d70WuG8q1Dn2Kv/5z39UHQIv2dlAIz44DlNTgM/Fb3BwMDZu3Ajg5bTgdnZ2CAwMxLffftugdzN27typ8HrlycnJ6Nu3L549ewYjI6N6tdEcKPSvoeiDZQKB4J18ALAhVVZW4sSJE8jJyYGVlRV69+4NkUik6rB4UfdzUPf4gZdJw8UFaMxlx7W1gYwMfsnD398f8fHxKC0txYEDBxAaGgpNTU1ERUXJ1SsrK+OmFX9bynh2SF2fP6q3Brv+aSArV65k9vb2TCwWs27durGUlJQ66//222/MxcWFicVi1qFDB7Z//3657TKZjH3//ffM0tKSaWtrs379+rGbN2/yiqmhblXt2LGD2djYyN3KsbGxYTt27FDqcRqSup9DY8bfkLeq0tIYAxr/lZameOyv30JijLH+/fuz7t27c9vmzZvHrKysmIODA2OMsezsbDZs2DAmkUiYsbEx++ijj9idO3e4/SsqKtjXX3/NJBIJMzExYdOnT2eBgYF13qp68eIFmzFjBrOxsWFaWlqsVatW7Oeff2Z37typ9dbw623k5+ezsWPHMiMjI6ajo8P8/f3lfq/Ex8cziUTCDh48yNq0acP09PSYn58fe/jwoeIfmJLU51YV74WcVGnbtm2IiIhAdHQ0Lly4gM6dO8PPz6/WJRFPnz6NUaNGISQkBBcvXsSQIUMwZMgQXL16lauzZMkSrFixAmvXrkVKSgr09PTg5+fXqLOI1mTnzp349NNPcf/+fbnyBw8e4NNPP8XOnTtVFJni1P0c1D3+5kBHRwdlZWUAgKSkJGRkZCAxMRH79u1DeXk5/Pz8YGBggBMnTuDUqVPQ19eHv78/t8/SpUuRkJCADRs24OTJk8jPz8euXbvqPGZgYCB+/fVXrFixAunp6Vi3bh309fVha2uLHTt2AAAyMjKQk5OD5cuX19hGcHAwzp8/jz179uDMmTNgjGHgwIFyq/iVlJQgLi4OmzZtwvHjx5GdnY1p06Yp42NrePXJUEVFRWz//v1szZo1bPny5XKvhtStWzcWGhrKva+srGTW1tZs4cKFNdYfPnw4GzRokFyZp6cn+/zzzxljL682LC0tWWxsLLe9oKCAicVi9uuvvyocl7KvOCoqKqr9L/f1V8uWLZlUKmVFRUVN8iWVSpm1tbXansOb4hcIBMzW1pZVVFQo5d+cMbriePWKQyaTscTERCYWi9m0adNYUFAQs7CwYKWlpVz9TZs2MRcXFyaTybiy0tJSpqOjww4dOsQYY8zKyootWbKE215eXs5sbGxqveLIyMhgAFhiYmKNMVYNSnn27Jlc+att3Lx5kwFgp06d4rY/efKE6ejosN9++40x9vKKAwC7ffs2V2fVqlXMwsJCsQ9LiRqsc/xVFy9exMCBA1FSUoLi4mKYmJjgyZMn0NXVhbm5Ob766qv6Z7E6lJWVIS0tTe5ep1AohI+PD86cOVPjPmfOnEFERIRcmZ+fH3bv3g3g5RDW3Nxc+Pj4cNslEgk8PT1x5swZjBw5ssZ2S0tL5cbqv/5Q5Ns6ceJEtf/lvu7BgweQSCRKPW5jU+dzYIzh3r17OHHihNxCQeTt7Nu3D/r6+igvL4dMJsNnn32GmJgYhIaGomPHjnL9Gn/99Rdu374NAwMDuTZevHiBzMxMSKVS5OTkwNPTk9umoaEBDw+PWgdnXLp0CSKRCH369Kn3OaSnp0NDQ0PuuC1atICLiwvS09O5Ml1dXbRq1Yp7b2VlVevdk6aGd+L4+uuvMXjwYKxduxYSiQRnz56FpqYmxowZgylTpjREjACAJ0+eoLKyEhYWFnLlFhYWuHHjRo375Obm1li/6pmBqj/rqlOThQsXYvbs2bzPQVGvrjNMmjb6t1Kuvn37Ys2aNdDS0oK1tbXcaKrXp9svKiqCu7s7Nm/eXK2dqjW7+WrMZ4heH4UlEAjUZrQh78Rx6dIlrFu3DkKhECKRCKWlpXBycsKSJUsQFBT0TkxyGBUVJXclU1hYCFtbW6W1b2VlpVC9AwcONNkpyI8fP46BAwe+sV5TPQdF41f034ooRk9Pj5vC5U26dOmCbdu2wdzcvNZp6K2srJCSksJ9xyoqKpCWloYuXbrUWL9jx46QyWQ4duyY3J2IKlVXPHWNHm3bti0qKiqQkpKCHj16AACePn2KjIyMZjOHGe/EoampCaHwZZ+6ubk5srOz0bZtW0gkEty7d0/pAVYxNTWFSCRCXl6eXHleXh4sLS1r3MfS0rLO+lV/5uXlyf0CyMvLg6ura62xiMViiMXi+pyGQnr37g0bGxs8ePCgxv+BCAQC2NjYwNfXt8kOC/X19VXrc1A0/t69e6sgOgIAo0ePRmxsLAICAjBnzhzY2Njg7t272LlzJ2bMmAEbGxtMmTKFW2yrTZs2WLZsGQoKCmpt08HBAUFBQRg/fjxWrFiBzp074+7du3j06BGGDx8Oe3t7CAQC7Nu3DwMHDoSOjg709fXl2mjdujUCAgIwYcIErFu3DgYGBoiMjETLli0REBDQwJ9K4+A9qsrNzY2bBbdPnz6YNWsWNm/ejPDw8AadEltLSwvu7u5ISkriymQyGZKSkmpd/8DLy0uuPgAkJiZy9R0dHWFpaSlXp7CwECkpKSpdU0EkEnGjNV6fF6zq/Y8//tgkf+FWUfdzUPf43wW6uro4fvw47OzsMHToULRt2xYhISF48eIFdwUydepUjB07FkFBQfDy8oKBgQE+/vjjOttds2YNPv30U0yaNAlt2rTBhAkTUFxcDABo2bIlZs+ejcjISFhYWCAsLKzGNuLj4+Hu7o4PP/wQXl5eYIzhwIEDzechQUV70atGj6SmprIjR44wxhjLy8tjfn5+zMDAgHXp0oVdunRJ4V75+ti6dSsTi8UsISGBXb9+nU2cOJEZGRmx3NxcxhhjY8eOZZGRkVz9U6dOMQ0NDRYXF8fS09NZdHQ009TUZFeuXOHqLFq0iBkZGbE//viDXb58mQUEBDBHR0deIwwa8zkOW1tbtXkGgjH1P4fGjL8hR1XdvcuYtnbjjqjS1n55XNK01WdUlcJLx1paWiI4OBjjx4/He++91yBJTBErV65EbGwscnNz4erqihUrVnCjF7y9veHg4ICEhASu/vbt2zFz5kxkZWWhdevWWLJkidy9a8YYoqOj8dNPP6GgoAC9evXC6tWreZ1jQy4d2xyeWlb3c2is+Bt66dimPuUIUY36LB2rcOKYO3cuNm7ciDt37qBHjx4ICQnB8OHDoaur+1ZBNweqXnOcNA+05jhRhfp8ZxTu4/j+++9x+/ZtJCUlwcnJCWFhYbCyssKECROQkpJS76AJIYSoF96d497e3ti4cSNyc3OxdOlSpKenw8vLC+3bt8eyZcsaIkZCCCFNSL3nqtLX18e//vUvnDx5Env37kVubi6mT5+uzNgIIYQ0QfVOHCUlJUhISECfPn3w0UcfoUWLFpg/f74yYyOEENIE8X4A8PTp09iwYQO2b9+OiooKfPrpp5g7d26TfPqXEEKI8imcOJYsWYL4+HjcvHkTHh4eiI2NxahRo6pNMEYIIaR5UzhxxMbGYsyYMdi+fXuDPiFOCCGkaVM4cTx8+LD5PC5PCCEKSEhIQHh4eJ3zW72LFE4clDQIUW9SqRQlJSWNdjxdXV1e660EBwdj48aN+Pzzz7F27Vq5baGhoVi9ejWCgoLkZoZoaCNGjFBoluR3De/OcUKI+pFKpVi5ciUqKioa7ZgaGhoICwvjlTxsbW2xdetW/PDDD9zaGC9evMCWLVtgp4L5S3R0dBp1jQ51ofBw3IcPHzZkHISQBlRSUtKoSQN4ufYF3yucLl26wNbWVm499507d8LOzg5ubm5c2cGDB9GrVy8YGRmhRYsW+PDDD5GZmcltz8rKgkAgwNatW9GjRw9oa2ujQ4cOOHbsGFcnOTkZAoEA+/fvR6dOnaCtrY3u3bvj6tWrXJ2EhAQYGRlx72NiYuDq6opNmzbBwcEBEokEI0eOxPPnz7k6z58/x+jRo6GnpwcrKyv88MMP8Pb2Rnh4OK/PoilTOHG0b98eW7ZsachYCCEE48ePR3x8PPd+w4YNGDdunFyd4uJiRERE4Pz580hKSoJQKMTHH38MmUwmV2/69OmYOnUqLl68CC8vLwwePBhPnz6tVmfp0qVITU2FmZkZBg8ejPLy8lrjy8zMxO7du7Fv3z7s27cPx44dw6JFi7jtEREROHXqFPbs2YPExEScOHECFy5ceJuPpMlROHHMnz8fn3/+OYYNG4b8/PyGjIkQ8g4bM2YMTp48ibt37+Lu3bs4deoUxowZI1fnk08+wdChQ+Hs7AxXV1ds2LABV65cwfXr1+XqhYWF4ZNPPkHbtm2xZs0aSCQS/Oc//5GrEx0djf79+6Njx47YuHEj8vLysGvXrlrjk8lkSEhIQIcOHdC7d2+MHTuWW9Pn+fPn2LhxI+Li4tCvXz906NAB8fHxda4YqI4UThyTJk3C5cuX8fTpU7Rr1w579+5tyLgIIe8oMzMzDBo0CAkJCYiPj8egQYNgamoqV+fWrVsYNWoUnJycYGhoCAcHBwBAdna2XL1XF2TT0NCAh4cH0tPTa61jYmICFxeXanVe5eDgIPf8mpWVFR49egQA+Pvvv1FeXo5u3bpx2yUSCVxcXBQ8e/XAq3Pc0dERR44cwcqVK7kVt15dTB5As7skI4Q0vvHjx3Or661atara9sGDB8Pe3h7r16+HtbU1ZDIZOnTogLKysgaP7fURpgKBoNotsuaO96iqqjV9jY2NERAQUC1xEELI2/L390dZWRkEAgH8/Pzktj19+hQZGRlYv349t+b7yZMna2zn7Nmz3HRIFRUVSEtLq7bc69mzZ7kRW8+ePcPNmzfRtm3besXt5OQETU1NpKamcm1KpVLcvHmzWU3LxOu3/vr16zF16lT4+Pjg2rVrMDMza6i4CCHvMJFIxN0uen21RWNjY7Ro0QI//fQTrKyskJ2djcjIyBrbWbVqFVq3bo22bdvihx9+wLNnzzB+/Hi5OnPmzEGLFi1gYWGB7777DqamphgyZEi94jYwMEBQUBCmT58OExMTmJubIzo6GkKhsNra9epM4cTh7++Pc+fOYeXKlQgMDGzImAghpNZVEIVCIbZu3YqvvvoKHTp0gIuLC1asWAFvb+9qdRctWoRFixbh0qVLcHZ2xp49e6r1lyxatAhTpkzBrVu34Orqir1790JLS6vecS9btgxffPEFPvzwQxgaGmLGjBm4d+9es1qRUeGlY/v374/4+HjY2Ng0dExqh5aOJcrQkEvHqssDgMqSlZUFR0dHXLx4Ea6urjXWSU5ORt++ffHs2TO5ZzWUrbi4GC1btsTSpUsREhLSYMepr/osHavwFUdiYmK9AyOEqJZEIkFYWFiTnnKkubh48SJu3LiBbt26QSqVYs6cOQCAgIAAFUemPNSzTcg7QiKRvJO/yFUhLi4OGRkZ0NLSgru7O06cOFHtFpk6q/cKgI0tPz8fo0ePhqGhIYyMjBASEoKioqI660+ePBkuLi7Q0dGBnZ0dvvrqK0ilUrl6AoGg2mvr1q0NfTqEkAbk4OAAxlitt6kAwNvbG4wxpd+mcnNzQ1paGoqKipCfn4/ExER07NhRqcdQNbW54hg9ejRycnKQmJiI8vJyjBs3DhMnTqx1GpSHDx/i4cOHiIuLQ7t27XD37l188cUXePjwIX7//Xe5uvHx8fD39+feN+T9TkIIUXdqkTjS09Nx8OBBpKamwsPDAwDw73//GwMHDkRcXBysra2r7dOhQwfs2LGDe9+qVSvMnz8fY8aMQUVFhdzzJ0ZGRrC0tGz4EyGEkGZALW5VnTlzBkZGRlzSAAAfHx8IhUKkpKQo3E7VaJXXH1oMDQ2FqakpunXrhg0bNuBNA81KS0tRWFgo9yKkKVFwsCQh9fquqMUVR25uLszNzeXKNDQ0YGJigtzcXIXaePLkCebOnYuJEyfKlc+ZMwcffPABdHV1cfjwYUyaNAlFRUX46quvam1r4cKFmD17Nv8TIaSBVU2HUVJSQutIEIVUjbTjs1ifShNHZGQkFi9eXGeduiYbU1RhYSEGDRqEdu3aISYmRm7b999/z/3dzc0NxcXFiI2NrTNxREVFISIiQq59W1vbt46TkLclEolgZGTETbqnq6vbrJ5YJsrDGENJSQkePXoEIyOjak/o10WliWPq1KkIDg6us46TkxMsLS25H4QqFRUVyM/Pf2PfxPPnz+Hv7w8DAwPs2rXrjVnV09MTc+fORWlpKcRicY11xGJxrdsIUbWqn4nXf2YIqUl9+nhVmjjMzMwUmu/Ky8sLBQUFSEtLg7u7OwDgyJEjkMlk8PT0rHW/wsJC+Pn5QSwWY8+ePQo9FXnp0iUYGxtTYiBqSyAQwMrKCubm5nUuSESIpqYmryuNKmrRx9G2bVv4+/tjwoQJWLt2LcrLyxEWFoaRI0dyI6oePHiAfv364b///S+6deuGwsJC+Pr6oqSkBL/88otcJ7aZmRlEIhH27t2LvLw8dO/eHdra2khMTMSCBQswbdo0VZ4uIUohEonq9UuBkDdRi8QBAJs3b0ZYWBj69esHoVCITz75BCtWrOC2l5eXIyMjg+vouXDhAjfiytnZWa6tO3fuwMHBAZqamli1ahW+/vprMMbg7OyMZcuWYcKECY13YoQQomYUnuSQ1I4mOSTKQN8joi7U4jkOQgghTQclDkIIIbxQ4iCEEMILJQ5CCCG8UOIghBDCCyUOQgghvFDiIIQQwgslDkIIIbxQ4iCEEMILJQ5CCCG8UOIghBDCCyUOQgghvFDiIIQQwgslDkIIIbxQ4iCEEMILJQ5CCCG8UOIghBDCCyUOQgghvFDiIIQQwgslDkIIIbyoTeLIz8/H6NGjYWhoCCMjI4SEhKCoqKjOfby9vSEQCOReX3zxhVyd7OxsDBo0CLq6ujA3N8f06dNRUVHRkKdCCCFqTUPVAShq9OjRyMnJQWJiIsrLyzFu3DhMnDgRW7ZsqXO/CRMmYM6cOdx7XV1d7u+VlZUYNGgQLC0tcfr0aeTk5CAwMBCamppYsGBBg50LIYSoNaYGrl+/zgCw1NRUruzPP/9kAoGAPXjwoNb9+vTpw6ZMmVLr9gMHDjChUMhyc3O5sjVr1jBDQ0NWWlqqcHxSqZQBYFKpVOF9CHkdfY+IulCLW1VnzpyBkZERPDw8uDIfHx8IhUKkpKTUue/mzZthamqKDh06ICoqCiUlJXLtduzYERYWFlyZn58fCgsLce3aNeWfCCGENANqcasqNzcX5ubmcmUaGhowMTFBbm5urft99tlnsLe3h7W1NS5fvoxvvvkGGRkZ2LlzJ9fuq0kDAPe+rnZLS0tRWlrKvZdKpQCAwsJCfidGyCuqvj+MMRVHQkjdVJo4IiMjsXjx4jrrpKen17v9iRMncn/v2LEjrKys0K9fP2RmZqJVq1b1bnfhwoWYPXt2tXJbW9t6t0lIlefPn0Mikag6DEJqpdLEMXXqVAQHB9dZx8nJCZaWlnj06JFceUVFBfLz82Fpaanw8Tw9PQEAt2/fRqtWrWBpaYlz587J1cnLywOAOtuNiopCREQE914mkyE/Px8tWrSAQCBQOB5FFRYWwtbWFvfu3YOhoaHS228M6n4OjRE/YwzPnz+HtbV1g7RPiLKoNHGYmZnBzMzsjfW8vLxQUFCAtLQ0uLu7AwCOHDkCmUzGJQNFXLp0CQBgZWXFtTt//nw8evSIuxWWmJgIQ0NDtGvXrtZ2xGIxxGKxXJmRkZHCcdSXoaGhWv7SfZW6n0NDx09XGkQdqEXneNu2beHv748JEybg3LlzOHXqFMLCwjBy5Ejuf2cPHjxAmzZtuCuIzMxMzJ07F2lpacjKysKePXsQGBiI999/H506dQIA+Pr6ol27dhg7diz++usvHDp0CDNnzkRoaGi1xEAIIeQltUgcwMvRUW3atEG/fv0wcOBA9OrVCz/99BO3vby8HBkZGdyoKS0tLfzvf/+Dr68v2rRpg6lTp+KTTz7B3r17uX1EIhH27dsHkUgELy8vjBkzBoGBgXLPfRBCCJGnFqOqAMDExKTOh/0cHBzkRqPY2tri2LFjb2zX3t4eBw4cUEqMDUUsFiM6Olqtr4LU/RzUPX5ClEnAaOwfIYQQHtTmVhUhhJCmgRIHIYQQXihxEEII4YUSRxO3atUqODg4QFtbG56entUeWGzqjh8/jsGDB8Pa2hoCgQC7d+9WdUi8LFy4EF27doWBgQHMzc0xZMgQZGRkqDosQlSKEkcTtm3bNkRERCA6OhoXLlxA586d4efnV+0p+qasuLgYnTt3xqpVq1QdSr0cO3YMoaGhOHv2LDelv6+vL4qLi1UdGiEqQ6OqmjBPT0907doVK1euBPByahNbW1tMnjwZkZGRKo6OP4FAgF27dmHIkCGqDqXeHj9+DHNzcxw7dgzvv/++qsMhRCXoiqOJKisrQ1paGnx8fLgyoVAIHx8fnDlzRoWRvduqZkI2MTFRcSSEqA4ljibqyZMnqKysrHHa97qmfCcNRyaTITw8HD179kSHDh1UHQ4hKqM2T44TomqhoaG4evUqTp48qepQCFEpShxNlKmpKUQiETfNe5W8vDxeU8kT5QgLC8O+fftw/Phx2NjYqDocQlSKblU1UVpaWnB3d0dSUhJXJpPJkJSUBC8vLxVG9m5hjCEsLAy7du3CkSNH4OjoqOqQCFE5uuJowiIiIhAUFAQPDw9069YNP/74I4qLizFu3DhVh6awoqIi3L59m3t/584dXLp0CSYmJrCzs1NhZIoJDQ3Fli1b8Mcff8DAwIDrX5JIJNDR0VFxdISoBg3HbeJWrlyJ2NhY5ObmwtXVFStWrOC1eJWqJScno2/fvtXKg4KCkJCQ0PgB8VTbio7x8fFvXL2SkOaKEgchhBBeqI+DEEIIL5Q4CCGE8EKJgxBCCC+UOAghhPBCiYMQQggvlDgIIYTwQomDEEIIL5Q4CCGE8EKJgyhNcHCwWi/SRAhRDM1VRRRS29QbVaKjo7F8+XLQRASENH+UOIhCcnJyuL9v27YNs2bNQkZGBlemr68PfX19VYRGCGlkdKuKKMTS0pJ7SSQSCAQCuTJ9ff1qt6q8vb0xefJkhIeHw9jYGBYWFli/fj03w6+BgQGcnZ3x559/yh3r6tWrGDBgAPT19WFhYYGxY8fiyZMnjXzGhJDaUOIgDWrjxo0wNTXFuXPnMHnyZHz55ZcYNmwYevTogQsXLsDX1xdjx45FSUkJAKCgoAAffPAB3NzccP78eRw8eBB5eXkYPny4is+EEFKFEgdpUJ07d8bMmTPRunVrREVFQVtbG6amppgwYQJat26NWbNm4enTp7h8+TKAl9PIu7m5YcGCBWjTpg3c3NywYcMGHD16FDdv3lTx2RBCAOrjIA2sU6dO3N9FIhFatGiBjh07cmUWFhYAgEePHgEA/vrrLxw9erTG/pLMzEy89957DRwxIeRNKHGQBqWpqSn3XiAQyJVVjdaSyWQAXq4YOHjwYCxevLhaW1ZWVg0YKSFEUZQ4SJPSpUsX7NixAw4ODtDQoK8nIU0R9XGQJiU0NBT5+fkYNWoUUlNTkZmZiUOHDmHcuHGorKxUdXiEEFDiIE2MtbU1Tp06hcrKSvj6+qJjx44IDw+HkZERhEL6uhLSFNCa44QQQnih/8IRQgjhhRIHIYQQXihxEEII4YUSByGEEF4ocRBCCOGFEgchhBBeKHEQQgjhhRIHIYQQXihxEEII4YUSByGEEF4ocRBCCOGFEgchhBBe/g+Rd4n+Vp4ADAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_matched([empty_pred()], \"Empty Prediction\")" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_matched([good_matched()], \"Good Matching\")" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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IiIi0in+0k1ERCSR1NRUvP3223j55Zfh5OSEEydO4L///S8CAwNx/PhxWFhYSF0iERERPSKeSI2IiEgizZs3h7e3NxYvXoxbt27B0dERERERSExM5ICbiIhIJvhLNxEREREREZFIeEw3ERERERERkUg46CYiIiIiIiISCQfdRERERERERCLhoJuIiIiIiIhIJBx0ExEREREREYmEg24iIiIiIiIikXDQTURERERERCQSoxp079+/H4MGDYKnpycUCgW2b99e5/ypqalQKBTVbtnZ2fopmIgeirkmkh/mmoiI6F9GNeguKipCx44dsXTp0notl5GRgWvXrqlvrq6uIlVIRPXFXBPJD3NNRET0LzOpC6iP/v37o3///vVeztXVFQ4ODroviIgeGXNNJD/MNRER0b+M6pfuhurUqRM8PDzw7LPP4uDBg3XOW1paioKCAvUtPz8fOTk5EARBT9USaU8QBBQUFDTK/slck1wx18w1yVNjzjZRY2dUv3TXl4eHB5YvX46QkBCUlpbiyy+/RFhYGI4ePYouXbrUuExCQgJmz55dbfrly5dhb28vdslE9VJQUABvb2/k5eVBqVRKXY5eMNckd8w1c03y1BizTUT3KAQj/bpNoVBg27ZtCA8Pr9dyPXv2hI+PD9auXVvj46WlpSgtLVXfv3LlCtq2bfsopRKJ7vLly/Dy8pK6jEfGXBP9i7lmrkme5JJtItKerH/prknXrl3x888/1/q4paUlLC0t1fervpPgN+dkiKq+Nbezs5O6FEkx1yQnzPU9zDXJDbNN1Hg1ukF3eno6PDw8tJ5foVAAAOzt7fkhTgarqp82Vsw1yRFzzVyTPDX2bBM1RkY16C4sLMT58+fV9zMzM5Geng5HR0f4+PggLi4OV65cwVdffQUASEpKgp+fH9q1a4eSkhJ8+eWX+Omnn/Djjz9K1QQiegBzTSQ/zDUREdG/jGrQ/euvv6JXr17q+7GxsQCAyMhIJCcn49q1a7h06ZL68bKyMkyZMgVXrlyBjY0NOnTogL1792qsg4ikxVwTyQ9zTURE9C+jPZGavhQUFECpVCI/P5+7q5HBYf9sGD5vZMjYPxuGzxsZOvZRosarUVynm4iIiIiIiEgKHHQTERERERERiYSDbiIiIiIiIiKRcNBNREREREREJBIOuomIiIiIiIhEwkE3ERERERERkUg4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zz//xM8//yx1KUSkI8w1kfww10SkLxx0GwBnZ2eYmpri+vXrGtOvX78Od3d3iaqihpgwYQJ27NiB/fv3w8vLS+pySGLMtjww13Q/5loemGsi0ifuXm4ALCwsEBwcjJSUFPU0lUqFlJQUhIaGSlgZaUsQBEyYMAHbtm3DTz/9BD8/P6lLIgPAbBs35ppqwlwbN+aaiKTAX7oNRGxsLCIjIxESEoKuXbsiKSkJRUVFGDVqlNSl6URhYSHOnz+vvp+ZmYn09HQ4OjrCx8dHwsp0Izo6GuvXr8e3334LOzs79XF9SqUS1tbWEldHUpJztplraqzknGtA3tlmrolIEgIZjM8++0zw8fERLCwshK5duwpHjhyRuiSd2bdvnwCg2i0yMlLq0nSiprYBEFavXi11aWQA5Jpt5poaM7nmWhDknW3mmoikwOt0ExEREREREYmEx3QTERERERERiYSDbiIiIiIiIiKRcNBNREREREREJBIOuomIiIiIiIhEwkE3ERERERERkUg46CYiIiIiIiISCQfdRERERERERCLhoJuIiIiIiIhIJBx0k85FRUUhPDxc6jKISIeYayJ5YraJiMRnJnUBZFwUCkWdj8+aNQuLFi2CIAh6qoiIHhVzTSRPzDYRkWFQCHynpXrIzs5W/71x40Z88MEHyMjIUE+ztbWFra2tFKURUQMx10TyxGwTERkG7l5O9eLu7q6+KZVKKBQKjWm2trbVdlULCwvDxIkTERMTg6ZNm8LNzQ0rV65EUVERRo0aBTs7O7Rq1Qo//PCDxrb+/PNP9O/fH7a2tnBzc8Nrr72G3NxcPbeYSP6YayJ5YraJiAwDB92kF2vWrIGzszN++eUXTJw4EePGjcPLL7+MJ554AidOnECfPn3w2muvobi4GACQl5eHp59+Gp07d8avv/6KXbt24fr16xg6dKjELSGiKsw1kTwx20REusVBN+lFx44dMXPmTPj7+yMuLg5WVlZwdnbG2LFj4e/vjw8++AA3b97E77//DgBYsmQJOnfujLlz56JNmzbo3LkzVq1ahX379uHs2bMSt4aIAOaaSK6YbSIi3eKJ1EgvOnTooP7b1NQUTk5OaN++vXqam5sbAODGjRsAgN9++w379u2r8VizCxcuoHXr1iJXTEQPw1wTyROzTUSkWxx0k16Ym5tr3FcoFBrTqs6wqlKpAACFhYUYNGgQPv7442rr8vDwELFSItIWc00kT8w2EZFucdBNBqlLly7YsmULmjdvDjMzdlMiOWCuieSJ2SYiqhuP6SaDFB0djVu3buGVV17BsWPHcOHCBezevRujRo1CZWWl1OURUQMw10TyxGwTEdWNg24ySJ6enjh48CAqKyvRp08ftG/fHjExMXBwcICJCbstkTFironkidkmIqqbQhAEQeoiiIiIiIiIiOSIXz8SERERERERiYSDbiIiIiIiIiKRcNBNREREREREJBIOuomIiIiIiIhEwkE3ERERERERkUg46CYiIiIiIiISCQfdRERERERERCLhoJuIiIiIiIhIJBx0ExEREREREYmEg24iIiIiIiIikXDQTURERERERCQSDrqJiIiIiIiIRPL/AEJUgGyQw8bqAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_matched([fn_node_matched(t) for t in [0, 1, 2]], \"False Negative Node\")" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_matched([fn_edge_matched(t) for t in [0, 1]], \"False Negative Edge\")" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_matched([fp_node_matched(t) for t in [0, 1, 2]], \"False Positive Node\")" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_matched([fp_edge_matched(t) for t in [0, 1]], \"False Positive Edge\")" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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zDUx10RkCPhLdz3NmDEDERER6NatG3r06IG4uDgUFBRg/PjxUpemF3fu3MHZs2fVz7OyspCeng4XFxf4+vpKWJl+REVFYdOmTfjmm2/g4OCgPjfQyckJNjY2EldH9cVcM9fMtelhrplr5pqIJCeo3pYvXy58fX2FpaWl6NGjh0hNTZW6JL3Zt2+fAFDpERERIXVpelFV2wGI+Ph4qUujBmKumWvm2vQw18w1c01EUuJ9uomIiIiIiIh0hOd0ExEREREREekIO91EREREREREOsJONxEREREREZGOsNNNREREREREpCPsdBMRERERERHpCDvdRERERERERDrCTjcRERERERGRjrDTTURERERERKQj7HRTrSIjIzF8+HCpyyCiRsRcE5ke5pqIyDCZS10ASUuhUNT4+ty5c7Fs2TIIIfRUERE1FHNNZHqYayIi46UQ3DrL2tWrV9V/b968GW+//TYyMzPVw+zt7WFvby9FaURUT8w1kelhromIjBcPL5e5pk2bqh9OTk5QKBQaw+zt7SsdrhYSEoKpU6ciJiYGTZo0gaenJ9atW4eCggKMHz8eDg4OaN26Nb7//nuNeWVkZCA8PBz29vbw9PTEiy++iOvXr+u5xUSmj7kmMj3MNRGR8WKnm+pl48aNcHNzw6+//oqpU6filVdewahRo/D444/jyJEjCAsLw4svvojCwkIAwK1bt/DEE0+gc+fOOHz4MH744Qdcu3YNo0ePlrglRFSOuSYyPcw1EZH02OmmeunYsSP+9a9/oU2bNpgzZw6sra3h5uaGSZMmoU2bNnj77bdx48YNHDt2DACwYsUKdO7cGe+99x4eeeQRdO7cGRs2bMC+fftw+vRpiVtDRABzTWSKmGsiIunxQmpULx06dFD/rVQq4erqivbt26uHeXp6AgBycnIAAL///jv27dtX5flm586dQ9u2bXVcMRHVhrkmMj3MNRGR9NjppnqxsLDQeK5QKDSGlV9ltbS0FABw584dDBkyBO+//36laXl5eemwUiLSFnNNZHqYayIi6bHTTXrRpUsXbNmyBX5+fjA352pHZAqYayLTw1wTETU+ntNNehEVFYW///4bY8aMQVpaGs6dO4ddu3Zh/PjxUKlUUpdHRPXAXBOZHuaaiKjxsdNNetGsWTMcPHgQKpUKYWFhaN++PWJiYuDs7AwzM66GRMaIuSYyPcw1EVHjUwghhNRFEBEREREREZkifmVJREREREREpCPsdBMRERERERHpCDvdRERERERERDrCTjcRERERERGRjrDTTURERERERKQj7HQTERERERER6Qg73UREREREREQ6wk43ERERERERkY6w001ERERERESkI+x0ExEREREREekIO91EREREREREOsJONxEREREREZGO/B/lNRR3Vn0fMQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_matched([two_to_one(t) for t in [0, 1, 2]], \"Two Ground Truth to One Prediction\")" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAADXCAYAAAAHvTJ9AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAABLHUlEQVR4nO3deXxM9/4/8Ndk3yaJbISstjTEHtQSotUoinBbt6gmoqokSLWU9n6vaG1VbWktRdvE46rSVqgqVZQkuDSWVGMJ0sROcElIyPr5/ZFfpka2mSQzZ2bO6/l45CFz5sw5788553WOT+YsCiGEABERERERERE1ODOpCyAiIiIiIiIyVex0ExEREREREekIO91EREREREREOsJONxEREREREZGOsNNNREREREREpCPsdBMRERERERHpCDvdRERERERERDrCTjcRERERERGRjrDTTURERERERKQj7HQTEZHJUigUiIuLk7qMGkVGRsLBwUHqMkgDfn5+iIyMVL3ev38/FAoF9u/f32DzMIZtloiItMNONxGRHpw6dQqvvPIKmjVrBmtrazRt2hRjxozBqVOnpC4NWVlZiImJQevWrWFnZwc7Ozu0adMG0dHROHnypNTl6VRoaCgUCkWtP/XtBBUUFCAuLq5BO2cVVq5ciYSEhAabXlxcnEbLJDQ0tMHmqYmEhAS1+dvY2KB169aIiYnBzZs39VpLfe3YsYMdayIiGbGQugAiIlOXmJiIUaNGwcXFBePHj4e/vz+ys7Px1Vdf4YcffsDGjRsxfPhwSWrbvn07/vnPf8LCwgJjxoxBhw4dYGZmhrNnzyIxMRGrVq1CVlYWfH19JalP19577z289tprqtepqan47LPP8O677yIwMFA1vH379vWaT0FBAebOnQsADd5ZXblyJdzc3NS+ga2PESNGoGXLlqrXDx48wKRJkzB8+HCMGDFCNbxx48YNMj9tvf/++/D398ejR49w4MABrFq1Cjt27EB6ejrs7Oz0WkufPn3w8OFDWFlZafW5HTt2YMWKFVV2vB8+fAgLC/73jIjIlHCvTkSkQ5mZmRg7diyaN2+O5ORkuLu7q96bNm0aQkJCMHbsWJw8eRLNmzfXe20vv/wyfH19sXfvXnh6eqq9/+GHH2LlypUwM6v5pKj8/HzY29vrslSdee6559Re29jY4LPPPsNzzz1XY+fY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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_matched([one_to_two(t) for t in [0, 1, 2]], \"One Ground Truth to Two Predictions\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Segmentation Cases" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "nbsphinx": "hidden" + }, + "outputs": [], + "source": [ + "def plot_pair(gt, pred, title):\n", + " max_label = np.max([gt, pred])\n", + " colors = [\"black\", \"red\", \"blue\", \"green\"]\n", + " colormap = ListedColormap(colors)\n", + " fig, ax = plt.subplots(1, 2, figsize=(6, 4))\n", + " ax[0].imshow(gt, cmap=colormap, vmax=4)\n", + " ax[0].set_title(\"Ground Truth\")\n", + " # ax[0].set_axis_off()\n", + " ax[1].imshow(pred, cmap=colormap, vmax=4)\n", + " ax[1].set_title(\"Predicted\")\n", + "\n", + " handles = [Patch(color=colors[i]) for i in range(1, max_label + 1)]\n", + " labels = [str(i) for i in range(1, max_label + 1)]\n", + " ax[1].legend(handles=handles, labels=labels, title=\"Label IDs\", loc=\"upper right\")\n", + " fig.suptitle(title, y=0.9)\n", + " fig.tight_layout()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk0AAAFZCAYAAACFVRtIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA6qElEQVR4nO3deXQUdbr/8U+H7CTpBAgJEQhhEQQGmImAGWQTBNkE3NG5hsUZlgCCOvxcrhJHzkTAFUVcuMKMingYxYXBjcgiCqgsMiBwCRMRBxKWMR1IIJHk+/uDSV+bJKTS6XR3kvfrnOd4uurbVU9XkseHqm9V24wxRgAAALikAF8nAAAAUBfQNAEAAFhA0wQAAGABTRMAAIAFNE0AAAAW0DQBAABYQNMEAABgAU0TAACABTRNAAAAFtA0AQ3I8uXLZbPZ9P333/s6FfzH999/L5vNpuXLl/s6FQBVoGkCakl2dramT5+uyy+/XOHh4QoPD1fnzp2Vlpam3bt3+zq9Km3evFnDhg3TZZddptDQULVu3VqjRo3SihUrfJ2a13333XdKT0+vUbO5YsUKPfPMMx7LCYD32fjuOcDz1qxZo1tvvVWBgYG644471L17dwUEBGj//v165513dPjwYWVnZysxMdGreS1fvlwTJkxQdna22rRpU+m4VatW6dZbb1WPHj102223KSYmRtnZ2dq0aZOCgoK0fv167yXtB/72t7/p5ptv1vr16zVgwAC3tjFy5Ejt2bOnXONljFFRUZGCgoLUqFGjmicLoNYE+joBoL45dOiQbrvtNiUmJiozM1MtWrRwWT9//ny98MILCgjw3xO96enp6ty5s7Zu3arg4GCXdcePH/dRVvWTzWZTaGior9MAYIH/Vm2gjlqwYIEKCgq0bNmycg2TJAUGBmrmzJlq1aqVy/LPPvtMffv2VePGjRUdHa3Ro0dr37595d6/c+dODRs2TFFRUYqIiNCgQYO0devWcuP27t2ra665RmFhYWrZsqXmzZun0tJSS5/h0KFD6tmzZ7mGSZKaN2/u8rq0tFTPPPOMunTpotDQUMXFxWny5Mn66aefyo1LT09XQkKCwsPDNXDgQH333Xdq06aNxo8f7xxXNu9q8+bNmjlzpmJjYxUdHa3JkyeruLhYeXl5uvPOOxUTE6OYmBjNmTNHF58wt5pTmzZtNHLkSG3evFm9evVSaGio2rZtq7/+9a8u+dx8882SpIEDB8pms8lms2nDhg2SpPfee08jRoxQQkKCQkJC1K5dOz322GMqKSlxbmPAgAH6+9//rsOHDzvfX3amr7I5TVZ+H9LT02Wz2ZSVlaXx48crOjpadrtdEyZMUGFhYbmfHYCa4UwT4GFr1qxR+/bt1bt3b8vvWbdunYYNG6a2bdsqPT1dZ8+e1XPPPac+ffpox44dzv/B7t27V3379lVUVJTmzJmjoKAgvfTSSxowYIA2btzo3GdOTo4GDhyo8+fP6/7771fjxo318ssvKywszFI+ZWfJfvzxR7Vs2fKSYydPnuy87Ddz5kxlZ2fr+eef186dO/XFF18oKChIkvTAAw9owYIFGjVqlIYOHapvv/1WQ4cO1blz5yrc7owZMxQfH69HH31UW7du1csvv6zo6Gh9+eWXat26tf785z9r7dq1Wrhwobp27ao777yz2jlJUlZWlm666SZNmjRJqampevXVVzV+/HglJyerS5cu6tevn2bOnKlFixbpwQcf1BVXXCFJzv8uX75cERERuueeexQREaHPPvtMjzzyiPLz87Vw4UJJ0kMPPSSHw6Eff/xRTz/9tCQpIiKi0mNq9fehzC233KKkpCRlZGRox44dWrp0qZo3b6758+df8mcHoJoMAI9xOBxGkhkzZky5dT/99JM5ceKEMwoLC53revToYZo3b25OnTrlXPbtt9+agIAAc+eddzqXjRkzxgQHB5tDhw45lx09etRERkaafv36OZfNmjXLSDLbtm1zLjt+/Lix2+1GksnOzr7k5/if//kfI8kEBwebgQMHmocffth8/vnnpqSkxGXc559/biSZN954w2X5Rx995LI8JyfHBAYGljsu6enpRpJJTU11Llu2bJmRZIYOHWpKS0udy1NSUozNZjNTpkxxLjt//rxp2bKl6d+/f7VzMsaYxMREI8ls2rTJ5TiFhISYe++917ls1apVRpJZv359uWP1y59jmcmTJ5vw8HBz7tw557IRI0aYxMTEcmOzs7ONJLNs2TLnMqu/D3PnzjWSzMSJE122OXbsWNO0adNy+wJQM1yeAzwoPz9fUsVnEQYMGKDY2FhnLF68WJJ07Ngx7dq1S+PHj1eTJk2c47t166Zrr71Wa9eulSSVlJTok08+0ZgxY9S2bVvnuBYtWuj222/X5s2bnftfu3atrrrqKvXq1cs5LjY2VnfccYelzzFx4kR99NFHGjBggDZv3qzHHntMffv2VYcOHfTll186x61atUp2u13XXnutTp486Yzk5GRFREQ4J4xnZmbq/PnzmjZtmst+ZsyYUWkOkyZNks1mc77u3bu3jDGaNGmSc1mjRo105ZVX6p///Ge1cyrTuXNn9e3b1+U4dezY0WWbl/LLs3enT5/WyZMn1bdvXxUWFmr//v2WtvFLVn8ffmnKlCkur/v27atTp045fx8AeAZNE+BBkZGRkqQzZ86UW/fSSy/p008/1euvv+6y/PDhw5Kkjh07lnvPFVdcoZMnT6qgoEAnTpxQYWFhpeNKS0t15MgR5zY7dOhQblxF763M0KFD9fHHHysvL0+bNm1SWlqaDh8+rJEjRzongx88eFAOh0PNmzd3aQhjY2N15swZ57iyz9i+fXuXfTRp0kQxMTEV7r9169Yur+12uySVmwtmt9td5ipZzamy/UhSTExMuflPldm7d6/Gjh0ru92uqKgoxcbG6ne/+50kyeFwWNrGL1n9ffiliz9D2TG1+hkAWMOcJsCD7Ha7WrRooT179pRbVzbfqK49WDI8PFx9+/ZV37591axZMz366KP68MMPlZqaqtLSUjVv3lxvvPFGhe+NjY11e7+V3X5f0XLzi4ng1c2psv0YC09jycvLU//+/RUVFaU//elPateunUJDQ7Vjxw79v//3/yxPvK+pmnwGANbRNAEeNmLECC1dulRfffWVy+WxypQ9q+nAgQPl1u3fv1/NmjVT48aNFRoaqvDw8ErHBQQEOM/CJCYm6uDBg+XGVfTe6rjyyislXbiEJEnt2rXTunXr1KdPn0tOMi/7jFlZWUpKSnIuP3XqlMfPhljNqTp+eZnwlzZs2KBTp07pnXfeUb9+/ZzLs7OzLW/jYlZ/HwB4H5fnAA+bM2eOwsPDNXHiROXm5pZbf/G//lu0aKEePXroL3/5i/Ly8pzL9+zZo08++UTDhw+XdOFswpAhQ/Tee++5nK3Kzc3VihUrdPXVVysqKkqSNHz4cG3dulVfffWVc9yJEycqPftysczMzAqXl82nKbt0dMstt6ikpESPPfZYubHnz593fp5BgwYpMDBQS5YscRnz/PPPW8qnOqzmVB1lTcrF7y07w/PLn2lxcbFeeOGFCrdh5XKd1d8HAN7HmSbAwzp06KAVK1Zo3Lhx6tixo/OJ4MYYZWdna8WKFQoICHC5lX/hwoUaNmyYUlJSNGnSJOct5na7Xenp6c5x8+bN06effqqrr75a06ZNU2BgoF566SUVFRVpwYIFznFz5szRa6+9puuuu053332385EDiYmJlr7CZfTo0UpKStKoUaPUrl07FRQUaN26dfrggw/Us2dPjRo1SpLUv39/TZ48WRkZGdq1a5eGDBmioKAgHTx4UKtWrdKzzz6rm266SXFxcbr77rv15JNP6vrrr9d1112nb7/9Vh9++KGaNWtm+SyMFVZzqo4ePXqoUaNGmj9/vhwOh0JCQnTNNdfot7/9rWJiYpSamqqZM2fKZrPptddeq/CyWHJyst566y3dc8896tmzpyIiIpzH8WJWfx8AeJnvbtwD6resrCwzdepU0759exMaGmrCwsJMp06dzJQpU8yuXbvKjV+3bp3p06ePCQsLM1FRUWbUqFHmu+++Kzdux44dZujQoSYiIsKEh4ebgQMHmi+//LLcuN27d5v+/fub0NBQc9lll5nHHnvM+SiBqh458Oabb5rbbrvNtGvXzoSFhZnQ0FDTuXNn89BDD5n8/Pxy419++WWTnJxswsLCTGRkpPnVr35l5syZY44ePeocc/78efPwww+b+Ph4ExYWZq655hqzb98+07RpU5fHCJQ9cuDrr7922UfZ7fUnTpxwWZ6ammoaN27sVk6JiYlmxIgR5d7bv39/l8cYGGPMK6+8Ytq2bWsaNWrk8viBL774wlx11VUmLCzMJCQkmDlz5piPP/643CMKzpw5Y26//XYTHR1tJDkfP1DRIweMsfb7UNkxKTuGVf2cAVQP3z0HwGfy8vIUExOjefPm6aGHHvJ1OgBwScxpAuAVZ8+eLbfsmWeekSS3vwQXALyJOU0AvOKtt97S8uXLNXz4cEVERGjz5s168803NWTIEPXp08fX6QFAlWiaAHhFt27dFBgYqAULFig/P985OXzevHm+Tg0ALGFOEwAAgAXMaQIAALCApgkAAMACmiYAAAALaJoAAAAsoGkCAACwgKYJAADAApomAAAAC2iaAAAALKBpAgAAsICmCQAAwAKaJvglm82m9PR0X6dxSePHj1dERISv0wBQA23atNH48eOdrzds2CCbzaYNGzb4LKeLXZwjfIemqQ7Lzs7W9OnTdfnllys8PFzh4eHq3Lmz0tLStHv3bl+nV6sGDBggm81WZdS08SosLFR6erpfFVCgPlm+fLnL32xoaKguv/xyTZ8+Xbm5ub5Oz7K1a9f6/T/0UHOBvk4A7lmzZo1uvfVWBQYG6o477lD37t0VEBCg/fv365133tGSJUuUnZ2txMREX6daKx566CHdddddztdff/21Fi1apAcffFBXXHGFc3m3bt1qtJ/CwkI9+uijki40agBqx5/+9CclJSXp3Llz2rx5s5YsWaK1a9dqz549Cg8P91oe/fr109mzZxUcHFyt961du1aLFy+mcarnaJrqoEOHDum2225TYmKiMjMz1aJFC5f18+fP1wsvvKCAgEufSCwoKFDjxo1rM9Vac+2117q8Dg0N1aJFi3Tttddesrmpy58ZqM+GDRumK6+8UpJ01113qWnTpnrqqaf03nvvady4ceXG19bfckBAgEJDQz2+XdQPXJ6rgxYsWKCCggItW7asXMMkSYGBgZo5c6ZatWrlXFY2/+bQoUMaPny4IiMjdccdd0i6UHzuvfdetWrVSiEhIerYsaOeeOIJGWOc7//+++9ls9m0fPnycvu7+DJYenq6bDabsrKyNH78eEVHR8tut2vChAkqLCx0eW9RUZFmz56t2NhYRUZG6vrrr9ePP/5YwyPkmsd3332n22+/XTExMbr66qslXThrVFFzNX78eLVp08b5mWNjYyVJjz76aKWX/P71r39pzJgxioiIUGxsrO677z6VlJR45DMADdU111wj6cI0hEvVr9LSUj3zzDPq0qWLQkNDFRcXp8mTJ+unn35y2Z4xRvPmzVPLli0VHh6ugQMHau/eveX2W9mcpm3btmn48OGKiYlR48aN1a1bNz377LOSLtSNxYsXS5LLpcYyns4RvsOZpjpozZo1at++vXr37l2t950/f15Dhw7V1VdfrSeeeELh4eEyxuj666/X+vXrNWnSJPXo0UMff/yx/vjHP+pf//qXnn76abfzvOWWW5SUlKSMjAzt2LFDS5cuVfPmzTV//nznmLvuukuvv/66br/9dv32t7/VZ599phEjRri9z4rcfPPN6tChg/785z+7NIJViY2N1ZIlSzR16lSNHTtWN9xwgyTXS34lJSUaOnSoevfurSeeeELr1q3Tk08+qXbt2mnq1Kke/RxAQ3Lo0CFJUtOmTSVVXL8kafLkyVq+fLkmTJig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5JPKzMzUk08+qcBA77cwNE0AADRQb7zxhj744AP961//UlRUlPr27auZM2cqPDzcZdyGDRu0aNEi5ebm6je/+Y0eeughl6fqb9y4Ua+88oqys7PVrFkzjRw5UhMmTKhRYxMcHKxmzZpJkpo3b65OnTqpa9eumjZtmtasWaMxY8bIGKNXXnlF77//vv7973/Lbrdr0KBBuu+++9ze76UwpwkAgAbKZrPpvvvu01tvvaX09HR98803WrRokcuYc+fO6dVXX1V6erqWLl2q06dP66GHHnKu37lzp+bOnavbbrtNb731lh588EGtWbNGy5Yt83i+PXv2VIcOHbR+/XpJ0meffaYVK1bogQce0DvvvKMnnnhC7dq18/h+y9A0AQDQQN1+++268sorlZCQoJ49e2rq1Klat26dy5jz589rzpw56tatm6644gqlp6dr9+7d2rt3ryTplVdeUWpqqkaOHKmWLVuqd+/emjx5st55551ayblNmzY6duyYJCknJ0dNmzZV7969FR8fry5dumjs2LG1sl+Jy3MAADRY27Zt0/Lly3X48GEVFBSopKRERUVFOnfunEJDQyVdmIjduXNn53vatGmjyMhIZWdnq0uXLjp48KB2797tcmaptLS03HY85ZfP5B40aJDefPNNjR49WikpKerTp4/69u1ba/OdaJoAAGiAjh49qnvuuUc33nijpk2bpqioKH377bd67LHH9PPPP1tuds6ePas//OEPFT6aIDg42NNp6/vvv9dll10mSYqPj9ff/vY3ffXVV/rqq680f/58vfbaa3r55ZdrpXGiaQIAoAHav3+/SktLNWvWLOct/BdfmpOkkpIS7du3T126dJF0oWk5ffq0kpKSJEkdO3bU4cOH1apVq1rP+euvv1ZWVpbzy3clKTQ0VP369VO/fv1000036eabb1ZWVpY6derk8f3TNAEAUI+dOXNGBw4ccFlmt9vVsmVLnT9/Xm+99Zb69u2r3bt3VzgPKTAwUAsXLtR9992nRo0aaeHChfrVr37lbKLuuusuzZ49W/Hx8brmmmsUEBCggwcP6tChQ5o6darbeRcXF+vkyZMujxxYvny5rr76ao0YMULShYdvlpaWqkuXLgoNDdWHH36okJAQlzv7PImmCQCAemz79u363e9+57Js9OjR+u///m/Nnj1bf/3rX7V48WL9+te/Vlpa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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_pair(*good_segmentation_2d(), \"Good Segmentation\")" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk0AAAFZCAYAAACFVRtIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA1nElEQVR4nO3de1hVddr/8c/mtBGFjQKCpiJ5TE2dITXGMkuS1DTNSq2eB0+VijVaTld2Ujs8VJaWjemUV9qUpo8VlY5meX6a1NJ0HCsZ9YdmKigWGxMBhe/vD8c9bQFZbDZskPfruu4/9jrefNXbm7W+a22bMcYIAAAAl+Tn6wQAAABqA5omAAAAC2iaAAAALKBpAgAAsICmCQAAwAKaJgAAAAtomgAAACygaQIAALCApgkAAMACmiYA2rhxo2w2mzZu3OjrVKqUzWbT9OnTLW3bsmVLjRw5skrzAVC70DQBtdiiRYtks9lKjccee8zX6V3SxbkHBwerbdu2mjhxorKysqolh6+++krTp09XTk5OtZwPQO0W4OsEAFTeM888o7i4OLdlnTp18lE2FXMh9/z8fH355ZeaN2+eVq1apT179igkJMSr5zpz5owCAv5T9r766ivNmDFDI0eOVHh4uNu26enp8vPj90oA/0HTBFwG+vXrp2uuucbXaXjkt7mPHTtWERERmjVrlj755BONGDHCq+cKDg62vK3dbvfquQHUfvwaBVzGDh06pAkTJqhdu3aqV6+eIiIidOedd+rgwYPl7rtv3z4NHTpUMTExCg4OVrNmzTR8+HA5nU637d577z3Fx8erXr16atSokYYPH67Dhw97nPNNN90kScrIyJAknTt3Ts8++6xatWolu92uli1b6vHHH1dBQYHbftu3b1dSUpIiIyNVr149xcXFafTo0W7b/HZO0/Tp0/WnP/1JkhQXF+e6TXhhbH47p2n79u2y2Wx65513SuS7Zs0a2Ww2rVy50rXsyJEjGj16tKKjo2W329WxY0e9/fbbHo8JgJqBK03AZcDpdCo7O9ttWWRkpL755ht99dVXGj58uJo1a6aDBw9q3rx56t27t77//vsyb38VFhYqKSlJBQUFevDBBxUTE6MjR45o5cqVysnJkcPhkCQ9//zzeuqpp3TXXXdp7NixOnHihF5//XX16tVLO3fuLHHLy4oDBw5IkiIiIiSdv/r0zjvv6I477tAjjzyibdu2KTU1VT/88IPS0tIkScePH1ffvn0VFRWlxx57TOHh4Tp48KA++uijMs9z++2361//+pfef/99zZ49W5GRkZKkqKioEttec801uvLKK/W///u/Sk5Odlu3bNkyNWzYUElJSZKkrKwsXXvttbLZbJo4caKioqK0evVqjRkzRrm5uZo0aVKFxwRADWEA1FoLFy40kkoNY4zJy8srsc+WLVuMJPPXv/7VtWzDhg1GktmwYYMxxpidO3caSWb58uVlnvvgwYPG39/fPP/8827L//nPf5qAgIASy8vKfe3atebEiRPm8OHDZunSpSYiIsLUq1fP/PTTT2bXrl1Gkhk7dqzbvlOmTDGSzPr1640xxqSlpRlJ5ptvvrnkOSWZadOmuT7PnDnTSDIZGRklto2NjTXJycmuz1OnTjWBgYHm559/di0rKCgw4eHhZvTo0a5lY8aMMU2aNDHZ2dluxxs+fLhxOByl/pkAqB24PQdcBubOnasvvvjCLSSpXr16rm3Onj2rkydPqnXr1goPD9e3335b5vEuXElas2aN8vLySt3mo48+UnFxse666y5lZ2e7IiYmRm3atNGGDRss5Z6YmKioqCg1b95cw4cPV4MGDZSWlqYrrrhCq1atkiQ9/PDDbvs88sgjkqS//e1vkuS6orVy5UqdPXvW0nkratiwYTp79qzb1avPP/9cOTk5GjZsmCTJGKMPP/xQAwcOlDHGbVySkpLkdDovOe4AajZuzwGXge7du5c6EfzMmTNKTU3VwoULdeTIERljXOsunpv0W3FxcXr44Yc1a9YsLV68WNdff70GDRqke++919VQ7du3T8YYtWnTptRjBAYGWsp97ty5atu2rQICAhQdHa127dq5nlo7dOiQ/Pz81Lp1a7d9YmJiFB4erkOHDkmSbrjhBg0dOlQzZszQ7Nmz1bt3bw0ePFh333231yZ0d+nSRe3bt9eyZcs0ZswYSedvzUVGRrrmYZ04cUI5OTl688039eabb5Z6nOPHj3slHwDVj6YJuIw9+OCDWrhwoSZNmqSEhAQ5HA7ZbDYNHz5cxcXFl9z3lVde0ciRI/XJJ5/o888/10MPPaTU1FRt3bpVzZo1U3FxsWw2m1avXi1/f/8S+zdo0MBSjmU1fL9ls9nKXf/BBx9o69atWrFihdasWaPRo0frlVde0datWy3nUp5hw4bp+eefV3Z2tkJDQ/Xpp59qxIgRrtcYXBjTe++9t8Tcpws6d+7slVwAVD+aJuAy9sEHHyg5OVmvvPKKa1l+fr7llzleffXVuvrqq/Xkk0/qq6++Us+ePTV//nw999xzatWqlYwxiouLU9u2bask/9jYWBUXF2vfvn266qqrXMuzsrKUk5Oj2NhYt+2vvfZaXXvttXr++ee1ZMkS3XPPPVq6dKnGjh1b6vHLa8YuNmzYMM2YMUMffvihoqOjlZubq+HDh7vWR0VFKTQ0VEVFRUpMTKzQsQHUfMxpAi5j/v7+brfkJOn1119XUVHRJffLzc3VuXPn3JZdffXV8vPzcz3qf/vtt8vf318zZswocQ5jjE6ePFnp/Pv37y9JevXVV92Wz5o1S5I0YMAASdIvv/xSIoeuXbtKUolXE/xW/fr1JclyE3nVVVfp6quv1rJly7Rs2TI1adJEvXr1cq339/fX0KFD9eGHH2rPnj0l9j9x4oSl8wCombjSBFzGbr31Vr377rtyOBzq0KGDtmzZorVr17oe5y/L+vXrNXHiRN15551q27atzp07p3fffdfVFEhSq1at9Nxzz2nq1Kk6ePCgBg8erNDQUGVkZCgtLU3333+/pkyZUqn8u3TpouTkZL355pvKycnRDTfcoK+//lrvvPOOBg8erBtvvFGS9M477+iNN97QkCFD1KpVK506dUpvvfWWwsLCXI1XaeLj4yVJTzzxhIYPH67AwEANHDjQ1UyVZtiwYXr66acVHBysMWPGlHhr+AsvvKANGzaoR48euu+++9ShQwf9/PPP+vbbb7V27Vr9/PPPlRoTAL5D0wRcxl577TX5+/tr8eLFys/PV8+ePbV27VrXO4XK0qVLFyUlJWnFihU6cuSIQkJC1KVLF61evVrXXnuta7vHHntMbdu21ezZszVjxgxJUvPmzdW3b18NGjTIKz/DggULdOWVV2rRokVKS0tTTEyMpk6dqmnTprm2udBMLV26VFlZWXI4HOrevbsWL15c4utlfqtbt2569tlnNX/+fH322WcqLi5WRkZGuU3Tk08+qby8PNdTc78VHR2tr7/+Ws8884w++ugjvfHGG4qIiFDHjh314osvVm4wAPiUzVx8TRsAAAAlMKcJAADAApomAAAAC2iaAAAALKBpAgAAsICmCQAAwAKaJgAAAAtomgAAACygaQIAALCApgkAAMACmiYAAAALaJoAAAAsoGkCAACwgKYJAADAApomAAAAC2iaUCPZbDZNnz7d12lc0siRI9WgQQNfpwGgElq2bKmRI0e6Pm/cuFE2m00bN270WU4XuzhH+A5NUy2WkZGhiRMnqm3btgoJCVFISIg6dOiglJQU7d6929fpVanevXvLZrOVG5VtvPLy8jR9+vQaVUCBy8miRYvc/s0GBwerbdu2mjhxorKysnydnmWrVq2q8b/oofICfJ0APLNy5UoNGzZMAQEBuueee9SlSxf5+flp7969+uijjzRv3jxlZGQoNjbW16lWiSeeeEJjx451ff7mm280Z84cPf7447rqqqtcyzt37lyp8+Tl5WnGjBmSzjdqAKrGM888o7i4OOXn5+vLL7/UvHnztGrVKu3Zs0chISHVlkevXr105swZBQUFVWi/VatWae7cuTROlzmaplrowIEDGj58uGJjY7Vu3To1adLEbf2LL76oN954Q35+l76QePr0adWvX78qU60yN998s9vn4OBgzZkzRzfffPMlm5va/DMDl7N+/frpmmuukSSNHTtWERERmjVrlj755BONGDGixPZV9W/Zz89PwcHBXj8uLg/cnquFXnrpJZ0+fVoLFy4s0TBJUkBAgB566CE1b97ctezC/JsDBw6of//+Cg0N1T333CPpfPF55JFH1Lx5c9ntdrVr104vv/yyjDGu/Q8ePCibzaZFixaVON/Ft8GmT58um82m/fv3a+TIkQoPD5fD4dCoUaOUl5fntm9BQYEmT56sqKgohYaGatCgQfrpp58qOULueXz//fe6++671bBhQ1133XWSzl81Kq25GjlypFq2bOn6maOioiRJM2bMKPOW35EjRzR48GA1aNBAUVFRmjJlioqKirzyMwB11U033STp/DSES9Wv4uJivfrqq+rYsaOCg4MVHR2tBx54QL/88ovb8Ywxeu6559SsWTOFhIToxhtv1HfffVfivGXNadq2bZv69++vhg0bqn79+urcubNee+01Sefrxty5cyXJ7VbjBd7OEb7DlaZaaOXKlWrdurV69OhRof3OnTunpKQkXXfddXr55ZcVEhIiY4wGDRqkDRs2aMyYMeratavWrFmjP/3pTzpy5Ihmz57tcZ533XWX4uLilJqaqm+//VYLFixQ48aN9eKLL7q2GTt2rN577z3dfffd+sMf/qD169drwIABHp+zNHfeeafatGmj//mf/3FrBMsTFRWlefPmafz48RoyZIhuv/12Se63/IqKipSUlKQePXro5Zdf1tq1a/XKK6+oVatWGj9+vFd/DqAuOXDggCQpIiJCUun1S5IeeOABLVq0SKNGjdJDDz2kjIwM/fnPf9bOnTv197//XYGBgZKkp59+Ws8995z69++v/v3769tvv1Xfvn1VWFhYbi5ffPGFbr31VjVp0kR//OMfFRMTox9++EErV67UH//4Rz3wwAM6evSovvjiC7377rsl9q+OHFFNDGoVp9NpJJnBgweXWPfLL7+YEydOuCIvL8+1Ljk52Ugyjz32mNs+H3/8sZFknnvuObfld9xxh7HZbGb//v3GGGMyMjKMJLNw4cIS55Vkpk2b5vo8bdo0I8mMHj3abbshQ4aYiIgI1+ddu3YZSWbChAlu2919990ljlme5cuXG0lmw4YNJfIYMWJEie1vuOEGc8MNN5RYnpycbGJjY12fT5w4UWYuF8b0mWeecVv+u9/9zsTHx1vOHajLFi5caCSZtWvXmhMnTpjDhw+bpUuXmoiICFOvXj3z008/lVm//u///s9IMosXL3Zb/tlnn7ktP378uAkKCjIDBgwwxcXFru0ef/xxI8kkJye7lm3YsMGtlpw7d87ExcWZ2NhY88svv7id57fHSklJMaX9l1oVOcJ3uD1Xy+Tm5kpSqY+69+7dW1FRUa64cLn4ty6++rFq1Sr5+/vroYceclv+yCOPyBij1atXe5zruHHj3D5ff/31OnnypOtnWLVqlSSVOPekSZM8PqeVPLyttJ/z//2//1el5wQuN4mJiYqKilLz5s01fPhwNWjQQGlpabriiitc21xcv5YvXy6Hw6Gbb75Z2dnZroiPj1eDBg20YcMGSdLatWtVWFioBx980O22mZVas3PnTmVkZGjSpEkKDw93W/fbY5WlOnJE9eH2XC0TGhoqSfr1119LrPvLX/6iU6dOKSsrS/fee2+J9QEBAWrWrJnbskOHDqlp06au415w4Qm0Q4cOeZxrixYt3D43bNhQkvTLL78oLCxMhw4dkp+fn1q1auW2Xbt27Tw+Z2ni4uK8erzfCg4Ods17uqBhw4Yl5ioAuLS5c+eqbdu2CggIUHR0tNq1a+f2MEtp9Wvfvn1yOp1q3Lhxqcc8fvy4pP/UsTZt2ritj4qKctWlsly4TdipU6eK/UDVmCOqD01TLeNwONSkSRPt2bOnxLoLc5wOHjxY6r52u73cJ+rKUtZvVJea8Ozv71/qclOBeUXeUK9evRLLbDZbqXlUdAJ3WT8jgIrp3r276+m50pRWv4qLi9W4cWMtXry41H0u/oXGF2pDjrCOpqkWGjBggBYsWKCvv/5a3bt3r9SxYmNjtXbtWp06dcrtatPevXtd66X/XCXKyclx278yV6JiY2NVXFysAwcOuF1dSk9P9/iYVjVs2LDUW2gX/zxWLr8D8I1WrVpp7dq16tmzZ6m/HF1woY7t27dPV155pWv5iRMnyr0qfOFK+J49e5SYmFjmdmXViurIEdWHOU210KOPPqqQkBCNHj261DfmVuRKTv/+/VVUVKQ///nPbstnz54tm82mfv36SZLCwsIUGRmpzZs3u233xhtvePATnHfh2HPmzHFb/uqrr3p8TKtatWqlvXv36sSJE65l//jHP/T3v//dbbsLT+hc3CwC8L277rpLRUVFevbZZ0usO3funOvfbWJiogIDA/X666+71Ucrteb3v/+94uLi9Oqrr5aoA7891oV3Rl28TXXkiOrDlaZaqE2bNlqyZIlGjBihdu3aud4IboxRRkaGlixZIj8/vxL3/0szcOBA3XjjjXriiSd08OBBdenSRZ9//rk++eQTTZo0yW2+0dixY/XCCy9o7Nixuuaaa7R582b961//8vjn6Nq1q0aMGKE33nhDTqdTf/jDH7Ru3Trt37/f42NaNXr0aM2aNUtJSUkaM2aMjh8/rvnz56tjx46uierS+Vt7HTp00LJly9S2bVs1atRInTp18nh+AwDvueGGG/TAAw8oNTVVu3btUt++fRUYGKh9+/Zp+fLleu2113THHXe43p+WmpqqW2+9Vf3799fOnTu1evVqRUZGXvIcfn5+mjdvngYOHKiuXbtq1KhRatKkifbu3avvvvtOa9askSTFx8dLOv9gS1JSkvz9/TV8+PBqyRHVyHcP7qGy9u/fb8aPH29at25tgoODTb169Uz79u3NuHHjzK5du9y2TU5ONvXr1y/1OKdOnTKTJ082TZs2NYGBgaZNmzZm5syZbo+9GmNMXl6eGTNmjHE4HCY0NNTcdddd5vjx42W+cuDEiRNu+194tDgjI8O17MyZM+ahhx4yERERpn79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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_pair(*false_positive_segmentation_2d(), \"False Positive\")" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk0AAAFZCAYAAACFVRtIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA18UlEQVR4nO3de3xNd7rH8e+WyI1kRyISGiLug2ImLiejVEupa11ape00qNYlGDraV/UmZjoTvWmrY5hyylS1HB16cXoVt+kUbZUx2srBhGpJXCo7iCQkv/OHsadbElnZ2cneST7v1+v5I2v91lrPXng8Weu31rYZY4wAAABwTXW8nQAAAEB1QNMEAABgAU0TAACABTRNAAAAFtA0AQAAWEDTBAAAYAFNEwAAgAU0TQAAABbQNAEAAFhA0wTUMlu2bJHNZtOWLVu8nUq1k5KSIpvN5u00AHgJTRNQTaxYsUI2m63EeOSRR7yd3jVdyT0oKEg//PBDsfV9+vRRx44dvZBZcbm5uUpJSaGpBFCMv7cTAFA+v/3tbxUfH++yzFcajrLk5+dr/vz5evnll72dSqlyc3M1b948SZebuZ96/PHHfb5BBVB5aJqAambgwIHq2rWrt9NwS5cuXbR06VLNmTNHTZo08XY65ebv7y9/f8omUFtxew6oIY4cOaKpU6eqbdu2Cg4OVmRkpO644w4dPny4zG0PHDigUaNGKSYmRkFBQYqNjdWYMWPkcDhcxr3++utKSEhQcHCwIiIiNGbMGB09etRyjo8++qgKCws1f/58S+OtHm/RokVq0aKFgoOD1b17d/3tb39Tnz59XK4UFRQU6Mknn1RCQoLsdrvq1aunXr16afPmzc4xhw8fVlRUlCRp3rx5ztufKSkpkorPaerYsaNuuummYvkUFRXpuuuu0+233+6y7MUXX1SHDh0UFBSk6OhoTZo0SWfOnLF0LgB4H00TUM04HA6dOnXKJSTpiy++0GeffaYxY8Zo4cKFmjx5stLS0tSnTx/l5uaWur+CggINGDBAO3bs0PTp07Vo0SI98MAD+te//qXs7GznuN///ve699571bp1ay1YsEAzZ85UWlqaevfu7TLuWuLj43Xvvfdq6dKlOnbs2DXHWj3e4sWLNW3aNMXGxuqZZ55Rr169NHz4cH3//fcu+8vJydGyZcvUp08fPf3000pJSdHJkyc1YMAA7dmzR5IUFRWlxYsXS5JGjBihlStXauXKlRo5cmSJOd55553atm2bMjMzXZZ/+umnOnbsmMaMGeNcNmnSJD300EPq2bOnXnrpJY0fP16rVq3SgAEDdPHiRUvnD4CXGQDVwvLly42kEsMYY3Jzc4tts337diPJvPbaa85lmzdvNpLM5s2bjTHG7N6920gya9euLfXYhw8fNn5+fub3v/+9y/J//vOfxt/fv9jy0nL/4osvzKFDh4y/v7+ZMWOGc/2NN95oOnToUO7j5efnm8jISNOtWzdz8eJF57gVK1YYSebGG290Lrt06ZLJz8932d+ZM2dMdHS0mTBhgnPZyZMnjSQzd+7cYp9j7ty55qdlMz093UgyL7/8ssu4qVOnmvr16zv/TP72t78ZSWbVqlUu4z788MMSlwPwTVxpAqqZRYsW6ZNPPnEJSQoODnaOuXjxok6fPq1WrVopPDxcX331Van7s9vtkqSPPvqo1CtS69atU1FRkUaPHu1yhSsmJkatW7d2ucVVlhYtWuhXv/qVXnnlFR0/frxCx/vyyy91+vRp3X///S5zje6++241aNDAZZ9+fn4KCAiQdPlW2Y8//qhLly6pa9eu1zw/19KmTRt16dJFa9ascS4rLCzUW2+9paFDhzr/TNauXSu73a5bbrnF5fMkJCSofv365Tp/ALyHGY1ANdO9e/cSJ4JfuHBBqampWr58uX744QcZY5zrrp6b9FPx8fF68MEHtWDBAq1atUq9evXSsGHDdM899zgbqgMHDsgYo9atW5e4j7p165brMzz++ONauXKl5s+fr5deeqnYeqvHO3LkiCSpVatWLuv9/f3VvHnzYtv95S9/0fPPP6/9+/e73BK7+mnE8rjzzjv16KOP6ocfftB1112nLVu26MSJE7rzzjtdPo/D4VCjRo1K3MeJEyfcPj6AqkPTBNQQ06dP1/LlyzVz5kwlJibKbrfLZrNpzJgxKioquua2zz//vMaNG6d33nlHH3/8sWbMmKHU1FTt2LFDsbGxKioqks1m0wcffCA/P79i29evX79cubZo0UL33HOPXnnllRIf4ff08aTLk8rHjRun4cOH66GHHlKjRo3k5+en1NRUHTp0qNz7u+LOO+/UnDlztHbtWs2cOVP/8z//I7vdrltvvdXl8zRq1EirVq0qcR9XJp8D8G00TUAN8dZbbykpKUnPP/+8c1leXp7lSdrXX3+9rr/+ej3++OP67LPP1LNnTy1ZskRPPfWUWrZsKWOM4uPj1aZNG4/k+/jjj+v111/X008/XWyd1ePFxcVJkg4ePOjyFNulS5d0+PBhderUybnsrbfeUosWLbRu3TqXJ+Dmzp3rss/yvvE7Pj5e3bt315o1azRt2jStW7dOw4cPV2BgoMvn2bhxo3r27OlyGxVA9cKcJqCG8PPzc7klJ0kvv/yyCgsLr7ldTk6OLl265LLs+uuvV506dZSfny9JGjlypPz8/DRv3rxixzDG6PTp0+XOt2XLlrrnnnv05z//udjTZ1aP17VrV0VGRmrp0qUun2HVqlXFHuW/csXqp/vbuXOntm/f7jIuJCREkiw3m9Llq007duzQq6++qlOnTrncmpOk0aNHq7CwUL/73e+KbXvp0qVyHQuA93ClCaghhgwZopUrV8put6t9+/bavn27Nm7cqMjIyGtut2nTJk2bNk133HGH2rRpo0uXLmnlypXy8/PTqFGjJF1ucJ566inNmTNHhw8f1vDhwxUaGqqMjAytX79eDzzwgGbPnl3unB977DGtXLlS6enp6tChg3O51eMFBAQoJSVF06dP180336zRo0fr8OHDWrFihVq2bOly1WjIkCFat26dRowYocGDBysjI0NLlixR+/btde7cOee44OBgtW/fXmvWrFGbNm0UERGhjh07XvOt66NHj9bs2bM1e/ZsRUREqF+/fi7rb7zxRk2aNEmpqanas2eP+vfvr7p16+rAgQNau3atXnrpJZd3OgHwUV56ag9AOf30sf2SnDlzxowfP940bNjQ1K9f3wwYMMDs37/fxMXFmaSkJOe4q1858K9//ctMmDDBtGzZ0gQFBZmIiAhz0003mY0bNxY7xl//+ldzww03mHr16pl69eqZdu3ameTkZJOenu527klJSUaSyysHynu8hQsXmri4OBMYGGi6d+9u/v73v5uEhARz6623OscUFRWZP/zhD85xP//5z82GDRtMUlKSiYuLc9nfZ599ZhISEkxAQIDL6weufuXAT/Xs2dNIMhMnTiz1PLzyyismISHBBAcHm9DQUHP99debhx9+2Bw7dqzUbQD4DpsxV137BoBqrqioSFFRURo5cqSWLl3q7XQA1BDMaQJQreXl5RWb9/Taa6/pxx9/LPaFuwBQEVxpAlCtbdmyRbNmzdIdd9yhyMhIffXVV/rv//5v/exnP9OuXbucL7QEgIpiIjiAaq158+Zq2rSpFi5cqB9//FERERG69957NX/+fBomAB7FlSYAAAALmNMEAABgAU0TAACABTRNAAAAFtA0AQAAWEDTBAAAYAFNEwAAgAU0TQAAABbQNAEAAFhA0wQAAGABTRMAAIAFNE3wSTabTSkpKd5O45rGjRun+vXrezsNABXQvHlzjRs3zvnzli1bZLPZtGXLFq/ldLWrc4T30DRVYxkZGZo2bZratGmjkJAQhYSEqH379kpOTtbevXu9nV6l6tOnj2w2W5lR0cYrNzdXKSkpPlVAgZpkxYoVLv9mg4KC1KZNG02bNk1ZWVneTs+y999/3+d/0UPF+Xs7Abhnw4YNuvPOO+Xv76+7775bnTt3Vp06dbR//36tW7dOixcvVkZGhuLi4rydaqV47LHHNHHiROfPX3zxhRYuXKhHH31UP/vZz5zLO3XqVKHj5Obmat68eZIuN2oAKsdvf/tbxcfHKy8vT59++qkWL16s999/X/v27VNISEiV5dG7d29duHBBAQEB5dru/fff16JFi2icajiapmro0KFDGjNmjOLi4pSWlqbGjRu7rH/66af1pz/9SXXqXPtC4vnz51WvXr3KTLXS3HLLLS4/BwUFaeHChbrllluu2dxU588M1GQDBw5U165dJUkTJ05UZGSkFixYoHfeeUdjx44tNr6y/i3XqVNHQUFBHt8vagZuz1VDzzzzjM6fP6/ly5cXa5gkyd/fXzNmzFDTpk2dy67Mvzl06JAGDRqk0NBQ3X333ZIuF5/f/OY3atq0qQIDA9W2bVs999xzMsY4tz98+LBsNptWrFhR7HhX3wZLSUmRzWbTwYMHNW7cOIWHh8tut2v8+PHKzc112TY/P1+zZs1SVFSUQkNDNWzYMH3//fcVPEOueXzzzTe666671KBBA91www2SLl81Kqm5GjdunJo3b+78zFFRUZKkefPmlXrL74cfftDw4cNVv359RUVFafbs2SosLPTIZwBqq5tvvlnS5WkI16pfRUVFevHFF9WhQwcFBQUpOjpakyZN0pkzZ1z2Z4zRU089pdjYWIWEhOimm27S119/Xey4pc1p2rlzpwYNGqQGDRqoXr166tSpk1566SVJl+vGokWLJMnlVuMVns4R3sOVpmpow4YN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uXOnEhMTPXmoaqusWWioefgz9w7qEQBPK/fLLc+dO6eDBw86f87IyNCePXsUERGhZs2aaebMmXrqqafUunVrxcfH64knnlCTJk00fPhwT+YNANQjAFWrvI/1bt68ucRfmJOSkpyP+T7xxBMmOjraBAYGmr59+5r09HQe7/13GIK4Krz9d9LbUZFXDlR2PaoNNYkgiP9EWfXIZowx8iE5OTmy2+3eTqPS+NTJhk+o7V+z4nA4fHreUE2vSQD+o6x65PWn5wAAAKoDmiYAAAALaJoAAAAsoGkCAACwgKYJAADAApomAAAAC2iaAAAALKBpAgAAsICmCQAAwAKaJgAAAAtomgAAACygaQIAALCApgkAAMACmiYAAAALaJoAAAAsoGkCAACwgKYJAADAApomAAAAC2iaAAAALKBpAgAAsICmCQAAwAKaJgAAAAtomgAAACygaQIAALCApgkAAMACmiYAAAALaJoAAAAsoGkCAACwoNxN07Zt2zR06FA1adJENptNb7/9tsv6cePGyWazucStt97qqXwBwIl6BKAqlbtpOn/+vDp37qxFixaVOubWW2/V8ePHnfHmm29WKEkAKAn1CEBV8i/vBgMHDtTAgQOvOSYwMFAxMTFuJwUAVlCPAFSlSpnTtGXLFjVq1Eht27bVlClTdPr06VLH5ufnKycnxyUAwFPKU48kahKA0nm8abr11lv12muvKS0tTU8//bS2bt2qgQMHqrCwsMTxqampstvtzmjatKmnUwJQS5W3HknUJADXYCpAklm/fv01xxw6dMhIMhs3bixxfV5ennE4HM44evSokVRjwxDEVeHtv5PeDofDUZEy5NF6VBtrEkEQ/4my6lGlv3KgRYsWatiwoQ4ePFji+sDAQIWFhbkEAFSGsuqRRE0CULpKb5q+//57nT59Wo0bN67sQwHANVGPAFREuZ+eO3funMtvaRkZGdqzZ48iIiIUERGhefPmadSoUYqJidGhQ4f08MMPq1WrVhowYIBHEwcA6hGAKlXeeQObN28u8T5gUlKSyc3NNf379zdRUVGmbt26Ji4uztx///0mMzPT8v4dDofX72lWZhiCuCq8/XfS21GROU2VXY9qQ00iCOI/UVY9shljjHxITk6O7Ha7t9OoND51suETbN5OwMscDodPzxuq6TUJwH+UVY/47jkAAAALaJoAAAAsoGkCAACwgKYJAADAApomAAAAC2iaAAAALKBpAgAAsICmCQAAwAKaJgAAAAtomgAAACygaQIAALCApgkAAMACmiYAAAALaJoAAAAsoGkCAACwgKYJAADAApomAAAAC2iaAAAALKBpAgAAsICmCQAAwAKaJgAAAAtomgAAACygaQIAALCApgkAAMACmiYAAAALaJoAAAAsoGkCAACwgKYJAADAgnI1TampqerWrZtCQ0PVqFEjDR8+XOnp6S5j8vLylJycrMjISNWvX1+jRo1SVlaWR5OuzmxlBGoe/swrDzUJQFUqV9O0detWJScna8eOHfrkk0908eJF9e/fX+fPn3eOmTVrlt577z2tXbtWW7du1bFjxzRy5EiPJw4A1CQAVcpUwIkTJ4wks3XrVmOMMdnZ2aZu3bpm7dq1zjHffvutkWS2b99uaZ8Oh8NIqrVhiBoX3v475evhcDgqUoaoSQRBeCzKqkcVmtPkcDgkSREREZKkXbt26eLFi+rXr59zTLt27dSsWTNt3769xH3k5+crJyfHJQDAHdQkAJXJ7aapqKhIM2fOVM+ePdWxY0dJUmZmpgICAhQeHu4yNjo6WpmZmSXuJzU1VXa73RlNmzZ1NyUAtRg1CUBlc7tpSk5O1r59+7R69eoKJTBnzhw5HA5nHD16tEL7A1A7UZMAVDZ/dzaaNm2aNmzYoG3btik2Nta5PCYmRgUFBcrOznb5zS4rK0sxMTEl7iswMFCBgYHupAEAkqhJAKpGua40GWM0bdo0rV+/Xps2bVJ8fLzL+oSEBNWtW1dpaWnOZenp6fruu++UmJjomYwB4N+oSQCqVHmeTJkyZYqx2+1my5Yt5vjx487Izc11jpk8ebJp1qyZ2bRpk/nyyy9NYmKiSUxMtHwMnlS5dhjCJ8Pbfy+qc1Tk6TlqEkEQnoyy6lG5mqbSDrJ8+XLnmAsXLpipU6eaBg0amJCQEDNixAhz/PhxCpSHwhA+Gd7+e1GdoyJNU2n7pCYRBOFOlFWPbP8uPD4jJydHdrvd22n4LJ/6w4ITb/Z2n8PhUFhYmLfTKBU1Cag9yqpHfPccAACABTRNAAAAFtA0AQAAWEDTBAAAYAFNEwAAgAVuvREc3nOtp7R4sq7y8HQcAIArTQAAABbQNAEAAFhA0wQAAGABTRMAAIAFNE0AAAAW0DQBAABYwCsHapCyHovnlQSl45UCAICycKUJAADAApomAAAAC2iaAAAALKBpAgAAsICmCQAAwAKaJgAAAAtomgAAACzgPU21CO8iAgDAfVxpAgAAsICmCQAAwAKaJgAAAAtomgAAACygaQIAALCApgkAAMACmiYAAAALytU0paamqlu3bgoNDVWjRo00fPhwpaenu4zp06ePbDabS0yePNmjSQOARE0CULXK1TRt3bpVycnJ2rFjhz755BNdvHhR/fv31/nz513G3X///Tp+/LgznnnmGY8mDQASNQlA1SrXG8E//PBDl59XrFihRo0aadeuXerdu7dzeUhIiGJiYjyTIQCUgpoEoCpVaE6Tw+GQJEVERLgsX7VqlRo2bKiOHTtqzpw5ys3NLXUf+fn5ysnJcQkAcAc1CUClMm4qLCw0gwcPNj179nRZ/uc//9l8+OGHZu/eveb111831113nRkxYkSp+5k7d66RRBBELQ2Hw+FuGaImEQTh0SirHrndNE2ePNnExcWZo0ePXnNcWlqakWQOHjxY4vq8vDzjcDiccfToUa+fNIIgqi481TRRkwiCqGiUVY/KNafpimnTpmnDhg3atm2bYmNjrzm2R48ekqSDBw+qZcuWxdYHBgYqMDDQnTQAQBI1CUDVKFfTZIzR9OnTtX79em3ZskXx8fFlbrNnzx5JUuPGjd1KEABKQ00CUJXK1TQlJyfrjTfe0DvvvKPQ0FBlZmZKkux2u4KDg3Xo0CG98cYbGjRokCIjI7V3717NmjVLvXv3VqdOnSrlAwCovahJAKpUeeYMqJR7gMuXLzfGGPPdd9+Z3r17m4iICBMYGGhatWplHnrooXLNWXA4HF6/p0kQRNVFReY0lbZPahJBEO5EWbXB9u/C4zNycnJkt9u9nQaAKuJwOBQWFubtNEpFTQJqj7LqEd89BwAAYAFNEwAAgAU0TQAAABbQNAEAAFhA0wQAAGABTRMAAIAFNE0AAAAW0DQBAABYQNMEAABgAU0TAACABTRNAAAAFtA0AQAAWEDTBAAAYAFNEwAAgAU0TQAAABbQNAEAAFhA0wQAAGABTRMAAIAFNE0AAAAW0DQBAABYQNMEAABgAU0TAACABTRNAAAAFtA0AQAAWEDTBAAAYAFNEwAAgAU0TQAAABbQNAEAAFhQrqZp8eLF6tSpk8LCwhQWFqbExER98MEHzvV5eXlKTk5WZGSk6tevr1GjRikrK8vjSQOARE0CULXK1TTFxsZq/vz52rVrl7788kvdfPPNuu222/T1119LkmbNmqX33ntPa9eu1datW3Xs2DGNHDmyUhIHAGoSgCplKqhBgwZm2bJlJjs729StW9esXbvWue7bb781ksz27dst78/hcBhJBEHUknA4HBUtQ9QkgiA8EmXVI7fnNBUWFmr16tU6f/68EhMTtWvXLl28eFH9+vVzjmnXrp2aNWum7du3u3sYALCEmgSgsvmXd4N//vOfSkxMVF5enurXr6/169erffv22rNnjwICAhQeHu4yPjo6WpmZmaXuLz8/X/n5+c6fc3JyypsSgFqMmgSgqpT7SlPbtm21Z88e7dy5U1OmTFFSUpK++eYbtxNITU2V3W53RtOmTd3eF4Dah5oEoMq4PXHg3/r27WseeOABk5aWZiSZM2fOuKxv1qyZWbBgQanb5+XlGYfD4YyjR496/Z4mQRBVF56e00RNIgjC3ai0OU1XFBUVKT8/XwkJCapbt67S0tKc69LT0/Xdd98pMTGx1O0DAwOdjwtfCQBwFzUJQGUp15ymOXPmaODAgWrWrJnOnj2rN954Q1u2bNFHH30ku92u++67Tw8++KAiIiIUFham6dOnKzExUf/1X/9VWfkDqMWoSQCqVHkue0+YMMHExcWZgIAAExUVZfr27Ws+/vhj5/oLFy6YqVOnmgYNGpiQkBAzYsQIc/z48fIcgsd7CaKWRUVuz1GTCILwZJRVj2zGGCMfkpOTI7vd7u00AFQRh8Ph07fAqElA7VFWPeK75wAAACygaQIAALCApgkAAMACmiYAAAALfK5p8rF56QAqma//m/f1/AB4Tln/3n2uaTp79qy3UwBQhXz937yv5wfAc8r69+5zrxwoKirSsWPHFBoaKpvNppycHDVt2lRHjx716ceSfQ3nzX2cO/eU97wZY3T27Fk1adJEder43O9vTtQkz+C8uYfz5p7KqkfleiN4VahTp45iY2OLLefrDNzDeXMf58495Tlv1eH9R9Qkz+K8uYfz5h5P1yPf/fUOAADAh9A0AQAAWODzTVNgYKDmzp2rwMBAb6dSrXDe3Me5c09tOW+15XN6GufNPZw391TWefO5ieAAAAC+yOevNAEAAPgCmiYAAAALaJoAAAAsoGkCAACwwOebpkWLFql58+YKCgpSjx499Pnnn3s7JZ+ybds2DR06VE2aNJHNZtPbb7/tst4YoyeffFKNGzdWcHCw+vXrpwMHDngnWR+Smpqqbt26KTQ0VI0aNdLw4cOVnp7uMiYvL0/JycmKjIxU/fr1NWrUKGVlZXkpY9+wePFiderUyfnCuMTERH3wwQfO9TX9nFGPykZNKj/qkfuquib5dNO0Zs0aPfjgg5o7d66++uorde7cWQMGDNCJEye8nZrPOH/+vDp37qxFixaVuP6ZZ57RwoULtWTJEu3cuVP16tXTgAEDlJeXV8WZ+patW7cqOTlZO3bs0CeffKKLFy+qf//+On/+vHPMrFmz9N5772nt2rXaunWrjh07ppEjR3oxa++LjY3V/PnztWvXLn355Ze6+eabddttt+nrr7+WVLPPGfXIGmpS+VGP3FflNcn4sO7du5vk5GTnz4WFhaZJkyYmNTXVi1n5Lklm/fr1zp+LiopMTEyMefbZZ53LsrOzTWBgoHnzzTe9kKHvOnHihJFktm7daoy5fJ7q1q1r1q5d6xzz7bffGklm+/bt3krTJzVo0MAsW7asxp8z6lH5UZPcQz2qmMqsST57pamgoEC7du1Sv379nMvq1Kmjfv36afv27V7MrPrIyMhQZmamyzm02+3q0aMH5/AqDodDkhQRESFJ2rVrly5evOhy7tq1a6dmzZpx7v6tsLBQq1ev1vnz55WYmFijzxn1yDOoSdZQj9xTFTXJ576w94pTp06psLBQ0dHRLsujo6O1f/9+L2VVvWRmZkpSiefwyjpc/hb7mTNnqmfPnurYsaOky+cuICBA4eHhLmM5d9I///lPJSYmKi8vT/Xr19f69evVvn177dmzp8aeM+qRZ1CTykY9Kr+qrEk+2zQBVSU5OVn79u3Tp59+6u1UqoW2bdtqz549cjgceuutt5SUlKStW7d6Oy2gRqAelV9V1iSfvT3XsGFD+fn5FZvlnpWVpZiYGC9lVb1cOU+cw9JNmzZNGzZs0ObNmxUbG+tcHhMTo4KCAmVnZ7uM59xJAQEBatWqlRISEpSamqrOnTvrpZdeqtHnjHrkGdSka6Meuacqa5LPNk0BAQFKSEhQWlqac1lRUZHS0tKUmJjoxcyqj/j4eMXExLicw5ycHO3cubPWn0NjjKZNm6b169dr06ZNio+Pd1mfkJCgunXrupy79PR0fffdd7X+3F2tqKhI+fn5NfqcUY88g5pUMuqRZ1VqTfLMXPXKsXr1ahMYGGhWrFhhvvnmG/PAAw+Y8PBwk5mZ6e3UfMbZs2fN7t27ze7du40ks2DBArN7925z5MgRY4wx8+fPN+Hh4eadd94xe/fuNbfddpuJj483Fy5c8HLm3jVlyhRjt9vNli1bzPHjx52Rm5vrHDN58mTTrFkzs2nTJvPll1+axMREk5iY6MWsve+RRx4xW7duNRkZGWbv3r3mkUceMTabzXz88cfGmJp9zqhH1lCTyo965L6qrkk+3TQZY8zLL79smjVrZgICAkz37t3Njh07vJ2ST9m8ebORVCySkpKMMZcf8X3iiSdMdHS0CQwMNH379jXp6eneTdoHlHTOJJnly5c7x1y4cMFMnTrVNGjQwISEhJgRI0aY48ePey9pHzBhwgQTFxdnAgICTFRUlOnbt6+zOBlT888Z9ahs1KTyox65r6prks0YY9y7RgUAAFB7+OycJgAAAF9C0wQAAGABTRMAAIAFNE0AAAAW0DQBAABYQNMEAABgAU0TAACABTRNAAAAFtA0AQAAWEDTBAAAYAFNEwAAgAU0TQAAABb8P0P6MvcKBx9RAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_pair(*false_negative_segmentation_2d(), \"False Negative\")" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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AOA13GkCfKRVq1ZatmyZ7r//fl133XXFVgRPT0/X22+/7bqDIl24g3THHXdo5cqVys7O1qxZs4odd8GCBerWrZuuu+46PfTQQ2revLnS0tK0ZcsW/fzzz/rPf/5zybhOnz6txo0b684771T79u0VEhKi9evXa9u2ba67KgEBAVqyZIn69++vtm3batSoUWrUqJF++eUXbdiwQWFhYfrwww8lXVgT6bPPPlPXrl01btw4FRQUaP78+br22mu1a9cuj13P8sRUHh07dtT69es1e/ZsRUdHKzY2Vl26dNHAgQO1fPlyOZ1OtWnTRlu2bNH69etVr149t/07dOigGjVqaPr06crMzJTD4dBNN92kyMjIYud6+OGHtXjxYo0cOVLbt29Xs2bNtGbNGn311VeaM2dOmS8OAPAxP765B1RLu3fvNsOHDzcNGzY0tWrVMlFRUWb48OHmu+++K3H8559/biQZm81mjhw5UuKYgwcPmj/96U8mKirK1KpVyzRq1MgMHDjQrFmzxjWmaMmBbdu2ue2bl5dnnnjiCdO+fXsTGhpqateubdq3b29eeeWVYufZuXOnueOOO0y9evWMw+EwMTEx5u677zZJSUlu45KSksz1119v7Ha7adGihVmyZIl57LHHTGBgoNs4ScWWOih6vX7mzJlu/Rs2bDCSzOrVq8sdU9GSAydOnHDbt+ia/HbJg3379pkePXqYoKAgI8m1/MCpU6fMqFGjTP369U1ISIjp16+f2bdvn4mJiSm2RMFrr71mmjdvbmrUqOG2/MDFSw4YY0xaWprruHa73Vx33XUmMTHR0jUpuoZTpkwp1g/A8/juOQA+MWTIEO3du9f11hsAXG6Y0wTA486ePev2+cCBA/roo4+KfYUIAFxOuNMEwOMaNmyokSNHqnnz5jp8+LAWLlyovLw87dy5U61atfJ3eABQIUwEB+Bxt956q95++22lpqbK4XAoLi5OL774IgUTgMsad5oAAAAsYE4TAACABRRNAAAAFlA0AQAAWEDRBAAAYAFFEwAAgAUUTQAAABZQNAEAAFhA0QQAAGABRRMAAIAFFE0AAAAWUDShSrLZbEpISPB3GJc0cuRIhYSE+DsMAJXQrFkzjRw50vV548aNstls2rhxo99iutjFMcJ/KJouYykpKZowYYKuuuoqBQcHKzg4WG3atFF8fLx2797t7/C8qlevXrLZbGW2yhZeOTk5SkhIqFIJFLiSLF261O13NjAwUFdddZUmTJigtLQ0f4dn2UcffVTl/6GHyqvp7wBQMevWrdM999yjmjVr6v7771f79u0VEBCgffv26d1339XChQuVkpKimJgYf4fqFc8884wefPBB1+dt27Zp7ty5evrpp3XNNde4+tu1a1ep8+Tk5Oj555+XdKFQA+Adf/vb3xQbG6vc3Fx9+eWXWrhwoT766CPt2bNHwcHBPoujR48eOnv2rOx2e7n2++ijj7RgwQIKpyscRdNl6ODBg7r33nsVExOjpKQkNWzY0G379OnT9corrygg4NI3ErOzs1W7dm1vhuo1N998s9vnwMBAzZ07VzfffPMli5vL+WcGrmT9+/dXp06dJEkPPvig6tWrp9mzZ+v999/X8OHDi4331u9yQECAAgMDPX5cXBl4PHcZmjFjhrKzs5WYmFisYJKkmjVr6tFHH1WTJk1cfUXzbw4ePKgBAwYoNDRU999/v6QLyeexxx5TkyZN5HA41Lp1a82aNUvGGNf+hw4dks1m09KlS4ud7+LHYAkJCbLZbEpOTtbIkSMVHh4up9OpUaNGKScnx23fvLw8TZo0SREREQoNDdXtt9+un3/+uZJXyD2O77//Xvfdd5/q1Kmjbt26Sbpw16ik4mrkyJFq1qyZ62eOiIiQJD3//POlPvL75ZdfNGTIEIWEhCgiIkKPP/64CgoKPPIzANXVTTfdJOnCNIRL5a/CwkLNmTNHbdu2VWBgoBo0aKAxY8bo1KlTbsczxuiFF15Q48aNFRwcrN69e2vv3r3FzlvanKatW7dqwIABqlOnjmrXrq127drpn//8p6QLeWPBggWS5PaosYinY4T/cKfpMrRu3Tq1bNlSXbp0Kdd+58+fV79+/dStWzfNmjVLwcHBMsbo9ttv14YNGzR69Gh16NBBn376qZ544gn98ssvevnllysc5913363Y2FhNnTpVO3bs0JIlSxQZGanp06e7xjz44IN68803dd999+n3v/+9vvjiC912220VPmdJ7rrrLrVq1UovvviiWyFYloiICC1cuFDjxo3T0KFDdccdd0hyf+RXUFCgfv36qUuXLpo1a5bWr1+vl156SS1atNC4ceM8+nMA1cnBgwclSfXq1ZNUcv6SpDFjxmjp0qUaNWqUHn30UaWkpGj+/PnauXOnvvrqK9WqVUuS9Nxzz+mFF17QgAEDNGDAAO3YsUO33HKL8vPzy4zl888/18CBA9WwYUP9+c9/VlRUlH744QetW7dOf/7znzVmzBgdPXpUn3/+uZYvX15sf1/ECB8xuKxkZmYaSWbIkCHFtp06dcqcOHHC1XJyclzbRowYYSSZv/zlL277vPfee0aSeeGFF9z677zzTmOz2UxycrIxxpiUlBQjySQmJhY7ryQzZcoU1+cpU6YYSeaBBx5wGzd06FBTr1491+ddu3YZSWb8+PFu4+67775ixyzL6tWrjSSzYcOGYnEMHz682PiePXuanj17FusfMWKEiYmJcX0+ceJEqbEUXdO//e1vbv3XX3+96dixo+XYgeosMTHRSDLr1683J06cMEeOHDErV6409erVM0FBQebnn38uNX/961//MpLMW2+95db/ySefuPUfP37c2O12c9ttt5nCwkLXuKefftpIMiNGjHD1bdiwwS2XnD9/3sTGxpqYmBhz6tQpt/P89ljx8fGmpL9SvREj/IfHc5eZrKwsSSrxVfdevXopIiLC1YpuF//WxXc/PvroI9WoUUOPPvqoW/9jjz0mY4w+/vjjCsc6duxYt8/du3fXyZMnXT/DRx99JEnFzj1x4sQKn9NKHJ5W0s/5448/evWcwJWmb9++ioiIUJMmTXTvvfcqJCREa9euVaNGjVxjLs5fq1evltPp1M0336z09HRX69ixo0JCQrRhwwZJ0vr165Wfn69HHnnE7bGZlVyzc+dOpaSkaOLEiQoPD3fb9ttjlcYXMcJ3eDx3mQkNDZUknTlzpti2xYsX6/Tp00pLS9Mf/vCHYttr1qypxo0bu/UdPnxY0dHRruMWKXoD7fDhwxWOtWnTpm6f69SpI0k6deqUwsLCdPjwYQUEBKhFixZu41q3bl3hc5YkNjbWo8f7rcDAQNe8pyJ16tQpNlcBwKUtWLBAV111lWrWrKkGDRqodevWbi+zlJS/Dhw4oMzMTEVGRpZ4zOPHj0v6vzzWqlUrt+0RERGuvFSaoseE1157bfl+IB/GCN+haLrMOJ1ONWzYUHv27Cm2rWiO06FDh0rc1+FwlPlGXWlK+xfVpSY816hRo8R+U455RZ4QFBRUrM9ms5UYR3kncJf2MwIon86dO7venitJSfmrsLBQkZGReuutt0rc5+J/0PjD5RAjrKNougzddtttWrJkib755ht17ty5UseKiYnR+vXrdfr0abe7Tfv27XNtl/7vLlFGRobb/pW5ExUTE6PCwkIdPHjQ7e7S/v37K3xMq+rUqVPiI7SLfx4rt98B+EeLFi20fv16de3atcR/HBUpymMHDhxQ8+bNXf0nTpwo865w0Z3wPXv2qG/fvqWOKy1X+CJG+A5zmi5DTz75pIKDg/XAAw+UuGJuee7kDBgwQAUFBZo/f75b/8svvyybzab+/ftLksLCwlS/fn1t3rzZbdwrr7xSgZ/ggqJjz507161/zpw5FT6mVS1atNC+fft04sQJV99//vMfffXVV27jit7QubhYBOB/d999twoKCvT3v/+92Lbz58+7fm/79u2rWrVqad68eW750UquueGGGxQbG6s5c+YUywO/PVbRmlEXj/FFjPAd7jRdhlq1aqUVK1Zo+PDhat26tWtFcGOMUlJStGLFCgUEBBR7/l+SQYMGqXfv3nrmmWd06NAhtW/fXp999pnef/99TZw40W2+0YMPPqhp06bpwQcfVKdOnbR582b9v//3/yr8c3To0EHDhw/XK6+8oszMTP3+979XUlKSkpOTK3xMqx544AHNnj1b/fr10+jRo3X8+HEtWrRIbdu2dU1Uly482mvTpo1WrVqlq666SnXr1tW1115b4fkNADynZ8+eGjNmjKZOnapdu3bplltuUa1atXTgwAGtXr1a//znP3XnnXe61k+bOnWqBg4cqAEDBmjnzp36+OOPVb9+/UueIyAgQAsXLtSgQYPUoUMHjRo1Sg0bNtS+ffu0d+9effrpp5Kkjh07SrrwYku/fv1Uo0YN3XvvvT6JET7kvxf3UFnJyclm3LhxpmXLliYwMNAEBQWZq6++2owdO9bs2rXLbeyIESNM7dq1SzzO6dOnzaRJk0x0dLSpVauWadWqlZk5c6bba6/GGJOTk2NGjx5tnE6nCQ0NNXfffbc5fvx4qUsOnDhxwm3/oleLU1JSXH1nz541jz76qKlXr56pXbu2GTRokDly5IhHlxy4OI4ib775pmnevLmx2+2mQ4cO5tNPPy225IAxxvz73/82HTt2NHa73S2u0q5p0XkBlK0oL2zbtq3UMZfKX8YY8+qrr5qOHTuaoKAgExoaaq677jrz5JNPmqNHj7rGFBQUmOeff940bNjQBAUFmV69epk9e/aYmJiYSy45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bd68WYMGDVJ0dLRsNpvee+89t+0jR46UzWZza7feequn4gUAF/IRAF8qd9GUnZ2t9u3ba8GCBaWOufXWW3Xs2DFXe/vttysVJACUhHwEwJdqlneH/v37q3///pcc43A4FBUVVeGgAMAK8hEAX/LKnKaNGzcqMjJSrVu31rhx43Ty5MlSx+bl5SkrK8utAYCnlCcfSeQkAKXzeNF066236o033lBSUpKmT5+uTZs2qX///iooKChx/NSpU+V0Ol2tSZMmng4JQDVV3nwkkZMAlM5mjDEV3tlm09q1azVkyJBSx/z4449q0aKF1q9frz59+hTbnpeXp7y8PNfnrKysap2kKvyHgSuWzd8BeFlmZqbCwsIqfRxP5COJnFQcWalECVf6b+YlJPg7AO8pKx95fcmB5s2bq379+kpOTi5xu8PhUFhYmFsDAG8oKx9J5CQApfN60fTzzz/r5MmTatiwobdPBQCXRD4CUBnlfnvuzJkzbv9KS0lJ0a5du1S3bl3VrVtXzz//vIYNG6aoqCgdPHhQTz75pFq2bKl+/fp5NHAAIB8B8KVyF03ffvutevfu7fo8efJkSdKIESO0cOFC7d69W8uWLVNGRoaio6N1yy236O9//7scDofnogYAkY8A+FalJoJ7Q1ZWlpxOp7/D8Jsq9YeBKuFKn27qqYng3lLdcxJZqRRMBL8i+X0iOAAAwJWAogkAAMACiiYAAAALKJoAAAAsoGgCAACwgKIJAADAAoomAAAACyiaAAAALKBoAgAAsICiCQAAwAKKJgAAAAsomgAAACygaAIAALCAogkAAMACiiYAAAALKJoAAAAsoGgCAACwgKIJAADAAoomAAAACyiaAAAALKBoAgAAsICiCQAAwAKKJgAAAAsomgAAACygaAIAALCAogkAAMACiiYAAAALKJoAAAAsKFfRNHXqVN14440KDQ1VZGSkhgwZov3797uNyc3NVXx8vOrVq6eQkBANGzZMaWlpHg0aACRyEgDfKlfRtGnTJsXHx+vrr7/W559/rnPnzumWW25Rdna2a8ykSZP04YcfavXq1dq0aZOOHj2qO+64w+OBAwA5CYAv2YwxpqI7nzhxQpGRkdq0aZN69OihzMxMRUREaMWKFbrzzjslSfv27dM111yjLVu26He/+12Zx8zKypLT6axoSJe9Cv9h4Ipl83cAXpaZmamwsDCPHIuc5A1kpRIlXOm/mZeQ4O8AvKesfFSpOU2ZmZmSpLp160qStm/frnPnzqlv376uMVdffbWaNm2qLVu2lHiMvLw8ZWVluTUAqAhyEgBvqnDRVFhYqIkTJ6pr16669tprJUmpqamy2+0KDw93G9ugQQOlpqaWeJypU6fK6XS6WpMmTSoaEoBqjJwEwNsqXDTFx8drz549WrlyZaUCeOqpp5SZmelqR44cqdTxAFRP5CQA3lazIjtNmDBB69at0+bNm9W4cWNXf1RUlPLz85WRkeH2L7u0tDRFRUWVeCyHwyGHw1GRMABAEjkJgG+U606TMUYTJkzQ2rVr9cUXXyg2NtZte8eOHVWrVi0lJSW5+vbv36+ffvpJcXFxnokYAP6LnATAl8p1pyk+Pl4rVqzQ+++/r9DQUNecAKfTqaCgIDmdTo0ePVqTJ09W3bp1FRYWpkceeURxcXGW3lJB2W9K8R7Llacav4NTaeQkXyArVTsJ/g6g6irXkgM2W8m/PImJiRo5cqSkCwvJPfbYY3r77beVl5enfv366ZVXXin1VvjFeL330khPV57qXjRVZskBclJVUE2z0pW85ECCvwPwn7LyUaXWafIGEtSlVak/LHjEFZx6LfHkOk3eQE4qSzXNShRNVySvrtMEAABQXVA0AQAAWEDRBAAAYAFFEwAAgAUUTQAAABZUaEVw+M+l3teopu+wVHlX8Ds2gMhKl6EEfwdw+eJOEwAAgAUUTQAAABZQNAEAAFhA0QQAAGABRRMAAIAFFE0AAAAWsOTAFaSsV9t5+dd7WFYAKAlZyW8S/B3AlYk7TQAAABZQNAEAAFhA0QQAAGABRRMAAIAFFE0AAAAWUDQBAABYQNEEAABgAes0VSOsmFJxrMMEeANZqcIS/B1A9cSdJgAAAAsomgAAACygaAIAALCAogkAAMACiiYAAAALKJoAAAAsoGgCAACwwpTDiy++aDp16mRCQkJMRESEGTx4sNm3b5/bmJ49expdWFzD1caMGWP5HJmZmcX2p9FoV27LzMwsTxoiJ9FoNK+1svJRue40bdq0SfHx8fr666/1+eef69y5c7rllluUnZ3tNu6hhx7SsWPHXG3GjBnlOQ0AWEJOAuBL5VoR/JNPPnH7vHTpUkVGRmr79u3q0aOHqz84OFhRUVGeiRAASkFOAuBLlZrTlJmZKUmqW7euW/9bb72l+vXr69prr9VTTz2lnJycUo+Rl5enrKwstwYAFUFOAuBVFZpIYIwpKCgwt912m+natatb/+LFi80nn3xidu/ebd58803TqFEjM3To0FKPM2XKFL8/w6TRaP5rlZnTRE6i0WiebGXlowoXTWPHjjUxMTHmyJEjlxyXlJRkJJnk5OQSt+fm5prMzExXO3LkiN8vGo1G813zVNFETqLRaJVtZeWjcs1pKjJhwgStW7dOmzdvVuPGjS85tkuXLpKk5ORktWjRoth2h8Mhh8NRkTAAQBI5CYBvlKtoMsbokUce0dq1a7Vx40bFxsaWuc+uXbskSQ0bNqxQgABQGnISAF8qV9EUHx+vFStW6P3331doaKhSU1MlSU6nU0FBQTp48KBWrFihAQMGqF69etq9e7cmTZqkHj16qF27dl75AQBUX+QkAD5VnjkDKuUZYGJiojHGmJ9++sn06NHD1K1b1zgcDtOyZUvzxBNPlGvOAgvJ0WjVq1VmTlNpxyQn0Wi0irSycoPtv4mnysjKypLT6fR3GAB8JDMzU2FhYf4Oo1TkJKD6KCsf8d1zAAAAFlA0AQAAWEDRBAAAYAFFEwAAgAUUTQAAABZQNAEAAFhA0QQAAGABRRMAAIAFFE0AAAAWUDQBAABYQNEEAABgAUUTAACABRRNAAAAFlA0AQAAWEDRBAAAYAFFEwAAgAUUTQAAABZQNAEAAFhA0QQAAGABRRMAAIAFFE0AAAAWUDQBAABYQNEEAABgAUUTAACABRRNAAAAFlA0AQAAWEDRBAAAYAFFEwAAgAXlKpoWLlyodu3aKSwsTGFhYYqLi9PHH3/s2p6bm6v4+HjVq1dPISEhGjZsmNLS0jweNABI5CQAvlWuoqlx48aaNm2atm/frm+//VY33XSTBg8erL1790qSJk2apA8//FCrV6/Wpk2bdPToUd1xxx1eCRwAyEkAfMpUUp06dcySJUtMRkaGqVWrllm9erVr2w8//GAkmS1btlg+XmZmppFEo9GqScvMzKxsGiIn0Wg0j7Sy8lGF5zQVFBRo5cqVys7OVlxcnLZv365z586pb9++rjFXX321mjZtqi1btlT0NABgCTkJgLfVLO8O3333neLi4pSbm6uQkBCtXbtWbdq00a5du2S32xUeHu42vkGDBkpNTS31eHl5ecrLy3N9zsrKKm9IAKoxchIAXyn3nabWrVtr165d2rp1q8aNG6cRI0bo+++/r3AAU6dOldPpdLUmTZpU+FgAqh9yEgCfqfDEgf/q06ePefjhh01SUpKRZE6dOuW2vWnTpmb27Nml7p+bm2syMzNd7ciRI35/pkmj0XzXPD2niZxEo9Eq2rw2p6lIYWGh8vLy1LFjR9WqVUtJSUmubfv379dPP/2kuLi4Uvd3OByu14WLGgBUFDkJgLeUa07TU089pf79+6tp06Y6ffq0VqxYoY0bN+rTTz+V0+nU6NGjNXnyZNWtW1dhYWF65JFHFBcXp9/97nfeih9ANUZOAuBT5bnt/cADD5iYmBhjt9tNRESE6dOnj/nss89c28+ePWvGjx9v6tSpY4KDg83QoUPNsWPHynMKXu+l0apZq8zjOXISjUbzZCsrH9mMMUZVSFZWlpxOp7/DAOAjmZmZVfoRGDkJqD7Kykd89xwAAIAFFE0AAAAWUDQBAABYQNEEAABgQZUrmqrYvHQAXlbVf+erenwAPKes3/cqVzSdPn3a3yEA8KGq/jtf1eMD4Dll/b5XuSUHCgsLdfToUYWGhspmsykrK0tNmjTRkSNHqvRryVUN163iuHYVU97rZozR6dOnFR0drYCAKvfvNxdykmdw3SqG61Yx3spH5VoR3BcCAgLUuHHjYv18nUHFcN0qjmtXMeW5bpfD+kfkJM/iulUM161iPJ2Pqu4/7wAAAKoQiiYAAAALqnzR5HA4NGXKFDkcDn+HclnhulUc165iqst1qy4/p6dx3SqG61Yx3rpuVW4iOAAAQFVU5e80AQAAVAUUTQAAABZQNAEAAFhA0QQAAGBBlS+aFixYoGbNmikwMFBdunTRN9984++QqpTNmzdr0KBBio6Ols1m03vvvee23Rij5557Tg0bNlRQUJD69u2rAwcO+CfYKmTq1Km68cYbFRoaqsjISA0ZMkT79+93G5Obm6v4+HjVq1dPISEhGjZsmNLS0vwUcdWwcOFCtWvXzrVgXFxcnD7++GPX9iv9mpGPykZOKj/yUcX5OidV6aJp1apVmjx5sqZMmaIdO3aoffv26tevn44fP+7v0KqM7OxstW/fXgsWLChx+4wZMzR37lwtWrRIW7duVe3atdWvXz/l5ub6ONKqZdOmTYqPj9fXX3+tzz//XOfOndMtt9yi7Oxs15hJkybpww8/1OrVq7Vp0yYdPXpUd9xxhx+j9r/GjRtr2rRp2r59u7799lvddNNNGjx4sPbu3Svpyr5m5CNryEnlRz6qOJ/nJFOFde7c2cTHx7s+FxQUmOjoaDN16lQ/RlV1STJr1651fS4sLDRRUVFm5syZrr6MjAzjcDjM22+/7YcIq67jx48bSWbTpk3GmAvXqVatWmb16tWuMT/88IORZLZs2eKvMKukOnXqmCVLllzx14x8VH7kpIohH1WON3NSlb3TlJ+fr+3bt6tv376uvoCAAPXt21dbtmzxY2SXj5SUFKWmprpdQ6fTqS5dunANL5KZmSlJqlu3riRp+/btOnfunNu1u/rqq9W0aVOu3X8VFBRo5cqVys7OVlxc3BV9zchHnkFOsoZ8VDG+yElV7gt7i6Snp6ugoEANGjRw62/QoIH27dvnp6guL6mpqZJU4jUs2oYL32I/ceJEde3aVddee62kC9fObrcrPDzcbSzXTvruu+8UFxen3NxchYSEaO3atWrTpo127dp1xV4z8pFnkJPKRj4qP1/mpCpbNAG+Eh8frz179ujLL7/0dyiXhdatW2vXrl3KzMzUmjVrNGLECG3atMnfYQFXBPJR+fkyJ1XZx3P169dXjRo1is1yT0tLU1RUlJ+iurwUXSeuYekmTJigdevWacOGDWrcuLGrPyoqSvn5+crIyHAbz7WT7Ha7WrZsqY4dO2rq1Klq3769/vnPf17R14x85BnkpEsjH1WML3NSlS2a7Ha7OnbsqKSkJFdfYWGhkpKSFBcX58fILh+xsbGKiopyu4ZZWVnaunVrtb+GxhhNmDBBa9eu1RdffKHY2Fi37R07dlStWrXcrt3+/fv1008/Vftrd7HCwkLl5eVd0deMfOQZ5KSSkY88y6s5yTNz1b1j5cqVxuFwmKVLl5rvv//ePPzwwyY8PNykpqb6O7Qq4/Tp02bnzp1m586dRpKZPXu22blzpzl8+LAxxphp06aZ8PBw8/7775vdu3ebwYMHm9jYWHP27Fk/R+5f48aNM06n02zcuNEcO3bM1XJyclxjxo4da5o2bWq++OIL8+2335q4uDgTFxfnx6j97y9/+YvZtGmTSUlJMbt37zZ/+ctfjM1mM5999pkx5sq+ZuQja8hJ5Uc+qjhf56QqXTQZY8y8efNM06ZNjd1uN507dzZff/21v0OqUjZs2GAkFWsjRowwxlx4xffZZ581DRo0MA6Hw/Tp08fs37/fv0FXASVdM0kmMTHRNebs2bNm/Pjxpk6dOiY4ONgMHTrUHDt2zH9BVwEPPPCAiYmJMXa73URERJg+ffq4kpMxV/41Ix+VjZxUfuSjivN1TrIZY0zF7lEBAABUH1V2ThMAAEBVQtEEAABgAUUTAACABRRNAAAAFlA0AQAAWEDRBAAAYAFFEwAAgAUUTQAAABZQNAEAAFhA0QQAAGABRRMAAIAFFE0AAAAW/H+FHUB3Zw2ONQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_pair(*oversegmentation_2d(), \"Oversegmentation\")" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk0AAAFZCAYAAACFVRtIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA78ElEQVR4nO3de1xVVf7/8fdBOYc7eEGRVEQxNU39DqZDppaSZualLMuaBi3LC1pajb+cpsSpb+YlK8vLVBN2M8vMLk7pqHnpYpaWmZWOGF5K8VICCgIK6/eHw/l2BGRzOIeD8Hp+H+sx37P32nt/WOinj3uvvY7NGGMEAACA8/LzdQAAAAAXAoomAAAACyiaAAAALKBoAgAAsICiCQAAwAKKJgAAAAsomgAAACygaAIAALCAogkAAMACiiagBrjyyit15ZVX+joMuGHRokWy2Wzau3evr0MBUA6KJsALUlJSZLPZdOzYsVL3d+jQgSLnAvLhhx8qJSWlUud4/PHH9e6773okHgC+QdEEAOX48MMPNW3atEqdo6yi6fbbb9epU6cUExNTqfMD8D6KJgAuioqKlJeX5+swao06deooICBANpvN16EAKAdFE+Bj69evl81m01tvvaX//d//VdOmTRUQEKA+ffooLS2tRP/nn39erVq1UmBgoLp27apPPvmk1PPm5+dr6tSpiouLk8PhULNmzTR58mTl5+e79LPZbBo/frxef/11tW/fXg6HQytXrpQkLVmyRPHx8QoNDVVYWJguvfRSPfPMMy7HZ2ZmauLEiWrWrJkcDofi4uI0Y8YMFRUVufT79ddfdfvttyssLEwRERFKSkrSt99+K5vNpkWLFjn7jRgxQiEhIdq/f7+uu+46hYSE6KKLLtK8efMkSd9995169+6t4OBgxcTEaPHixSV+disx7d27VzabTbNnz3aOqcPh0GWXXaavvvrKJZ7ia9tsNmcrNnv2bF1++eVq0KCBAgMDFR8fr7fffrvEGOfk5Ojll192Hj9ixAhJZc9pmj9/vvP3ER0dreTkZGVmZrr0ufLKK9WhQwf98MMPuuqqqxQUFKSLLrpIM2fOLDEmACqvrq8DAHDWE088IT8/Pz3wwAPKysrSzJkzddttt2nz5s3OPv/85z81evRoXX755Zo4caJ++uknDRo0SPXr11ezZs2c/YqKijRo0CB9+umnuvvuu9WuXTt99913euqpp/Sf//ynxGOijz/+WG+99ZbGjx+vhg0bqkWLFlq9erWGDx+uPn36aMaMGZKkH3/8UZ999pnuvfdeSVJubq569eqlX375RaNHj1bz5s31+eefa8qUKTp06JCefvppZzwDBw7Ul19+qbFjx6pt27Z67733lJSUVOpYFBYWqn///urZs6dmzpyp119/XePHj1dwcLAeeugh3Xbbbbrhhhu0cOFC/fnPf1ZCQoJiY2MrFFOxxYsX68SJExo9erRsNptmzpypG264QT/99JP8/f01evRoHTx4UKtXr9arr75aItZnnnlGgwYN0m233aaCggItWbJEN910k1asWKEBAwZIkl599VWNGjVKXbt21d133y1JatWqVZl/FlJSUjRt2jQlJiZq7Nix2rVrlxYsWKCvvvpKn332mfz9/Z19jx8/rmuuuUY33HCDhg0bprffflv/7//9P1166aXq379/mdcA4AYDwOOmTp1qJJmjR4+Wur99+/amV69exhhj1q1bZySZdu3amfz8fGefZ555xkgy3333nTHGmIKCAtOoUSPTuXNnl37PP/+8keQ8nzHGvPrqq8bPz8988sknLtdduHChkWQ+++wz5zZJxs/Pz3z//fcufe+9914TFhZmzpw5U+bP+eijj5rg4GDzn//8x2X7gw8+aOrUqWP2799vjDFm2bJlRpJ5+umnnX0KCwtN7969jSSTmprq3J6UlGQkmccff9y57fjx4yYwMNDYbDazZMkS5/adO3caSWbq1KkVjik9Pd1IMg0aNDC//fabs997771nJJkPPvjAuS05OdmUlS5zc3NdPhcUFJgOHTqY3r17u2wPDg42SUlJJY5PTU01kkx6eroxxpgjR44Yu91u+vbtawoLC539nnvuOSPJvPTSS85tvXr1MpLMK6+84tyWn59voqKizNChQ0uNF4D7eDwHVBMjR46U3W53fu7Ro4ck6aeffpIkbdmyRUeOHNGYMWNc+o0YMULh4eEu51q6dKnatWuntm3b6tixY87Wu3dvSdK6detc+vfq1UuXXHKJy7aIiAjl5ORo9erVZca8dOlS9ejRQ/Xq1XO5TmJiogoLC7Vx40ZJ0sqVK+Xv76+77rrLeayfn5+Sk5PLPPeoUaNcYmnTpo2Cg4M1bNgw5/Y2bdooIiLCOUYVianYzTffrHr16jk/nzvu5QkMDHT+/8ePH1dWVpZ69Oihr7/+2tLx51qzZo0KCgo0ceJE+fn9X4q+6667FBYWpn/9618u/UNCQvSnP/3J+dlut6tr166W4wdgHY/nAB85d+Jv8+bNXT4X/4f8+PHjkqR9+/ZJklq3bu3Sz9/fXy1btnTZtnv3bv3444+KjIws9dpHjhxx+Vz8aOv3xo0bp7feekv9+/fXRRddpL59+2rYsGG65pprXK6zffv2cq+zb98+NWnSREFBQS774+LiSj0uICCgxDnDw8PVtGnTEuMWHh7uHKOKxFSsvHEvz4oVK/TYY49p27ZtLvPF3J3YXfx7btOmjct2u92uli1bOvcXK21M6tWrp+3bt7t1fQBlo2gCvCAgIECSdOrUqVL35+bmOvsUq1OnTql9jTEVvn5RUZEuvfRSzZkzp9T9v5//JLneLSnWqFEjbdu2TatWrdJHH32kjz76SKmpqfrzn/+sl19+2Xmdq6++WpMnTy71OhdffHGFY5fKHgsrY1TRmCoz7p988okGDRqknj17av78+WrSpIn8/f2Vmppa6gR1b/DknxsA50fRBHhB8Zo7u3btKlGg5Obm6sCBA+rbt69b59y9e7fzMZsknT59Wunp6erUqZNzW6tWrfTtt9+qT58+lXqV3W63a+DAgRo4cKCKioo0btw4/eMf/9DDDz+suLg4tWrVSidPnlRiYmK5sa9bt065ubkud5tKezuwsqzGVBFljeGyZcsUEBCgVatWyeFwOLenpqZaPse5fv9n5/d3EAsKCpSenu7RnwtAxTCnCfCCPn36yG63a8GCBSVevX/++ed15syZCr/Z1KVLF0VGRmrhwoUqKChwbl+0aFGJV9GHDRumX375RS+88EKJ85w6dUo5OTnlXu/XX391+ezn56eOHTtKkvMx1LBhw7Rp0yatWrWqxPGZmZk6c+aMJKlfv346ffq0SzxFRUXOV/k9yWpMFREcHOw8/vfq1Kkjm82mwsJC57a9e/eWuohlcHBwieNLk5iYKLvdrrlz57rcLfrnP/+prKws5xt5AKoed5oAL2jUqJEeeeQR/e1vf1PPnj01aNAgBQUF6fPPP9cbb7yhvn37auDAgRU6p7+/vx577DGNHj1avXv31s0336z09HSlpqaWmNN0++2366233tKYMWO0bt06de/eXYWFhdq5c6feeustrVq1Sl26dDnv9UaNGqXffvtNvXv3VtOmTbVv3z49++yz6ty5s9q1aydJ+stf/qL3339f1113nUaMGKH4+Hjl5OTou+++09tvv629e/eqYcOGGjJkiLp27ar7779faWlpatu2rd5//3399ttvktyf/1MaqzFVRHx8vCTpnnvuUb9+/VSnTh3dcsstGjBggObMmaNrrrlGt956q44cOaJ58+YpLi6uxJyi+Ph4rVmzRnPmzFF0dLRiY2PVrVu3EteKjIzUlClTNG3aNF1zzTUaNGiQdu3apfnz5+uyyy5zmfQNoIr59N09oIZ77bXXzB//+EcTHBxsHA6Hadu2rZk2bZrJy8tz9ilecmDp0qUuxxa/Ev/71/GNMWb+/PkmNjbWOBwO06VLF7Nx40bTq1cvlyUHjDn76vuMGTNM+/btjcPhMPXq1TPx8fFm2rRpJisry9lPkklOTi4R+9tvv2369u1rGjVqZOx2u2nevLkZPXq0OXTokEu/EydOmClTppi4uDhjt9tNw4YNzeWXX25mz55tCgoKnP2OHj1qbr31VhMaGmrCw8PNiBEjzGeffWYkuSwjkJSUZIKDg0vE06tXL9O+ffsS22NiYsyAAQMqHFPx+M6aNavEOXXOMgZnzpwxEyZMMJGRkcZms7ksP/DPf/7TtG7d2vn7TU1NdS458Xs7d+40PXv2NIGBgUaSc/mBc5ccKPbcc8+Ztm3bGn9/f9O4cWMzduxYc/z4cUtjkpSUZGJiYkpsB1A5NmOYLQjAN959911df/31+vTTT9W9e3dfhwMA50XRBKBKnDp1yuUtvcLCQvXt21dbtmxRRkZGqW/wAUB1wpwmAFViwoQJOnXqlBISEpSfn6933nlHn3/+uR5//HEKJgAXBO40AagSixcv1pNPPqm0tDTl5eUpLi5OY8eO1fjx430dGgBYQtEEAABgAes0AQAAWEDRBAAAYAFFEwAAgAUUTQAAABZQNAEAAFhA0QQAAGABRRMAAIAFFE0AAAAWUDQBAABYQNEEAABgAUUTqiWbzaaUlBRfh3FeI0aMUEhIiK/DAFAJLVq00IgRI5yf169fL5vNpvXr1/sspnOdGyN8h6LpApaenq7x48fr4osvVlBQkIKCgnTJJZcoOTlZ27dv93V4XnXllVfKZrOV2ypbeOXm5iolJaVaJVCgJlm0aJHL39mAgABdfPHFGj9+vA4fPuzr8Cz78MMPq/0/9FB5dX0dANyzYsUK3Xzzzapbt65uu+02derUSX5+ftq5c6feeecdLViwQOnp6YqJifF1qF7x0EMPadSoUc7PX331lebOnau//vWvateunXN7x44dK3Wd3NxcTZs2TdLZQg2Ad/z9739XbGys8vLy9Omnn2rBggX68MMPtWPHDgUFBVVZHD179tSpU6dkt9srdNyHH36oefPmUTjVcBRNF6A9e/bolltuUUxMjNauXasmTZq47J8xY4bmz58vP7/z30jMyclRcHCwN0P1mquvvtrlc0BAgObOnaurr776vMXNhfwzAzVZ//791aVLF0nSqFGj1KBBA82ZM0fvvfeehg8fXqK/t/4u+/n5KSAgwOPnRc3A47kL0MyZM5WTk6PU1NQSBZMk1a1bV/fcc4+aNWvm3FY8/2bPnj269tprFRoaqttuu03S2eRz//33q1mzZnI4HGrTpo1mz54tY4zz+L1798pms2nRokUlrnfuY7CUlBTZbDalpaVpxIgRioiIUHh4uEaOHKnc3FyXY/Pz8zVp0iRFRkYqNDRUgwYN0s8//1zJEXKN44cfftCtt96qevXq6YorrpB09q5RacXViBEj1KJFC+fPHBkZKUmaNm1amY/8fvnlFw0ZMkQhISGKjIzUAw88oMLCQo/8DEBt1bt3b0lnpyGcL38VFRXp6aefVvv27RUQEKDGjRtr9OjROn78uMv5jDF67LHH1LRpUwUFBemqq67S999/X+K6Zc1p2rx5s6699lrVq1dPwcHB6tixo5555hlJZ/PGvHnzJMnlUWMxT8cI3+FO0wVoxYoViouLU7du3Sp03JkzZ9SvXz9dccUVmj17toKCgmSM0aBBg7Ru3Trdeeed6ty5s1atWqW//OUv+uWXX/TUU0+5HeewYcMUGxur6dOn6+uvv9aLL76oRo0aacaMGc4+o0aN0muvvaZbb71Vl19+uT7++GMNGDDA7WuW5qabblLr1q31+OOPuxSC5YmMjNSCBQs0duxYXX/99brhhhskuT7yKywsVL9+/dStWzfNnj1ba9as0ZNPPqlWrVpp7NixHv05gNpkz549kqQGDRpIKj1/SdLo0aO1aNEijRw5Uvfcc4/S09P13HPP6ZtvvtFnn30mf39/SdIjjzyixx57TNdee62uvfZaff311+rbt68KCgrKjWX16tW67rrr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zZ07V4cPH9Yf/vAHPfTQQy6r6m/YsEEvvPCC0tPT1bBhQ1133XUaOXJkpQobu92uhg0bSpIaNWqktm3bqkOHDho3bpxWrFihIUOGyBijF154Qe+//75+++03hYeHq0+fPnrggQfcvu75MKcJAIBaymaz6YEHHtCbb76plJQUbdmyRXPnznXpk5eXp5deekkpKSl68cUXdeLECT300EPO/d98842mTp2qW265RW+++ab++te/asWKFUpNTfV4vJdddplat26tdevWSZI+/vhjLV68WFOmTNE777yj2bNnq1WrVh6/bjGKJgAAaqlbb71VXbp0UXR0tC677DKNHTtWa9ascelz5swZTZ48WR07dlS7du2UkpKi7du36/vvv5ckvfDCC0pKStJ1112npk2bqlu3bho9erTeeecdr8TcokULHTp0SJKUkZGhBg0aqFu3boqKilL79u11/fXXe+W6Eo/nAACotTZv3qxFixZp3759ysnJUWFhofLz85WXl6eAgABJZydiX3LJJc5jWrRoodDQUKWnp6t9+/bavXu3tm/f7nJnqaioqMR5POX3a3L36dNHb7zxhgYPHqyEhAR1795dPXr08Np8J4omAABqoYMHD+q+++7T0KFDNW7cOIWFhenbb7/Vo48+qtOnT1sudk6dOqW777671KUJ7Ha7p8PW3r17ddFFF0mSoqKi9Pbbb+vLL7/Ul19+qRkzZujVV1/V888/75XCiaIJAIBaaOfOnSoqKtLEiROdr/Cf+2hOkgoLC/Xjjz+qffv2ks4WLSdOnFBsbKwkqU2bNtq3b5+aNWvm9Zi/+uorpaWlOb98V5ICAgLUs2dP9ezZUzfeeKNuuukmpaWlqW3bth6/PkUTAAA12MmTJ7Vr1y6XbeHh4WratKnOnDmjN998Uz169ND27dtLnYdUt25dzZo1Sw888IDq1KmjWbNm6dJLL3UWUaNGjdKkSZMUFRWl3r17y8/PT7t379aePXs0duxYt+MuKCjQsWPHXJYcWLRoka644goNGDBA0tnFN4uKitS+fXsFBAToo48+ksPhcHmzz5MomgAAqMG2bt2qP/3pTy7bBg8erL/97W+aNGmSXnnlFc2bN0//8z//o+TkZE2dOtWlb0BAgP785z/rb3/7m44eParOnTvr4Ycfdu5PSEjQU089pRdffFEvv/yy6tatqxYtWmjw4MGVinvTpk3q37+/6tSpo7CwMLVu3Vr333+/y+KWoaGhevnll/XUU0+pqKhIcXFxmjNnjiIiIip17bLYzO9nVFUDfKM4ULuU963ivkZOQnUWExOjhQsXOtczwvkdO3ZMY8aM0b59+0rdX14+YskBAAAACyiaAAAALKBoAgAAsICiCQAAwAKKJgAAAAsomgAAACygaAIAALCAogkAAMACiiYAAAAL+BoVAABqIXtGhupmZlbJtc5ERKjAS98HV5UomgAAqGXsGRnqMHSo/AoKquR6RXa7dixbVqHC6euvv9arr76qnTt36tixY5o1a5auvPJK7wVpAY/nAACoZepmZlZZwSRJfgUFFb6rderUKV188cWaPHmyd4JyA3eaAABAtdO9e3d1797d12G44E4TAACABR4vmlJSUmSz2Vxa27ZtPX0ZACgX+QiAJ3nl8Vz79u21Zs2a/7tIXZ4CAvAN8hEAT/FK9qhbt66iasCrhQAufOQjAJ7ilTlNu3fvVnR0tFq2bKnbbrtN+/fvL7Nvfn6+srOzXRoAeEpF8pFETgJQNo8XTd26ddOiRYu0cuVKLViwQOnp6erRo4dOnDhRav/p06crPDzc2Zo1a+bpkADUUhXNRxI5CagucnNztWvXLu3atUuSdPDgQe3atUsZGRk+i8lmjDHevEBmZqZiYmI0Z84c3XnnnSX25+fnKz8/3/k5OzubJAXUIllZWQoLC6uSa5WXjyRyEi4sMTExWrhwoRo2bFih44J27tQlt9/upahK98Orryq3Ai9ibN26VWPGjCmxfcCAAUpJSXErhmPHjmnMmDHat29fqfvLy0denxEZERGhiy++WGlpaaXudzgccjgc3g4DAMrNRxI5CbXDmYgIFdntVboi+JmIiAodEx8fr6+++so7AbnJ60XTyZMntWfPHt1exRUtAJyLfAScVRAVpR3LlvHdcxXk8aLpgQce0MCBAxUTE6ODBw9q6tSpqlOnjoYPH+7pSwHAeZGPgLIVREXViEKmKnm8aPr55581fPhw/frrr4qMjNQVV1yhL774QpGRkZ6+FACcF/kIgCd5vGhasmSJp08JAG4hHwHwJL57DgAAwAKKJgAAAAsomgAAACygaAIAALCAogkAAMACry9uCQAAqp+MDLsyM6umDIiIOKOoqKpZfdybKJoAAKhlMjLsGjq0gwoKquaBk91e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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_pair(*undersegmentation_2d(), \"Undersegmentation\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "traccuracy", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.7" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/tests/examples/example_matched_graphs.py b/tests/examples/example_matched_graphs.py index ce7eab59..a46c6780 100644 --- a/tests/examples/example_matched_graphs.py +++ b/tests/examples/example_matched_graphs.py @@ -56,14 +56,14 @@ def empty_pred(): gt = basic_graph() pred = TrackingGraph(nx.DiGraph()) mapping = [] - return Matched(gt, pred, mapping) + return Matched(gt, pred, mapping, {}) def empty_gt(): pred = basic_graph() gt = TrackingGraph(nx.DiGraph()) mapping = [] - return Matched(gt, pred, mapping) + return Matched(gt, pred, mapping, {}) # good @@ -72,7 +72,7 @@ def good_matched(): gt = basic_graph() pred = basic_graph(node_ids=(4, 5, 6), y_offset=1) mapping = [(1, 4), (2, 5), (3, 6)] - return Matched(gt, pred, mapping) + return Matched(gt, pred, mapping, {}) # fn_node @@ -84,7 +84,7 @@ def fn_node_matched(time_to_drop): # 0, 1, or 2 mapping = [(1, 4), (2, 5), (3, 6)] pred.graph.remove_node(pred_node_ids[time_to_drop]) del mapping[time_to_drop] - return Matched(gt, pred, mapping) + return Matched(gt, pred, mapping, {}) # fn_edge @@ -96,7 +96,7 @@ def fn_edge_matched(edge_to_drop): # 0 or 1 edge = (pred_node_ids[edge_to_drop], pred_node_ids[edge_to_drop + 1]) pred.graph.remove_edge(*edge) mapping = [(1, 4), (2, 5), (3, 6)] - return Matched(gt, pred, mapping) + return Matched(gt, pred, mapping, {}) # fp_node @@ -107,7 +107,7 @@ def fp_node_matched(time_to_add): # 0, 1, or 2 pred = basic_graph(node_ids=pred_node_ids, y_offset=1) pred.graph.add_node(7, **{"t": time_to_add, "x": time_to_add, "y": 2}) mapping = [(1, 4), (2, 5), (3, 6)] - return Matched(gt, pred, mapping) + return Matched(gt, pred, mapping, {}) # fp_edge @@ -120,7 +120,7 @@ def fp_edge_matched(edge_to_add): # 0 or 1 pred.graph.add_node(8, **{"t": edge_to_add + 1, "y": 2}) pred.graph.add_edge(7, 8) mapping = [(1, 4), (2, 5), (3, 6)] - return Matched(gt, pred, mapping) + return Matched(gt, pred, mapping, {}) # two pred to one gt (identity switch) @@ -137,7 +137,7 @@ def one_to_two(time): # 0, 1, or 2 pred.graph.add_edge(7, 6) pred.graph.nodes[6]["y"] = 2 mapping.append((gt_node_ids[time], 7)) - return Matched(gt, pred, mapping) + return Matched(gt, pred, mapping, {}) # two gt to one pred (non split vertex) @@ -154,7 +154,7 @@ def two_to_one(time): # 0, 1, or 2 gt.graph.add_edge(1, 7) gt.graph.nodes[1]["y"] = 2 mapping.append((7, pred_node_ids[time])) - return Matched(gt, pred, mapping) + return Matched(gt, pred, mapping, {}) def get_division_graphs(): diff --git a/tests/examples/example_segmentations.py b/tests/examples/example_segmentations.py index 4b0e61a7..78ca5a03 100644 --- a/tests/examples/example_segmentations.py +++ b/tests/examples/example_segmentations.py @@ -1,7 +1,6 @@ from typing import Any import numpy as np -import pytest from skimage.draw import disk from skimage.measure import regionprops @@ -129,7 +128,6 @@ def make_split_cell_3d( ### CANONICAL 2D SEGMENTATION EXAMPLES ### -@pytest.fixture() def good_segmentation_2d() -> tuple[np.ndarray, np.ndarray]: """A pretty good (but not perfect) pair of segmentations in 2d. @@ -143,7 +141,6 @@ def good_segmentation_2d() -> tuple[np.ndarray, np.ndarray]: return gt, pred -@pytest.fixture() def false_positive_segmentation_2d() -> tuple[np.ndarray, np.ndarray]: """A pair of segmentations where the gt is empty and the prediction has a single cell. @@ -157,7 +154,6 @@ def false_positive_segmentation_2d() -> tuple[np.ndarray, np.ndarray]: return gt, pred -@pytest.fixture() def false_negative_segmentation_2d() -> tuple[np.ndarray, np.ndarray]: """A pair of segmentations where the gt has a single cell and the prediction is empty. @@ -171,7 +167,6 @@ def false_negative_segmentation_2d() -> tuple[np.ndarray, np.ndarray]: return gt, pred -@pytest.fixture() def oversegmentation_2d() -> tuple[np.ndarray, np.ndarray]: """A pair of segmentations where the gt has a single cell and the prediction splits that into two cells. @@ -186,7 +181,6 @@ def oversegmentation_2d() -> tuple[np.ndarray, np.ndarray]: return gt, pred -@pytest.fixture() def undersegmentation_2d() -> tuple[np.ndarray, np.ndarray]: """A pair of segmentations where the gt has two cells and the prediction merges them into one circular cell. @@ -202,7 +196,6 @@ def undersegmentation_2d() -> tuple[np.ndarray, np.ndarray]: ### CANONICAL 3D SEGMENTATION EXAMPLES ### -@pytest.fixture() def good_segmentation_3d() -> tuple[np.ndarray, np.ndarray]: """A pretty good (but not perfect) pair of segmentations in 3d. @@ -216,7 +209,6 @@ def good_segmentation_3d() -> tuple[np.ndarray, np.ndarray]: return gt, pred -@pytest.fixture def false_positive_segmentation_3d() -> tuple[np.ndarray, np.ndarray]: """A pair of segmentations where the gt is empty and the prediction has a single cell. @@ -230,7 +222,6 @@ def false_positive_segmentation_3d() -> tuple[np.ndarray, np.ndarray]: return gt, pred -@pytest.fixture() def false_negative_segmentation_3d() -> tuple[np.ndarray, np.ndarray]: """A pair of segmentations where the gt has a single cell and the prediction is empty. @@ -244,7 +235,6 @@ def false_negative_segmentation_3d() -> tuple[np.ndarray, np.ndarray]: return gt, pred -@pytest.fixture() def oversegmentation_3d() -> tuple[np.ndarray, np.ndarray]: """A pair of segmentations where the gt has a single cell and the prediction splits that into two cells. @@ -259,7 +249,6 @@ def oversegmentation_3d() -> tuple[np.ndarray, np.ndarray]: return gt, pred -@pytest.fixture() def undersegmentation_3d() -> tuple[np.ndarray, np.ndarray]: """A pair of segmentations where the gt has two cells and the prediction merges them into one circular cell. From 3037eb3f56c43e88d56da08e92a0c7ab164843e0 Mon Sep 17 00:00:00 2001 From: Morgan Schwartz Date: Tue, 10 Dec 2024 12:05:18 -0500 Subject: [PATCH 2/4] Change nbsphinx config to run notebooks --- docs/source/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index 8548539c..42bf6a73 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -84,7 +84,7 @@ # -- Nbsphinx extension ------------------------------------------------------ # Disable nbsphinx extension from running notebooks -nbsphinx_execute = "never" +nbsphinx_execute = "auto" exclude_patterns = ["_build", "**.ipynb_checkpoints"] # -- Options for HTML output ------------------------------------------------- From 88a7c868fe23d090d6743f22309e73ae1315d17f Mon Sep 17 00:00:00 2001 From: Morgan Schwartz Date: Tue, 10 Dec 2024 13:03:58 -0500 Subject: [PATCH 3/4] Rename example mods and clean up from removing fixtures --- examples/test-cases.ipynb | 49 ++++++++++--------- tests/conftest.py | 6 --- .../{example_matched_graphs.py => graphs.py} | 0 .../{example_segmentations.py => segs.py} | 0 tests/matchers/test_iou.py | 7 +-- 5 files changed, 29 insertions(+), 33 deletions(-) delete mode 100644 tests/conftest.py rename tests/examples/{example_matched_graphs.py => graphs.py} (100%) rename tests/examples/{example_segmentations.py => segs.py} (100%) diff --git a/examples/test-cases.ipynb b/examples/test-cases.ipynb index 9f872ffa..26ecbf06 100644 --- a/examples/test-cases.ipynb +++ b/examples/test-cases.ipynb @@ -9,19 +9,22 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import sys\n", "\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from matplotlib.colors import ListedColormap\n", + "from matplotlib.patches import Patch\n", + "\n", "from traccuracy._tracking_graph import TrackingGraph\n", "\n", - "sys.path.append(\"../tests/examples\")\n", + "sys.path.append(\"../tests\")\n", "\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "from example_matched_graphs import (\n", + "from examples.graphs import (\n", " empty_gt,\n", " empty_pred,\n", " fn_edge_matched,\n", @@ -32,15 +35,13 @@ " one_to_two,\n", " two_to_one,\n", ")\n", - "from example_segmentations import (\n", + "from examples.segs import (\n", " false_negative_segmentation_2d,\n", " false_positive_segmentation_2d,\n", " good_segmentation_2d,\n", " oversegmentation_2d,\n", " undersegmentation_2d,\n", - ")\n", - "from matplotlib.colors import ListedColormap\n", - "from matplotlib.patches import Patch" + ")" ] }, { @@ -122,7 +123,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -142,7 +143,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -162,7 +163,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -182,7 +183,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -202,7 +203,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -222,7 +223,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -242,7 +243,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -262,7 +263,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -282,7 +283,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -309,7 +310,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 12, "metadata": { "nbsphinx": "hidden" }, @@ -335,7 +336,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -355,7 +356,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -375,7 +376,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -395,7 +396,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -415,7 +416,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 17, "metadata": {}, "outputs": [ { diff --git a/tests/conftest.py b/tests/conftest.py deleted file mode 100644 index a3e16e73..00000000 --- a/tests/conftest.py +++ /dev/null @@ -1,6 +0,0 @@ -import pytest # noqa - -pytest_plugins = [ - "examples.example_segmentations", - "examples.example_matched_graphs", -] diff --git a/tests/examples/example_matched_graphs.py b/tests/examples/graphs.py similarity index 100% rename from tests/examples/example_matched_graphs.py rename to tests/examples/graphs.py diff --git a/tests/examples/example_segmentations.py b/tests/examples/segs.py similarity index 100% rename from tests/examples/example_segmentations.py rename to tests/examples/segs.py diff --git a/tests/matchers/test_iou.py b/tests/matchers/test_iou.py index d181e1ab..5ea86642 100644 --- a/tests/matchers/test_iou.py +++ b/tests/matchers/test_iou.py @@ -4,6 +4,7 @@ import numpy as np import pytest +from tests.examples.segs import good_segmentation_2d, good_segmentation_3d from tests.test_utils import get_annotated_image, get_movie_with_graph from traccuracy._tracking_graph import TrackingGraph from traccuracy.matchers._iou import ( @@ -15,9 +16,9 @@ # tests with new fixtures (incomplete) -def test_good_seg(good_segmentation_2d, good_segmentation_3d): +def test_good_seg(): # 2d - gt_2d, pred_2d = good_segmentation_2d + gt_2d, pred_2d = good_segmentation_2d() expected_matches = [(1, 2)] # Test for merge and force one to one gtcells, rescells = _match_nodes(gt_2d, pred_2d, threshold=0.4, one_to_one=True) @@ -34,7 +35,7 @@ def test_good_seg(good_segmentation_2d, good_segmentation_3d): assert Counter(expected_matches) == Counter(computed_matches) # 3d - gt_3d, pred_3d = good_segmentation_3d + gt_3d, pred_3d = good_segmentation_3d() expected_matches = [(1, 2)] # Test for merge and force one to one gtcells, rescells = _match_nodes(gt_3d, pred_3d, threshold=0.4, one_to_one=True) From 5dacde5579da7dadbff0926da1a4584b29d60590 Mon Sep 17 00:00:00 2001 From: Morgan Schwartz Date: Tue, 17 Dec 2024 10:39:06 -0500 Subject: [PATCH 4/4] Add test description back to notebook --- examples/test-cases.ipynb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/examples/test-cases.ipynb b/examples/test-cases.ipynb index 26ecbf06..9083fc04 100644 --- a/examples/test-cases.ipynb +++ b/examples/test-cases.ipynb @@ -7,6 +7,15 @@ "# Standard Test Cases" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "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.\n", + "\n", + "Matchers should test all the segmentation cases. Metrics should test all the tracking cases. The examples are generated by functions in the `tests/examples/` directory." + ] + }, { "cell_type": "code", "execution_count": null,