From fe36a98b4de70b1194d9528fabfa9988424ff211 Mon Sep 17 00:00:00 2001 From: hausmanns Date: Mon, 21 Aug 2023 14:16:39 +0200 Subject: [PATCH 1/8] Added keypoint matplotlib viewer --- src/napari_deeplabcut/_widgets.py | 123 +++++++++++++++++++++++++++++- 1 file changed, 122 insertions(+), 1 deletion(-) diff --git a/src/napari_deeplabcut/_widgets.py b/src/napari_deeplabcut/_widgets.py index 8111067..5311c49 100644 --- a/src/napari_deeplabcut/_widgets.py +++ b/src/napari_deeplabcut/_widgets.py @@ -9,6 +9,10 @@ from types import MethodType from typing import Optional, Sequence, Union +from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas +from matplotlib.figure import Figure +from PyQt5.QtWidgets import QSlider + import numpy as np from napari._qt.widgets.qt_welcome import QtWelcomeLabel from napari.layers import Image, Points, Shapes, Tracks @@ -290,6 +294,99 @@ def on_close(self, event, widget): else: event.accept() +class KeypointMatplotlibCanvas(QWidget): + """ + Class about matplotlib canvas in which I will draw the keypoints over a range of frames + It will be at the bottom of the screen and will use the keypoints from the range of frames to plot them on a x-y time series. + """ + def __init__(self, napari_viewer): + super().__init__() + + self.viewer = napari_viewer + self.figure = Figure() + self.canvas = FigureCanvas(self.figure) + self.ax = self.figure.add_subplot(111) + self.vline = self.ax.axvline(0,0,1, color='k', linestyle='--') + self.ax.set_xlabel('Frame') + self.ax.set_ylabel('Y position') + # Add a slot to specify the range of frames to plot + self.slider = QSlider(Qt.Horizontal) + self.slider.setMinimum(50) + self.slider.setMaximum(10000) + self.slider.setValue(50) + self.slider.setTickPosition(QSlider.TicksBelow) + self.slider.setTickInterval(50) + self.slider_value = QLabel(str(self.slider.value())) + self._window = self.slider.value() + # Connect slider to window setter + self.slider.valueChanged.connect(self.set_window) + + layout = QVBoxLayout() + layout.addWidget(self.canvas) + layout2 = QHBoxLayout() + layout2.addWidget(self.slider) + layout2.addWidget(self.slider_value) + + layout.addLayout(layout2) + self.setLayout(layout) + + self.frames = [] + self.keypoints = [] + self.df = None + # Make widget larger + self.setMinimumHeight(300) + # connect sliders to update plot + self.viewer.dims.events.current_step.connect(self.update_plot_range) + + # Run update plot range once to initialize the plot + self.update_plot_range(Event(type_name='',value=[self.viewer.dims.current_step[0]])) + + def set_window(self, value): + self._window = value + self.slider_value.setText(str(value)) + self.update_plot_range(Event(type_name='',value=[self.viewer.dims.current_step[0]])) + + + def update_plot_range(self, event): + + value = event.value[0] + if self.df is None: + points_layer = None + for layer in self.viewer.layers: + if isinstance(layer, Points): + points_layer = layer + break + + if points_layer is None: + return + + self.df = _form_df( + points_layer.data, + { + "metadata": points_layer.metadata, + "properties": points_layer.properties, + }, + ) + + # Find the bodyparts names + bodyparts = self.df.columns.get_level_values('bodyparts').unique() + # Get only the body parts that contain the word limb in them + limb_bodyparts = [limb for limb in bodyparts if 'limb' in limb.lower()] + + for limb in limb_bodyparts: + y = self.df.xs((limb, 'y'), axis=1, level=['bodyparts', 'coords']) + x = np.arange(len(y)) + # color by limb colormap using point layer metadata + color = points_layer.metadata['face_color_cycles']['label'][limb] + self.ax.plot(x, y, color=color, label=limb) + + start = max(0, value-self._window//2) + end = min(value + self._window//2, len(self.df)) + + self.ax.set_xlim(start, end) + self.vline.set_xdata(value) + + self.canvas.draw_idle() class KeypointControls(QWidget): def __init__(self, napari_viewer): @@ -354,10 +451,19 @@ def __init__(self, napari_viewer): self._trail_cb.stateChanged.connect(self._show_trails) self._trails = None + matplotlib_label = QLabel("Show matplotlib canvas") + self._matplotlib_cb = QCheckBox() + self._matplotlib_cb.setToolTip("toggle matplotlib canvas visibility") + self._matplotlib_cb.setChecked(False) + self._matplotlib_cb.setEnabled(False) + self._matplotlib_cb.stateChanged.connect(self._show_matplotlib_canvas) + self._matplotlib_canvas = None self._view_scheme_cb = QCheckBox("Show color scheme", parent=self) - hlayout.addWidget(trail_label) + hlayout.addWidget(self._matplotlib_cb) + hlayout.addWidget(matplotlib_label) hlayout.addWidget(self._trail_cb) + hlayout.addWidget(trail_label) hlayout.addWidget(self._view_scheme_cb) self._layout.addLayout(hlayout) @@ -394,6 +500,10 @@ def __init__(self, napari_viewer): QTimer.singleShot(10, self.start_tutorial) self.settings.setValue("first_launch", False) + matplotlib_widget = KeypointMatplotlibCanvas(self.viewer) + matplotlib_widget.setVisible(False) + + @cached_property def settings(self): return QSettings() @@ -427,6 +537,14 @@ def _show_trails(self, state): self._trails.visible = True elif self._trails is not None: self._trails.visible = False + + def _show_matplotlib_canvas(self, state): + if state == Qt.Checked: + self._canvas = KeypointMatplotlibCanvas(self.viewer) + self.viewer.window.add_dock_widget(self._canvas, name="Trajectory plot", area="bottom") + self._canvas.show() + else: + self._canvas.close() def _form_video_action_menu(self): group_box = QGroupBox("Video") @@ -681,6 +799,7 @@ def on_insert(self, event): } ) self._trail_cb.setEnabled(True) + self._matplotlib_cb.setEnabled(True) # Hide the color pickers, as colormaps are strictly defined by users controls = self.viewer.window.qt_viewer.dockLayerControls @@ -710,6 +829,7 @@ def on_remove(self, event): menu.deleteLater() menu.destroy() self._trail_cb.setEnabled(False) + self._matplotlib_cb.setEnabled(False) self.last_saved_label.hide() elif isinstance(layer, Image): self._images_meta = dict() @@ -718,6 +838,7 @@ def on_remove(self, event): self.video_widget.setVisible(False) elif isinstance(layer, Tracks): self._trail_cb.setChecked(False) + self._matplotlib_cb.setChecked(False) self._trails = None @register_points_action("Change labeling mode") From c814d000d30521b8a166ca6cf81ab66c725bca6e Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Wed, 30 Aug 2023 12:37:48 +0200 Subject: [PATCH 2/8] Minor fixes --- setup.cfg | 1 + src/napari_deeplabcut/_widgets.py | 52 +++++++++++++++++-------------- 2 files changed, 30 insertions(+), 23 deletions(-) diff --git a/setup.cfg b/setup.cfg index 2b18c14..ef2b7d4 100644 --- a/setup.cfg +++ b/setup.cfg @@ -33,6 +33,7 @@ project_urls = packages = find: install_requires = dask-image + matplotlib napari==0.4.18 natsort numpy diff --git a/src/napari_deeplabcut/_widgets.py b/src/napari_deeplabcut/_widgets.py index aa54231..4f4065b 100644 --- a/src/napari_deeplabcut/_widgets.py +++ b/src/napari_deeplabcut/_widgets.py @@ -9,9 +9,8 @@ from types import MethodType from typing import Optional, Sequence, Union -from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas +from matplotlib.backends.backend_qtagg import FigureCanvas from matplotlib.figure import Figure -from PyQt5.QtWidgets import QSlider import numpy as np from napari._qt.widgets.qt_welcome import QtWelcomeLabel @@ -38,6 +37,7 @@ QRadioButton, QScrollArea, QSizePolicy, + QSlider, QStyle, QStyleOption, QVBoxLayout, @@ -294,21 +294,23 @@ def on_close(self, event, widget): else: event.accept() + class KeypointMatplotlibCanvas(QWidget): """ Class about matplotlib canvas in which I will draw the keypoints over a range of frames It will be at the bottom of the screen and will use the keypoints from the range of frames to plot them on a x-y time series. """ - def __init__(self, napari_viewer): - super().__init__() + + def __init__(self, napari_viewer, parent=None): + super().__init__(parent=parent) self.viewer = napari_viewer self.figure = Figure() self.canvas = FigureCanvas(self.figure) self.ax = self.figure.add_subplot(111) - self.vline = self.ax.axvline(0,0,1, color='k', linestyle='--') - self.ax.set_xlabel('Frame') - self.ax.set_ylabel('Y position') + self.vline = self.ax.axvline(0, 0, 1, color="k", linestyle="--") + self.ax.set_xlabel("Frame") + self.ax.set_ylabel("Y position") # Add a slot to specify the range of frames to plot self.slider = QSlider(Qt.Horizontal) self.slider.setMinimum(50) @@ -339,16 +341,18 @@ def __init__(self, napari_viewer): self.viewer.dims.events.current_step.connect(self.update_plot_range) # Run update plot range once to initialize the plot - self.update_plot_range(Event(type_name='',value=[self.viewer.dims.current_step[0]])) - + self.update_plot_range( + Event(type_name="", value=[self.viewer.dims.current_step[0]]) + ) + def set_window(self, value): self._window = value self.slider_value.setText(str(value)) - self.update_plot_range(Event(type_name='',value=[self.viewer.dims.current_step[0]])) - + self.update_plot_range( + Event(type_name="", value=[self.viewer.dims.current_step[0]]) + ) def update_plot_range(self, event): - value = event.value[0] if self.df is None: points_layer = None @@ -356,7 +360,7 @@ def update_plot_range(self, event): if isinstance(layer, Points): points_layer = layer break - + if points_layer is None: return @@ -369,25 +373,26 @@ def update_plot_range(self, event): ) # Find the bodyparts names - bodyparts = self.df.columns.get_level_values('bodyparts').unique() + bodyparts = self.df.columns.get_level_values("bodyparts").unique() # Get only the body parts that contain the word limb in them - limb_bodyparts = [limb for limb in bodyparts if 'limb' in limb.lower()] + limb_bodyparts = [limb for limb in bodyparts if "limb" in limb.lower()] for limb in limb_bodyparts: - y = self.df.xs((limb, 'y'), axis=1, level=['bodyparts', 'coords']) + y = self.df.xs((limb, "y"), axis=1, level=["bodyparts", "coords"]) x = np.arange(len(y)) # color by limb colormap using point layer metadata - color = points_layer.metadata['face_color_cycles']['label'][limb] + color = points_layer.metadata["face_color_cycles"]["label"][limb] self.ax.plot(x, y, color=color, label=limb) - start = max(0, value-self._window//2) - end = min(value + self._window//2, len(self.df)) - + start = max(0, value - self._window // 2) + end = min(value + self._window // 2, len(self.df)) + self.ax.set_xlim(start, end) self.vline.set_xdata(value) self.canvas.draw_idle() + class KeypointControls(QWidget): def __init__(self, napari_viewer): super().__init__() @@ -503,7 +508,6 @@ def __init__(self, napari_viewer): matplotlib_widget = KeypointMatplotlibCanvas(self.viewer) matplotlib_widget.setVisible(False) - @cached_property def settings(self): return QSettings() @@ -537,11 +541,13 @@ def _show_trails(self, state): self._trails.visible = True elif self._trails is not None: self._trails.visible = False - + def _show_matplotlib_canvas(self, state): if state == Qt.Checked: self._canvas = KeypointMatplotlibCanvas(self.viewer) - self.viewer.window.add_dock_widget(self._canvas, name="Trajectory plot", area="bottom") + self.viewer.window.add_dock_widget( + self._canvas, name="Trajectory plot", area="bottom" + ) self._canvas.show() else: self._canvas.close() From 516232bb52a306b58af6b2e7d1781b4249887615 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Wed, 30 Aug 2023 15:06:16 +0200 Subject: [PATCH 3/8] Polish keypoint canvas widget --- MANIFEST.in | 1 + src/napari_deeplabcut/_widgets.py | 142 +++++++++++++------- src/napari_deeplabcut/styles/dark.mplstyle | 12 ++ src/napari_deeplabcut/styles/light.mplstyle | 12 ++ 4 files changed, 115 insertions(+), 52 deletions(-) create mode 100644 src/napari_deeplabcut/styles/dark.mplstyle create mode 100644 src/napari_deeplabcut/styles/light.mplstyle diff --git a/MANIFEST.in b/MANIFEST.in index e050a96..d0e678d 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,6 +1,7 @@ include LICENSE include README.md include src/napari_deeplabcut/assets/*.svg +include src/napari_deeplabcut/styles/*.mplstyle recursive-exclude * __pycache__ recursive-exclude * *.py[co] diff --git a/src/napari_deeplabcut/_widgets.py b/src/napari_deeplabcut/_widgets.py index 4f4065b..edfa3be 100644 --- a/src/napari_deeplabcut/_widgets.py +++ b/src/napari_deeplabcut/_widgets.py @@ -4,13 +4,14 @@ from datetime import datetime from functools import partial, cached_property from math import ceil, log10 +import matplotlib.style as mplstyle +import napari import pandas as pd from pathlib import Path from types import MethodType from typing import Optional, Sequence, Union from matplotlib.backends.backend_qtagg import FigureCanvas -from matplotlib.figure import Figure import numpy as np from napari._qt.widgets.qt_welcome import QtWelcomeLabel @@ -305,9 +306,10 @@ def __init__(self, napari_viewer, parent=None): super().__init__(parent=parent) self.viewer = napari_viewer - self.figure = Figure() - self.canvas = FigureCanvas(self.figure) - self.ax = self.figure.add_subplot(111) + with mplstyle.context(self.mpl_style_sheet_path): + self.canvas = FigureCanvas() + self.canvas.figure.set_layout_engine("constrained") + self.ax = self.canvas.figure.subplots() self.vline = self.ax.axvline(0, 0, 1, color="k", linestyle="--") self.ax.set_xlabel("Frame") self.ax.set_ylabel("Y position") @@ -341,56 +343,92 @@ def __init__(self, napari_viewer, parent=None): self.viewer.dims.events.current_step.connect(self.update_plot_range) # Run update plot range once to initialize the plot + self._n = 0 self.update_plot_range( Event(type_name="", value=[self.viewer.dims.current_step[0]]) ) - def set_window(self, value): - self._window = value - self.slider_value.setText(str(value)) - self.update_plot_range( - Event(type_name="", value=[self.viewer.dims.current_step[0]]) - ) + self.viewer.layers.events.inserted.connect(self._load_dataframe) + self._lines = {} - def update_plot_range(self, event): - value = event.value[0] - if self.df is None: - points_layer = None - for layer in self.viewer.layers: - if isinstance(layer, Points): - points_layer = layer - break + def _napari_theme_has_light_bg(self) -> bool: + """ + Does this theme have a light background? - if points_layer is None: - return + Returns + ------- + bool + True if theme's background colour has hsl lighter than 50%, False if darker. + """ + theme = napari.utils.theme.get_theme(self.viewer.theme, as_dict=False) + _, _, bg_lightness = theme.background.as_hsl_tuple() + return bg_lightness > 0.5 - self.df = _form_df( - points_layer.data, - { - "metadata": points_layer.metadata, - "properties": points_layer.properties, - }, - ) + @property + def mpl_style_sheet_path(self) -> Path: + """ + Path to the set Matplotlib style sheet. + """ + if self._napari_theme_has_light_bg(): + return Path(__file__).parent / "styles" / "light.mplstyle" + else: + return Path(__file__).parent / "styles" / "dark.mplstyle" + + def _load_dataframe(self): + points_layer = None + for layer in self.viewer.layers: + if isinstance(layer, Points): + points_layer = layer + break - # Find the bodyparts names - bodyparts = self.df.columns.get_level_values("bodyparts").unique() - # Get only the body parts that contain the word limb in them - limb_bodyparts = [limb for limb in bodyparts if "limb" in limb.lower()] + if points_layer is None: + return + + self.viewer.window.add_dock_widget(self, name="Trajectory plot", area="right") + self.hide() + + self.df = _form_df( + points_layer.data, + { + "metadata": points_layer.metadata, + "properties": points_layer.properties, + }, + ) + for keypoint in self.df.columns.get_level_values("bodyparts").unique(): + y = self.df.xs((keypoint, "y"), axis=1, level=["bodyparts", "coords"]) + x = np.arange(len(y)) + color = points_layer.metadata["face_color_cycles"]["label"][keypoint] + (line,) = self.ax.plot(x, y, color=color, label=keypoint) + self._lines[keypoint] = line + + self._refresh_canvas(value=self._n) - for limb in limb_bodyparts: - y = self.df.xs((limb, "y"), axis=1, level=["bodyparts", "coords"]) - x = np.arange(len(y)) - # color by limb colormap using point layer metadata - color = points_layer.metadata["face_color_cycles"]["label"][limb] - self.ax.plot(x, y, color=color, label=limb) + def _toggle_line_visibility(self, keypoint): + artist = self._lines[keypoint] + artist.set_visible(not artist.get_visible()) + self._refresh_canvas(value=self._n) + def _refresh_canvas(self, value): start = max(0, value - self._window // 2) end = min(value + self._window // 2, len(self.df)) self.ax.set_xlim(start, end) self.vline.set_xdata(value) + self.canvas.draw() - self.canvas.draw_idle() + def set_window(self, value): + self._window = value + self.slider_value.setText(str(value)) + self.update_plot_range(Event(type_name="", value=[self._n])) + + def update_plot_range(self, event): + value = event.value[0] + self._n = value + + if self.df is None: + return + + self._refresh_canvas(value) class KeypointControls(QWidget): @@ -457,12 +495,12 @@ def __init__(self, napari_viewer): self._trails = None matplotlib_label = QLabel("Show matplotlib canvas") + self._matplotlib_canvas = KeypointMatplotlibCanvas(self.viewer) self._matplotlib_cb = QCheckBox() self._matplotlib_cb.setToolTip("toggle matplotlib canvas visibility") + self._matplotlib_cb.stateChanged.connect(self._show_matplotlib_canvas) self._matplotlib_cb.setChecked(False) self._matplotlib_cb.setEnabled(False) - self._matplotlib_cb.stateChanged.connect(self._show_matplotlib_canvas) - self._matplotlib_canvas = None self._view_scheme_cb = QCheckBox("Show color scheme", parent=self) hlayout.addWidget(self._matplotlib_cb) @@ -479,6 +517,11 @@ def __init__(self, napari_viewer): self._color_scheme_display = self._form_color_scheme_display(self.viewer) self._view_scheme_cb.toggled.connect(self._show_color_scheme) self._view_scheme_cb.toggle() + self._display.added.connect( + lambda w: w.part_label.clicked.connect( + self._matplotlib_canvas._toggle_line_visibility + ), + ) # Substitute default menu action with custom one for action in self.viewer.window.file_menu.actions()[::-1]: @@ -505,9 +548,6 @@ def __init__(self, napari_viewer): QTimer.singleShot(10, self.start_tutorial) self.settings.setValue("first_launch", False) - matplotlib_widget = KeypointMatplotlibCanvas(self.viewer) - matplotlib_widget.setVisible(False) - @cached_property def settings(self): return QSettings() @@ -544,13 +584,9 @@ def _show_trails(self, state): def _show_matplotlib_canvas(self, state): if state == Qt.Checked: - self._canvas = KeypointMatplotlibCanvas(self.viewer) - self.viewer.window.add_dock_widget( - self._canvas, name="Trajectory plot", area="bottom" - ) - self._canvas.show() + self._matplotlib_canvas.show() else: - self._canvas.close() + self._matplotlib_canvas.hide() def _form_video_action_menu(self): group_box = QGroupBox("Video") @@ -1192,6 +1228,8 @@ def part_name(self, part_name: str): class ColorSchemeDisplay(QScrollArea): + added = Signal(object) + def __init__(self, parent): super().__init__(parent) @@ -1235,9 +1273,9 @@ def _build(self): def add_entry(self, name, color): self.scheme_dict.update({name: color}) - self._layout.addWidget( - LabelPair(color, name, self), alignment=Qt.AlignmentFlag.AlignLeft - ) + widget = LabelPair(color, name, self) + self._layout.addWidget(widget, alignment=Qt.AlignmentFlag.AlignLeft) + self.added.emit(widget) def reset(self): self.scheme_dict = {} diff --git a/src/napari_deeplabcut/styles/dark.mplstyle b/src/napari_deeplabcut/styles/dark.mplstyle new file mode 100644 index 0000000..11a8ce6 --- /dev/null +++ b/src/napari_deeplabcut/styles/dark.mplstyle @@ -0,0 +1,12 @@ +# Dark-theme napari colour scheme for matplotlib plots + +# text (very light grey - almost white): #f0f1f2 +# foreground (mid grey): #414851 +# background (dark blue-gray): #262930 + +figure.facecolor : none +axes.labelcolor : f0f1f2 +axes.facecolor : none +axes.edgecolor : 414851 +xtick.color : f0f1f2 +ytick.color : f0f1f2 \ No newline at end of file diff --git a/src/napari_deeplabcut/styles/light.mplstyle b/src/napari_deeplabcut/styles/light.mplstyle new file mode 100644 index 0000000..0484b22 --- /dev/null +++ b/src/napari_deeplabcut/styles/light.mplstyle @@ -0,0 +1,12 @@ +# Light-theme napari colour scheme for matplotlib plots + +# text (very dark grey - almost black): #3b3a39 +# foreground (mid grey): #d6d0ce +# background (brownish beige): #efebe9 + +figure.facecolor : none +axes.labelcolor : 3b3a39 +axes.facecolor : none +axes.edgecolor : d6d0ce +xtick.color : 3b3a39 +ytick.color : 3b3a39 \ No newline at end of file From dd7eb65fecb4837d6e09a5359bb9316a7952efc6 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Wed, 30 Aug 2023 15:56:45 +0200 Subject: [PATCH 4/8] Add double click callback to toggle all lines at once --- src/napari_deeplabcut/_widgets.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/napari_deeplabcut/_widgets.py b/src/napari_deeplabcut/_widgets.py index edfa3be..6cbac1a 100644 --- a/src/napari_deeplabcut/_widgets.py +++ b/src/napari_deeplabcut/_widgets.py @@ -310,6 +310,7 @@ def __init__(self, napari_viewer, parent=None): self.canvas = FigureCanvas() self.canvas.figure.set_layout_engine("constrained") self.ax = self.canvas.figure.subplots() + self.canvas.mpl_connect("button_press_event", self.on_doubleclick) self.vline = self.ax.axvline(0, 0, 1, color="k", linestyle="--") self.ax.set_xlabel("Frame") self.ax.set_ylabel("Y position") @@ -351,6 +352,13 @@ def __init__(self, napari_viewer, parent=None): self.viewer.layers.events.inserted.connect(self._load_dataframe) self._lines = {} + def on_doubleclick(self, event): + if event.dblclick: + show = list(self._lines.values())[0].get_visible() + for l in self._lines.values(): + l.set_visible(not show) + self._refresh_canvas(value=self._n) + def _napari_theme_has_light_bg(self) -> bool: """ Does this theme have a light background? From c7e6365a34532179833fdf997dadca8337220f47 Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Thu, 31 Aug 2023 09:57:37 +0200 Subject: [PATCH 5/8] Minor fixes for multi-animal data --- src/napari_deeplabcut/_widgets.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/napari_deeplabcut/_widgets.py b/src/napari_deeplabcut/_widgets.py index 6cbac1a..4db38d8 100644 --- a/src/napari_deeplabcut/_widgets.py +++ b/src/napari_deeplabcut/_widgets.py @@ -354,9 +354,10 @@ def __init__(self, napari_viewer, parent=None): def on_doubleclick(self, event): if event.dblclick: - show = list(self._lines.values())[0].get_visible() - for l in self._lines.values(): - l.set_visible(not show) + show = list(self._lines.values())[0][0].get_visible() + for lines in self._lines.values(): + for l in lines: + l.set_visible(not show) self._refresh_canvas(value=self._n) def _napari_theme_has_light_bg(self) -> bool: @@ -406,14 +407,14 @@ def _load_dataframe(self): y = self.df.xs((keypoint, "y"), axis=1, level=["bodyparts", "coords"]) x = np.arange(len(y)) color = points_layer.metadata["face_color_cycles"]["label"][keypoint] - (line,) = self.ax.plot(x, y, color=color, label=keypoint) - self._lines[keypoint] = line + lines = self.ax.plot(x, y, color=color, label=keypoint) + self._lines[keypoint] = lines self._refresh_canvas(value=self._n) def _toggle_line_visibility(self, keypoint): - artist = self._lines[keypoint] - artist.set_visible(not artist.get_visible()) + for artist in self._lines[keypoint]: + artist.set_visible(not artist.get_visible()) self._refresh_canvas(value=self._n) def _refresh_canvas(self, value): From 6d36e147721acc880dde0a8b1ff740f0c5ab705a Mon Sep 17 00:00:00 2001 From: Jessy Lauer <30733203+jeylau@users.noreply.github.com> Date: Thu, 14 Sep 2023 16:12:40 +0200 Subject: [PATCH 6/8] Add toolbar to matplotlib widget --- src/napari_deeplabcut/_widgets.py | 73 +++++++++++++++++- src/napari_deeplabcut/assets/black/Back.png | Bin 0 -> 6919 bytes .../assets/black/Customize.png | Bin 0 -> 7245 bytes .../assets/black/Forward.png | Bin 0 -> 6813 bytes src/napari_deeplabcut/assets/black/Home.png | Bin 0 -> 7414 bytes src/napari_deeplabcut/assets/black/Pan.png | Bin 0 -> 7315 bytes .../assets/black/Pan_checked.png | Bin 0 -> 12383 bytes src/napari_deeplabcut/assets/black/Save.png | Bin 0 -> 7726 bytes .../assets/black/Subplots.png | Bin 0 -> 7042 bytes src/napari_deeplabcut/assets/black/Zoom.png | Bin 0 -> 8367 bytes .../assets/black/Zoom_checked.png | Bin 0 -> 12884 bytes src/napari_deeplabcut/assets/white/Back.png | Bin 0 -> 6680 bytes .../assets/white/Customize.png | Bin 0 -> 6951 bytes .../assets/white/Forward.png | Bin 0 -> 6535 bytes src/napari_deeplabcut/assets/white/Home.png | Bin 0 -> 7143 bytes src/napari_deeplabcut/assets/white/Pan.png | Bin 0 -> 7114 bytes .../assets/white/Pan_checked.png | Bin 0 -> 11810 bytes src/napari_deeplabcut/assets/white/Save.png | Bin 0 -> 7381 bytes .../assets/white/Subplots.png | Bin 0 -> 6739 bytes src/napari_deeplabcut/assets/white/Zoom.png | Bin 0 -> 8064 bytes .../assets/white/Zoom_checked.png | Bin 0 -> 12372 bytes 21 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 src/napari_deeplabcut/assets/black/Back.png create mode 100644 src/napari_deeplabcut/assets/black/Customize.png create mode 100644 src/napari_deeplabcut/assets/black/Forward.png create mode 100644 src/napari_deeplabcut/assets/black/Home.png create mode 100644 src/napari_deeplabcut/assets/black/Pan.png create mode 100644 src/napari_deeplabcut/assets/black/Pan_checked.png create mode 100644 src/napari_deeplabcut/assets/black/Save.png create mode 100644 src/napari_deeplabcut/assets/black/Subplots.png create mode 100644 src/napari_deeplabcut/assets/black/Zoom.png create mode 100644 src/napari_deeplabcut/assets/black/Zoom_checked.png create mode 100644 src/napari_deeplabcut/assets/white/Back.png create mode 100644 src/napari_deeplabcut/assets/white/Customize.png create mode 100644 src/napari_deeplabcut/assets/white/Forward.png create mode 100644 src/napari_deeplabcut/assets/white/Home.png create mode 100644 src/napari_deeplabcut/assets/white/Pan.png create mode 100644 src/napari_deeplabcut/assets/white/Pan_checked.png create mode 100644 src/napari_deeplabcut/assets/white/Save.png create mode 100644 src/napari_deeplabcut/assets/white/Subplots.png create mode 100644 src/napari_deeplabcut/assets/white/Zoom.png create mode 100644 src/napari_deeplabcut/assets/white/Zoom_checked.png diff --git a/src/napari_deeplabcut/_widgets.py b/src/napari_deeplabcut/_widgets.py index 4db38d8..7fb15da 100644 --- a/src/napari_deeplabcut/_widgets.py +++ b/src/napari_deeplabcut/_widgets.py @@ -11,7 +11,7 @@ from types import MethodType from typing import Optional, Sequence, Union -from matplotlib.backends.backend_qtagg import FigureCanvas +from matplotlib.backends.backend_qtagg import FigureCanvas, NavigationToolbar2QT import numpy as np from napari._qt.widgets.qt_welcome import QtWelcomeLabel @@ -296,6 +296,40 @@ def on_close(self, event, widget): event.accept() +# Class taken from https://github.com/matplotlib/napari-matplotlib/blob/53aa5ec95c1f3901e21dedce8347d3f95efe1f79/src/napari_matplotlib/base.py#L309 +class NapariNavigationToolbar(NavigationToolbar2QT): + """Custom Toolbar style for Napari.""" + + def __init__(self, *args, **kwargs): # type: ignore[no-untyped-def] + super().__init__(*args, **kwargs) + self.setIconSize(QSize(28, 28)) + + def _update_buttons_checked(self) -> None: + """Update toggle tool icons when selected/unselected.""" + super()._update_buttons_checked() + icon_dir = self.parentWidget()._get_path_to_icon() + + # changes pan/zoom icons depending on state (checked or not) + if "pan" in self._actions: + if self._actions["pan"].isChecked(): + self._actions["pan"].setIcon( + QIcon(os.path.join(icon_dir, "Pan_checked.png")) + ) + else: + self._actions["pan"].setIcon( + QIcon(os.path.join(icon_dir, "Pan.png")) + ) + if "zoom" in self._actions: + if self._actions["zoom"].isChecked(): + self._actions["zoom"].setIcon( + QIcon(os.path.join(icon_dir, "Zoom_checked.png")) + ) + else: + self._actions["zoom"].setIcon( + QIcon(os.path.join(icon_dir, "Zoom.png")) + ) + + class KeypointMatplotlibCanvas(QWidget): """ Class about matplotlib canvas in which I will draw the keypoints over a range of frames @@ -310,6 +344,8 @@ def __init__(self, napari_viewer, parent=None): self.canvas = FigureCanvas() self.canvas.figure.set_layout_engine("constrained") self.ax = self.canvas.figure.subplots() + self.toolbar = NapariNavigationToolbar(self.canvas, parent=self) + self._replace_toolbar_icons() self.canvas.mpl_connect("button_press_event", self.on_doubleclick) self.vline = self.ax.axvline(0, 0, 1, color="k", linestyle="--") self.ax.set_xlabel("Frame") @@ -328,6 +364,7 @@ def __init__(self, napari_viewer, parent=None): layout = QVBoxLayout() layout.addWidget(self.canvas) + layout.addWidget(self.toolbar) layout2 = QHBoxLayout() layout2.addWidget(self.slider) layout2.addWidget(self.slider_value) @@ -383,6 +420,40 @@ def mpl_style_sheet_path(self) -> Path: else: return Path(__file__).parent / "styles" / "dark.mplstyle" + def _get_path_to_icon(self) -> Path: + """ + Get the icons directory (which is theme-dependent). + + Icons modified from + https://github.com/matplotlib/matplotlib/tree/main/lib/matplotlib/mpl-data/images + """ + icon_root = Path(__file__).parent / "assets" + if self._napari_theme_has_light_bg(): + return icon_root / "black" + else: + return icon_root / "white" + + def _replace_toolbar_icons(self) -> None: + """ + Modifies toolbar icons to match the napari theme, and add some tooltips. + """ + icon_dir = self._get_path_to_icon() + for action in self.toolbar.actions(): + text = action.text() + if text == "Pan": + action.setToolTip( + "Pan/Zoom: Left button pans; Right button zooms; " + "Click once to activate; Click again to deactivate" + ) + if text == "Zoom": + action.setToolTip( + "Zoom to rectangle; Click once to activate; " + "Click again to deactivate" + ) + if len(text) > 0: # i.e. not a separator item + icon_path = os.path.join(icon_dir, text + ".png") + action.setIcon(QIcon(icon_path)) + def _load_dataframe(self): points_layer = None for layer in self.viewer.layers: diff --git a/src/napari_deeplabcut/assets/black/Back.png b/src/napari_deeplabcut/assets/black/Back.png new file mode 100644 index 0000000000000000000000000000000000000000..d7c65b431c3953d9fd43aca3de4d2ccfc215cc26 GIT binary patch literal 6919 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 ZU+wf1D;M(=`Z556Ioi3}Ua;Pl^gp#x^-BN% literal 0 HcmV?d00001 diff --git a/src/napari_deeplabcut/assets/black/Customize.png b/src/napari_deeplabcut/assets/black/Customize.png new file mode 100644 index 0000000000000000000000000000000000000000..9f56bb6d80f340e6adaf765fb555d45e6dfef0c6 GIT binary patch literal 7245 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 literal 0 HcmV?d00001 diff --git a/src/napari_deeplabcut/assets/black/Forward.png b/src/napari_deeplabcut/assets/black/Forward.png new file mode 100644 index 0000000000000000000000000000000000000000..52770f6f972daa1e5035c9c3a3b37dd71d2a2d0b GIT binary patch literal 6813 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 literal 0 HcmV?d00001 diff --git a/src/napari_deeplabcut/assets/black/Home.png b/src/napari_deeplabcut/assets/black/Home.png new file mode 100644 index 0000000000000000000000000000000000000000..9e527bfd1bd72a2ea8806b29efd33ed57181393d GIT binary patch literal 7414 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�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 literal 0 HcmV?d00001 diff --git a/src/napari_deeplabcut/assets/black/Zoom_checked.png b/src/napari_deeplabcut/assets/black/Zoom_checked.png new file mode 100644 index 0000000000000000000000000000000000000000..ad769e66c2d5f1cb261e515df45d2dadd57c3748 GIT binary patch literal 12884 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 literal 0 HcmV?d00001 diff --git a/src/napari_deeplabcut/assets/white/Customize.png b/src/napari_deeplabcut/assets/white/Customize.png new file mode 100644 index 0000000000000000000000000000000000000000..dd93590cac58eea632a760d9ff921e75d4a337e8 GIT binary patch literal 6951 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 OZDqFCwA9!$_J05xXheYk literal 0 HcmV?d00001 diff --git a/src/napari_deeplabcut/assets/white/Forward.png b/src/napari_deeplabcut/assets/white/Forward.png new file mode 100644 index 0000000000000000000000000000000000000000..7340a07be755d5c6515fa10c8474abb5ab1003d0 GIT binary patch literal 6535 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 WlSdR2hfl1usHx#0gIqnQ3;zLBfZ&4w literal 0 HcmV?d00001 diff --git a/src/napari_deeplabcut/assets/white/Pan.png b/src/napari_deeplabcut/assets/white/Pan.png new file mode 100644 index 0000000000000000000000000000000000000000..df0a8ed5dac3edb2a34f85d9f0bd89c326a74146 GIT binary patch literal 7114 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 literal 0 HcmV?d00001 diff --git a/src/napari_deeplabcut/assets/white/Pan_checked.png b/src/napari_deeplabcut/assets/white/Pan_checked.png new file mode 100644 index 0000000000000000000000000000000000000000..0c419ee6112cd37a26f4076962d2780d52d03f21 GIT binary patch literal 11810 zcmeHtXH=8h)^6xUP&!Brp_f1iJ@nq2ARTE55IP|=Dbl4^0g)~!MQI{U5KxLBy$dM4 zNH3yvxzWA%IeU-${W;^_@88K7Z?dx1oX?!|S7#IMF7zOo(LeqAL#%9_|HDeL1r@YrA1xW z#oY@R?nKcIZ!#SpU9>c*triYcl=40+A?#kf`FMtj1U_|rwJ&zvSWgg zxHx*_d~Gf&pCKTz_Yf{iTQMBf+OkkHj5jM&$v2rMr&m;c;nn7FXHQP`!P_?UWHoKT zl@#3ALv?Q@&tm>OzCBOy1kn1^bcMmA>06_$Q}BB8x3G56kAdv`y?WcnKf6f>r}R6M zS|8%l$lkQ+v2kmiz1)y`i7)xVOE{Mz$~f)Z<09T;TAl z;oNMM8?n!HhfD4mN)Deg(h|M#5h4LwWy_^%t$s5+0v4Gq^!!j@~@YR1J{ zc45h#H>2r3Lj}HdH7nqLw>zA-*&!vqn0u9%eRWaEjXKXsCMRzxP)T$QvzA+Uz*Ch^s9O0- zv*cCHRhx414;-RPqSqS{sUKSK-SUU=OhN8Uw-dfAhnAVKxVnqY18jvxPNiYB*RwVQ#UKpU5ZP_T^OG z<%`dPQu6cC{J_onMuqbP$g(0_%&1L{$s-m=F!FJj2w)x3d%BZ zJ%b#(6fcmkNfFKWBO{jm>M=_ss6~!>(8HsZ*};W`$3JyEEOud? zUPmp3dwI1>^OF}8SJKU`SFr^cS6f)2=jI#qT8!FX?td0=G$d{$4m_t0tn4#}a-<5J z(Yt9YcKD60^-GLfwPk2r_7(@#-@9X|Y|=Y5Kn5P;oT=Rj;61;-#XKl?W)qpGX*1eK zdE-Q{ahcsw{I6*a&YA)c|ytF2c$s_%eqpXrt%eDzcx0!Go`BeV{)n?lB0Q4?d9OD zf`mch8!op223*KA5DssZwTl7C++5Gm##+@zjzFVKq3A(|pfLkL?4bAlg4HuudnU8` z8omJ2o!+X!ZuYX1?t~t@)_4v^A6~SSXj{IEC03fFjUBG5&?>2`jlE7vF0KRh7rt5Y3yjbE zm>>Jv21O^KHd~hN0)k1%Vv=<}n4AD9xsK)c(hjoedu_S6Til>!vgM9})}c$d1)Mxv z>#c?hsU!i%Or~i)ldkMshM}bRU1~!NpkYw={A|-y#$CU;bhM3Zc2=J>5Yo0Xaj!oI z8vmr#Vua%>xi%dh1t?2=(y#WFrNogYr|4~HN1t=1(9u&%l@=NaBpE_Ytdd#mvgRpw zOA6}%clB4J8Uo6+!dUha!rt99tnFpv5mbU@7Q^bgD;w=3dK2ymamS+LwtQh=q>>fhW1=Dm5W5Oh<@?c!?YM?#lE8gy}M` zexG}Dxh|9jQ1)n8lXSR!2vX3z)`si}n*l7f2C=u({m%Wk&>eA?Ew<1w&Y z$5~Xmzj*8^4Y4a16q+=*>LZYc+~xK6o|HJrB_ai>vd#$-Q2_R`jh{Oga6dknw!L6W zs9Rqmg>vcO7MI>cHLwfIUM)=-tuFz#RQhDyPUM^Lrm#VAi>^{Y+D3 zv*k#*H=50tP;)aloW2ZEC={u3sq`sry&ol6=vghjs?v~xBW7@^Z~TamJVLOE-CVeZ zQqcdFc$Br(rd@OO)cnXc6~EGJ-Z%2ZPe0Ro3&=mD+a+uK$yD-f>KzBmh#4;fuA8>z z4eQa6-b42(B>}CMXXdhm0NU0{M<#OBFpoVvp;YmkZtW8ege1JoKaSJmASJIiGMkV$ z7#6Y2Zc#*vj1PK-J3g{&Zp!{TPwzSC*g95n&b`=jEu{Inzl$utFJuJ!igd8-hXzC+6uq-HR z2`@iSI%xol-#^8joxxIv40c|n0QtDKsUoz1feO59(dzs4)=trXAI9ggu; z_*{$q()?k6%H)&pNo(wm*;FgIN5yUs*D{x|%n)FNdA)cD%}1J#_b7vk$?%ock4!${ zJPo_i_0FsZx?FuA-6eA4=QmsrFXL4O*%=5?sIX}x-^-D!di=7tnm|EM=$NTP3;t9C`E?`h8Kg;>GZnP`u zhVGDfF2nN@$`#Vn6=qr$>+%{mtlWSF&otq+wZ?~T&Pc^+P(cRVS5iLjhE=U3oeR}tk_03CMZYA2x|^!ovK#6!DNg&v=5GrD}byEg~A0W4qJ1eA8k z3!LN9Hh(DJlaaBz<%$QbX9h-*j?h|b6DKUcPym$>XmAAtd5RFfd(K^=L}?XbOhi~^ zgm`ZAF#cR{(QSxQHMTSeNiF|u1z*4@rzDQIG097zPhizPw3uq$s+rp7T?*4!a@>b) z{RRzraB~p@>siP4nMPX3cl*_Iq4}Y-j#DA;Vd@)HNvtpSvwKeSkyRBu^7tj8dRV2J zP90oMZ;OTdc}FGSQzX+>20Ao=g0b$4dubK=Fz5cxvCnC&N$ODn9@}^ysXr^RvZk!d z3xwxof7kCUGiDYji7k^Q3XOjrgjYanA9v9{h}%Ro{dCApCA%6H>rqg=U2m{M4t|CAC?t7PGWx4mql`gIDLxIo{^$JzqLB-$fc$oe6->m z|0xdcEfV08m6OcW2b#xsw+yMt0NlibrBW1TgFBQl#xd{vVySRTT6AP1{YD6CS68|2 zDgU$qX;=G`U>kn*uh3k3KP7MIX}G%`gas!(>EkG*JI$sTx|tJu^uC5cL^;n4zrA}i z!X;L!4^jl_+opTDh07Msu0X>w3{SlSkuvKTLv4l%Dk$BV1uzhGol~FDTM~`v_EF!a z&IWHWBgjlar5USiZEPdlX=uKF8d9+;NX*XoF2HNtM9*oi1qT}Am{Rpu3`?@ki>|Y+zcA^9-3do{w279Xb^*p>_%YcPKKj4LE#2EGona`Bm36pD^ zW5UCYZoIRF-~&Cii6&CK%Lihc3A5~(rVHV1E3!xrs;10OVAiCIq4o?{1XTB?7ZX=5 zMfa7Wx`Z~9@jRRiOO5Fa6jMza^OV2#;U+6FJ9CTmoz7BLnd!z#!_ELb_QTopiAswT z)ew%9J0Bvjhy~5K4$@Y|C>8_3XP+KcL{ukqFMPeF{2qi_O~L(`+ds*)wif36DRmXA zTd7Lbmp(ivayY5WNb{THJZZ9~NsBdzL#>~92$8v6$+=RF$(plo|}a%$JKL~m?nKl6Oytf>MT z=CZ5$6{4pc@gSY}S?m#dyeR760fB&a4Fg5>k|ZaX^>yo#{=1Z0eYk{e9OF$SXPfg+ zG;*l@{NxuBpT)9pj~A@k#<5fMNMI9_Os8CqE_(<@p(rRif=)XdV-WT1o}234J3E=! zjp1yo7P7GvelS>}75*E}lhH7W-8=asKvi5#I6|M!*4nv0HjGw)esUKZSnj^!uvtD4 zshT_oXxlw*(%7z@yd>um30dhe=66YF-kaaHZEmZ{@IC5K%buZJw=qk+n2iIJ+@9>+JwQK=uYsbX_K8qs+Y|}Vo|+< zEC*3c{!d;YzOsY8vkUp9IkMxEI1DDZP4$LJ2+$--A~B0CNL8=Q3E{L2kwHZ&wTz<7 z2e}8{g@oO8aHG0uBqt7^J~twk2x>e}yG#78Vsw55h)c~!6+4gQpYY`}h!9`**$*iU zd}rq7+7+}7W-R%lHK-oS%RFqY&&suHKxwg+Z*U+QwD#rIW3p~)8RqCa?*#l*J}zAt zre=RMZnHZhi;+6}5(?}J%u?y3O3~!y0A&fzD9$HQVL3p_=R;*dlKN*cEl)}JO)HG! zUmljVB~+5kdMiJv5X-Tmz&f}=*~@&t!Fe}5ZzfwEyd6^0VqS{Zy?(D+2!8{yTLeur zs&w2V^dWT%c0?iaeXSPrd&*B9gr;-11O~BBm{kr{%CmxR!yYtNSm}mFqzFY%?*iPp znafmG*LH`}(jkS3IG@VIjK~b(>;X%C!?@Wb#bY7ly{mY#r@Cli1reelPBTZjtM9jq zij5T2XLrN25A~NHhws+Cylqg({Y0!yicTr1eIg~B-^CwCo<}XrSf8OTc2k9=*`Z%)KUnChno^BEp&wVy1zF4rO^QubXlf%BM6^j2a&F;UGSN%T zG*FX@5W93ejP1pyyifK3*b!v)qX$RYZYg>8OIHs2wOiNv2Ue|*bx&sDzDZ49XZSES z`$drl?hNPCsoB#bvZ}t{-sc6+ED>y|vg|-oeP?TYn_^s2Id5cJCj9^rXwPoZMc?Z> zN+?$h#kJQ`Pqo02n;OjRLRyF(+{%kP3>?hXqn;@mTEKM6YReOm`QmeMF`!YJ558p1e*z z7j-PiB#)xb&)uR`vQ<$g(FqofYt4I02YGF|MU{SF*urQU!TC}PfR#p6ChRCjcRup` zreuQGmYOKAPl5c!_=66nC$#--3QEq;osy43!5r8Us4OqnkLk8elBrZMBcB^sxtPVYLFZ~Jn^%d{^KGmL)x4RZLRsxly>&ZG#s zioe<5QI_s5@LFml_GWa=C7}8pTZkdg@Yts5?VBp0Rm`_*igw9Mc7m}(c@*;djB+)V zCVGdn z0yS-;Q4LuV!?O{c0U7R*pJ(RzbC)+^4G*J4X$f`NFL#h1Ca)3_`oG|EiGSjtje9Fz zR8!_yR8y)IW&;9x_J6XG9VRxoUS>5Wp3ds*xSH&t(vLjjh0P$jozV)uKiOwtERnCP z+?#m<|auYMvKVnR6Fi9kCwaNrb#H<$l{snW=I*e zAob_ZoqVQ!`Zbyt1cgN{69rb8LxRkF}7J%lWBaU^afJBi!QdwUQfKnpp1BW-L;D zx>=o*`g;EhPw5#ektLW)gpuid=(NB0XM?v%fbk-S@9)`Z531tBDP>}YIA1N*9X3<$ zZi0$bGv6j>mkCPr1ph#)oVMMq@9QuZjq7t=ef+~QyoBZn?0$5%Pn+hpqoVAMn4soc zraE1q_YVU;cx!UA2Qg7;>#{H1<=@g=K*D@J#V;(zi>?Y1rlZ>y>ti#_PrdmvC>$)E zszB$(Ke;3Av!76B!i4W_1>5akD>tk*Lz1~^G{R|L33ZP83?ziH&8YiE)C0P`8u`s? zXg^Y@!#Hf~s@PIVhK;2wk|VG+abH!{>15gwJsScLSUCVacV;-ft>(0BV!>H&w9jZd zUvQ{B!AryKVyOnVo_pD>7}cIlGiY0HotE2;txO0Z&&!hrZ$(`?GF3ll?2Ihk{VY)+ zQ;XgUU-iFy{APTXb|p!uJ$}YeqW^7DNnuVwpR)!3+Y)CA#jQsjS{3sI9%V1o%6rnA z)XL}GOqk9Ud61M_dj+gTWgRVg8JBMA_1+C!Cf}W9kS8={aqnE%a!r@43*%ruu8-)U z+{oPt{RJ4q$k7CIfw{6IIi}fVT-Mep8>=T$w;Y#J1q@~rrPIyCIsG)EJ!DgHQ5}lQ*82_R)G?nFg5TNV11S1MKZ4upz1?;$U%85+ zCeuO=RmE&FCCR?px2vcJr`(15H%Ov1FRRi>na`Oxb;R(fXnROTeTJ#ogNJ?8Z5Bxs zO4Ar~aY{%`-Cl$EQEBZpZMqZEPZv2EebQKR1H%8WQwo7^XS@!63z8jja5W)OrQpCQY> z(8K@U*BQr2OI{6H{*1$lMg}#!?N9y)oILmZ8K5}Hp^!)CLqB^(8OO)(YxidR+cF1_ znQ<7lN&7|{Bbn@;-)^gX>pQk`IgB&y`Tap&+5+=nfh5DO)+V3h_XV-BtVeEsADQ8{ zwfCLWD_qg{c{Lp(9@c`Cc`A@To@;Pdv*}D@xMYqLm!Zb{;EfjqXmMw=-C)(%^lkUj zSmIjiXjD~>lG)CD(1fZ}tYQR1f&_#Wl)K+94?38@F7A{&{55QgEy`ZziHig>84+r;i5<}#ZcoxkkESb%k~T0@F32I7KD2Z`U-)MHQs*So|t>v z!gEb^*VF7;kb~`tvtm+Xa8qui=Ck1jr{BR1KW0<(E;+Gy^X|a*WupY|>3M6G)jGt= z*QD|Y#ZqmhrbyYX3!hxq)%j@eUUqKu{1$kb_948`UAQXG!M+5d5s>r=(06VqgwV}_KFZtzwGsySrZ>pd5D*PTMSwruneg+ z-LYwoFzeHgEsbT1t1xIw@iAL!?KZ2NFx}3-j4EnvNLz;ul6Tcc;--~TFyi{%zWd<&iIN$PYc5MDtD{JLTB{Gw%x!e++#N!+G#hPc^m=1&>}7?D7)IxI2AG8;#EQ$4*|(% z?02G#jZ?C^ETJSm^+7m{jM(-nAMc&``{_A)T<0UdpWtvrqhcx;@9klZR!@+aBUDoz zZJ51>n}99c!wwy=`I7>Z)pbsk#HH1iKq@l$5RR6 zgjBzeLKxoHHL}0&VlN2?$;lE+`@=8*ZV0q3(BI9~-5cgF1Nw~%!?b^O3xa^ZP0%hf zAX6QEpppj)0TdAs5rBYI{E@y;kSsA!8U=TN-BDKk69V&12IPcBd%^?-{rvm{{DcKO zP>zB^l9G~w5U3y&3dUG~y#w6Qw*FvuZ?<0$e_$vhyzNm)Pc+iQ9rz2=*3QEREdv5! z#({t3=jN%S^DlUJ?>||<@FD1L>nSKC01;aNdqIRN!VP2UjfpDskC18_I{N?e_(g#u(#`X? z7l!PASfY^*|0e4nx&0dXUC!SV!MOhm_aD}O)&AQUW2K`5Q}(d;`IVlAvJB`~d>Gur z9tns2Zi+b|Y()`JNwB!6Jp?QwVG99EI*38R_HYq9DBND$)&U~=Hz*BvZ?vtuJ>nM> z23!D%!GYRIAfOPqC|JxMY6lh(f!l*6B_KjzgdN=8-qu0f7LGvt4MGov#HiBN_3v5z zf`b2o5*LDqK^(-v5OHw{um}baY-cYn3KkV{uoV^)wu6dFi2a6w+rv~nP;R!E=|sBO zIwAx;-5q}q{30BtpsyhVf(k(X-J|bni*~>`VD15=JKV$1``<%GNH>Hb+V&TpLSn*_ zLZZSVA|g;>ArX;33jd90j6iu~wD=2E2qFNL`0f5{VqlnZFx1-qQYr@EcR!{Ym=X$M zi}pYnd3dc{nd~BAEpZ-B5p4U5k`Q;MeGn@5rhx|Ea8B# z2V)u-(uIT(5@M47MECY^K>OLE5DJc%N-@=7B=ox)AorhS^8C}@&k6C1DF{>uECdBZ zB#fX!Fi{bhhy+ORf4@92ArZKP1RMgEuoJZhi`Zcn7zqhUQLs1!Dk+Rnw4J!5@ITZ2 ze=AQ2Vk9IEgNnc)B7c=9E%SLuK$RE|H$~i>iYji7xBM$a|n0L z4?I82UTuNa0<#4K;M-}bDgWN_0nU_K9$;ETp6X`a004pQuL~=qv#9~oNr2YSQ6X3( zAts~4ZI&PF0syd)8p;YrPV>8_Lhf@As$g~~TwtV#nPin@Vvo6y*__=ZWr*GCor;VI zfx6!jARF7imjY-Q?K&WTClhq%DdxWbH?F#CY}5ABudh#j642yKsaGVfbyng6THA28 zsnv}+B;z@;t~VZHx6fe7T~{pl3kbdsqyOsQcbS^ems_aOv2Edz?e)HO=rd#4JC{OZ ztpf^?oBm=X^QNo0g-eTC4-Sal$Mz60gq+(MV{cEAD8{ULp&X$E%G5n2VYq6`tMYiE zK6b6!u2_uucfWoeHX>o7qR`EeO4YHA$1$9nEUdUhRklgXhEdr)icIH7w;>_Jws|Q& zTAo!g@e!KAz85N0g>DFw z~F4f_h;P>(Goftlmm(}*LzeA)+b$B zHzqNUM6dxBuE!D{VSbT`bqQ1RV!3q158U#KULq!VJIEA2)CU8C&xybk8pbIz5+gTDLC7&qon`vRI&lmKG#b);pgPS%Tyd5t0(_!= i?FQ?G;)T}QTgr4Fmdi3IFi(&G01XvgDx;NhwK^JzEMVR7m2WMN|}p zlAY|zQqiKMA}!ySI_Gq*-}j$$UBB;tXRhmc-{*av`~KYb{dw-^ndd&?Xm2gVzl|RR z0tw-5ES!KhV!iS40#A3Y)#D(LKzy`|2givJ31PAr6j}%w!r9LxL&#Ay3J4T6I_Kq` z`LaRiOPfY5_q#1DgM)4p3Zzw9Mz+<*VVztfMf^Qu;%d7%Ur{f_G-Al}RvZw|DD})wKhnK(RyRHTx=N=>X8PAs*d+hR zcZTfbCE*#F%lUgLEoHg{jeuE)llT?08McmDcYlY>Oxyme=p*LaSLdS$rVAw%F;Trj z8f|(XRtzW3kv}xFjvI_9wjF?}|OSu-6 z45p%Il81Qs9&`kFSo_8nqTD7cf^~acBw~ZWuXw2+ij%js+`rr-0}Gg~U|w_+-T9Qc zYUj>);agrbASLW?2ETl7#L+w>%fW}&!o}Y{yyec?+P59`+aNDmAL35(wLMdZ?)s3k zr4uyz1b2L9wrIM6yV+7^)Jzu9tWi{&;_Me%iP7Y-<^^RJVQX``Oic~SG_wb!I>EXD z;tBU*mG>`<(h7DKSfe(H3x5d=kg((O7{a!SjK#{>cIm$?c%SCW?A^h*`JwATw_j#p zU`y_B4fR>`NoT|zUg?8RL~(-Z3qcuZ-{q6UL}Y0^QbI*_ypU;T>q*TDjmVC9CeP}; z2sxMpt6I6cBiqAiaL{EoeL?fFBhk(d6Yo^_2s2fGOv-zK?<&1~>`lYsxOuvfLOIN% z=@z`GRBB%|WQX+9k!@Y5MQHYU3DrC>!p;pGCdDV(}Zb%(-h`UltVs=(OWV4H_sr2|-yxB!hcf5o;ntf!LRIDGa6QFpAp){XC zs$GjXPc`u|x~;ADIOq(@=SsDlbei3bf{Nx0_SI~ckorWOU8j7xEkpT-K8tG>#Lu>u zeoQ(swpHX|^t7-}ei9Q}Ykx|mNYnA9-8bjXm1XsIWRw+iCanRS)OR4aZmiy}13j+% zGZHQyzRIfECwP>RZooX{vCi-$bPfDl3LF4z#z&BE3&{M>B0Iy4)tb zBC$KuwzqkmV{Dnf7us?0%++`Jwmx~Q7s6R8b9(Y??bXW_M79L2V^$sZ;De0mG!A#) zxkI%`YgxVzk!vGIH1}K1RJt*z9zc`M_a9Z4#t&q5RG%vf6k`Ta9}EZ|l75XiX66+m z#k^8*`|Y^I&E(7{dcSS)i&Tm74qd7-=vV})G&;Jr4y4K6DEBHSG)NLzIll+BTwl#= zKC^i5ImHJ9b?2{*m(`_LNj=@dkPVQQ`Vz$s8n(y_9E=`T?1q zILxvNmUUFUASNmnt`sNe3dU#WIA`A50oOesT zj10}FMmX(($y(K=tT1oNs!1jdRPa3{d>q=2jGs@J=>uBkyts}OTqSc+NBBeV%{(nR zB~8P%5}t`Au9G^a!@85b-S|{H?}nX>d-nRMw7X}RIsa&Pj3ryq;^vl8d?z`ByI)$T z%&4@7F8Wy-sb&dJ6N^|jYjhkL0#j}6?vByoKP5JbdtU~P-03m3dRJLti%T5d>-s3< zX|CwtK~qlgL7rWEt9LiKq&$>0D;7J#KT~SEx7c1_GDN6U1r+O4uS?h#cWrL;iAs(k z3Uqf6S0plegt?+>mJSl&jc2<&N!86ZD{uu@NM^YPI;*NPotZv6mU1iJ zC-xwGpS|0@cl$Y!Cusrrh~_jm3Pe+str=QWF){Sc0ZL~}IjV3jIHd{B=e^rIw1RkW zOikR{ObHdHr&5xqui~aQWH~8Qm3%V{qms59S4*j8mnNN=8R%KPpmf)weYP~w+c zap%Tzz)PgRO^p@o;QG*r`NRoL!sFZJS0?wx_!#KfnEA8X6l=kq|89@en6Ggfwb zn^&+tT&zUK_)F3a*?ZR(_jW2LP3(zskcIB9ye_}LHKR~5SwZ;>WA%t>$6&=_u@hZxU_&n#iT3(q-F}nfaKn_N6#>HQf$p=sTa)TP6o*T8mnUbytaus_!rZeDh6dA}@wXz%rm zJ(L5!hnMBAUdv;g5tbXhc)zx6n?TODx4rP)GHN$Jdw4l>jZ)r|NN*-gVL80vZ53zT z*SHkurv*6Su%6Te&g`b|jrwPnjHRuqAB@GUr!L1h$Q!XIUBi}jq^gt8xfjJ)%HQI8 ztvMZZk(!h}LIkUxJyn&L)#TZTYfRcE&(RFBW4lPjVEA9#Z+Q*!S6lsU&~6zY8dH`3 z;_K+=!{ssxMoVM9pu(|Oc%Aha#%;CunINJ?JfIxf*`8jef#d2F->}2)4b!S+ zQ^lY4T5wJJZjk$HX9DNidkF$(@k->eUS;mz1P)Br_4>3#Ra4g(^fdCr=SR1{u2hfd zJ6DLgK#lq0%GFe@-rcWB)M?H&>b> z;&inG_vT&5gM;W}6OYcRPntxbc_MdyhP`hWVTR>5ey-&%I6f5Q{!F_njHq~w!+W=u zyx&Xr+10YT>TPWcL%I( zn=B_d>*2HfviZ2G&tJ3@4C-6w&ku~xq4;PuYSDkOIO2FY+s|E@m6l}Sa}=!@8Gor5Ayhpgl`}aIG$#1?ua)x|KmOm+`N7KBr5Wt$3M$>GZeB^l^#~oEncHJyZ z^;PiUF?+kI_0c1Iuchr5f2Sa^nLA-7lM@HVZ*7XF7SC9ilPj+mp(ty(i(U%c}|-`HsA5v&NQ_Ot5sYV`Ph3Y>Qyi5 z>jO*DyaJ=P2`|ys8O`FEHfHfDSdH?#xNNu7trE1+^aCr$6%Hr)pl$&7c@I+|4V5;L zZ=0JMG08RRdg?Npqy0nHh=MQ1c)Wzhz8PP8J+$S?Vcx1MX-z}i6capybERDjQ7`1< z6N%n0Qa=t(_>I$%A>ZNPtR{8jlg{T-L(vAF&yU9^N7wXYK(zydOF~R0U&<-90~0e7 zN8U_+GwOe{xVd$j)qYybMi8i*WN1Kr67f%cW;iQkBODSDP7Wc50-|idD)Mh8 zt?_n_e`>5#K&6E;H?#n<|0ch= zN8i8zh15d^vne~Oi0^tDE64o;n0N5A@qQRQ8$OI09 z<-%Zu7(v&af~;$9Bsj$I$FkVa*nq_T^_>5i_0Ht5A74Kg%e3&k|%7QVix|A^KQ{(tx|+z|NX5CHUki~)xWa8|+pJgk25wNByx@b_~a{)ZL-=zop; zBYyv->tDM55d;57_}}dMm#%-rz&{fHH@p7d=;HsY+#%C}8&D)r%q)mQ?gNDoZ{Tig zi;a>9v})dX80c+b+IX@-pv{E!2F_`zzXl9$=HTrtH_r+3NvH^hsJf1UKwR7L7G^F% zldn%31-qDSO*mU8H(@ianrEw3IX+-JpjedZ6+$lKlhTFidU>31Z8j;oniHrj@G>`0 zj4SZzW|dqi9O+zQn9@GKd~d<5TO*A(bn@l$uAedZ^rq90-DSkiJ9hs3d0&_uDI3k> z15UFjScAXi3Cj0087|K(Rk<~^GLVIa)BM$9FOAB=Y_RBsXjR@};a#t%nm3mn#=>72 z#&8cAj-e4Rm)&EJnkv8S2K(ZlKYC>?D>5DtF?ab>rGJ3x)Lcq%=H#x$i5#@@#hI^% z!nQgLKo1s}Y^Dh4taf*X@YD-lF@i@X;|3xOh0a{wbon)IK;z`Y-KH*FMS>P&P=YCE zsq2I-I0TH`JU%4}+HUa}IhAoGQXV8Vo&OM01^$le-}?l2GONC_%O;xp%hIdOvChiT z)0fV7H+OV$Dz!`%^W>Mhwm-4IQiZVEI!>A1ORP;fX@fg`)^ENq3(!b zeHQwpl6yreNTHuTmjB+OYm^0!_M7kNJiQ#%S{_6X%SWQ)e*+itTkV#Ms+liQD$}Kb rP9?7C1wVD#;=$ubd7O&JD}7MJ9UW>qWjr{&o?CcJdy6VuK-_--J5&8H literal 0 HcmV?d00001 diff --git a/src/napari_deeplabcut/assets/white/Subplots.png b/src/napari_deeplabcut/assets/white/Subplots.png new file mode 100644 index 0000000000000000000000000000000000000000..4064df55faecbd8b2cd9b59302874430d0cb7cdf GIT binary patch literal 6739 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 N-^|z=U%AIK@;^Rx?5qF) literal 0 HcmV?d00001 diff --git a/src/napari_deeplabcut/assets/white/Zoom.png b/src/napari_deeplabcut/assets/white/Zoom.png new file mode 100644 index 0000000000000000000000000000000000000000..09a985660d9e00281dcc05272d6f79840e8e1222 GIT binary patch literal 8064 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 H&$#~qq%cv9 literal 0 HcmV?d00001 diff --git a/src/napari_deeplabcut/assets/white/Zoom_checked.png b/src/napari_deeplabcut/assets/white/Zoom_checked.png new file mode 100644 index 0000000000000000000000000000000000000000..9def1df707d2e626019bc847e24ed4c1312c258d GIT binary patch literal 12372 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 Date: Thu, 14 Sep 2023 19:36:20 +0200 Subject: [PATCH 7/8] Remove plugin preview github action --- .github/workflows/plugin_preview.yml | 21 --------------------- 1 file changed, 21 deletions(-) delete mode 100644 .github/workflows/plugin_preview.yml diff --git a/.github/workflows/plugin_preview.yml b/.github/workflows/plugin_preview.yml deleted file mode 100644 index 8b739f3..0000000 --- a/.github/workflows/plugin_preview.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: napari hub Preview Page # we use this name to find your preview page artifact, so don't change it! -# For more info on this action, see https://github.com/chanzuckerberg/napari-hub-preview-action/blob/main/action.yml - -on: - pull_request: - branches: - - '**' - -jobs: - preview-page: - name: Preview Page Deploy - runs-on: ubuntu-latest - - steps: - - name: Checkout repo - uses: actions/checkout@v2 - - - name: napari hub Preview Page Builder - uses: chanzuckerberg/napari-hub-preview-action@v0.1.6 - with: - hub-ref: main From ff625fad8dfb8aab9d189059bd35df918bafe812 Mon Sep 17 00:00:00 2001 From: Mackenzie Mathis Date: Fri, 15 Sep 2023 18:14:43 +0200 Subject: [PATCH 8/8] Update setup.cfg --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index ef2b7d4..c8df01d 100644 --- a/setup.cfg +++ b/setup.cfg @@ -33,7 +33,7 @@ project_urls = packages = find: install_requires = dask-image - matplotlib + matplotlib>=3.3 napari==0.4.18 natsort numpy