From 2081a3c79b18b1b436e57ec80efa117d05bf5112 Mon Sep 17 00:00:00 2001
From: fima <fima@dtu.dk>
Date: Tue, 21 Jan 2025 13:43:26 +0100
Subject: [PATCH] Doc update for v1.0

---
 docs/datahandling.md                          | 28 ---------------
 docs/{ => doc/cli}/cli.md                     | 25 ++++++++------
 docs/doc/data_handling/generate.md            |  7 ++++
 docs/doc/data_handling/io.md                  | 12 +++++++
 docs/{ => doc/gui}/gui.md                     | 11 ++++--
 docs/{ => doc/image_analysis}/detection.md    |  0
 docs/{ => doc/image_analysis}/features.md     |  0
 docs/{ => doc/image_analysis}/filters.md      |  0
 docs/doc/image_analysis/mesh.md               |  4 +++
 docs/{ => doc/image_analysis}/operations.md   |  0
 docs/{ => doc/image_analysis}/processing.md   |  0
 docs/{ => doc/image_analysis}/segmentation.md |  0
 docs/{ => doc/ml}/models.md                   |  6 ++++
 docs/{ => doc/releases}/releases.md           | 24 ++++++++-----
 docs/{ => doc/visualization}/viz.md           |  5 +++
 docs/index.md                                 | 19 +++++++----
 docs/utils.md                                 |  8 -----
 mkdocs.yml                                    | 34 ++++++++++---------
 qim3d/detection/_common_detection_methods.py  |  4 +--
 qim3d/filters/_common_filter_methods.py       |  4 +--
 qim3d/generate/_aggregators.py                |  8 ++---
 qim3d/generate/_generators.py                 |  6 ++--
 qim3d/gui/annotation_tool.py                  |  2 +-
 qim3d/gui/layers2d.py                         |  2 +-
 qim3d/io/_downloader.py                       |  2 +-
 .../operations/_common_operations_methods.py  |  8 ++---
 qim3d/processing/_layers.py                   |  4 +--
 qim3d/processing/_local_thickness.py          |  6 ++--
 qim3d/processing/_structure_tensor.py         |  4 +--
 .../_common_segmentation_methods.py           |  4 +--
 qim3d/viz/_cc.py                              |  4 +--
 qim3d/viz/_data_exploration.py                | 14 ++++----
 qim3d/viz/_detection.py                       |  2 +-
 qim3d/viz/_local_thickness.py                 |  2 +-
 qim3d/viz/_structure_tensor.py                |  2 +-
 qim3d/viz/colormaps/_qim_colors.py            |  2 +-
 qim3d/viz/colormaps/_segmentation.py          |  6 ++--
 37 files changed, 146 insertions(+), 123 deletions(-)
 delete mode 100644 docs/datahandling.md
 rename docs/{ => doc/cli}/cli.md (91%)
 create mode 100644 docs/doc/data_handling/generate.md
 create mode 100644 docs/doc/data_handling/io.md
 rename docs/{ => doc/gui}/gui.md (81%)
 rename docs/{ => doc/image_analysis}/detection.md (100%)
 rename docs/{ => doc/image_analysis}/features.md (100%)
 rename docs/{ => doc/image_analysis}/filters.md (100%)
 create mode 100644 docs/doc/image_analysis/mesh.md
 rename docs/{ => doc/image_analysis}/operations.md (100%)
 rename docs/{ => doc/image_analysis}/processing.md (100%)
 rename docs/{ => doc/image_analysis}/segmentation.md (100%)
 rename docs/{ => doc/ml}/models.md (82%)
 rename docs/{ => doc/releases}/releases.md (87%)
 rename docs/{ => doc/visualization}/viz.md (95%)
 delete mode 100644 docs/utils.md

diff --git a/docs/datahandling.md b/docs/datahandling.md
deleted file mode 100644
index 894f8fed..00000000
--- a/docs/datahandling.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# Data handling
-Dealing with volumetric data can be done by `qim3d` for the most common image formats available. This includes loading, saving and file conversions.
-
-Currently, it is possible to directly load `tiff`, `h5`, `nii`,`txm`, `vol` and common `PIL` formats using one single function.
-
-Additionally, synthtetic volumetric data can be generated using the `generate` module.
-
-::: qim3d.io
-    options:
-        members:
-            - load            
-            - save
-            - Downloader
-            - export_ome_zarr
-            - import_ome_zarr
-            - save_mesh
-            - load_mesh
-
-::: qim3d.mesh
-    options:
-        members:
-            - from_volume
-
-::: qim3d.generate
-    options:
-        members:
-            - noise_object
-            - noise_object_collection
diff --git a/docs/cli.md b/docs/doc/cli/cli.md
similarity index 91%
rename from docs/cli.md
rename to docs/doc/cli/cli.md
index c2f878cc..58fae7e2 100644
--- a/docs/cli.md
+++ b/docs/doc/cli/cli.md
@@ -1,3 +1,8 @@
+---
+hide:
+  - navigation
+---
+
 # Command line interface
 The library also includes a command line interface for easy access to some functionalities, and the convenience of using qim3d directly from your terminal. 
 
@@ -7,7 +12,7 @@ This offers quick interactions, making it ideal for tasks that require efficienc
     ``` title="Command"
     qim3d gui --data-explorer
     ```
-    ![CLI Data Explorer](assets/screenshots/CLI-data_explorer.gif)
+    ![CLI Data Explorer](../../assets/screenshots/CLI-data_explorer.gif)
 
 
 ## Graphical User Interfaces
