From 486345625e5cfa5fc92b53613d4632528bbba002 Mon Sep 17 00:00:00 2001 From: Neil Vaytet Date: Mon, 19 Sep 2022 16:38:48 +0200 Subject: [PATCH 1/6] move wrappers into their own folder --- src/plopp/__init__.py | 2 +- src/plopp/functions/__init__.py | 8 +++ src/plopp/functions/common.py | 11 +++ src/plopp/functions/figure.py | 16 +++++ src/plopp/{wrappers.py => functions/plot.py} | 76 ++------------------ src/plopp/functions/slicer.py | 60 ++++++++++++++++ 6 files changed, 100 insertions(+), 73 deletions(-) create mode 100644 src/plopp/functions/__init__.py create mode 100644 src/plopp/functions/common.py create mode 100644 src/plopp/functions/figure.py rename src/plopp/{wrappers.py => functions/plot.py} (54%) create mode 100644 src/plopp/functions/slicer.py diff --git a/src/plopp/__init__.py b/src/plopp/__init__.py index c7a3bd27..bb6808af 100644 --- a/src/plopp/__init__.py +++ b/src/plopp/__init__.py @@ -15,7 +15,7 @@ from .graph import show_graph from .model import Node, node, input_node, widget_node -from .wrappers import plot, figure, slicer +from .functions import figure, plot, slicer from . import data diff --git a/src/plopp/functions/__init__.py b/src/plopp/functions/__init__.py new file mode 100644 index 00000000..9a27c5a3 --- /dev/null +++ b/src/plopp/functions/__init__.py @@ -0,0 +1,8 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) 2022 Scipp contributors (https://github.com/scipp) + +# flake8: noqa E402, F401 + +from .figure import figure +from .plot import plot +from .slicer import slicer diff --git a/src/plopp/functions/common.py b/src/plopp/functions/common.py new file mode 100644 index 00000000..20315710 --- /dev/null +++ b/src/plopp/functions/common.py @@ -0,0 +1,11 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) 2022 Scipp contributors (https://github.com/scipp) + +from matplotlib import get_backend + + +def is_interactive_backend(): + """ + Return `True` if the current backend used by Matplotlib is the widget backend. + """ + return 'ipympl' in get_backend() diff --git a/src/plopp/functions/figure.py b/src/plopp/functions/figure.py new file mode 100644 index 00000000..e4655157 --- /dev/null +++ b/src/plopp/functions/figure.py @@ -0,0 +1,16 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) 2022 Scipp contributors (https://github.com/scipp) + +from .common import is_interactive_backend + + +def figure(*args, **kwargs): + """ + Make a figure that is either static or interactive depending on the backend in use. + """ + if is_interactive_backend(): + from ..interactive import InteractiveFig + return InteractiveFig(*args, **kwargs) + else: + from ..static import StaticFig + return StaticFig(*args, **kwargs) diff --git a/src/plopp/wrappers.py b/src/plopp/functions/plot.py similarity index 54% rename from src/plopp/wrappers.py rename to src/plopp/functions/plot.py index 488beb7f..051c56ae 100644 --- a/src/plopp/wrappers.py +++ b/src/plopp/functions/plot.py @@ -1,37 +1,17 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright (c) 2022 Scipp contributors (https://github.com/scipp) -from .figure import Figure -from .model import input_node, widget_node -from .prep import preprocess +from .figure import figure +from ..model import input_node, widget_node +from ..prep import preprocess from scipp import Variable, Dataset from scipp.typing import VariableLike import inspect -from matplotlib import get_backend from numpy import ndarray from typing import Union, Dict, Literal, List -def _is_interactive_backend(): - """ - Return `True` if the current backend used by Matplotlib is the widget backend. - """ - return 'ipympl' in get_backend() - - -def figure(*args, **kwargs): - """ - Make a figure that is either static or interactive depending on the backend in use. - """ - if _is_interactive_backend(): - from .interactive import InteractiveFig - return InteractiveFig(*args, **kwargs) - else: - from .static import StaticFig - return StaticFig(*args, **kwargs) - - def plot(obj: Union[VariableLike, ndarray, Dict[str, Union[VariableLike, ndarray]]], aspect: Literal['auto', 'equal'] = 'auto', cbar: bool = True, @@ -45,7 +25,7 @@ def plot(obj: Union[VariableLike, ndarray, Dict[str, Union[VariableLike, ndarray title: str = None, vmin: Variable = None, vmax: Variable = None, - **kwargs) -> Figure: + **kwargs): """Plot a Scipp object. Parameters @@ -113,51 +93,3 @@ def plot(obj: Union[VariableLike, ndarray, Dict[str, Union[VariableLike, ndarray else: return figure(input_node(preprocess(obj, crop=crop, ignore_size=ignore_size)), **all_args) - - -def slicer(obj: Union[VariableLike, ndarray], - keep: List[str] = None, - *, - crop: Dict[str, Dict[str, Variable]] = None, - **kwargs): - """ - Plot a multi-dimensional object by slicing one or more of the dimensions. - This will produce one slider per sliced dimension, below the figure. - - Parameters - ---------- - obj: - The object to be plotted. - keep: - The dimensions to be kept, all remaining dimensions will be sliced. This should - be a list of dims. If no dims are provided, the last dim will be kept in the - case of a 2-dimensional input, while the last two dims will be kept in the case - of higher dimensional inputs. - crop: - Set the axis limits. Limits should be given as a dict with one entry per - dimension to be cropped. Each entry should be a nested dict containing scalar - values for `'min'` and/or `'max'`. Example: - `da.plot(crop={'time': {'min': 2 * sc.Unit('s'), 'max': 40 * sc.Unit('s')}})` - **kwargs: - See :py:func:`plopp.plot` for the full list of figure customization arguments. - - Returns - ------- - : - A :class:`Box` which will contain a :class:`Figure` and slider widgets. - """ - if not _is_interactive_backend(): - raise RuntimeError("The slicer can only be used with the interactive widget " - "backend. Use `%matplotlib widget` at the start of your " - "notebook.") - from plopp.widgets import SliceWidget, slice_dims, Box - da = preprocess(obj, crop=crop, ignore_size=True) - a = input_node(da) - - if keep is None: - keep = da.dims[-(2 if da.ndim > 2 else 1):] - sl = SliceWidget(da, dims=list(set(da.dims) - set(keep))) - w = widget_node(sl) - slice_node = slice_dims(a, w) - fig = figure(slice_node, **{**{'crop': crop}, **kwargs}) - return Box([fig, sl]) diff --git a/src/plopp/functions/slicer.py b/src/plopp/functions/slicer.py new file mode 100644 index 00000000..2175a8c5 --- /dev/null +++ b/src/plopp/functions/slicer.py @@ -0,0 +1,60 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) 2022 Scipp contributors (https://github.com/scipp) + +from .figure import figure +from ..model import input_node, widget_node +from ..prep import preprocess + +from scipp import Variable, Dataset +from scipp.typing import VariableLike +import inspect +from numpy import ndarray +from typing import Union, Dict, Literal, List + + +def slicer(obj: Union[VariableLike, ndarray], + keep: List[str] = None, + *, + crop: Dict[str, Dict[str, Variable]] = None, + **kwargs): + """ + Plot a multi-dimensional object by slicing one or more of the dimensions. + This will produce one slider per sliced dimension, below the figure. + + Parameters + ---------- + obj: + The object to be plotted. + keep: + The dimensions to be kept, all remaining dimensions will be sliced. This should + be a list of dims. If no dims are provided, the last dim will be kept in the + case of a 2-dimensional input, while the last two dims will be kept in the case + of higher dimensional inputs. + crop: + Set the axis limits. Limits should be given as a dict with one entry per + dimension to be cropped. Each entry should be a nested dict containing scalar + values for `'min'` and/or `'max'`. Example: + `da.plot(crop={'time': {'min': 2 * sc.Unit('s'), 'max': 40 * sc.Unit('s')}})` + **kwargs: + See :py:func:`plopp.plot` for the full list of figure customization arguments. + + Returns + ------- + : + A :class:`Box` which will contain a :class:`Figure` and slider widgets. + """ + if not _is_interactive_backend(): + raise RuntimeError("The slicer can only be used with the interactive widget " + "backend. Use `%matplotlib widget` at the start of your " + "notebook.") + from plopp.widgets import SliceWidget, slice_dims, Box + da = preprocess(obj, crop=crop, ignore_size=True) + a = input_node(da) + + if keep is None: + keep = da.dims[-(2 if da.ndim > 2 else 1):] + sl = SliceWidget(da, dims=list(set(da.dims) - set(keep))) + w = widget_node(sl) + slice_node = slice_dims(a, w) + fig = figure(slice_node, **{**{'crop': crop}, **kwargs}) + return Box([fig, sl]) From db9454777c6ec05efdb9fc53fbc72af43a976f57 Mon Sep 17 00:00:00 2001 From: Neil Vaytet Date: Mon, 19 Sep 2022 16:43:26 +0200 Subject: [PATCH 2/6] move prep code into common --- src/plopp/functions/common.py | 55 +++++++++++++++++++++++++++++++++ src/plopp/functions/plot.py | 2 +- src/plopp/functions/slicer.py | 4 +-- src/plopp/prep.py | 58 ----------------------------------- 4 files changed, 58 insertions(+), 61 deletions(-) delete mode 100644 src/plopp/prep.py diff --git a/src/plopp/functions/common.py b/src/plopp/functions/common.py index 20315710..a8b7a811 100644 --- a/src/plopp/functions/common.py +++ b/src/plopp/functions/common.py @@ -1,7 +1,11 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright (c) 2022 Scipp contributors (https://github.com/scipp) +from ..tools import number_to_variable + from matplotlib import get_backend +from numpy import ndarray, prod +from scipp import Variable, DataArray, arange, to_unit def is_interactive_backend(): @@ -9,3 +13,54 @@ def is_interactive_backend(): Return `True` if the current backend used by Matplotlib is the widget backend. """ return 'ipympl' in get_backend() + + +def _to_data_array(obj): + out = obj + if isinstance(out, ndarray): + dims = [f"axis-{i}" for i in range(len(out.shape))] + out = Variable(dims=dims, values=out) + if isinstance(out, Variable): + out = DataArray(data=out) + out = out.copy(deep=False) + for dim, size in out.sizes.items(): + if dim not in out.meta: + out.coords[dim] = arange(dim, size, unit=None) + return out + + +def _convert_if_not_none(x, unit): + if x is not None: + return to_unit(number_to_variable(x), unit=unit) + return x + + +def _check_size(obj): + limits = {1: 1_000_000, 2: 2500 * 2500} + if obj.ndim not in limits: + raise ValueError("plot can only handle 1d and 2d data.") + if prod(obj.shape) > limits[obj.ndim]: + raise ValueError(f"Plotting data of size {obj.shape} may take very long or use " + "an excessive amount of memory. This is therefore disabled by " + "default. To bypass this check, use `ignore_size=True`.") + + +def preprocess(obj, crop=None, name='', ignore_size=False): + out = _to_data_array(obj) + if not out.name: + out.name = name + crop = {} if crop is None else crop + for dim, sl in crop.items(): + # If we plainly slice using label values, we can miss the first and last points + # that lie just outside the selected range, but whose pixels are still visible + # on the figure (this mostly arises in the case of a 2d image with no bin-edge + # coord). Therefore, we convert the value-based range to slicing indices, and + # then extend the lower and upper bounds by 1. + smin = _convert_if_not_none(sl.get('min'), unit=out.meta[dim].unit) + smax = _convert_if_not_none(sl.get('max'), unit=out.meta[dim].unit) + start = max(out[dim, :smin].sizes[dim] - 1, 0) + width = out[dim, smin:smax].sizes[dim] + out = out[dim, start:start + width + 2] + if not ignore_size: + _check_size(out) + return out diff --git a/src/plopp/functions/plot.py b/src/plopp/functions/plot.py index 051c56ae..b563c7ae 100644 --- a/src/plopp/functions/plot.py +++ b/src/plopp/functions/plot.py @@ -3,7 +3,7 @@ from .figure import figure from ..model import input_node, widget_node -from ..prep import preprocess +from .common import preprocess from scipp import Variable, Dataset from scipp.typing import VariableLike diff --git a/src/plopp/functions/slicer.py b/src/plopp/functions/slicer.py index 2175a8c5..e275398f 100644 --- a/src/plopp/functions/slicer.py +++ b/src/plopp/functions/slicer.py @@ -1,9 +1,9 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright (c) 2022 Scipp contributors (https://github.com/scipp) +from .common import is_interactive_backend, preprocess from .figure import figure from ..model import input_node, widget_node -from ..prep import preprocess from scipp import Variable, Dataset from scipp.typing import VariableLike @@ -43,7 +43,7 @@ def slicer(obj: Union[VariableLike, ndarray], : A :class:`Box` which will contain a :class:`Figure` and slider widgets. """ - if not _is_interactive_backend(): + if not is_interactive_backend(): raise RuntimeError("The slicer can only be used with the interactive widget " "backend. Use `%matplotlib widget` at the start of your " "notebook.") diff --git a/src/plopp/prep.py b/src/plopp/prep.py deleted file mode 100644 index 9c3215f9..00000000 --- a/src/plopp/prep.py +++ /dev/null @@ -1,58 +0,0 @@ -# SPDX-License-Identifier: BSD-3-Clause -# Copyright (c) 2022 Scipp contributors (https://github.com/scipp) - -from .tools import number_to_variable - -from scipp import Variable, DataArray, arange, to_unit -from numpy import ndarray, prod - - -def _to_data_array(obj): - out = obj - if isinstance(out, ndarray): - dims = [f"axis-{i}" for i in range(len(out.shape))] - out = Variable(dims=dims, values=out) - if isinstance(out, Variable): - out = DataArray(data=out) - out = out.copy(deep=False) - for dim, size in out.sizes.items(): - if dim not in out.meta: - out.coords[dim] = arange(dim, size, unit=None) - return out - - -def _convert_if_not_none(x, unit): - if x is not None: - return to_unit(number_to_variable(x), unit=unit) - return x - - -def _check_size(obj): - limits = {1: 1_000_000, 2: 2500 * 2500} - if obj.ndim not in limits: - raise ValueError("plot can only handle 1d and 2d data.") - if prod(obj.shape) > limits[obj.ndim]: - raise ValueError(f"Plotting data of size {obj.shape} may take very long or use " - "an excessive amount of memory. This is therefore disabled by " - "default. To bypass this check, use `ignore_size=True`.") - - -def preprocess(obj, crop=None, name='', ignore_size=False): - out = _to_data_array(obj) - if not out.name: - out.name = name - crop = {} if crop is None else crop - for dim, sl in crop.items(): - # If we plainly slice using label values, we can miss the first and last points - # that lie just outside the selected range, but whose pixels are still visible - # on the figure (this mostly arises in the case of a 2d image with no bin-edge - # coord). Therefore, we convert the value-based range to slicing indices, and - # then extend the lower and upper bounds by 1. - smin = _convert_if_not_none(sl.get('min'), unit=out.meta[dim].unit) - smax = _convert_if_not_none(sl.get('max'), unit=out.meta[dim].unit) - start = max(out[dim, :smin].sizes[dim] - 1, 0) - width = out[dim, smin:smax].sizes[dim] - out = out[dim, start:start + width + 2] - if not ignore_size: - _check_size(out) - return out From 85ec320140d178d611055582e4cdc38cd6a90eb5 Mon Sep 17 00:00:00 2001 From: Neil Vaytet Date: Mon, 19 Sep 2022 19:51:55 +0200 Subject: [PATCH 3/6] start moving things around --- src/plopp/core/__init__.py | 7 +++++++ src/plopp/{ => core}/graph.py | 0 src/plopp/{ => core}/limits.py | 0 src/plopp/{ => core}/model.py | 0 src/plopp/{tools.py => core/utils.py} | 0 src/plopp/{ => core}/view.py | 0 src/plopp/graphics/__init__.py | 8 ++++++++ src/plopp/{ => graphics}/figure.py | 0 src/plopp/{ => graphics}/interactive.py | 0 src/plopp/{ => graphics}/io.py | 0 src/plopp/{ => graphics}/line.py | 0 src/plopp/{ => graphics}/mesh.py | 0 src/plopp/{ => graphics}/static.py | 0 src/plopp/{ => graphics}/toolbar.py | 0 14 files changed, 15 insertions(+) create mode 100644 src/plopp/core/__init__.py rename src/plopp/{ => core}/graph.py (100%) rename src/plopp/{ => core}/limits.py (100%) rename src/plopp/{ => core}/model.py (100%) rename src/plopp/{tools.py => core/utils.py} (100%) rename src/plopp/{ => core}/view.py (100%) create mode 100644 src/plopp/graphics/__init__.py rename src/plopp/{ => graphics}/figure.py (100%) rename src/plopp/{ => graphics}/interactive.py (100%) rename src/plopp/{ => graphics}/io.py (100%) rename src/plopp/{ => graphics}/line.py (100%) rename src/plopp/{ => graphics}/mesh.py (100%) rename src/plopp/{ => graphics}/static.py (100%) rename src/plopp/{ => graphics}/toolbar.py (100%) diff --git a/src/plopp/core/__init__.py b/src/plopp/core/__init__.py new file mode 100644 index 00000000..09980fd7 --- /dev/null +++ b/src/plopp/core/__init__.py @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) 2022 Scipp contributors (https://github.com/scipp) + +# flake8: noqa E402, F401 + +from .graph import show_graph +from .model import Node, node, input_node, widget_node diff --git a/src/plopp/graph.py b/src/plopp/core/graph.py similarity index 100% rename from src/plopp/graph.py rename to src/plopp/core/graph.py diff --git a/src/plopp/limits.py b/src/plopp/core/limits.py similarity index 100% rename from src/plopp/limits.py rename to src/plopp/core/limits.py diff --git a/src/plopp/model.py b/src/plopp/core/model.py similarity index 100% rename from src/plopp/model.py rename to src/plopp/core/model.py diff --git a/src/plopp/tools.py b/src/plopp/core/utils.py similarity index 100% rename from src/plopp/tools.py rename to src/plopp/core/utils.py diff --git a/src/plopp/view.py b/src/plopp/core/view.py similarity index 100% rename from src/plopp/view.py rename to src/plopp/core/view.py diff --git a/src/plopp/graphics/__init__.py b/src/plopp/graphics/__init__.py new file mode 100644 index 00000000..dc363426 --- /dev/null +++ b/src/plopp/graphics/__init__.py @@ -0,0 +1,8 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (c) 2022 Scipp contributors (https://github.com/scipp) + +# flake8: noqa E402, F401 + +from .interactive import InteractiveFig +from .static import StaticFig +from .toolbar import Toolbar diff --git a/src/plopp/figure.py b/src/plopp/graphics/figure.py similarity index 100% rename from src/plopp/figure.py rename to src/plopp/graphics/figure.py diff --git a/src/plopp/interactive.py b/src/plopp/graphics/interactive.py similarity index 100% rename from src/plopp/interactive.py rename to src/plopp/graphics/interactive.py diff --git a/src/plopp/io.py b/src/plopp/graphics/io.py similarity index 100% rename from src/plopp/io.py rename to src/plopp/graphics/io.py diff --git a/src/plopp/line.py b/src/plopp/graphics/line.py similarity index 100% rename from src/plopp/line.py rename to src/plopp/graphics/line.py diff --git a/src/plopp/mesh.py b/src/plopp/graphics/mesh.py similarity index 100% rename from src/plopp/mesh.py rename to src/plopp/graphics/mesh.py diff --git a/src/plopp/static.py b/src/plopp/graphics/static.py similarity index 100% rename from src/plopp/static.py rename to src/plopp/graphics/static.py diff --git a/src/plopp/toolbar.py b/src/plopp/graphics/toolbar.py similarity index 100% rename from src/plopp/toolbar.py rename to src/plopp/graphics/toolbar.py From f84a7b50ac1e1cb88e53b55788fdc06030030bbe Mon Sep 17 00:00:00 2001 From: Neil Vaytet Date: Mon, 19 Sep 2022 20:10:12 +0200 Subject: [PATCH 4/6] fix imports --- src/plopp/__init__.py | 3 +-- src/plopp/core/__init__.py | 1 + src/plopp/functions/common.py | 2 +- src/plopp/functions/figure.py | 4 ++-- src/plopp/functions/plot.py | 2 +- src/plopp/functions/slicer.py | 2 +- src/plopp/graphics/figure.py | 4 ++-- src/plopp/graphics/line.py | 2 +- src/plopp/graphics/mesh.py | 4 ++-- src/plopp/widgets/slice.py | 4 ++-- 10 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/plopp/__init__.py b/src/plopp/__init__.py index bb6808af..4ad0a804 100644 --- a/src/plopp/__init__.py +++ b/src/plopp/__init__.py @@ -13,8 +13,7 @@ plt.ioff() -from .graph import show_graph -from .model import Node, node, input_node, widget_node +from .core import Node, node, input_node, widget_node, show_graph from .functions import figure, plot, slicer from . import data diff --git a/src/plopp/core/__init__.py b/src/plopp/core/__init__.py index 09980fd7..4cc43b12 100644 --- a/src/plopp/core/__init__.py +++ b/src/plopp/core/__init__.py @@ -5,3 +5,4 @@ from .graph import show_graph from .model import Node, node, input_node, widget_node +from .view import View diff --git a/src/plopp/functions/common.py b/src/plopp/functions/common.py index a8b7a811..e3707668 100644 --- a/src/plopp/functions/common.py +++ b/src/plopp/functions/common.py @@ -1,7 +1,7 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright (c) 2022 Scipp contributors (https://github.com/scipp) -from ..tools import number_to_variable +from ..core.utils import number_to_variable from matplotlib import get_backend from numpy import ndarray, prod diff --git a/src/plopp/functions/figure.py b/src/plopp/functions/figure.py index e4655157..b02bb704 100644 --- a/src/plopp/functions/figure.py +++ b/src/plopp/functions/figure.py @@ -9,8 +9,8 @@ def figure(*args, **kwargs): Make a figure that is either static or interactive depending on the backend in use. """ if is_interactive_backend(): - from ..interactive import InteractiveFig + from ..graphics import InteractiveFig return InteractiveFig(*args, **kwargs) else: - from ..static import StaticFig + from ..graphics import StaticFig return StaticFig(*args, **kwargs) diff --git a/src/plopp/functions/plot.py b/src/plopp/functions/plot.py index b563c7ae..23dab2e0 100644 --- a/src/plopp/functions/plot.py +++ b/src/plopp/functions/plot.py @@ -2,7 +2,7 @@ # Copyright (c) 2022 Scipp contributors (https://github.com/scipp) from .figure import figure -from ..model import input_node, widget_node +from ..core import input_node, widget_node from .common import preprocess from scipp import Variable, Dataset diff --git a/src/plopp/functions/slicer.py b/src/plopp/functions/slicer.py index e275398f..4ab5f662 100644 --- a/src/plopp/functions/slicer.py +++ b/src/plopp/functions/slicer.py @@ -3,7 +3,7 @@ from .common import is_interactive_backend, preprocess from .figure import figure -from ..model import input_node, widget_node +from ..core import input_node, widget_node from scipp import Variable, Dataset from scipp.typing import VariableLike diff --git a/src/plopp/graphics/figure.py b/src/plopp/graphics/figure.py index ccef6e77..bf422aa9 100644 --- a/src/plopp/graphics/figure.py +++ b/src/plopp/graphics/figure.py @@ -1,11 +1,11 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright (c) 2022 Scipp contributors (https://github.com/scipp) -from .tools import number_to_variable, name_with_unit +from ..core.utils import number_to_variable, name_with_unit +from ..core import View from .io import fig_to_bytes from .mesh import Mesh from .line import Line -from .view import View import matplotlib.pyplot as plt from scipp import DataArray, to_unit diff --git a/src/plopp/graphics/line.py b/src/plopp/graphics/line.py index 2b2bd078..720d3b96 100644 --- a/src/plopp/graphics/line.py +++ b/src/plopp/graphics/line.py @@ -1,7 +1,7 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright (c) 2022 Scipp contributors (https://github.com/scipp) -from .limits import find_limits, fix_empty_range, delta +from ..core.limits import find_limits, fix_empty_range, delta from scipp import DataArray, stddevs from functools import reduce diff --git a/src/plopp/graphics/mesh.py b/src/plopp/graphics/mesh.py index 9383732d..3ef1f2bc 100644 --- a/src/plopp/graphics/mesh.py +++ b/src/plopp/graphics/mesh.py @@ -1,8 +1,8 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright (c) 2022 Scipp contributors (https://github.com/scipp) -from .limits import find_limits, fix_empty_range -from .tools import coord_as_bin_edges, name_with_unit, repeat +from ..core.limits import find_limits, fix_empty_range +from ..core.utils import coord_as_bin_edges, name_with_unit, repeat from copy import copy from functools import reduce diff --git a/src/plopp/widgets/slice.py b/src/plopp/widgets/slice.py index f9a5119b..4159b2f7 100644 --- a/src/plopp/widgets/slice.py +++ b/src/plopp/widgets/slice.py @@ -2,8 +2,8 @@ # Copyright (c) 2022 Scipp contributors (https://github.com/scipp) from scipp import DataArray -from ..tools import value_to_string -from ..model import node +from ..core.utils import value_to_string +from ..core import node import ipywidgets as ipw from typing import Callable From 493f08f540af3686ec32d919fbfaf902d2a2973e Mon Sep 17 00:00:00 2001 From: Neil Vaytet Date: Mon, 19 Sep 2022 20:48:20 +0200 Subject: [PATCH 5/6] change file name to avoid duplicate with one in functions --- src/plopp/graphics/{figure.py => fig.py} | 0 src/plopp/graphics/interactive.py | 2 +- src/plopp/graphics/static.py | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename src/plopp/graphics/{figure.py => fig.py} (100%) diff --git a/src/plopp/graphics/figure.py b/src/plopp/graphics/fig.py similarity index 100% rename from src/plopp/graphics/figure.py rename to src/plopp/graphics/fig.py diff --git a/src/plopp/graphics/interactive.py b/src/plopp/graphics/interactive.py index a1737e9d..d673aa88 100644 --- a/src/plopp/graphics/interactive.py +++ b/src/plopp/graphics/interactive.py @@ -1,7 +1,7 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright (c) 2022 Scipp contributors (https://github.com/scipp) -from .figure import Figure +from .fig import Figure from .toolbar import Toolbar from ipywidgets import VBox, HBox diff --git a/src/plopp/graphics/static.py b/src/plopp/graphics/static.py index 24e9b894..cb684a42 100644 --- a/src/plopp/graphics/static.py +++ b/src/plopp/graphics/static.py @@ -1,7 +1,7 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright (c) 2022 Scipp contributors (https://github.com/scipp) -from .figure import Figure +from .fig import Figure from .io import fig_to_bytes From e4543eec559ffa2966ea02a8258acd6c7e0de14e Mon Sep 17 00:00:00 2001 From: Neil Vaytet Date: Mon, 19 Sep 2022 20:58:04 +0200 Subject: [PATCH 6/6] flake8 --- src/plopp/functions/plot.py | 4 ++-- src/plopp/functions/slicer.py | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/plopp/functions/plot.py b/src/plopp/functions/plot.py index 23dab2e0..b98aa217 100644 --- a/src/plopp/functions/plot.py +++ b/src/plopp/functions/plot.py @@ -2,14 +2,14 @@ # Copyright (c) 2022 Scipp contributors (https://github.com/scipp) from .figure import figure -from ..core import input_node, widget_node +from ..core import input_node from .common import preprocess from scipp import Variable, Dataset from scipp.typing import VariableLike import inspect from numpy import ndarray -from typing import Union, Dict, Literal, List +from typing import Union, Dict, Literal def plot(obj: Union[VariableLike, ndarray, Dict[str, Union[VariableLike, ndarray]]], diff --git a/src/plopp/functions/slicer.py b/src/plopp/functions/slicer.py index 4ab5f662..24df49d7 100644 --- a/src/plopp/functions/slicer.py +++ b/src/plopp/functions/slicer.py @@ -5,11 +5,10 @@ from .figure import figure from ..core import input_node, widget_node -from scipp import Variable, Dataset +from scipp import Variable from scipp.typing import VariableLike -import inspect from numpy import ndarray -from typing import Union, Dict, Literal, List +from typing import Union, Dict, List def slicer(obj: Union[VariableLike, ndarray],