From 447666f17c4f2ca48986d7c6e03f957feef039cb Mon Sep 17 00:00:00 2001 From: Felipe <fima@dtu.dk> Date: Wed, 11 Dec 2024 13:28:31 +0100 Subject: [PATCH] slices_grid calls refactoring --- docs/notebooks/blob_detection.ipynb | 4 ++-- docs/notebooks/local_thickness.ipynb | 4 ++-- docs/releases.md | 4 ++-- qim3d/filters.py | 4 ++-- qim3d/generate/blob_.py | 6 +++--- qim3d/generate/collection_.py | 4 ++-- qim3d/processing/operations.py | 4 ++-- qim3d/segmentation/standard.py | 4 ++-- qim3d/tests/viz/test_img.py | 24 ++++++++++++------------ qim3d/viz/cc.py | 6 +++--- qim3d/viz/colormaps.py | 2 +- qim3d/viz/data_exploration.py | 4 ++-- qim3d/viz/detection.py | 2 +- 13 files changed, 36 insertions(+), 36 deletions(-) diff --git a/docs/notebooks/blob_detection.ipynb b/docs/notebooks/blob_detection.ipynb index 86f6d946..d23662f9 100644 --- a/docs/notebooks/blob_detection.ipynb +++ b/docs/notebooks/blob_detection.ipynb @@ -73,13 +73,13 @@ "cement = qim3d.examples.cement_128x128x128\n", "\n", "# Visualize slices of the original cement volume\n", - "qim3d.viz.slices(cement, n_slices = 5, show = True)\n", + "qim3d.viz.slices_grid(cement, n_slices = 5, show = True)\n", "\n", "# Apply Gaussian filter to the cement volume\n", "cement_filtered = qim3d.processing.gaussian(cement, sigma = 2)\n", "\n", "# Visualize slices of the filtered cement volume\n", - "qim3d.viz.slices(cement_filtered)" + "qim3d.viz.slices_grid(cement_filtered)" ] }, { diff --git a/docs/notebooks/local_thickness.ipynb b/docs/notebooks/local_thickness.ipynb index 717c8546..ee405d83 100644 --- a/docs/notebooks/local_thickness.ipynb +++ b/docs/notebooks/local_thickness.ipynb @@ -179,13 +179,13 @@ "cement = qim3d.examples.cement_128x128x128\n", "\n", "# Visualize slices of the original cement volume\n", - "qim3d.viz.slices(cement, n_slices = 5, show = True)\n", + "qim3d.viz.slices_grid(cement, n_slices = 5, show = True)\n", "\n", "# Apply Gaussian filter to the cement volume\n", "cement_filtered = qim3d.processing.gaussian(cement, sigma = 2)\n", "\n", "# Visualize slices of the filtered cement volume\n", - "qim3d.viz.slices(cement_filtered)" + "qim3d.viz.slices_grid(cement_filtered)" ] }, { diff --git a/docs/releases.md b/docs/releases.md index ff67814f..cee2d6a4 100644 --- a/docs/releases.md +++ b/docs/releases.md @@ -114,7 +114,7 @@ This version focus on the increased usability of the `qim3d` library - Online documentation available at [https://platform.qim.dk/qim3d](https://platform.qim.dk/qim3d) - Virtual stacks also available for `txm` files - Updated GUI launch pipeline -- New functionalities for `qim3d.viz.slices` +- New functionalities for `qim3d.viz.slices_grid` - Introduction of `qim3d.processing.filters` 🎉 - Introduction of `qim3d.viz.vol` 🎉 @@ -140,7 +140,7 @@ Includes new develoments toward the usability of the library, as well as its int - For the local thicknes GUI, now it is possible to pass and receive numpy arrays instead of using the upload functionality. - Improved data loader - Now the extensions `tif`, `h5` and `txm` are supported. -- Added `qim3d.viz.slices` for easy slice visualization. +- Added `qim3d.viz.slices_grid` for easy slice visualization. - U-net model creation - Model availabe from `qim3d.models.UNet` - Data augmentation class at `qim3d.utils.Augmentation` diff --git a/qim3d/filters.py b/qim3d/filters.py index 3c3c1a5b..f5e7a9c1 100644 --- a/qim3d/filters.py +++ b/qim3d/filters.py @@ -119,7 +119,7 @@ class Pipeline: vol = qim3d.examples.fly_150x256x256 # Show original - qim3d.viz.slices(vol, axis=0, show=True) + qim3d.viz.slices_grid(vol, axis=0, show=True) # Create filter pipeline pipeline = Pipeline( @@ -134,7 +134,7 @@ class Pipeline: vol_filtered = pipeline(vol) # Show filtered - qim3d.viz.slices(vol_filtered, axis=0) + qim3d.viz.slices_grid(vol_filtered, axis=0) ```   diff --git a/qim3d/generate/blob_.py b/qim3d/generate/blob_.py index 153bdcfc..dcfa48a8 100644 --- a/qim3d/generate/blob_.py +++ b/qim3d/generate/blob_.py @@ -52,7 +52,7 @@ def blob( ```python # Visualize slices - qim3d.viz.slices(synthetic_blob, vmin = 0, vmax = 255, n_slices = 15) + qim3d.viz.slices_grid(synthetic_blob, vmin = 0, vmax = 255, n_slices = 15) ```  @@ -76,7 +76,7 @@ def blob( ```python # Visualize slices - qim3d.viz.slices(vol, n_slices=15, axis=1) + qim3d.viz.slices_grid(vol, n_slices=15, axis=1) ```  @@ -100,7 +100,7 @@ def blob( ```python # Visualize - qim3d.viz.slices(vol, n_slices=15) + qim3d.viz.slices_grid(vol, n_slices=15) ```  """ diff --git a/qim3d/generate/collection_.py b/qim3d/generate/collection_.py index dc54da7e..63a01de1 100644 --- a/qim3d/generate/collection_.py +++ b/qim3d/generate/collection_.py @@ -255,7 +255,7 @@ def collection( ```python # Visualize slices - qim3d.viz.slices(vol, n_slices=15) + qim3d.viz.slices_grid(vol, n_slices=15) ```  @@ -285,7 +285,7 @@ def collection( ```python # Visualize slices - qim3d.viz.slices(vol, n_slices=15, axis=1) + qim3d.viz.slices_grid(vol, n_slices=15, axis=1) ```  """ diff --git a/qim3d/processing/operations.py b/qim3d/processing/operations.py index bf6f16f4..d55684b1 100644 --- a/qim3d/processing/operations.py +++ b/qim3d/processing/operations.py @@ -29,7 +29,7 @@ def remove_background( import qim3d vol = qim3d.examples.cement_128x128x128 - qim3d.viz.slices(vol, vmin=0, vmax=255) + qim3d.viz.slices_grid(vol, vmin=0, vmax=255) ```  @@ -37,7 +37,7 @@ def remove_background( vol_filtered = qim3d.processing.operations.remove_background(vol, min_object_radius=3, background="bright") - qim3d.viz.slices(vol_filtered, vmin=0, vmax=255) + qim3d.viz.slices_grid(vol_filtered, vmin=0, vmax=255) ```  """ diff --git a/qim3d/segmentation/standard.py b/qim3d/segmentation/standard.py index 333b2da0..c8172383 100644 --- a/qim3d/segmentation/standard.py +++ b/qim3d/segmentation/standard.py @@ -26,7 +26,7 @@ def watershed(bin_vol: np.ndarray, min_distance: int = 5) -> tuple[np.ndarray, i vol = qim3d.examples.cement_128x128x128 binary = qim3d.processing.filters.gaussian(vol, sigma = 2)<60 - qim3d.viz.slices(binary, axis=1) + qim3d.viz.slices_grid(binary, axis=1) ```  @@ -34,7 +34,7 @@ def watershed(bin_vol: np.ndarray, min_distance: int = 5) -> tuple[np.ndarray, i labeled_volume, num_labels = qim3d.processing.operations.watershed(binary) cmap = qim3d.viz.colormaps.objects(num_labels) - qim3d.viz.slices(labeled_volume, axis = 1, cmap = cmap) + qim3d.viz.slices_grid(labeled_volume, axis = 1, cmap = cmap) ```  diff --git a/qim3d/tests/viz/test_img.py b/qim3d/tests/viz/test_img.py index bcbed39d..ec959910 100644 --- a/qim3d/tests/viz/test_img.py +++ b/qim3d/tests/viz/test_img.py @@ -52,14 +52,14 @@ def test_grid_pred(): # unit tests for slices function def test_slices_numpy_array_input(): example_volume = np.ones((10, 10, 10)) - fig = qim3d.viz.slices(example_volume, n_slices=1) + fig = qim3d.viz.slices_grid(example_volume, n_slices=1) assert isinstance(fig, plt.Figure) def test_slices_wrong_input_format(): input = "not_a_volume" with pytest.raises(ValueError, match="Data type not supported"): - qim3d.viz.slices(input) + qim3d.viz.slices_grid(input) def test_slices_not_volume(): @@ -68,7 +68,7 @@ def test_slices_not_volume(): ValueError, match="The provided object is not a volume as it has less than 3 dimensions.", ): - qim3d.viz.slices(example_volume) + qim3d.viz.slices_grid(example_volume) def test_slices_wrong_position_format1(): @@ -77,7 +77,7 @@ def test_slices_wrong_position_format1(): ValueError, match='Position not recognized. Choose an integer, list of integers or one of the following strings: "start", "mid" or "end".', ): - qim3d.viz.slices(example_volume, position="invalid_slice") + qim3d.viz.slices_grid(example_volume, position="invalid_slice") def test_slices_wrong_position_format2(): @@ -86,7 +86,7 @@ def test_slices_wrong_position_format2(): ValueError, match='Position not recognized. Choose an integer, list of integers or one of the following strings: "start", "mid" or "end".', ): - qim3d.viz.slices(example_volume, position=1.5) + qim3d.viz.slices_grid(example_volume, position=1.5) def test_slices_wrong_position_format3(): @@ -95,7 +95,7 @@ def test_slices_wrong_position_format3(): ValueError, match='Position not recognized. Choose an integer, list of integers or one of the following strings: "start", "mid" or "end".', ): - qim3d.viz.slices(example_volume, position=[1, 2, 3.5]) + qim3d.viz.slices_grid(example_volume, position=[1, 2, 3.5]) def test_slices_invalid_axis_value(): @@ -104,14 +104,14 @@ def test_slices_invalid_axis_value(): ValueError, match="Invalid value for 'axis'. It should be an integer between 0 and 2", ): - qim3d.viz.slices(example_volume, axis=3) + qim3d.viz.slices_grid(example_volume, axis=3) def test_slices_interpolation_option(): example_volume = np.ones((10, 10, 10)) img_width = 3 interpolation_method = "bilinear" - fig = qim3d.viz.slices( + fig = qim3d.viz.slices_grid( example_volume, n_slices=1, img_width=img_width, @@ -130,7 +130,7 @@ def test_slices_multiple_slices(): example_volume = np.ones((10, 10, 10)) img_width = 3 n_slices = 3 - fig = qim3d.viz.slices(example_volume, n_slices=n_slices, img_width=img_width) + fig = qim3d.viz.slices_grid(example_volume, n_slices=n_slices, img_width=img_width) # Add assertions for the expected number of subplots in the figure assert len(fig.get_axes()) == n_slices @@ -141,13 +141,13 @@ def test_slices_axis_argument(): img_width = 3 # Call the function with different values of the axis - fig_axis_0 = qim3d.viz.slices( + fig_axis_0 = qim3d.viz.slices_grid( example_volume, n_slices=1, img_width=img_width, axis=0 ) - fig_axis_1 = qim3d.viz.slices( + fig_axis_1 = qim3d.viz.slices_grid( example_volume, n_slices=1, img_width=img_width, axis=1 ) - fig_axis_2 = qim3d.viz.slices( + fig_axis_2 = qim3d.viz.slices_grid( example_volume, n_slices=1, img_width=img_width, axis=2 ) diff --git a/qim3d/viz/cc.py b/qim3d/viz/cc.py index b7dd999e..5870a6f7 100644 --- a/qim3d/viz/cc.py +++ b/qim3d/viz/cc.py @@ -30,7 +30,7 @@ def plot_cc( cmap (str, optional): Specifies the color map for the image. Defaults to "viridis". vmin (float, optional): Together with vmax define the data range the colormap covers. By default colormap covers the full range. Defaults to None. vmax (float, optional): Together with vmin define the data range the colormap covers. By default colormap covers the full range. Defaults to None - **kwargs: Additional keyword arguments to pass to `qim3d.viz.slices`. + **kwargs: Additional keyword arguments to pass to `qim3d.viz.slices_grid`. Returns: figs (list[plt.Figure]): List of figures, if `show=False`. @@ -75,14 +75,14 @@ def plot_cc( else: cc = connected_components.get_cc(component, crop=False) overlay_crop = np.where(cc == 0, 0, overlay) - fig = qim3d.viz.slices(overlay_crop, show=show, cmap = cmap, vmin = vmin, vmax = vmax, **kwargs) + fig = qim3d.viz.slices_grid(overlay_crop, show=show, cmap = cmap, vmin = vmin, vmax = vmax, **kwargs) else: # assigns discrete color map to each connected component if not given if "cmap" not in kwargs: kwargs["cmap"] = qim3d.viz.colormaps.objects(len(component_indexs)) # Plot the connected component without overlay - fig = qim3d.viz.slices( + fig = qim3d.viz.slices_grid( connected_components.get_cc(component, crop=crop), show=show, **kwargs ) diff --git a/qim3d/viz/colormaps.py b/qim3d/viz/colormaps.py index 807a0838..d7e00fe8 100644 --- a/qim3d/viz/colormaps.py +++ b/qim3d/viz/colormaps.py @@ -89,7 +89,7 @@ def objects( Tip: It can be easily used when calling visualization functions as ```python - qim3d.viz.slices(segmented_volume, cmap = 'objects') + qim3d.viz.slices_grid(segmented_volume, cmap = 'objects') ``` which automatically detects number of unique classes and creates the colormap object with defualt arguments. diff --git a/qim3d/viz/data_exploration.py b/qim3d/viz/data_exploration.py index f2b958ac..8db6ade9 100644 --- a/qim3d/viz/data_exploration.py +++ b/qim3d/viz/data_exploration.py @@ -77,7 +77,7 @@ def slices_grid( import qim3d vol = qim3d.examples.shell_225x128x128 - qim3d.viz.slices_grid(vol, num_slices=15) + qim3d.viz.slices_grid_grid(vol, num_slices=15) ```  """ @@ -690,7 +690,7 @@ def chunks(zarr_path: str, **kwargs): viz_widget = widgets.Output() with viz_widget: viz_widget.clear_output(wait=True) - fig = qim3d.viz.slices_grid(chunk, **kwargs) + fig = qim3d.viz.slices_grid_grid(chunk, **kwargs) display(fig) elif visualization_method == "volume": viz_widget = widgets.Output() diff --git a/qim3d/viz/detection.py b/qim3d/viz/detection.py index fcf493cd..6b3e6066 100644 --- a/qim3d/viz/detection.py +++ b/qim3d/viz/detection.py @@ -29,7 +29,7 @@ def circles(blobs, vol, alpha=0.5, color="#ff9900", **kwargs): def _slicer(z_slice): clear_output(wait=True) - fig = qim3d.viz.slices( + fig = qim3d.viz.slices_grid( vol, n_slices=1, position=z_slice, -- GitLab