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)
         ```
         ![original volume](assets/screenshots/filter_original.png)
         ![filtered volume](assets/screenshots/filter_processed.png)
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)
         ```
         ![synthetic_blob](assets/screenshots/synthetic_blob_slices.png)
 
@@ -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)
         ```
         ![synthetic_blob_cylinder_slice](assets/screenshots/synthetic_blob_cylinder_slice.png)
 
@@ -100,7 +100,7 @@ def blob(
         
         ```python
         # Visualize
-        qim3d.viz.slices(vol, n_slices=15)
+        qim3d.viz.slices_grid(vol, n_slices=15)
         ```
         ![synthetic_blob_tube_slice](assets/screenshots/synthetic_blob_tube_slice.png)    
     """
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)
         ```
         ![synthetic_collection_cylinder](assets/screenshots/synthetic_collection_cylinder_slices.png)    
         
@@ -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)
         ```
         ![synthetic_collection_tube](assets/screenshots/synthetic_collection_tube_slices.png)
     """
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)
         ```
         ![operations-remove_background_before](assets/screenshots/operations-remove_background_before.png)
 
@@ -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)
         ```
         ![operations-remove_background_after](assets/screenshots/operations-remove_background_after.png)
     """
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)
         ```
         ![operations-watershed_before](assets/screenshots/operations-watershed_before.png)
 
@@ -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)
         ```
         ![operations-watershed_after](assets/screenshots/operations-watershed_after.png)
 
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)
         ```
         ![Grid of slices](assets/screenshots/viz-slices.png)
     """
@@ -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