@@ -50,7 +55,7 @@ The command line interface allows you to run graphical user interfaces directly
 
     In this case, the GUI will be available at `http://127.0.0.1:7860`
 
-    ![Data explorer GUI](assets/screenshots/GUI-data_explorer.png)
+    ![Data explorer GUI](../../assets/screenshots/GUI-data_explorer.png)
 
 
 !!! Example
@@ -82,7 +87,7 @@ The command line interface allows you to run graphical user interfaces directly
 
     In this case, the GUI will be available at `http://127.0.0.1:47326/gui/fima/47326/`
 
-    ![Local thickness GUI](assets/screenshots/GUI-local_thickness.png)
+    ![Local thickness GUI](../../assets/screenshots/GUI-local_thickness.png)
 
 
 
@@ -127,7 +132,7 @@ You can launch volumetric visualizations directly from the command line. By defa
 
     A new tab in the default browser will be open with the visualization:
 
-    ![itk-vtk-viewer](assets/screenshots/itk-vtk-viewer.gif)
+    ![itk-vtk-viewer](../../assets/screenshots/itk-vtk-viewer.gif)
 
 !!! Example "Example using k3d"
     ``` title="Command"
@@ -152,7 +157,7 @@ You can launch volumetric visualizations directly from the command line. By defa
     ```
     And a new tab will be opened in the default browser with the interactive k3d plot:
 
-    ![CLI k3d](assets/screenshots/CLI-k3d.png){ width="512" }
+    ![CLI k3d](../../assets/screenshots/CLI-k3d.png){ width="512" }
 
 Or an specific path for destination can be used. We can also choose to not open the browser:
 
@@ -196,32 +201,32 @@ File previewing can also be done directly from the command line interface to pre
     qim3d preview blobs_256x256x256.tif 
     ```
 
-    ![CLI k3d](assets/preview/default.png){ width="512" }
+    ![CLI k3d](../../assets/preview/default.png){ width="512" }
 
 !!! Example
     ``` title="Command"
     qim3d preview blobs_256x256x256.tif --resolution 30
     ```
 
-    ![CLI k3d](assets/preview/res30.png){ width="512" }
+    ![CLI k3d](../../assets/preview/res30.png){ width="512" }
 
 !!! Example
     ``` title="Command"
     qim3d preview blobs_256x256x256.tif --resolution 50 --axis 1
     ```
 
-    ![CLI k3d](assets/preview/axis1.png){ width="512" }
+    ![CLI k3d](../../assets/preview/axis1.png){ width="512" }
 
 !!! Example
     ``` title="Command"
     qim3d preview blobs_256x256x256.tif --resolution 50 --axis 2 --slice 0
     ```
 
-    ![CLI k3d](assets/preview/relativeIntensity.png){ width="512" }
+    ![CLI k3d](../../assets/preview/relativeIntensity.png){ width="512" }
 
 !!! Example
     ``` title="Command"
     qim3d preview qim_logo.png --resolution 40
     ```
 
-    ![CLI k3d](assets/preview/qimLogo.png){ width="512" }
+    ![CLI k3d](../../assets/preview/qimLogo.png){ width="512" }
diff --git a/docs/doc/data_handling/generate.md b/docs/doc/data_handling/generate.md
new file mode 100644
index 00000000..6a414d16
--- /dev/null
+++ b/docs/doc/data_handling/generate.md
@@ -0,0 +1,7 @@
+# Synthetic data generation
+
+::: qim3d.generate
+    options:
+        members:
+            - noise_object
+            - noise_object_collection
diff --git a/docs/doc/data_handling/io.md b/docs/doc/data_handling/io.md
new file mode 100644
index 00000000..82c984bb
--- /dev/null
+++ b/docs/doc/data_handling/io.md
@@ -0,0 +1,12 @@
+# Input and output
+
+::: qim3d.io
+    options:
+        members:
+            - load
+            - save
+            - Downloader
+            - export_ome_zarr
+            - import_ome_zarr
+            - save_mesh
+            - load_mesh
\ No newline at end of file
diff --git a/docs/gui.md b/docs/doc/gui/gui.md
similarity index 81%
rename from docs/gui.md
rename to docs/doc/gui/gui.md
index ef996896..681041fc 100644
--- a/docs/gui.md
+++ b/docs/doc/gui/gui.md
@@ -1,3 +1,8 @@
+---
+hide:
+  - navigation
+---
+
 # Graphical User Interfaces
 
 The `qim3d` library provides a set of custom made GUIs that ease the interaction with the available tools.
@@ -21,17 +26,17 @@ For details see [here](cli.md#qim3d-gui).
 ::: qim3d.gui.data_explorer
     options:
         members: False
-![Data explorer GUI](assets/screenshots/GUI-data_explorer.png)
+![Data explorer GUI](../../assets/screenshots/GUI-data_explorer.png)
 
 ::: qim3d.gui.local_thickness
     options:
         members: False
-![Local thickness GUI](assets/screenshots/GUI-local_thickness.png)
+![Local thickness GUI](../../assets/screenshots/GUI-local_thickness.png)
 
 ::: qim3d.gui.iso3d
     options:
         members: False
-![Iso3d GUI](assets/screenshots/GUI-iso3d.png)
+![Iso3d GUI](../../assets/screenshots/GUI-iso3d.png)
 
 ::: qim3d.gui.annotation_tool
     options:
diff --git a/docs/detection.md b/docs/doc/image_analysis/detection.md
similarity index 100%
rename from docs/detection.md
rename to docs/doc/image_analysis/detection.md
diff --git a/docs/features.md b/docs/doc/image_analysis/features.md
similarity index 100%
rename from docs/features.md
rename to docs/doc/image_analysis/features.md
diff --git a/docs/filters.md b/docs/doc/image_analysis/filters.md
similarity index 100%
rename from docs/filters.md
rename to docs/doc/image_analysis/filters.md
diff --git a/docs/doc/image_analysis/mesh.md b/docs/doc/image_analysis/mesh.md
new file mode 100644
index 00000000..bcedeb55
--- /dev/null
+++ b/docs/doc/image_analysis/mesh.md
@@ -0,0 +1,4 @@
+::: qim3d.mesh
+    options:
+        members:
+            - from_volume
diff --git a/docs/operations.md b/docs/doc/image_analysis/operations.md
similarity index 100%
rename from docs/operations.md
rename to docs/doc/image_analysis/operations.md
diff --git a/docs/processing.md b/docs/doc/image_analysis/processing.md
similarity index 100%
rename from docs/processing.md
rename to docs/doc/image_analysis/processing.md
diff --git a/docs/segmentation.md b/docs/doc/image_analysis/segmentation.md
similarity index 100%
rename from docs/segmentation.md
rename to docs/doc/image_analysis/segmentation.md
diff --git a/docs/models.md b/docs/doc/ml/models.md
similarity index 82%
rename from docs/models.md
rename to docs/doc/ml/models.md
index a3e0f840..af961f70 100644
--- a/docs/models.md
+++ b/docs/doc/ml/models.md
@@ -1,3 +1,9 @@
+---
+hide:
+  - navigation
+  - toc
+---
+
 # Machine learning models
 
 The `qim3d` library aims to ease the creation of ML models for volumetric images
diff --git a/docs/releases.md b/docs/doc/releases/releases.md
similarity index 87%
rename from docs/releases.md
rename to docs/doc/releases/releases.md
index abbd8177..dcc9c2e2 100644
--- a/docs/releases.md
+++ b/docs/doc/releases/releases.md
@@ -1,3 +1,9 @@
+---
+hide:
+  - navigation
+  
+---
+
 # Release History
 [![PyPI version](https://badge.fury.io/py/qim3d.svg)](https://badge.fury.io/py/qim3d)
 [![Downloads](https://static.pepy.tech/badge/qim3d)](https://pepy.tech/project/qim3d)
@@ -19,18 +25,18 @@ And remember to keep your pip installation [up to date](index.md/#get-the-latest
 
 ### v0.4.4 (11/10/2024)
 
-- Introduction of `itk-vtk-viewer` for OME-Zarr data visualization 🎉 ![itk-vtk-viewer](assets/screenshots/itk-vtk-viewer.gif)
+- Introduction of `itk-vtk-viewer` for OME-Zarr data visualization 🎉 ![itk-vtk-viewer](../../assets/screenshots/itk-vtk-viewer.gif)
 
 
 ### v0.4.3 (02/10/2024)
 
 - Updated requirements
-- Introduction of mesh generation, visualization, saving and loading 🎉  ![Mesh generation](assets/screenshots/releases/mesh_generation.png)
+- Introduction of mesh generation, visualization, saving and loading 🎉  ![Mesh generation](../../assets/screenshots/releases/mesh_generation.png)
 
 ### v0.4.2 (30/09/2024)
 
 - Export and import is now possible in the OME-Zarr standard, including multi-scale datasets.
-- Filters now have the option to use Dask when available ![Filters with dask](assets/screenshots/releases/filters_with_dask.png)
+- Filters now have the option to use Dask when available ![Filters with dask](../../assets/screenshots/releases/filters_with_dask.png)
 
 
 ### v0.4.1 (30/07/2024)
@@ -50,9 +56,9 @@ And remember to keep your pip installation [up to date](index.md/#get-the-latest
 - Loading and saving for Zarr files
 - File convertion using the CLI, including Zarr
 - Refactoring for the GUIs
-- Color visualization for structure tensor ![Color visualization for structure tensor](assets/screenshots/releases/qim3d-structure_tensor_with_colors.gif)
+- Color visualization for structure tensor ![Color visualization for structure tensor](../../assets/screenshots/releases/qim3d-structure_tensor_with_colors.gif)
 - Refactoring for synthetic data generation, from `utils` to `generate`
-- Introduction of `qim3d.generate.collection` 🎉 ![Introduction of `qim3d.generate.collection`](assets/screenshots/releases/qim3d-generate_collection.gif)
+- Introduction of `qim3d.generate.collection` 🎉 ![Introduction of `qim3d.generate.collection`](../../assets/screenshots/releases/qim3d-generate_collection.gif)
 
 ### v0.3.8 (20/06/2024)
 
@@ -61,22 +67,22 @@ And remember to keep your pip installation [up to date](index.md/#get-the-latest
 ### v0.3.7 (17/06/2024)
 
 - Performance improvements when importing 
-- Refactoring for blob detection ![Refactoring for blob detection](assets/screenshots/releases/qim3d-blob_detection_refactoring.gif)
+- Refactoring for blob detection ![Refactoring for blob detection](../../assets/screenshots/releases/qim3d-blob_detection_refactoring.gif)
 
 
 ### v0.3.6 (30/05/2024)
 
 - Refactoring for performance improvement
 - Welcome message for the CLI
-- Introduction of `qim3d.processing.fade_mask` 🎉 ![Introduction of `qim3d.processing.fade_mask`](assets/screenshots/releases/qim3d-fade_viz.gif)
+- Introduction of `qim3d.processing.fade_mask` 🎉 ![Introduction of `qim3d.processing.fade_mask`](../../assets/screenshots/releases/qim3d-fade_viz.gif)
 
 
 
 ### v0.3.5 (27/05/2024)
 
 - Added runtime and memory usage in the documentation
-- Introduction of `qim3d.utils.generate_volume` 🎉 ![Introduction of `qim3d.utils.generate_volume`](assets/screenshots/releases/qim3d-synthetic_volume.gif)
-- CLI refactoring, adding welcome message to the user ![CLI refactoring](assets/screenshots/releases/qim3d-CLI_welcome_message.png)
+- Introduction of `qim3d.utils.generate_volume` 🎉 ![Introduction of `qim3d.utils.generate_volume`](../../assets/screenshots/releases/qim3d-synthetic_volume.gif)
+- CLI refactoring, adding welcome message to the user ![CLI refactoring](../../assets/screenshots/releases/qim3d-CLI_welcome_message.png)
 - Introduction of `preview` CLI 🎉
 
 
diff --git a/docs/viz.md b/docs/doc/visualization/viz.md
similarity index 95%
rename from docs/viz.md
rename to docs/doc/visualization/viz.md
index c5386089..0f22a927 100644
--- a/docs/viz.md
+++ b/docs/doc/visualization/viz.md
@@ -1,3 +1,8 @@
+---
+hide:
+  - navigation
+---
+
 # Data visualization
 The `qim3d` library aims to provide easy ways to explore and get insights from volumetric data. 
 
diff --git a/docs/index.md b/docs/index.md
index eddb3a9b..2afac808 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -1,3 +1,8 @@
+---
+hide:
+  - navigation
+---
+
 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
 
 <audio id="audio" src="assets/qim3d.mp3"></audio>
@@ -215,14 +220,16 @@ Below is a list of contributors to the project, arranged in chronological order
 
 | Author                      |   Commits | First commit |
 |:----------------------------|----------:|-------------:|
-| Felipe Delestro             |       231 | 2023-05-12   |
+| Felipe Delestro             |       254 | 2023-05-12   |
 | Stefan Engelmann Jensen     |        29 | 2023-06-29   |
 | Oskar Kristoffersen         |        15 | 2023-07-05   |
-| Christian Kento Rasmussen   |        22 | 2024-02-01   |
-| Alessia Saccardo            |        13 | 2024-02-19   |
-| David Grundfest             |        16 | 2024-04-12   |
-| Anna Bøgevang Ekner         |         6 | 2024-04-18   |
-| David Diamond Wang Johansen |         1 | 2024-10-31   |
+| Christian Kento Rasmussen   |        23 | 2024-02-01   |
+| Alessia Saccardo            |        14 | 2024-02-19   |
+| David Grundfest             |        19 | 2024-04-12   |
+| Anna Bøgevang Ekner         |         7 | 2024-04-18   |
+| David Diamond Wang Johansen |         2 | 2024-10-31   |
+| Oscar Flensburg Clausen     |         5 | 2024-11-20   |
+| Hans Martin Kjer            |         1 | 2024-12-02   |
 
 
 ## Support
diff --git a/docs/utils.md b/docs/utils.md
deleted file mode 100644
index 3becb903..00000000
--- a/docs/utils.md
+++ /dev/null
@@ -1,8 +0,0 @@
-# Utils
-
-A set of tools to ease managment of the system, with the common needs for large data in mind.
-
-::: qim3d.utils
-    options:
-      members:
-        - Memory
\ No newline at end of file
diff --git a/mkdocs.yml b/mkdocs.yml
index 10c59f55..cfcd31f0 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -7,20 +7,22 @@ repo_name: Gitlab
 
 
 nav:
-  - qim3d: index.md
-  - Data handling: datahandling.md
-  - Visualization: viz.md
-  - Features: features.md
-  - Filters: filters.md
-  - Detection: detection.md
-  - Segmentation: segmentation.md
-  - Operations: operations.md
-  - Processing: processing.md
-  - ML Models: models.md
-  - GUIs: gui.md
-  - CLI: cli.md
-
-  - Release history: releases.md
+  - Data handling:
+    - Input and Output: doc/data_handling/io.md
+    - Synthetic data: doc/data_handling/generate.md
+  - Visualization: doc/visualization/viz.md
+  - Image analysis:
+    - Features: doc/image_analysis/features.md
+    - Filters: doc/image_analysis/filters.md
+    - Detection: doc/image_analysis/detection.md
+    - Segmentation: doc/image_analysis/segmentation.md
+    - Operations: doc/image_analysis/operations.md
+    - Processing: doc/image_analysis/processing.md
+    - Meshes: doc/image_analysis/mesh.md
+  - Machine Learning: doc/ml/models.md
+  - Graphical User Interfaces: doc/gui/gui.md
+  - Command Line Interface: doc/cli/cli.md
+  - Release history: doc/releases/releases.md
 
 theme:
   language: en 
@@ -35,7 +37,7 @@ theme:
     - navigation.expand
     - navigation.instant
     # - navigation.tracking
-    - toc.integrate
+    # - toc.integrate
     # - toc.follow
     - search.suggest
     # - content.tabs.link
@@ -87,6 +89,6 @@ plugins:
               show_source: true
               show_root_full_path: true
               show_object_full_path: true
-              show_symbol_type_heading: true
+              show_symbol_type_heading: false
               show_symbol_type_toc: false
               separate_signature: true
\ No newline at end of file
diff --git a/qim3d/detection/_common_detection_methods.py b/qim3d/detection/_common_detection_methods.py
index 71a4b348..3049baef 100644
--- a/qim3d/detection/_common_detection_methods.py
+++ b/qim3d/detection/_common_detection_methods.py
@@ -56,13 +56,13 @@ def blobs(
             # Visualize detected blobs
             qim3d.viz.circles(blobs, vol, alpha=0.8, color='blue')
             ```
-            ![blob detection](assets/screenshots/blob_detection.gif)    
+            ![blob detection](../../assets/screenshots/blob_detection.gif)    
 
             ```python
             # Visualize binary binary_volume
             qim3d.viz.slicer(binary_volume)
             ```
-            ![blob detection](assets/screenshots/blob_get_mask.gif)
+            ![blob detection](../../assets/screenshots/blob_get_mask.gif)
     """
     from skimage.feature import blob_dog
 
diff --git a/qim3d/filters/_common_filter_methods.py b/qim3d/filters/_common_filter_methods.py
index bc4b02f0..4faf7365 100644
--- a/qim3d/filters/_common_filter_methods.py
+++ b/qim3d/filters/_common_filter_methods.py
@@ -141,8 +141,8 @@ class Pipeline:
         # Show filtered
         fig2 = qim3d.viz.slices_grid(vol_filtered, num_slices=5, display_figure=True)
         ```
-        ![original volume](assets/screenshots/filter_original.png)
-        ![filtered volume](assets/screenshots/filter_processed.png)
+        ![original volume](../../assets/screenshots/filter_original.png)
+        ![filtered volume](../../assets/screenshots/filter_processed.png)
 
     """
 
diff --git a/qim3d/generate/_aggregators.py b/qim3d/generate/_aggregators.py
index 0eb09086..c1d834c6 100644
--- a/qim3d/generate/_aggregators.py
+++ b/qim3d/generate/_aggregators.py
@@ -199,14 +199,14 @@ def noise_object_collection(
         ```python
         qim3d.viz.slicer(synthetic_collection)
         ```
-        ![synthetic_collection](assets/screenshots/synthetic_collection_default.gif)
+        ![synthetic_collection](../../assets/screenshots/synthetic_collection_default.gif)
 
         ```python
         # Visualize labels
         cmap = qim3d.viz.colormaps.segmentation(num_labels=num_objects)
         qim3d.viz.slicer(labels, color_map=cmap, value_max=num_objects)
         ```
-        ![synthetic_collection](assets/screenshots/synthetic_collection_default_labels.gif)
+        ![synthetic_collection](../../assets/screenshots/synthetic_collection_default_labels.gif)
 
     Example:
         ```python
@@ -257,7 +257,7 @@ def noise_object_collection(
         # Visualize slices
         qim3d.viz.slices_grid(vol, num_slices=15)
         ```
-        ![synthetic_collection_cylinder](assets/screenshots/synthetic_collection_cylinder_slices.png)    
+        ![synthetic_collection_cylinder](../../assets/screenshots/synthetic_collection_cylinder_slices.png)    
         
     Example:
         ```python
@@ -287,7 +287,7 @@ def noise_object_collection(
         # Visualize slices
         qim3d.viz.slices_grid(vol, num_slices=15, slice_axis=1)
         ```
-        ![synthetic_collection_tube](assets/screenshots/synthetic_collection_tube_slices.png)
+        ![synthetic_collection_tube](../../assets/screenshots/synthetic_collection_tube_slices.png)
     """
     if verbose:
         original_log_level = log.getEffectiveLevel()
diff --git a/qim3d/generate/_generators.py b/qim3d/generate/_generators.py
index 15578a67..ed54b8b4 100644
--- a/qim3d/generate/_generators.py
+++ b/qim3d/generate/_generators.py
@@ -54,7 +54,7 @@ def noise_object(
         # Visualize slices
         qim3d.viz.slices_grid(vol, value_min = 0, value_max = 255, num_slices = 15)
         ```
-        ![synthetic_blob](assets/screenshots/synthetic_blob_slices.png)
+        ![synthetic_blob](../../assets/screenshots/synthetic_blob_slices.png)
 
     Example:
         ```python
@@ -78,7 +78,7 @@ def noise_object(
         # Visualize slices
         qim3d.viz.slices_grid(vol, num_slices=15, slice_axis=1)
         ```
-        ![synthetic_blob_cylinder_slice](assets/screenshots/synthetic_blob_cylinder_slice.png)
+        ![synthetic_blob_cylinder_slice](../../assets/screenshots/synthetic_blob_cylinder_slice.png)
 
     Example:
         ```python
@@ -102,7 +102,7 @@ def noise_object(
         # Visualize
         qim3d.viz.slices_grid(vol, num_slices=15)
         ```
-        ![synthetic_blob_tube_slice](assets/screenshots/synthetic_blob_tube_slice.png)    
+        ![synthetic_blob_tube_slice](../../assets/screenshots/synthetic_blob_tube_slice.png)    
     """
 
     if not isinstance(final_shape, tuple) or len(final_shape) != 3:
diff --git a/qim3d/gui/annotation_tool.py b/qim3d/gui/annotation_tool.py
index a3cac14e..8f386da3 100644
--- a/qim3d/gui/annotation_tool.py
+++ b/qim3d/gui/annotation_tool.py
@@ -16,7 +16,7 @@ annotation_tool = qim3d.gui.annotation_tool.Interface()
 # We can directly pass the image we loaded to the interface
 app = annotation_tool.launch(vol[0])
 ```
-![gui-annotation_tool](assets/screenshots/gui-annotation_tool.gif)
+![gui-annotation_tool](../../assets/screenshots/gui-annotation_tool.gif)
 
 """
 
diff --git a/qim3d/gui/layers2d.py b/qim3d/gui/layers2d.py
index 8b7ae441..5a25f6e9 100644
--- a/qim3d/gui/layers2d.py
+++ b/qim3d/gui/layers2d.py
@@ -13,7 +13,7 @@ import qim3d
 layers = qim3d.gui.layers2d.Interface()
 app = layers.launch()
 ```
-![gui-layers](assets/screenshots/GUI-layers.png)
+![gui-layers](../../assets/screenshots/GUI-layers.png)
 
 """
 
diff --git a/qim3d/io/_downloader.py b/qim3d/io/_downloader.py
index 3d7724bb..89e3759d 100644
--- a/qim3d/io/_downloader.py
+++ b/qim3d/io/_downloader.py
@@ -54,7 +54,7 @@ class Downloader:
 
         qim3d.viz.slicer_orthogonal(data, color_map="magma")
         ```
-        ![cowry shell](assets/screenshots/cowry_shell_slicer.gif)
+        ![cowry shell](../../assets/screenshots/cowry_shell_slicer.gif)
     """
 
     def __init__(self):
diff --git a/qim3d/operations/_common_operations_methods.py b/qim3d/operations/_common_operations_methods.py
index 42932d5c..a83b25d2 100644
--- a/qim3d/operations/_common_operations_methods.py
+++ b/qim3d/operations/_common_operations_methods.py
@@ -32,7 +32,7 @@ def remove_background(
         vol = qim3d.examples.cement_128x128x128
         fig1 = qim3d.viz.slices_grid(vol, value_min=0, value_max=255, num_slices=5, display_figure=True)
         ```
-        ![operations-remove_background_before](assets/screenshots/operations-remove_background_before.png)
+        ![operations-remove_background_before](../../assets/screenshots/operations-remove_background_before.png)
 
         ```python
         vol_filtered  = qim3d.operations.remove_background(vol,
@@ -40,7 +40,7 @@ def remove_background(
                                                               background="bright")
         fig2 = qim3d.viz.slices_grid(vol_filtered, value_min=0, value_max=255, num_slices=5, display_figure=True)
         ```
-        ![operations-remove_background_after](assets/screenshots/operations-remove_background_after.png)
+        ![operations-remove_background_after](../../assets/screenshots/operations-remove_background_after.png)
     """
 
     # Create a pipeline with a median filter and a tophat filter
@@ -85,7 +85,7 @@ def fade_mask(
         qim3d.viz.volumetric(vol)
         ```
         Image before edge fading has visible artifacts from the support. Which obscures the object of interest.
-        ![operations-edge_fade_before](assets/screenshots/operations-edge_fade_before.png)
+        ![operations-edge_fade_before](../../assets/screenshots/operations-edge_fade_before.png)
 
         ```python
         import qim3d
@@ -93,7 +93,7 @@ def fade_mask(
         qim3d.viz.volumetrics(vol_faded)
         ```
         Afterwards the artifacts are faded out, making the object of interest more visible for visualization purposes.
-        ![operations-edge_fade_after](assets/screenshots/operations-edge_fade_after.png)
+        ![operations-edge_fade_after](../../assets/screenshots/operations-edge_fade_after.png)
 
     """
     if 0 > axis or axis >= vol.ndim:
diff --git a/qim3d/processing/_layers.py b/qim3d/processing/_layers.py
index 7e7ef930..b77a4834 100644
--- a/qim3d/processing/_layers.py
+++ b/qim3d/processing/_layers.py
@@ -47,8 +47,8 @@ def segment_layers(data: np.ndarray,
         for layer_line in layer_lines:
             plt.plot(layer_line, linewidth = 3)
         ```
-        ![layer_segmentation](assets/screenshots/layers.png)
-        ![layer_segmentation](assets/screenshots/segmented_layers.png)
+        ![layer_segmentation](../../assets/screenshots/layers.png)
+        ![layer_segmentation](../../assets/screenshots/segmented_layers.png)
 
     """
     if isinstance(data, np.ndarray):
diff --git a/qim3d/processing/_local_thickness.py b/qim3d/processing/_local_thickness.py
index a38e9423..12d6f19b 100644
--- a/qim3d/processing/_local_thickness.py
+++ b/qim3d/processing/_local_thickness.py
@@ -43,7 +43,7 @@ def local_thickness(
         vol = qim3d.examples.fly_150x256x256
         lt_vol = qim3d.processing.local_thickness(vol, visualize=True, axis=0)
         ```
-        ![local thickness 3d](assets/screenshots/local_thickness_3d.gif)
+        ![local thickness 3d](../../assets/screenshots/local_thickness_3d.gif)
 
         ```python
         import qim3d
@@ -56,10 +56,10 @@ def local_thickness(
         lt_blobs = qim3d.processing.local_thickness(slice, visualize=True)
 
         ```
-        ![local thickness 2d](assets/screenshots/local_thickness_2d.png)
+        ![local thickness 2d](../../assets/screenshots/local_thickness_2d.png)
 
     !!! info "Runtime and memory usage of the local thickness method for different volume sizes"
-        ![local thickness estimate time and mem](assets/screenshots/Local_thickness_time_mem_estimation.png)
+        ![local thickness estimate time and mem](../../assets/screenshots/Local_thickness_time_mem_estimation.png)
 
         Performance computed on Intel(R) Xeon(R) Gold 6226 CPU @ 2.70GHz.
 
diff --git a/qim3d/processing/_structure_tensor.py b/qim3d/processing/_structure_tensor.py
index f4343c97..de735212 100644
--- a/qim3d/processing/_structure_tensor.py
+++ b/qim3d/processing/_structure_tensor.py
@@ -47,11 +47,11 @@ def structure_tensor(
         vol = qim3d.examples.NT_128x128x128
         val, vec = qim3d.processing.structure_tensor(vol, visualize = True, axis = 2)
         ```
-        ![structure tensor](assets/screenshots/structure_tensor_visualization.gif)
+        ![structure tensor](../../assets/screenshots/structure_tensor_visualization.gif)
 
 
     !!! info "Runtime and memory usage of the structure tensor method for different volume sizes"
-        ![structure tensor estimate time and mem](assets/screenshots/Structure_tensor_time_mem_estimation.png)
+        ![structure tensor estimate time and mem](../../assets/screenshots/Structure_tensor_time_mem_estimation.png)
 
         Performance computed on Intel(R) Xeon(R) Gold 6226 CPU @ 2.70GHz.
 
diff --git a/qim3d/segmentation/_common_segmentation_methods.py b/qim3d/segmentation/_common_segmentation_methods.py
index 6baff849..fc647459 100644
--- a/qim3d/segmentation/_common_segmentation_methods.py
+++ b/qim3d/segmentation/_common_segmentation_methods.py
@@ -26,7 +26,7 @@ def watershed(bin_vol: np.ndarray, min_distance: int = 5) -> tuple[np.ndarray, i
 
         fig1 = qim3d.viz.slices_grid(bin_vol, slice_axis=1, display_figure=True)
         ```
-        ![operations-watershed_before](assets/screenshots/operations-watershed_before.png)
+        ![operations-watershed_before](../../assets/screenshots/operations-watershed_before.png)
 
         ```python
         labeled_volume, num_labels = qim3d.segmentation.watershed(bin_vol)
@@ -34,7 +34,7 @@ def watershed(bin_vol: np.ndarray, min_distance: int = 5) -> tuple[np.ndarray, i
         cmap = qim3d.viz.colormaps.segmentation(num_labels)
         fig2 = qim3d.viz.slices_grid(labeled_volume, slice_axis=1, color_map=cmap, display_figure=True)
         ```
-        ![operations-watershed_after](assets/screenshots/operations-watershed_after.png)
+        ![operations-watershed_after](../../assets/screenshots/operations-watershed_after.png)
 
     """
     import skimage
diff --git a/qim3d/viz/_cc.py b/qim3d/viz/_cc.py
index 24d047af..8ace8abf 100644
--- a/qim3d/viz/_cc.py
+++ b/qim3d/viz/_cc.py
@@ -43,8 +43,8 @@ def plot_cc(
         qim3d.viz.plot_cc(cc, crop=True, display_figure=True, overlay=None, num_slices=5, component_indexs=[4,6,7])
         qim3d.viz.plot_cc(cc, crop=True, display_figure=True, overlay=vol, num_slices=5, component_indexs=[4,6,7])
         ```
-        ![plot_cc_no_overlay](assets/screenshots/plot_cc_no_overlay.png)
-        ![plot_cc_overlay](assets/screenshots/plot_cc_overlay.png)
+        ![plot_cc_no_overlay](../../assets/screenshots/plot_cc_no_overlay.png)
+        ![plot_cc_overlay](../../assets/screenshots/plot_cc_overlay.png)
     """
     # if no components are given, plot the first max_cc_to_plot=32 components
     if component_indexs is None:
diff --git a/qim3d/viz/_data_exploration.py b/qim3d/viz/_data_exploration.py
index c754604d..3544af79 100644
--- a/qim3d/viz/_data_exploration.py
+++ b/qim3d/viz/_data_exploration.py
@@ -81,7 +81,7 @@ def slices_grid(
         vol = qim3d.examples.shell_225x128x128
         qim3d.viz.slices_grid(vol, num_slices=15)
         ```
-        ![Grid of slices](assets/screenshots/viz-slices.png)
+        ![Grid of slices](../../assets/screenshots/viz-slices.png)
     """
     if image_size:
         image_height = image_size
@@ -354,7 +354,7 @@ def slicer(
         vol = qim3d.examples.bone_128x128x128
         qim3d.viz.slicer(vol)
         ```
-        ![viz slicer](assets/screenshots/viz-slicer.gif)
+        ![viz slicer](../../assets/screenshots/viz-slicer.gif)
     """
 
     if image_size:
@@ -427,7 +427,7 @@ def slicer_orthogonal(
         vol = qim3d.examples.fly_150x256x256
         qim3d.viz.slicer_orthogonal(vol, color_map="magma")
         ```
-        ![viz slicer_orthogonal](assets/screenshots/viz-orthogonal.gif)
+        ![viz slicer_orthogonal](../../assets/screenshots/viz-orthogonal.gif)
     """
 
     if image_size:
@@ -484,7 +484,7 @@ def fade_mask(
         vol = qim3d.examples.cement_128x128x128
         qim3d.viz.fade_mask(vol)
         ```
-        ![operations-edge_fade_before](assets/screenshots/viz-fade_mask.gif)
+        ![operations-edge_fade_before](../../assets/screenshots/viz-fade_mask.gif)
 
     """
 
@@ -623,7 +623,7 @@ def chunks(zarr_path: str, **kwargs)-> widgets.interactive:
         # Explore chunks
         qim3d.viz.chunks("Escargot.zarr")
         ```
-        ![chunks-visualization](assets/screenshots/chunks_visualization.gif)
+        ![chunks-visualization](../../assets/screenshots/chunks_visualization.gif)
     """
 
     # Load the Zarr dataset
@@ -904,7 +904,7 @@ def histogram(
         vol = qim3d.examples.bone_128x128x128
         qim3d.viz.histogram(vol)
         ```
-        ![viz histogram](assets/screenshots/viz-histogram-vol.png)
+        ![viz histogram](../../assets/screenshots/viz-histogram-vol.png)
 
         ```python
         import qim3d
@@ -912,7 +912,7 @@ def histogram(
         vol = qim3d.examples.bone_128x128x128
         qim3d.viz.histogram(vol, bins=32, slice_idx="middle", axis=1, kde=False, log_scale=True)
         ```
-        ![viz histogram](assets/screenshots/viz-histogram-slice.png)
+        ![viz histogram](../../assets/screenshots/viz-histogram-slice.png)
     """
 
     if not (0 <= axis < volume.ndim):
diff --git a/qim3d/viz/_detection.py b/qim3d/viz/_detection.py
index 200904de..5b0ad9fc 100644
--- a/qim3d/viz/_detection.py
+++ b/qim3d/viz/_detection.py
@@ -46,7 +46,7 @@ def circles(blobs: tuple[float,float,float,float], vol: np.ndarray, alpha: float
         # Visualize detected blobs with circles method
         qim3d.viz.circles(blobs, vol, alpha=0.8, color='blue')
         ```
-        ![blob detection](assets/screenshots/blob_detection.gif)
+        ![blob detection](../../assets/screenshots/blob_detection.gif)
     """
 
     def _slicer(z_slice):
diff --git a/qim3d/viz/_local_thickness.py b/qim3d/viz/_local_thickness.py
index 0f63c641..9336ee32 100644
--- a/qim3d/viz/_local_thickness.py
+++ b/qim3d/viz/_local_thickness.py
@@ -46,7 +46,7 @@ def local_thickness(
         lt_fly = qim3d.processing.local_thickness(fly)
         qim3d.viz.local_thickness(fly, lt_fly, axis=0)
         ```
-        ![local thickness 3d](assets/screenshots/local_thickness_3d.gif)
+        ![local thickness 3d](../../assets/screenshots/local_thickness_3d.gif)
 
         
     """
diff --git a/qim3d/viz/_structure_tensor.py b/qim3d/viz/_structure_tensor.py
index 43fb8b58..13d45e1f 100644
--- a/qim3d/viz/_structure_tensor.py
+++ b/qim3d/viz/_structure_tensor.py
@@ -69,7 +69,7 @@ def vectors(
         # Visualize the structure tensor
         qim3d.viz.vectors(vol, vec, axis = 2, interactive = True)
         ```
-        ![structure tensor](assets/screenshots/structure_tensor_visualization.gif)
+        ![structure tensor](../../assets/screenshots/structure_tensor_visualization.gif)
 
     """
 
diff --git a/qim3d/viz/colormaps/_qim_colors.py b/qim3d/viz/colormaps/_qim_colors.py
index 429151e1..3ac7a400 100644
--- a/qim3d/viz/colormaps/_qim_colors.py
+++ b/qim3d/viz/colormaps/_qim_colors.py
@@ -19,6 +19,6 @@ Example:
 
     display(qim3d.viz.colormaps.qim)
     ```
-    ![colormap objects](assets/screenshots/viz-colormaps-qim.png)
+    ![colormap objects](../../assets/screenshots/viz-colormaps-qim.png)
 """
 colormaps.register(qim)
diff --git a/qim3d/viz/colormaps/_segmentation.py b/qim3d/viz/colormaps/_segmentation.py
index 523714f8..715eb6da 100644
--- a/qim3d/viz/colormaps/_segmentation.py
+++ b/qim3d/viz/colormaps/_segmentation.py
@@ -71,7 +71,7 @@ def segmentation(
         display(cmap_earth)
         display(cmap_ocean)
         ```
-        ![colormap objects](assets/screenshots/viz-colormaps-objects-all.png)
+        ![colormap objects](../../assets/screenshots/viz-colormaps-objects-all.png)
 
         ```python
         import qim3d
@@ -83,7 +83,7 @@ def segmentation(
         color_map = qim3d.viz.colormaps.segmentation(num_labels, style = 'bright')
         qim3d.viz.slicer(labeled_volume, slice_axis = 1, color_map=color_map)
         ```
-        ![colormap objects](assets/screenshots/viz-colormaps-objects.gif)
+        ![colormap objects](../../assets/screenshots/viz-colormaps-objects.gif)
 
     Tip:
         It can be easily used when calling visualization functions as
@@ -95,7 +95,7 @@ def segmentation(
 
     Tip:
         The `min_dist` parameter can be used to control the distance between neighboring colors.
-        ![colormap objects mind_dist](assets/screenshots/viz-colormaps-min_dist.gif)
+        ![colormap objects mind_dist](../../assets/screenshots/viz-colormaps-min_dist.gif)
     """
     from skimage import color
 
-- 
GitLab