From 064252ba03ad924a4d012e0b85f0bee972fb5b82 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 4 Oct 2023 12:49:03 +0200 Subject: [PATCH 01/13] added basic coloring to histogram --- src/napari_matplotlib/histogram.py | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 66aa7acc..269fdc52 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -162,12 +162,37 @@ def on_update_layers(self) -> None: def draw(self) -> None: """Clear the axes and histogram the currently selected layer/slice.""" + + # get the colormap from the layer depending on its type + if isinstance(self.layers[0], napari.layers.Points): + colormap = self.layers[0].face_colormap + self.viewer.layers[0].face_color = self.x_axis_key + elif isinstance(self.layers[0], napari.layers.Vectors): + colormap = self.layers[0].edge_colormap + self.viewer.layers[0].edge_color = self.x_axis_key + elif isinstance(self.layers[0], napari.layers.Labels): + colormap = self.layers[0].colormap + self.viewer.layers[0].color = self.x_axis_key + else: + colormap = None + self.viewer.layers[self.layers[0].name].refresh_colors(True) + + # Draw the histogram data, x_axis_name = self._get_data() if data is None: return - self.axes.hist(data, bins=50, edgecolor="white", linewidth=0.3) + _, bins, patches = self.axes.hist(data, bins=50, edgecolor="white", linewidth=0.3) + + # recolor the histogram plot + if colormap is not None: + self.bins_norm = (bins - bins.min())/(bins.max() - bins.min()) + colors = colormap.map(self.bins_norm) + + # Set histogram style: + for idx, patch in enumerate(patches): + patch.set_facecolor(colors[idx]) # set ax labels self.axes.set_xlabel(x_axis_name) From 42ce86dccd8edf61991c19af1b6a079b3a4ec022 Mon Sep 17 00:00:00 2001 From: Johannes Soltwedel <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 4 Oct 2023 12:49:08 +0200 Subject: [PATCH 02/13] Create test.ipynb --- src/napari_matplotlib/tests/test.ipynb | 185 +++++++++++++++++++++++++ 1 file changed, 185 insertions(+) create mode 100644 src/napari_matplotlib/tests/test.ipynb diff --git a/src/napari_matplotlib/tests/test.ipynb b/src/napari_matplotlib/tests/test.ipynb new file mode 100644 index 00000000..e65c5740 --- /dev/null +++ b/src/napari_matplotlib/tests/test.ipynb @@ -0,0 +1,185 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import napari\n", + "from napari_matplotlib import FeaturesHistogramWidget\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "n_points = 1000\n", + "random_points = np.random.random((n_points, 3)) * 10\n", + "random_points2 = np.random.random((n_points, 3)) * 10\n", + "random_vectors = random_points2 - random_points\n", + "\n", + "vectors = np.stack([random_points, random_vectors], axis=1)\n", + "feature1 = np.random.random(n_points)\n", + "feature2 = np.random.normal(size=n_points)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "viewer = napari.Viewer()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "viewer.add_points(\n", + " random_points,\n", + " properties={\"feature1\": feature1, \"feature2\": feature2},\n", + " name=\"points1\",\n", + " face_color=\"feature1\",\n", + " size=1,\n", + ")\n", + "\n", + "viewer.add_vectors(\n", + " vectors,\n", + " properties={\"feature1\": feature1, \"feature2\": feature2},\n", + " name=\"vectors1\",\n", + " edge_width=1,\n", + " edge_color=\"feature1\",\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "widget = FeaturesHistogramWidget(viewer)\n", + "viewer.window.add_dock_widget(widget)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'feature1'" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "widget.x_axis_key" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "widget.viewer.layers[widget.layers[0].name].refresh_colors(True)\n", + "widget.viewer.layers[0].properties\n", + "widget.viewer.layers[widget.layers[0].name].refresh_colors(True)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "widget.viewer.layers[1]._update_properties" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "widget.viewer.layers[0].edge_color = \"feature2\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "stress", + "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.9.18" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} From ee4f9a8f3f917ebe07ac685c602489d9b1ffe3d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 4 Oct 2023 16:24:29 +0200 Subject: [PATCH 03/13] changed color properties of correct layer --- src/napari_matplotlib/histogram.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 269fdc52..6a5915b9 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -166,13 +166,13 @@ def draw(self) -> None: # get the colormap from the layer depending on its type if isinstance(self.layers[0], napari.layers.Points): colormap = self.layers[0].face_colormap - self.viewer.layers[0].face_color = self.x_axis_key + self.layers[0].face_color = self.x_axis_key elif isinstance(self.layers[0], napari.layers.Vectors): colormap = self.layers[0].edge_colormap - self.viewer.layers[0].edge_color = self.x_axis_key + self.layers[0].edge_color = self.x_axis_key elif isinstance(self.layers[0], napari.layers.Labels): colormap = self.layers[0].colormap - self.viewer.layers[0].color = self.x_axis_key + self.layers[0].color = self.x_axis_key else: colormap = None self.viewer.layers[self.layers[0].name].refresh_colors(True) From 206f71f54002ad33a3718aa68a29429101538ba1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 4 Oct 2023 16:24:52 +0200 Subject: [PATCH 04/13] used correct refresh functions to make it work for different layer types --- src/napari_matplotlib/histogram.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 6a5915b9..82cf11c5 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -175,8 +175,11 @@ def draw(self) -> None: self.layers[0].color = self.x_axis_key else: colormap = None + + # apply new colors to the layer self.viewer.layers[self.layers[0].name].refresh_colors(True) - + self.viewer.layers[self.layers[0].name].refresh() + # Draw the histogram data, x_axis_name = self._get_data() From e3540c34808486ef67078c7c53b8710397afa917 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 4 Oct 2023 16:25:17 +0200 Subject: [PATCH 05/13] made specific tests for every layer type --- src/napari_matplotlib/tests/test_histogram.py | 50 ++++++++++++++----- 1 file changed, 38 insertions(+), 12 deletions(-) diff --git a/src/napari_matplotlib/tests/test_histogram.py b/src/napari_matplotlib/tests/test_histogram.py index 006c042f..534d7952 100644 --- a/src/napari_matplotlib/tests/test_histogram.py +++ b/src/napari_matplotlib/tests/test_histogram.py @@ -36,8 +36,11 @@ def test_histogram_3D(make_napari_viewer, brain_data): def test_feature_histogram(make_napari_viewer): + n_points = 1000 random_points = np.random.random((n_points, 3)) * 10 + random_directions = np.random.random((n_points, 3)) * 10 + random_vectors = np.stack([random_points, random_directions], axis=1) feature1 = np.random.random(n_points) feature2 = np.random.normal(size=n_points) @@ -47,10 +50,10 @@ def test_feature_histogram(make_napari_viewer): properties={"feature1": feature1, "feature2": feature2}, name="points1", ) - viewer.add_points( - random_points, + viewer.add_vectors( + random_vectors, properties={"feature1": feature1, "feature2": feature2}, - name="points2", + name="vectors1", ) widget = FeaturesHistogramWidget(viewer) @@ -70,26 +73,44 @@ def test_feature_histogram(make_napari_viewer): @pytest.mark.mpl_image_compare -def test_feature_histogram2(make_napari_viewer): - import numpy as np +def test_feature_histogram_vectors(make_napari_viewer): + + n_points = 1000 + np.random.seed(42) + random_points = np.random.random((n_points, 3)) * 10 + random_directions = np.random.random((n_points, 3)) * 10 + random_vectors = np.stack([random_points, random_directions], axis=1) + feature1 = np.random.random(n_points) + + viewer = make_napari_viewer() + viewer.add_vectors( + random_vectors, + properties={"feature1": feature1}, + name="vectors1", + ) + + widget = FeaturesHistogramWidget(viewer) + viewer.window.add_dock_widget(widget) + widget._set_axis_keys("feature1") + + fig = FeaturesHistogramWidget(viewer).figure + return deepcopy(fig) + + +@pytest.mark.mpl_image_compare +def test_feature_histogram_points(make_napari_viewer): np.random.seed(0) n_points = 1000 random_points = np.random.random((n_points, 3)) * 10 feature1 = np.random.random(n_points) - feature2 = np.random.normal(size=n_points) viewer = make_napari_viewer() viewer.add_points( random_points, - properties={"feature1": feature1, "feature2": feature2}, + properties={"feature1": feature1}, name="points1", ) - viewer.add_points( - random_points, - properties={"feature1": feature1, "feature2": feature2}, - name="points2", - ) widget = FeaturesHistogramWidget(viewer) viewer.window.add_dock_widget(widget) @@ -120,3 +141,8 @@ def test_change_layer(make_napari_viewer, brain_data, astronaut_data): viewer.layers.selection.clear() viewer.layers.selection.add(viewer.layers[1]) assert_figures_not_equal(widget.figure, fig1) + + +if __name__ == '__main__': + import napari + test_feature_histogram_points(napari.Viewer) \ No newline at end of file From d65da102603ac33a5dee8504f876b94849960b0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 4 Oct 2023 16:25:26 +0200 Subject: [PATCH 06/13] updated baselines --- .../tests/baseline/test_feature_histogram2.png | Bin 12860 -> 0 bytes .../baseline/test_feature_histogram_points.png | Bin 0 -> 11479 bytes .../baseline/test_feature_histogram_vectors.png | Bin 0 -> 10886 bytes 3 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/napari_matplotlib/tests/baseline/test_feature_histogram2.png create mode 100644 src/napari_matplotlib/tests/baseline/test_feature_histogram_points.png create mode 100644 src/napari_matplotlib/tests/baseline/test_feature_histogram_vectors.png diff --git a/src/napari_matplotlib/tests/baseline/test_feature_histogram2.png b/src/napari_matplotlib/tests/baseline/test_feature_histogram2.png deleted file mode 100644 index b7bb19e039d73adfd05f0d3860a5a1c4d0711f72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12860 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 Date: Wed, 4 Oct 2023 16:28:49 +0200 Subject: [PATCH 07/13] removed labels from supported layers --- src/napari_matplotlib/histogram.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 82cf11c5..cf677bea 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -170,9 +170,6 @@ def draw(self) -> None: elif isinstance(self.layers[0], napari.layers.Vectors): colormap = self.layers[0].edge_colormap self.layers[0].edge_color = self.x_axis_key - elif isinstance(self.layers[0], napari.layers.Labels): - colormap = self.layers[0].colormap - self.layers[0].color = self.x_axis_key else: colormap = None From 073613cb0027d2321bf5ced9724b45a0ba06f4b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 4 Oct 2023 16:45:09 +0200 Subject: [PATCH 08/13] Delete test.ipynb --- src/napari_matplotlib/tests/test.ipynb | 185 ------------------------- 1 file changed, 185 deletions(-) delete mode 100644 src/napari_matplotlib/tests/test.ipynb diff --git a/src/napari_matplotlib/tests/test.ipynb b/src/napari_matplotlib/tests/test.ipynb deleted file mode 100644 index e65c5740..00000000 --- a/src/napari_matplotlib/tests/test.ipynb +++ /dev/null @@ -1,185 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import napari\n", - "from napari_matplotlib import FeaturesHistogramWidget\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "n_points = 1000\n", - "random_points = np.random.random((n_points, 3)) * 10\n", - "random_points2 = np.random.random((n_points, 3)) * 10\n", - "random_vectors = random_points2 - random_points\n", - "\n", - "vectors = np.stack([random_points, random_vectors], axis=1)\n", - "feature1 = np.random.random(n_points)\n", - "feature2 = np.random.normal(size=n_points)" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "viewer = napari.Viewer()" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "viewer.add_points(\n", - " random_points,\n", - " properties={\"feature1\": feature1, \"feature2\": feature2},\n", - " name=\"points1\",\n", - " face_color=\"feature1\",\n", - " size=1,\n", - ")\n", - "\n", - "viewer.add_vectors(\n", - " vectors,\n", - " properties={\"feature1\": feature1, \"feature2\": feature2},\n", - " name=\"vectors1\",\n", - " edge_width=1,\n", - " edge_color=\"feature1\",\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "widget = FeaturesHistogramWidget(viewer)\n", - "viewer.window.add_dock_widget(widget)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'feature1'" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "widget.x_axis_key" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [], - "source": [ - "widget.viewer.layers[widget.layers[0].name].refresh_colors(True)\n", - "widget.viewer.layers[0].properties\n", - "widget.viewer.layers[widget.layers[0].name].refresh_colors(True)" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "widget.viewer.layers[1]._update_properties" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [], - "source": [ - "widget.viewer.layers[0].edge_color = \"feature2\"" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "stress", - "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.9.18" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} From 7179889a29027942060d30a85dd016a459bf0e13 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 4 Oct 2023 14:47:32 +0000 Subject: [PATCH 09/13] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/napari_matplotlib/histogram.py | 9 +++++---- src/napari_matplotlib/tests/test_histogram.py | 8 +++----- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index cf677bea..0a49dc41 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -162,7 +162,6 @@ def on_update_layers(self) -> None: def draw(self) -> None: """Clear the axes and histogram the currently selected layer/slice.""" - # get the colormap from the layer depending on its type if isinstance(self.layers[0], napari.layers.Points): colormap = self.layers[0].face_colormap @@ -183,16 +182,18 @@ def draw(self) -> None: if data is None: return - _, bins, patches = self.axes.hist(data, bins=50, edgecolor="white", linewidth=0.3) + _, bins, patches = self.axes.hist( + data, bins=50, edgecolor="white", linewidth=0.3 + ) # recolor the histogram plot if colormap is not None: - self.bins_norm = (bins - bins.min())/(bins.max() - bins.min()) + self.bins_norm = (bins - bins.min()) / (bins.max() - bins.min()) colors = colormap.map(self.bins_norm) # Set histogram style: for idx, patch in enumerate(patches): - patch.set_facecolor(colors[idx]) + patch.set_facecolor(colors[idx]) # set ax labels self.axes.set_xlabel(x_axis_name) diff --git a/src/napari_matplotlib/tests/test_histogram.py b/src/napari_matplotlib/tests/test_histogram.py index 534d7952..e71fea2a 100644 --- a/src/napari_matplotlib/tests/test_histogram.py +++ b/src/napari_matplotlib/tests/test_histogram.py @@ -36,7 +36,6 @@ def test_histogram_3D(make_napari_viewer, brain_data): def test_feature_histogram(make_napari_viewer): - n_points = 1000 random_points = np.random.random((n_points, 3)) * 10 random_directions = np.random.random((n_points, 3)) * 10 @@ -74,7 +73,6 @@ def test_feature_histogram(make_napari_viewer): @pytest.mark.mpl_image_compare def test_feature_histogram_vectors(make_napari_viewer): - n_points = 1000 np.random.seed(42) random_points = np.random.random((n_points, 3)) * 10 @@ -99,7 +97,6 @@ def test_feature_histogram_vectors(make_napari_viewer): @pytest.mark.mpl_image_compare def test_feature_histogram_points(make_napari_viewer): - np.random.seed(0) n_points = 1000 random_points = np.random.random((n_points, 3)) * 10 @@ -143,6 +140,7 @@ def test_change_layer(make_napari_viewer, brain_data, astronaut_data): assert_figures_not_equal(widget.figure, fig1) -if __name__ == '__main__': +if __name__ == "__main__": import napari - test_feature_histogram_points(napari.Viewer) \ No newline at end of file + + test_feature_histogram_points(napari.Viewer) From e7789a071c2e0c8bf935c1023fcc2f8480415acb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= <38459088+jo-mueller@users.noreply.github.com> Date: Wed, 4 Oct 2023 16:51:46 +0200 Subject: [PATCH 10/13] removed main from test --- src/napari_matplotlib/tests/test_histogram.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/napari_matplotlib/tests/test_histogram.py b/src/napari_matplotlib/tests/test_histogram.py index e71fea2a..1ceca519 100644 --- a/src/napari_matplotlib/tests/test_histogram.py +++ b/src/napari_matplotlib/tests/test_histogram.py @@ -138,9 +138,3 @@ def test_change_layer(make_napari_viewer, brain_data, astronaut_data): viewer.layers.selection.clear() viewer.layers.selection.add(viewer.layers[1]) assert_figures_not_equal(widget.figure, fig1) - - -if __name__ == "__main__": - import napari - - test_feature_histogram_points(napari.Viewer) From 5b87710d46db3bec3643afb898c22072cbd095f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= <38459088+jo-mueller@users.noreply.github.com> Date: Sun, 8 Oct 2023 21:04:59 +0200 Subject: [PATCH 11/13] re-saved generated figures --- baseline/test_feature_histogram_points.png | Bin 0 -> 11524 bytes baseline/test_feature_histogram_vectors.png | Bin 0 -> 11153 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 baseline/test_feature_histogram_points.png create mode 100644 baseline/test_feature_histogram_vectors.png diff --git a/baseline/test_feature_histogram_points.png b/baseline/test_feature_histogram_points.png new file mode 100644 index 0000000000000000000000000000000000000000..0f71e7624c10a7b4f995186d1b59b08d9a052c3c GIT binary patch literal 11524 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 literal 0 HcmV?d00001 diff --git a/baseline/test_feature_histogram_vectors.png b/baseline/test_feature_histogram_vectors.png new file mode 100644 index 0000000000000000000000000000000000000000..8048ac91e4d3dd57056d61f19df6d96529b5f551 GIT binary patch literal 11153 zcmdsdcT`i^{_jZwfk6=!ln&z%K%~h~rH_ReY0?CwD$=`Dfj}aI3?gAf1*IcRdhaa* z_DJu95>SdnAku4iJ9qBA@ArFay|wQB{pP*3-uuI)=A5(7KKolfW$&2l255FRJ~jw~ z*fCcx8$%Er2SG3jD-!&o*gO6O{B^MH^_M3b(STwu||VIe(Ro)}PF|c;CUC*9(JJGV9;4 z^O#zXnD+R-kgI>Bs&e!s^UGI{jvW0X>Q_bm&0jrG_`=(mzOU;CpHtuFeNFXi^h;c( zx7c<2r9Ua$y)js4m}{t6P*YG<#feEkMP)bivR_R=6|^43C7>{P-k}9#;q3Ns#we2j z>zBCYD+wr9TnsL*t#$T+0nbI)?-#epJquzeOak&%Bo1xw!b~jHh+vtv)y5>`$ef5u zyVLz8JBtfy`oegkxK|&H&Cc|$js9u=(b`YP!A(RSNEDL*cYvOvFl>)t*Aq|@=aG!3 z|H=zT-Te`T1t+xKg%^|HP3{A+g&m&fFu5DEp+AqTTt!fNhC<#%9k$-FAi(Pa@PCuGD3aS^PGf2Nl`7<Qu=sHaj)l5mvqEgOad1V zA`^u%w*Paf<)CW`DCW1&zkcDnB{6}|lc{GcdN-H2%(wAVK@dItm>gKWxS`z`Dz~g< zML_6idxMGC>S&cgGRL^hUM(u1KZKkoD>Yi-u0PuTgNXCpnf3VHP*ox?B&s<6u!P*; z-I1tMcc$Q1!KR_|fcaIOx~y~G1^&8#bns2!PzAR|a6@eFj984s=KS&rd~_t58tv6~ z4?}h!>z)?W4F4%fIOt;-WqG$+)U_O}P2Z1wnEr$8$q=5FyiN+1~p!#2vt%>N_UEsGOG@;?%arJJhZX z$0PZVRG%vg??=odf`(hA*->#Lh+t`&I_22}TFiI7(<^c-&$9K0ZL{QAzXX+=qolhs zh|+I-^}fBGC(5&s2iFo5UU^J3q@&Yqdl!@xaD$3ao@F>Y4M`cq2s}ID9&~DI9^U-} z4kNGx4-8;$+A;)v;^&PY3QW++x;qv8a?H6$7ur~b}7t6E|M(tm0fm1?bSL(KSB819+Zy!X9!?_^` z{01=so>8D11Qr%nFpPy#KI(zql>z?=vi%;m%}Pr34soK!Tau?FWA~34 zQAuTQSt}LivCA?Co036~Ti6PX5vuh`GhkMk0-0OQTm1FZNa-r}}s1Wze)UwwDM(s%HW z+J;-yB!%*O$NpPg;_r*&4AW))4@HM6c$>_2!o^nDiPw1Q0I6M&xlt+UZCmNIRGV-` zo+It`eU9{>h3lI%JuwMxx4zI`c#P5UQB9jtvUY0USn~{<-L7J{_@UgFitcsadpc71 zCmx^*3<8%dySgTH`6qNP1^*?p{#!SEek;yPyPF4Ay_pp*QQoA}VoJKc|01W5Z)p7J z`Lg!aYt#XY@GV!OJakN;#JqWBDzO;r;xO8NDPH~eBW;^qe+!>`TeWR?Z-lgE(_MFP zX0Ti)B@}8hErDcUOR6S0%Y$^thrb04oPZ$e!d zayW<{xP1_bp*okg1bkRzCto|=sp@hvL;dgzSjP=lPzJ(#UqKlNP1sg0)OR>l&|@A& zlLlbTfy+`u^Aet9-C-fE&>I%ieCDWERXOOCG)!5>(G#pIR2_W{BI#-#tStzL}Lby%w z1&-kJovTTrzUx{W3nt(Jrnr#PKE`2FMqyeH+HL z+fbM4+WNvSzgMAUN8fQJxJyZSpsh6j;~cCDZEK*sRVE0O$S&5@@IS+dN(f)MT1@u4 z(5K!K2GmYCe-aw5RkvSk+l0jc)^fi$D+lBL;g_qP4)&)v9JgmyU#7uA`NvA5z z)tK4s{C2A<_*=!1)3tT7vQ}zg+b13gM{EFuE>t$Y@=vJQYe*&GB%6?4*8YA>9wXh3 z*M7O#;Ht(^EFIA@_|27bu_q3tG0fQ{EH;I;8*QxUm>;-vu(U*S^|rhD#8LU84Fmj! zA#cbw?X}TXc`Yx`W2c>Zp-@=<>3j|JNpus=#-?NW;0b_PJ)2UvK~-}B4}FqJAmerK zqL63=d<@Uo*y+dQ!|LO#@i$nx(y|HJ9!W(spLpLdwW3-kt3R{w6-DS%ARV5n|G9Hj zP#YO`s=i+m2Uuufku8kY@@9)1`bdkz!eW1o1=m81=v&h130Tkv0Xn9hi6&DMpKuJqVjlR*X+9!H$yVhO)AE zRqu?c$k4lHq9m2QWG%M}xjz+}pc8WN?a+v!`?8%OS=d~uk^NbPQ)jl6H`%&&x#yDD zP*%#WRf8{x&Zu#v)6n`40gE~b3fKRd*6j>Cf=j&B39X$wTauHvLiKk2wkuk2;%4&x zvWWu^#7ul-`J`bcTg$fI>rEnPMHiM|jTImE#DsnA%aE~d+U*6uVRvpRTDGAS+pCRC zcIwQgY`5Qcp|1_qh?N8^Ud=iWE%H)tcw{Y2vWvPOdm*3eM73+$H5wBdHw`(E7a#OE zNEl#^{}%SEqG73wr95^3556yp_TMA3YsKh4axKF{v=YCQP=xeSV=V^dt4QyLw^qcj z1;L|XMTLEFKoGf=Izvp)6JPfZU2`(1QZKu!b?F+Z{50;~sYLUe`A9bq`?>|J5)Y{;)6v_W_sC9iqw)hfy z%#Nj#r+dEjE~$NxTANgY-HCM`&JuCeb~_jmj%d7dh3*3AfA1a5!x`l+mgUkr4cxMO z9}>(ApH8CX_HYu``}dX2n?K2Fu6KyKXN+4{F7#CNZ@+)+UF84b7hN5J*TPD6jkNC* zMY=3UZ8Yx|;-1eiz{=zNB3E08D4C z=V9NW1@uWh__kozBnb$Q;Qlu^=Pz)Dw2aV zMi!Jz@0-JPffCBQ1L;-mrz?;+r06@D3MBSNV4)+&{oppqv)+bPVNSlZ>t|Cte^7@$ zeX|7BnDa+&okmCmiUlKrwJBIoJTwn^{2F3;6Iw=~fxSgqYq! z+_{$YAq7(Ya1{pBvYDZGG|rGoN8EQ^JX27G3P17lh8xhlm_aiy!%0!VkNi@TK zP-`#mjp))Dz@*}o{Q6W*kCz8e1D!`25(;`b05U>E_-2P%mcb|S3<~}+$ ztf$d@Ofbr^@BP>PZ;vIpy~s7ScP3I1bLQBI@4rRv^bZ-zehMs;vQqQ>R8-hX@6nJ1 z*wl(pQIE;?eD(=QB2|hR5DfGb5sX>oZED~$*@7A*36Dv(!UKWmP5rFOxD{{Q4c8Q?&)=S}!cBo*%RG*hedR9- z5&%99|J`Y)^<$u@Z*@bTBarMVgSo{50ZZ=+rpdI8=dGR(qOpxi?_4;A1-F85hB82kUGd#d!K)RHUOtJ| zT2u=5PM#&XdeAmV2O?jD7#h_#(zEu%K}9A zKgq)@M?2$^;<55L7V~FQ6`JmEU#t3yV8(<6L&rwQt-wZkTHOtS_?@GOwxmWYvu(>? zud+GenkdYq$E37WBo>oxLo6-5wMA!CcizAm$_s5>+0SS=%Z8&UxJ&z%w{4Oo_y_y9 zv#m04I_HQUC`?(nB<>B?G9E1ERr~8+k>a_Q>4E%SFoR5=3LU#C#Je z!$$S>Uzmwgh|jnJ0Fwngi|1yo2amq@8`xanuNkN8)o&Q^f-nCr+LkW>0acqY{5ZbbU5kkID*ED5x|xw#xZ8E1Tv8u+TuFg zZx-rr{_(OgM!NIwAg-hMb8*4U(tsmim`W2zt);Phsrzaru(AOxWM|c_gJPGCHV}Fz z9#IWCj5JwysAcY~_l2>m@}GeeCS*v5sYpk3A9f^Qtm&)Dp8y_Voe`u*y-yk%m-dbf zYt$5YEa|@88h8GQU0rkq7-V}6ZxWZr+ro7}B#)Yi4;1h(kvhIAC3?yVdt9trF3>Ly zzHKww7>PD4x}@Akmk1ChPFfKZUoCfA?P8f!5am8&@yQYmVuB0?d9r*I3#rBTXCQW2ufkRF*km^$HA2I zykM}LkLy3WZzC&eNv@gO;#in!Ot#%XDdNPXV_nM10d~94iX1JE0hd4MKi~8`tCiVH-06pUktM>5SOmFXYx{=q#2|6)1L#7G`1!UbkOLc+d|NQ#M`~moeBV z#|V{y}exS0xpZ%G6Iek@F|{;112gGHv( zhfCT?M$1kPX*uD4677yR0r=F+tf0EzqT{oapY!ZuqEE$SCPtU61!-0pkq=$@1H9$e(RdqblkD!P*0 zk?KT9GmiGk!RObJiQp4mS>^w2llWiq#{L~6I!^`$WUG0;W$W3_RREzuz$Da(|Elkr zc<7fro6;v00aP>@q-L>D3s~oySgSS!?>Xg%*;am8{ZYE7IKEP3eoW(C|NwL^H3K&4^|ftcXj40 z^D>;^X$q7x=F*@xE3W_HidD#?sXos!Kj7H{h^(gu486!lD^dZ$a%JUZg_XCRhFpiK zkNOQpdnn-`jgV3Jp&(i(}fDdXp!2)oW60wgBi-Nm~nuJRU1Ftu>v zLZLpXcnNFv{S9pA)7QN+_U6O14drpuelbw_4<0r$5dl?&<^uT@B|BHM@q)k&)velh zqdaj<)Y3b1+?LIQ$*UO6@Q=?F3=0vt5p7?U!W_RJs8Xycv0Tfiw)O1=XrYuZC_>;+ zffmRi`vIyZt`4CunimAmkYUu2=_SN8W77mR`1t?OM#=w;&6xl9-vRb8w38G_vPhXl zxsZD&(P*ViK@hMr?nEZy%RM}26Z?v*DFXvQULL`PCa8>!|80-#K_&h)#KF)f<(&1L z7QeslZA5N?xGLlv&56}shIcU=ASaJ}f`=zL-5ap-O`a9$mx^z)bxyk%QWgM)3#o;1 zLQhm0MPst5z?=e&`!rPCG!>tN^MVo*fDT#OH?8V-VaD;xnQsF&39g zoB?WBp&Fp$-$JPkL~LDx%C5mlGzYW-ONUR6j?{u|eUJz{0RcpX2_VLY6lG$vTi#4N z@H2LN`mQSgYnn?ReiJ9H@zxtg_~!XQfrN&OG(DJFe`}I`xcjvm_VTk`gj3v@RQ+5b z>1~&ao2sC`peR*LP!-?Ok^D8&Uy%4Z@?F1Naly;6A6P`cxw^iL)DWeb{eaNb z7XW?cc;w=}4D@ICO~(L;Gmntl(hx~#nROR8;MEN^VG#@k7PP)lM>^XgTTS*z|5H;7 zwY+jVp|9qN*dr&7&=IS=WA=U9M%6)Y9o@y_`QLyW8{NoiBAd$+c50%$;Qwy*l1^{0W$W^bF~VQ47zmCORR!}y4>0rS;g-w%_)_*eEZ%p3{3v<@foqt+c^I`JW z#4gur`5n~OtCEXlz^DDO+;g zj$AT)uuO+;At#{_+OLZ4!z-`!W0@K4(*Lb%z6WDxlf@>YL;s%ia4y|Xja|sA=#M{^ z6oTtZknyVCMXVzuisygagy1=r;oRk@nCwF<0WahbY#8OczVkq77_eQr-{F9oSZ41T zt&AH)Mw8uqeEu9J`!U%q^Be5f_Q_^ypVXm9Ia58vb0jSPu|9)#Dk8*y#$ErcKoUnB z9@RrE!wd{&Ud>0H0cAJF0WQLUAY}K^&)z%hz#Wxhw&Lb5a_+;QGh?air%c!Ksq@vA zAU|DToWdxKhxv-QFknCaKf`_~@Wyvs6U#7FVb003LAjQiZF&bl(rTF&w<&k7nk){w zzu&D)1C-1>dA1F(k%}2=?On3jVE^z`f!A7En$tb-obpipmEN+IR$tddyA-FLJOvUM zX>xAM4!iDPWdodwRbZEZopWsRtT}i^q3yu~!2JF}0N<=s$e(*YUk`jS>wWA^Fr$W= z#cpWi5^(8qeGJ=maojLn{2SLq!%_4B2`>ykWNSWNf1)0kEc1i8)7l#WYOr@kBL-#6 z1m+<`8!%UNmYUeDv}(7GfBr2kq6SF8d;?FG{4#Pu(vB7G9c~NQffLC}{PlE?qM6Md zX__~&2nRO0(~L3*9Ru+zty_>VlAt&9s-?6OSt?9kuae5qe*wJ z8c_6s?_=?D?g+5}sJAk5y|B?XU9DkEqk*M7W#-T&9_B^mOM2ZqIYX=1d%iTXym2K~ zcfeh1!%uBP0m*Z0V12YViyZH{;cD-G5`B1+e2n>E(jXrZ1Rn<8n`r0i9{7@Ax#l9B z-G-87i11Za4-jk*3KwN=EU-wk&^?{!y7GM?NDL;e-JKur0V9mRQ}5q2(kf{zDM+Dv zBCeJ>>P32ooUY?$!M__=3M?{cXS1*H?FEHHkxsT(BR}?_&s$fv2wOAQn$iLrVGfikTz>1(^T3s12@?nwj`BlxGa2Yt?VAAZ z5jQJDbS5MHA(PNY8EhVt@6=QFEXodsGnSaNlV^qDn#fe3*eb`W^SyQ(OXjZEzp^(< zp0)X$3BPXTbOdUNT$TQhbxrg$v$kf?#{Hr{XFXmqlcJ{@AB317l+dg4q(r%im7*1%0JM|)egpQ zIN;LHlu6brn>C>~tZdeP4TUnO*C>skq*$e3GMPRSTR}j49LmtHoWE(Xy(k$USl^1%4Z0q zpL=s*X&KmlW0~X#yU@8>29GvU`Lz8^bxZJNt5?w#B1^y2;SnG1s5M1d=F=M^kwxdO z0iwv35%71r?COjQ@ZghR@(C&-Xy4s7Xa#6`AYpJm>a^38ft%~j(6=)&*~0mjnlCO| zJV%aSx)pCU9P=W&XDPxM)PYg+yFTZ$<0fBkQH~x~6qdAliBnpLtQ2vL(*ZyD`0A&y zTWi%mFEBhMaOmp4v=h(us{#pV+e4@1 zS+zc?6)DXGOv3#y*%VaN%pJCPJJn+r%pT+^W>AdBc|aZW?ll#&4J$uvU%MC&Bf!IN zlm+PW-2_DVq8!TzP>+IfUOD*+Br9AOittf`vw=C7Z<~$Q=05p6=L`uP)!Ftl)jBm?&c`U;tfh9F&Tk(ExHz|a zJdzIobZy23r@~qgGv=9&T<{=cuTzZ zX5-u0A+y^@qoCdRH?!W%rLZ}eGlCzl466f9`#y>ww7g{~i_rk8kNqCl0C7#6*9QBz zDS$x!5GJ4^7n7|P>sSOJN|Y9XI|L}1=Dad(1)6pR(F%8Xb!H(3pbt_9IK~Y{0CujC z`Hq2&`0U&_JIAt)qc|`#E)ErQ0HF+J2#3L1;r^J#XRzzWzs(tsAht+Ccu%INOEth( z2-l<;P>$RC`|fI(E#6WtFDBF0BvL;Q4`t^+=Gr`d&3F(@FlqrevsXYA(a2kZ18wBN z7JW~aX_@IRrGuzTl4_z}B;_g!*)$vd)8Nnhbt2rMowu71LEM|-I);F z#U8bs;8r_tTi7_Lz~M$6U`FJlJH6OKml{K>w>1TWi?`>qB^SQRzH!tCCP&bz0bS!Z zaQu#0JSJPcbCrY#tKp3d=Rk2?v;z_^fJ^4+Jv6XtVMX}1Y#-Q%MX%VKh}5S}J14k~ z_2&`U>@|D<;$>v|M6E=fS|0#*76)zxm@;Rgv{iUjU>0DEZqNcV(9_q~nSNYs%nCS( z-df*7JmwNWWaeDQK5U literal 0 HcmV?d00001 From 6d37c7826d137d9907f3c3f8487342786a0a256b Mon Sep 17 00:00:00 2001 From: David Stansby Date: Thu, 2 Nov 2023 15:15:51 +0000 Subject: [PATCH 12/13] Update test figures --- baseline/test_feature_histogram2.png | Bin 12860 -> 0 bytes baseline/test_feature_histogram_points.png | Bin 11524 -> 0 bytes baseline/test_feature_histogram_vectors.png | Bin 11153 -> 0 bytes .../test_feature_histogram_points.png | Bin 11479 -> 16815 bytes .../test_feature_histogram_vectors.png | Bin 10886 -> 16178 bytes 5 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 baseline/test_feature_histogram2.png delete mode 100644 baseline/test_feature_histogram_points.png delete mode 100644 baseline/test_feature_histogram_vectors.png diff --git a/baseline/test_feature_histogram2.png b/baseline/test_feature_histogram2.png deleted file mode 100644 index b7bb19e039d73adfd05f0d3860a5a1c4d0711f72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12860 zcmeHtX;f3`w(SPB(6Yf42&i;MO97Easep8$jzkm%Dqs+lMnHrBp^?4~r5->~z!Ez` zbEMTELHZt4nv^0S(gX=T(nbhkez4G=o%x)CTRrWH{1FhT#5I&;ST?t^un2WnYdl^^0m2cj~Li^ zxx2V|xe#roeeAD$65U)+D5xqZ%S$_YdAWP4D=L!yyg|Y3x`QI~`>o;dkZtZ~%smlA z(1!OP-!p6`5kZunpVj^Of?vX9PowKqV!)Bb(V)|tpAbIXD8GDM>7e45v#-p%-d~a4 zF3(Gk!Q)~(UOnYsWMi3ng|5gNv zy^HW8$W;?J)@{1So%XUQ5AlQP!Z^IH`9o!Arei$2;gX~Tu1|23rr2;?JD?~z|0;s? zKP(c_$&kgR36q$*=EC=kb+J2gHPs_=@i=CYLzDIUQHLspNVG#Kg1nOGyo3FP2uGmGwfSv0JuPFK-eb4dho7nE!hk8MKa}n@;DI1ld|k2yKG&Xoc?P9C ze`-gKm_cyW3%BaP{U{VpSH(bRZsom_Jc4v8Ulx?kYF96-!fuq&SZ4B7$!xp`<@UIJ z;rNTaVF${pVm#t)$!-U3!76sietby(De=XPpA2MIpTMdr-ohS&7MvpZO3Ipt>Z zBQ2PbFu0M{8Gx)jt*Nn3i?bz@*_D<1Wz&}z%Zpo7489y25ls?8%_vrHV0zaZ`|8;n z^S-Hx+vMOgOnS;<$m@;d7&4d5A+3+C&{abcvISqSKFxSOw^mpOugaG^>H}eA;FBoLgaeEB|UxFiL%H% z8C!kX)sP5cysb7O%y@=N{Y&a0{RwOyo1x? zQX(R#RNE@EgsE67VVsJAM2%W)n_IxCcX@X{y|`=6ymSM8;q$(O{|r+_%Hl7@GLfB^ z<&P6KBS?4gl3UTtne}$-%agw{iC=!Ik@yf@a*Pzg{1{fU-PglyV{B8z@JPuqisg0D zzgxUz_hsxVFH1DV|1M(=hC(KN`iDgN|Cj&RlZB$~h)*Ajff5j4l#kpuLRYQNYE$_T z$>V&ROA2q^j8JtevfP5a+`i*AY;7J&2SGwzHt$9d>HU0gSihe}_~7!VE;+LywR)$X zI<@F~#*vUe@(qs*Nh$`xobGn@FpoQE^h8GVii?Q7ES3*>rSRzz@+1QQsemM8kJr^l zZ79{wj>(7+MMzA^WYxNXS((U)$IaL7p>f4igYF4~pEwXix!F?iu9A%GEwLHTn-{#` z$8Lg;a;H{XkvuENiAaa$MWaB?32J1`Fn)exX%y}j?7O+IreJRvL05l#-VD2=rETHK zfT_2op1DZNLJj5}e1fYZOXF!~9EOXl{UE5k!%k%(;{`Duoi0r9);>ZY?5UB45P~HK zAm-T}Eejjt3~x)it#V96#CXY(G?^xW*g?PE-`{Tb0l*z#1|US{;rI+dk`_UV^!0sm zhGDjrv5JvVyI}hSyE;ZgFA(;?`SED*#`2H!DE`t%wDym$dyl8wgg4zRT9AyD za*9`vHf24|5FYkG&Jxvqdovy#(pFoam}}O)E2Tx23~v|~Ov=1nM4X~Q8T2~@Fv>|J z{(wSZ12~%6+%K({v5OsnIw50M+X#`u_U5PY!phO3n|@b|#y@NqkYbBklZCjm%)WX~ zZ|@WCEkW2=Gp5SuR5EwCxcV*+<+7y$o%ycDD@?VkJ&CoFP%LM*dC%9lkF48>*~Wh? z4c3K72q!uFPU~fPL%!3pWTMa+aVc!opY60MiMz7n8@tBB59|_r)Y8;taK_vh|1jNZ z$Jct$v#pZ7I#w2PBKaUj=;LTq-IJuddGdB-Hx$$f)2xN@LUx!i6c|;PW1$6%$D6GP z1c1#RPaNz{aG?AB4}3@{{oL2U`w!yrzx(AYM<)W9dk}=#FA|zKyXsy0`t?H2+UNTb ziq#b?r;@v(itB;=uS^bwzBJjj3*B4s$!AaZ9&QpcJuh}+3-E-05xh+wYFj8e3b~Gc zL)vTfCQ1~QW34AHZow`y(!RYs+pzX*YiQ<|!|b!D-ba4on|CMO`4cewj0TA(HgEqE zA^zb+t~qC2**PQ@%%CepD;t;y<51p&Iu}e7byZvRSWI*ZJKU4;$bPSs7PHy>IF#;l zm$yr^yhVr9PPew<9~hjM#W5CIq$KO}H!7b|C*H3_t*pOi;P9X2p{|r{f}8V;?o#EN zH{Z^19h@Anc~P#gC=zvIw3u|i93rM-Q zKTqCDGLDQhzA(H}I@1@jgh8VtBOK!okIX$$f;83``FTrhl@vgP!Q6&>R-TMqM-g7q z=)Bbb%4YnP_^yi6)h=bHP~Y)5T70vELz6S*u<5Wmuz^*Zh$3ZGKp>yGo1Fqz<1@?@ zVp4c@FsS4rJQ0NgFp8dqEYrvXM2IsMSBOF5A~z~4WfUKCXHEh6!wY8$wJOd56{+XZ zg__~n_cIwpNdo)rH$bnR`UdEdEl&!(0W9L8pD!dTZ-K@O&_Nq?7l%X6)L0 zM@(fqa{UMG3?jT?E|6^DW2rCu?&y2&avh_uwwW^@wLESV62!bNRq$_T?9NyxVb60c z{hSI`GBYdtYgVhd;nvB$m;35F!mgyp+4>hmdWhS(<(9ac_ul{8%&Dveb+m%jyKhvX zV^iLx96PbFXDqpoGYVsDC+1;e{h1zSjU#2m%dtag7kqsiKxO3u>MG>@PcD~Ig`O{-_?qQLZr zeak?k6D$2Z=8{|2ez52vSs8^aWK}SsI*ZPs(-LtCCJB zTK5JYn>N#WP4LaQY!VGOyuCanTaazR~?q3fl)YJmmB)}vPoJ@ z?BvX|EV*5e^jemJ3rOV;R^fLn4I!Oq)2z!{X3T=oFr&()+pLN1T&i5Ee1jPM9~sk4 z9>3Q3d>$Dut1e5q_5#kFmDi?L?(U+K9QXTYz*884bH~Ok@r+ z`jX)BuexEnqi%jc!6~?ypW}by44lkTrY!)Qt zXvkT*QAhiT6JVdIEPTEKLb`;sVXBc{U~a5x{DnQ4_{7CZQXn=iV|&igNWrD5uflDV zyr@|p;y<$7Ozy3{Xl<$4_N6W=;#&l*)ace`U1U^$hxAvK77u`wjj6(FVAu7Ulj)<$ z!2v9Kl}acGQE@s{BC8Segj+EnmdI|3)QK*(giC0dXx zfsjkS3l%steEiMXuL;AzKP2!f_o4`11UFxk;rqEq$C$?kk6mZ%M366k^W^(HIWRCT z9(&(k5?4E;Z)X33VF`auk$GpJ_|`9E8F=I?T+^0V5ToMs6ZhXRSPD?$W)p9Z6AJg< zXb-#H4>z-eDNhC-56)qAZ#i|DF#B1?|g6#8?;w z`|?boGfv4iUr#TvVdpmZ(9EGtd{^_u*-O@Li`$e(Hvx6I?Y#4~T;yMt{jN?p7lvli z*#e>AwQE1b{CaJ@w$cwZ^NkGB{vd-fk&+K7oDekHsxor9J%>h~gg_-Ll$=u~%^3}Q z{~FGctw`>f4}KfCUGVJ_WR~ex9aUMU89x#b7uS7P z`=fH_`Y@KFQ0f`&_h{I=)LTBrm0cdNYy`Xza@|t&7Vfgjz&kD zdUzFdojwK|aM1T~==*Dv*^(~`4k-e0yM2Q1sy2m`wF^q{wh#8OAOAT$O<+b$Th=Jm zsu?;g3XGR&gK44*ev-u8C;7;fl0G@uHobw5lCeA!Y@boJBwZN*OePWyx{t<6Wt9ag z{s1^4uCPd&9wFnmcpTCT*!(LMlBcvuMKxL4x%}xCY=wgtZRPlN_X%V7sdhg z?BX-lvUi6j{$j2EOjPplq{wXfd^1fxN{p_Iju*?6g~%~q+X#w{L!ajYDIWY2A$)tX zE~2Ve+ZS@8B9_0=bdGm-bvJ3CJ&R>6|{e&%?vV z*~?#>9G}jTO&6n~!58E3wL#iZ{_mTDbL1nJms1^cm_pc35vhMb%oHhGxvJ;`aI}8u{lcy-Ia0s(~HXKHTWCWOCj`q z*P>VcYn~^_W9Pk6a9P!xnD_F%0>s55T3eyV@xGzpn%s#?g4CS&~<_-$~hwTrZt3 zN|lL}X}CN|*!m?@R1s}e9j&HT!YRzL>hV8`xZ9})WB;d+`aPX5jW{8;I^bn))jy-I z7U4HHvdX9o@?Qe#X3#UgaVJPYP}*BauSSk1WPx_t?-gz2e=b-46mnI{hlrfCP&kOT zjf@y@3}XA6@;nmS;77!E_9X8M;Y3Kx&s4b8k6+${C(JyFg1^s>jeReOukC&F3#3bb zjrL2_K%G#ti9QPDa~g1lHvAEpozZJn&;$)aW2avB&8@EXRs1U?PE7ONkx*d1AZ^NM z;8&Kh;z1thO_<*Q&_E4hE5Y+ZrOF7%-mn%;uxR?WhOWMCI(`#+ZecWtR12(pK(u+`n9%E_A z>JTr~E%xaEPa(7iR$CJYX>n5(kTm@sWnNoN&4rbB+0_Ov?h_AJes}pj_l#^^0ME%% zjUI*iH=PC- zyUxC(QZI+!EuWtBbvtOAFLkz6MLD_o77G4)V3hxizN~4McO1cge3}Z`OpMRF6`I%C zW^78qm513x(AW?koqdibo!E#w5Q%uYF%Mp|ZxBEL6OzL`>gvN}!UsaQJi z7a@z8*4-1i&3E(VqR{okvX6B`Dm_j|=Cjnc?ZXyaatpAU2w2PVgv7k)NfSt;vBuUy z@+aDUoYR3qQN>Pu?xuQ&*yBx!^{Al3{wSv#An}Eyw79|Y;_wzsBT)-HabE2qw0$SW zkGyJ9^Ig)W6t*k`1F^SNPPXo>QQBcAo^1+^8;$Z6!!ZPqpinV&U z)%Dt<+67D-R%2tZ0gJCa;m*rifIZVn7HT2Si4)7ux?&(kLd0zS9CCp3q>$ntH!4V_ z0EA7SVkhc=Wg;&!XI8r;^xEiQ6b zh?s{jwTAgQCFxVhTd|{?WcWhM7YA{*f4I?8?OB1c;Syf07~!W9xs;@LtPv8Yh}#%d z{`_Zz&oAw(^HtjW6UZ~8V_z~T1y8q5M)WLPuu^qfEw(g8tyO!jjjH}<9@ICX{~zf8 z|HhX)&A)mDB?^i?$d?y?7QtR`D1zrsA{M_Q{I3i(zE-;c251g2DyD71u0SCF)3f^X z@@2~~)pX&nE?hkr{b&eMFtSIRB@*6C?Ae zy@9?x7N;+3R|hChaw!x@lZga$4FM5RqgFpKF#Bc>5FTuy zFU#G~%c2gt`wIv6=`o8=Hb4<`b_?kRmUdbuJ5Pp!$ z&={bqTRRa5$_7IsR4CA{g98GwLnkG19#w5AGU#+AL7oR!ds9%_;|GPvxjs1sbtp@k zW`fvIVfulg8-~$dEk8r8c-=K2XLb?)RXTe1os-4kUBYZDn?V8YBXb;@?Y=bAUM|cf ztIo7v99`PaWA{^0imS`_vE$9+Yb|Wem>h0HW^u@ua4DU4$02t;G^KdtD=&!4Ie&upTi$YI;DRvri zx7>D(@3Y^dIU#tGdqwdTrb;Gd&lLL@5HY$_Av6&IWV9)k>RcX=F)NbP(dLYOdeD?b zm0Mg|nkwA~TcbT$E6yVv9{+b1+kfK}`)6IS|N76FAc?x~fnyq&9ecx`WKZHOFFrZS z3u)UU{J-BWBBjVRhe0c)=mLmicT0^uIv|QNh((r=E$*i@R0R&D3(KaH9zmjazcO41 zm5(van#BVzQ#6ZXg4YoPB zvT7S;x79(+6uSxXtSkh&na!O3E5(=U)3U#k9jY9xxm;IFl z;Q!ldN6DZcHl&J$*)Y?2hgl%RcU6oI2I@$@x%|kSBNMZ@w3s3vX_n1+WVHs3l55o8 z=o2yAl0Khpn*3d;;`E&!m%DcR4k%1z`=UeVH%0_ANR(DPaBEvJ%F!n0TjzV7xkKdL zIwgr%PG7|p&%l59(fOfo{Z)r(24N2hHMGq6Hib}*(lJ&S)kY7_cgFEfu5*h9N(Y@@ zB25mG(l_qC4scERboVEhDD=lI2M#8RS4b!5>cV%SP~>R=vMBiJnQL#^r`IV5QeM!^ zM~~5Z>OFf$x-#bznv=9*uCv*p3xH~U|oH0WwES&{H>%Cam!N*cp30-Dx> z4cQJcqbJ=wCrL?jOWe%rsEEON$+e8gIEAu8vKc5^<#b`t8(7aEu`r&u46M+=Q~TV8 z6nB)nr+TFkOE(Ic9rEm3%c=%8JhPy>WO^coXL(Yy-JSp32gVHStCiZodNOC68^{ehHFZ(BaEk8Ya=k~=g~J;f_iqGs)CXbUF+vj5sww5YMk3F%b9X7L1BYpN+cgD_aQik?>WeMuL&2ghIsSA}t)P;#yMT<@RsIj1iRb|?U>|5-=B zzQXVZ`}trgXkr9uYgj$^@n3!YJI-h7;BPkKsZwDl&dp*BgxvZh>tRsI;n5)ujfDZJ z$i@Y)Z>O>3dLbFedx6fnYv#`eKF`*sLmO3W*7QMMl%aig^nceYrK}N zx_)E~Lvj?WH}maz;_M&b8fbJu7{_z^7yFCp44>c}ORWPqe8SXo)jM|Lk_tINBv50~ zCNL@1qC%0ppFtY}MV4!oW9R1PG2pGi*z|EJShx0x>r+rZM2Z+)He-B)n8gl%_HI@s zhXc`t$MmXNWXo(khA_eH0V48b8*#`tP>zZQ?p94?x4gx+zEs#Z={Q!Bhy<&GV! z(2_y-brT$7vU}@``zp0|7HaNAM)>O|1~7gU2< zKkKc%r3cJR^hK-8lf@|?*EXHe)x}%6PtN4>M&n#JOP0g=FP-$SadW!AnDiU7C^fZR zo$53vi!y2@^)?&pgJ-gXUgH*-7g5CmVxV`+sxWg9lXEKHynIDEjn%Z7;T!((Rk+Jk zV)K%Na2*V{$STAW@;tSq?|uBM<;_fTsMJ_(iHwzSrrtuR=C)#&Q|yUV4m1sLZiUx#>Ns(*lWL_4l;co6JkXYE*4K6m*B@COeE}FZd^!ch*h-5XhDtW`5 zf2O>zH7qF%4kXUlD_F|FGMRGAis607D!e2mPabWl)W-g7wvx1#nn>AXY-+!w=URTE zFW1qqqlMh3^cX^0u0c%E%#AEgmr?XPFzQi8+^?=|Xu?~9{PuyNZRJD_^=JwO$(t3 z=jSKO*pC_wWO02K%zHC>KR#Mth)Aj)KguOA1Lq4rO z7YOZjd_#VE&Qf8T62*a7=M>hOn!43r3gsKd%C$4%Y?}waGpaXW{sQwE`~Oy@WsyXy zXDm>3Z0$xe9l#ITvltzSU$arO#F1cdL>Tv?1L)@gnA#=plLy{Rle2@BeNusjX6CPc zm_V{d*W2=R2(P*s#i!@Sy~H^yJUaXOq9FZDS&hbj^|q`F(q1CA2zkQB91qGU zzmmN{rEZQrGLkX5)ew%&#myt=)CWC%$^a%XaC^=vqxS~P4^SKOt(v;)EL@1_9%PuXZj zuMZ#M!cdBa9-*yxW<-QvQMD+6Kq{3(B#-iK?%xJEecc}#fVIHyBGB(VrvqA5j#;HhYyMf_sWi4`|C zO{d9!okluAhsHMOAON@*9hP@$cFUq6m_E6Pzzoo+sfj+Xe2CRQ&S+e}S4M?$nYic$ zes*|6s%LZX@%eGU;nS8Ep*@?h!eI`%Ps4!9`yqg)$Mv$nQsRt*)?4ynjbS$3ZP&ZA z@B{*UMB74La(?3G-KSn6v#p!>r*#Vr_S@s@%UCHS%CmQJfU(~S`?r}|nMeqthkAOs zqH~V%jXT$1P+jAf ze10&bQt!Z!CJJTQM~4|qkoPH=r;`0Y!@(v!GuV12cM78=dgS%sp&(6WpN2$l8^!=A zS?;AAqvou4$9W?LCpJ?_@yk<_HULP#Z(wD>i7Ka3s8r?>Ce3T)qzRA2zyx$|aq)6h zua5~mpfGy1M087N_-k!xBq1Ie72xWD2!|qeIlstjUf{Q4`vnL2Nw;&FJyp zs(iDFloP)?m{^0lRe0emMpybM)^F3YiT~B}`|j|8nKg+aW1qvcB?L<+R;N^g5=wH; zPTG4cdgjlR^rp5?SS1ODmLCa4rYncUp{=08e)1|f&*=9u=B>C4qAey1qlHGnI{PmB zvm1Vb@1W{uYQItdb3={rkfO1Uj$EQid&7tt6qZGixf67gONrxrr7sl0zbbLO)usYw z{O+002`LeR9ot{k^besC!$cR6lD($hA(C_)y|-OTF(&X{RJ7YjR6=5A%TmpQQPKtb zz4rLpGL}Nc$f*VX*yNZfM9oe)xo%+KIFAekJKXL8Iv8&ZO>``p=l^&!>R@OV6uw7% z3VTh4tYkQm_6VS;aW^#u%rY3kbz~lX*wA>q43v_J0lcM@?gvBWwz-dar&|>mxEx$* z5(#Wf2EDjcWxa)U=vms($)hlg8;3by-%+Gddf?zI8XUeF3=Q}#x?oLN3*%vA9A2EA z-;$K1N+B%{j;#$O4wwbzUP?~f1pMa9F%e!kjE1{l5c$;SEa?72uOG$%AfllyPx~nb zY;s<@XL4p+I(p98N zi607Tq&ES9SddO4E%cm;d)>44x$EwG_q}JIwa!}i4;F-(%scPQ@Au5}Jim!BGrxAB1gsC0h$0e+qI)3@=v;O*uYaPh_!$oQh4&vkFV>-bCi zZe6)?6YuS%tf;DZOn%>0KR=(F>PkwU|K35-`-Z#H5Z|`@V36%T=WK665b`4D2lh-S z9}hwDzPK}|ECN$!hl5hZ{nOaL`ak_JDU=I3pZDE6gmX_AJShTEoNtBmvEE@OjIAjou=5}+) zM(vT!uV1{qn{Kwx+fNBJ86SdIZcHqv1iS3u);0L*eKR}dF&cNx{5~w^ug`qMdhC{9 zQ#KKFtUqAD`+-1-X*P#u64>AyFVCv($Hn&SFbSFDHcc7V-v>I8j{Sa6GjtdiE3yZX zfySA;?BIO+U)iv?e}V@s@PR8MY}?WiQkeggek{gdFO=JvyLrdC#`WDGR-K^DIE*9z;F zqs;W8bJ2sSF+@h5?G|=yjKb5#t;l5p6Xf=id&cROA#y`{0v+u&t2$kePi%y#$+ph7 zQj18DacXNqy5zAWI5N+cU@nZ+QOd%C{$?TsK^O9vCqB`c%ZPg}&(Fd~)5qQ0SQv|h zp-6F&bEdIqeDM)^2t02F%n4eCha>AWBeHpktJDT`v?QbIAEzCayzg304zG4l`A;cB8QVm{k)Z!TM%=L^@7R|-GkL+lcwMo@3i zqqvt2f!K@BnnSEi$H4cP!U^O)DXXxCiRRoG2c`wcN2s4L2vhbTgDe7LSfhoB$ZneDfb= z$3M4HdT;O+cn=S5HLq<&#azq1`6!(F)!(lWrqli47U`DeGeV= z0L#++xHekq;fLaTH2!~qMSL|#kY9!*exfT$hV+^kaL{+rheD=6`HS{ThB)#1h6j=W zAWom}5u#ooPLtw@NziwaRF187h4Ziubbm3Zt~_H4jf=f~{=E<8~kSYj( zAU|yPreZ|4r~V>n7b!fOhDeU51h7)rjotF232v*KAge*=_$*W$8Yec*C&jPUI&Vc+ zriRP-`h`>U*?iZbN+^6ssJPm_u9`atPxk{yUj(fE#ord`RX3Ta?yq&t7#h59)+qeh zI^QYh3BBFVb3?npN^jNn*ZAcfvYL>&x+v3@%D>)b^lgF`c8FnE9(sf+g-?`v`nHn{ zt1K6(&I4mqS3|vM zx8hTc$RZ^*hZ&zVKk&d#GP7qxh{| zw62vBcPys^N_JcIr&16~07z~o%sa(06&iq8Lx(=%5BdoTj|$lKA&wVG>-Dp z6FXKE;CF+aI2+}aJ?XF65NY{ZGuN(ncJMW+Bt#PLhmx~7Uq!;hw2^hy9{n5aGcHhk}F#4m>(cHY^u>@RR7rA6Rt#X;PiqmaQ;_tw{GhRqAFh0=%m zk;s(Rbwv%2S36#gY;A?xHe710Y%9ErZKJ%iWUqg+Ybaf2jZ}xeo090Q3i@~~(qq~@ z*5V1wtT5X@CEypG3>M7wOvyms2k#TnGySiEu`(?0(uP*)@iy_!{)8N}Ai@9C@$7q8 z4d>ta8+rtCD|()tG=c^_iXFGl6uBzJ3f_j9nLEmpmD5;ZH&otTpeXi8xU=)BsRH@nLtI$5RJ>$*p*~Mi9)X zEcEA(Nxq<~8jIfkw>hf)A9%(8W{wUE$#j8i`Pr2{ zrt4Upfc1y|D8P*x=s{SKj%axI)-vTwW!Co>A9cd>m9EdUk9_Sk8rh^V6z$U(#dfdJ zLtU|1FzX%3sI>je(e|xKGD@{S$}I|#WnfZ zcV%O?vL|%?07`Q3bW2&kYOR3f3oln0WXXtC#T?W9lUxSsZr=A7CRVeB8w*vJgTIF_ zTa9bfFkVcBcNi=&FI)3A4p$XkYR&m&cy*ePthH`sH9YdCFZNjJ>pP{TQx(~F{{^^? zqpDE#sb^eHGMmxSm7<;5Afpd+5Q5J~%SV_g?4rrMgQ4Xw7p!7@6n!q%Y?;yXZm$7& z<~zF|3&p9a7cu+*OM^6sJBgG$+jOXmN73Zl1a^#UNaF35*O86LrigatgHgAMsfak3 z6Gj{f+N7@YZ#2T4|G*-1Z5xEt_6FKPM&+Rga$_FCs+qSJvQXZ&xn2TD>`?WIXJNXF z_XI~2abn7cpjnl^wQ$o6J|q#JSOurRwlpHL*Jt;5z43K#v1R){)H za)&8tzMpjva2V3?T_~y2*Iml7d@g|W%KL6TUD&6fx!eJ-eS*I0(vohhx%OkK(Ep~4 zq?NAfwX=75s2ExqVoN;myf8MbY4C*0Y4TY2x&(KswbL>Na7OOsWfRq*P94Bu-7Mc* zQo$R%q5AH>iC z5PO+Hbgwc9usJbXeQv61JSDu#dn=dva=vktPaJB{qo7WScBFu{H~Wpz0xBUy+D9ZV z7Tp`+3Nr-g{tx9zo{-*~g6$Pi9(MfR#Z=X!i$umRZ4jk=51zu(7+Yn?p3`Rvqg`Sd0g##-OYsG=(C zV*BdLl1bqk3BS>9fT^H%{g4#<2P>(>xv~7(EKWw@BCYMw66%&^vBv6KX>6gEO3ZRV zSorEg?5$f?3Yyp2XvBy5^U&OO^` z7JPp7t9+k#(4+g31@jc@U$)Y{Wb%7y4UHOa`!O8?=9cHm>Rh8PP!phl!PtBv2 zY{spT9ByvE>`t$Y7~;5$@2l*@gl_qEY_$|;wQbpvx?a$|dEYsm3u0B);E>FIdm$P+ zh#4s-3=$LOr8kT>d0u71zsHM=6YrEACPHLxg z2d-BM>`llgkR1%hk5WWPbgrXZEXiZ`!~*J(E_r9@mB`>zFy_=ZJnU#hwlZmwS`$AP zNI1dVca*#OKdj0R%-lh!q4UGMG4LbX9U0q<-{6l2yv4-M0BKHrbhuW zcQs=POaY_510y1i6VIhe00Dz&%k)#Ei_!N|lMXuyXx3y%9xRZ3Lpw5rh;#o6WMmxl3JdAIJJdt+usEd5ikt*Nat?0#DiZ;#AUTy57AiW=%K&F)ON zUljf|)%9~tRa`~mu#^9taP{@iWT(J4KTd|`eWxUOZVdMoR`BPG|79P&6+vgtTNv9LUWCT)n3|aR(cqad3Qzh({xJ0_&T=TMNF47$`TPbknZ3(nw`mIP zr%cs?S!K=CvLHph>SzDR%IlJ1!X?+%C3EGXTU<<*I12;?{yOuLAbqq~&t|%}sBTO3~4C zM@$=cREq>c)yE^G18!sB>AvrGl&*D2(E7YaEGw2xDL2o+Byi^Y2g57ABaXZb^C;Zi zyfga8pEXkILe=?Oo_8~WAXS1%A?6IrH@4AJsEr6w_yuBBPrZihA0DcVZ*MAwiux3s zjusKU&;@%28dNkJSfsO6LOBNGkfgvD`z_X8s%e~B?Vf6`mB_V9AU<+}3q&CMHF+IG zb;$<9Shw{%H$bz38Vf#RBiBfh+v+Hk4~;6dJMXYy7lQ!B85fvCfap8W)#=hW@e;*$ zwjsSVSQY5woV7iR2OguNt>EpFE}a_0P5)`&7vcO>CWJr|_UGAZcO1MQM~q&p0HK@{ zTnGaFtL_lAAOpYOn~UNk_i(p1+yua#cAPsn|CXP6AxwDtdS4&ow6*AtLn97^IhfZ( zRWZK}(!r?_pmnT;sVT=tsDS6#HVCf7p`#09OgXQ0KD*138X0;0jJfNpib}Y+wQEp` zzu3X%ifT62E@iZPyKabpzw0j#DHXXWZX@zo{sr}MZ^cc;J-BZZmi{w_=BIYIrL^%j zRE7?aOVTVo*fX|Uj%t14lI`@_fH3a?Y5Wp0#Khj`GE5?haNmSX6YZC`ubd39FYMC} zXx0s|M=cGqLxwDmNRC>s-XJyQ)n#Pd!aP2O0E*BWlFGmwcyDDe&SfBWr|^u6bGq* zjyjb9Y!Fwu(4LgHo%o7|bL254_y{Z&5{Gllp_FxbXPynm#@<9AG_6X?fSs2!XaTZn zgwXw+^j$U$8QAoPv%B1L;T0Kr-l=PIkm9UzeZYg?9mO~uOAxK5}-Z#L9BEAB4b%w?guu^w=KLoqNN_(;;*&Wt;8AkKu6KWl_> z>?qX{Kiamcp47qSUd@h`2gp}ifA*KsrVV2s_8Xv9Ms)Ia$Ux~kX7+y7p37M5WUAB8 z(X*+u_(V$T+w-h_)BjF@wjYEP)ow`k*R4*|PG~y>W&F|!`tTlkyuqdOdT9`&3OEeq z+1F+xl+@kcIy=W&)a~6V>NDOKqcl_>5Y{``l%Hn7zUS8==g8H?cBtQNAnK!utiFa$ zIrnWMET`R!Y%FwD)ol`@p}fsJB!omrfhX`Td2EkWvrBPX zRdm^YhYJ`9%U$EApO{5&f!&lSHV`E_sDFML3?SvG%kJkD=Q%EKl%-`m3@{Ha`qQxw zqiEm7=}gW>cORB$ovr{*!gtc}Sj#S;Ts`C4U>jV|#cZ^D`a!arUrA_#rSgZybp-{+ zB)OX^jqY2^LPy^c{OX_1yHVZl$EXQWg}gH`bIeg#H%WntB(jopekOoG-B#$w#az(k z+5oH%3DTJ$p4+i}l3sQ#> z5=I_N`M8h{`-0r?ujjZW=3y4KNO~S{Jo!^$;`ZsAF2dM=-Ce&qK-RY~a3)N_2sVUs zUC)k{R_wZliXS0Oqpms_wyxt3`-{2SUA=RD;pTC#!&)3ysx0Y^mI63~2x2}GKEQjm zZM?GGN0hk+UdhTRG8W?(>1I4WJnGnReW|VOp?|()MRi6r=COXa+kAsFd;MkaYII>m z{wIxEVsy`=yeQ|lh}VgVA(uv_Ej`>#gM48U0$yLLr32?*R4Gi4jGli{>iMP9DBX89 zf~xh-Z`lGN0So14A~&0)bcL~a@|ZJxga?R3m5N>t2b*4gsDf=vw>480`!p5G+ZYsT z*jp=|*D9NVQYn&I);it5*edkD&?054tD4}?V9<5@3(r=a@6@%1RUrZ_Y{q%1+n4ZI zuEi zoB=#|+|sd*-*pACrhj=A;lH+0(X3Jn!|@GN_gN9YUz0DZFo~4|=7u>!LOYDdn;kQh z{An@!jB<9+V!0WhIe1x&13hnFmE*d`C%+>?JoI;7d zaw?*FPcrh$fQEELw#W*%&y8#{XA_Ia`=K@^9dCwecnIZ+X`I{YTMX^{NXuQ(RMFlN zJrHxpa`wXMJ__7jBQ2}r>Gd^lHaSqn*ZKz(g4Lz;dvDcg(|B&EJYLl1c!Et+96<*T z$oKmDEQ_;67EO5PxX+bq=J}~GMS1Ok+^(mNj7)MAbSa13NA0@H1&B;O%y8|K9Uzmx zsB`G(6QG{3mmUTd9Vfq-0vu@;UPiTMvzQvUr!cEwlEVv=+ zVB;lT4qOMo2=KlCIe+}`>rMaA7yAFI;ZyZl z)s7>r^G8TW)>;W_5!tRNj``M=+>3!dpHZdm4a;Mx77Bs2e^EF9r*pKCO6_*e$71mD zJU-DIwhRRz41ovynVt?nr#arOcH0k8>Orb46-9hUZSRtg;gK^b54}Vl^JRPoW;*J* z2?$+N@BknkhXC_F7Ljd<6IbAEZnCi=is8bNK1SDkq9 zPP~Hvx;`ewyMFfhZ99&S-%Fkqr;Y-rUCal~Tp|IA^-A>fkVe>d<0_FJa6tY3J}7#b z!m8jXq8BRm;Mu}=M{xlA$qz`d^Eb|2=`7EXN@Nw&byCP@@6xrPL*_^P-c(Q=(LicXBGi2YnQn zr|30Q1D7E3*iF8##Sc+aK*8bV#Xv>-qZ`7Lx=dK8LbM3J0xsH4Qbc{XQux5h&c<-oI@F0*s?RX- zOmtvP7Ue4j{@m|Zj+Mg<(Ibi9!cecfNIxXGeNX zE`=MKyUxaUO$S()rfJKc+}F^{{bv34L%lnFUBZ_JYd&y3 zYm_ys6Kj50HOnj-6?~ocPCHFonG{cU*bKWw7_zWyX{A$h zK33d(YTz+sBxv-kq4lH@aP@W%e?QXSb|9<5|HSb3Yk`dE2)xJBrme~;#<+6urNQ8z zRwc%Q=vPah@{20gPUQQyXH>W=If_5C(-@-~*$K{EbT%Cu#I3t`2D>1;i+W&2GwH@2 zEXh2Hi2@td1`k06-sR&p1`@g+{hD^c%f}mD2P-(-SzF3>!NJ#7-1I z0ldSUOPF_28Ngt$5dV)CQ3QbzNCR#m#ceem%;AaKYJ}yK5>QZ?H#Pw~pg3BT?MHni z7?f{-y9aFf*7=r?F&ag))=`f#x3rgR8Ce)w2w+<^Z3+)B)-#NO0A9n;s(^Q;+Bz>d zy8iIkqp+n!3{48yBOfp{RbXFE0s_6O*ZV=2eE50t7^iFQhW0Ijz;r6vZIvA#PO-|j zCE)7Ulp(==z@#*9W%C9lggvbp4TH^srf`o?`y2UbeK1ssYmyrE0J7@{pMnQ7yL1g!u*dh zU)8xeZ2bzXV8Gu0Y~%+Qqkpan|c z1)9SKvhtyXjPtlIdG_w30O52P%8YSpJ*PgNQF%wXXA?tR^Q5{`Q$Q%#Ii?7F_F29V zG`b-I{DXGlBu+fd*{J2BSo8YGG${aTIpo`8d9|E`YHp|%40IF5=Chs#2rxI$(M~pI zL#GVO>v#i$gt4mD&sNoZOoXxRQ_75#_z`xS*krmU{Ilt5+2Bs1M#%U9Ephl`V+2(sxE05zV?8xRoK{Hdg9PA)K$bLyjTuipPN)0=0f(m0vfsJ-KT^)n-naams}N&Zk(lLDhNBhhJxl ziil-0zKaR-iy(VUxf?);Vn0glFZ#tp6COAxwTXy%8IwKUep*snBM`ld{M_IiGAb$xM^ z8hgXBESpqvuW@bf&jvDl5gAnfrv6G!NYC?K3Y<6RFK6X?VX_qK*5P`P7AHV z$e(Zd#bP<01PA~FrM8cuQPr6Zj4+|Voy-9YO$RBiKk3@szUxcCgL}1QUfd&zZmVS^ zXESx@1vz>j0qdi3yGx#Ob~0qx1Ef|9;x! zKm9c%a_Xd6d-md_ewhcYT@^}#?wbu-LulVuimmfE4{w^(@BO@^?odSb*wWRu^}k)D z`G2|u#J#_D9)MvZ2#Ptdz903D9U50UmsXx(Ke#=zR9< zT?vjm93>hIXByE%^y@2gUc7@2%Zgy(_JETYbw({Fxdov*;@+OGIQC?SC_`$8g`a0N zqoZu2x#jVnjz|@(zt%240bwBq+==%SAm>E@jBW*`ouJdG_^~k*NeMu~!2EA%QQs3u zYuDj%1OExESq`N4Q@^33`v4ekXYQqYlVV_4gdwqniX}F}^AIcq!{FP5%$-oS7R{t@<1sGbpTzh!?(FQ-9*kf>K<3XaCI-J!+ zAbG-bW3Iu#Opennsi$3T1g+Lf_cUp{SW+h4FQ~VaWjmYhl$F>YpCbhBOp0XT$Hs3G zvFi#${2<}<nSZu8ynXnwtQr3H{44nIF9sv z;h1uI^=N?5OJQffCDo*!vu>_U}FIWOK11bG> zuB;K19q`E+&l~s0-sZe?A?t#=T~&OS!bM5mE#8%@L90o`acC4CO!S7FA*Vri6kB() zxvMc}QD}~Hu@grg3+E1f(sh!+f*1&|;>>(QT17v^e|WffZJf$l>-oYXKczez(spSy pCiP&!0S1S~i0t|2?iI169%dzSKR9LI1a2flIDL~drKeqP{~Ifb1&sgz diff --git a/baseline/test_feature_histogram_vectors.png b/baseline/test_feature_histogram_vectors.png deleted file mode 100644 index 8048ac91e4d3dd57056d61f19df6d96529b5f551..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11153 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 diff --git a/src/napari_matplotlib/tests/baseline/test_feature_histogram_points.png b/src/napari_matplotlib/tests/baseline/test_feature_histogram_points.png index 49e618be0f47332188ab6762015866aa06b4f109..b98a0170991a1da25b9ebf04ec259372e2aaf68d 100644 GIT binary patch literal 16815 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 Rz!&IIEp^1r;v4s#{(tuwn&$uj literal 11479 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 z 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 Date: Thu, 2 Nov 2023 15:47:03 +0000 Subject: [PATCH 13/13] Fix type checking --- src/napari_matplotlib/histogram.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/napari_matplotlib/histogram.py b/src/napari_matplotlib/histogram.py index 09f7c3dd..f78a8503 100644 --- a/src/napari_matplotlib/histogram.py +++ b/src/napari_matplotlib/histogram.py @@ -1,8 +1,9 @@ -from typing import Any, Optional +from typing import Any, Optional, cast import napari import numpy as np import numpy.typing as npt +from matplotlib.container import BarContainer from qtpy.QtWidgets import QComboBox, QLabel, QVBoxLayout, QWidget from .base import SingleAxesWidget @@ -185,6 +186,7 @@ def draw(self) -> None: _, bins, patches = self.axes.hist( data, bins=50, edgecolor="white", linewidth=0.3 ) + patches = cast(BarContainer, patches) # recolor the histogram plot if colormap is not None: