├── .gitignore ├── LICENSE.md ├── README.md ├── docs ├── jupyter notebook │ └── Run ShapeAE from notebook.ipynb ├── pre-post-processing │ ├── Calculate IoU .ipynb │ ├── Create cylinder and ellipse shapes.ipynb │ ├── Evaluate and plot features.ipynb │ ├── Extract Features from 2D Microscope.ipynb │ ├── Extract Features from 3D Shapes.ipynb │ ├── Extract features from 2D segmentation.ipynb │ └── Red blood cell random forest classification.ipynb └── sample │ ├── image │ ├── A_cell_clusters000604.tif │ ├── A_cell_clusters000605.tif │ ├── A_cell_clusters000606.tif │ ├── A_cell_clusters000607.tif │ ├── A_cell_clusters000608.tif │ ├── A_cell_clusters000609.tif │ ├── A_cell_clusters000610.tif │ ├── A_cell_clusters000611.tif │ ├── A_cell_clusters000612.tif │ ├── A_cell_clusters000613.tif │ ├── A_cell_clusters000614.tif │ ├── A_cell_clusters000615.tif │ ├── A_cell_clusters000616.tif │ ├── A_cell_clusters000617.tif │ ├── A_cell_clusters000618.tif │ ├── A_cell_clusters000619.tif │ ├── A_cell_clusters000620.tif │ ├── A_cell_clusters000621.tif │ ├── A_cell_clusters000622.tif │ ├── A_cell_clusters000623.tif │ ├── A_cell_clusters000624.tif │ ├── A_cell_clusters000625.tif │ ├── A_cell_clusters000626.tif │ ├── A_cell_clusters000627.tif │ ├── A_cell_clusters000628.tif │ ├── A_cell_clusters000629.tif │ ├── A_cell_clusters000630.tif │ ├── A_cell_clusters000631.tif │ ├── A_cell_clusters000632.tif │ ├── A_cell_clusters000633.tif │ ├── A_cell_clusters000634.tif │ ├── A_cell_clusters000635.tif │ ├── A_cell_clusters000636.tif │ ├── A_cell_clusters000637.tif │ ├── A_cell_clusters000638.tif │ ├── A_cell_clusters000639.tif │ ├── A_cell_clusters000640.tif │ ├── A_cell_clusters000641.tif │ ├── A_cell_clusters000642.tif │ ├── A_cell_clusters000643.tif │ ├── A_cell_clusters000644.tif │ ├── A_cell_clusters000645.tif │ ├── A_cell_clusters000646.tif │ ├── A_cell_clusters000647.tif │ ├── A_cell_clusters000648.tif │ ├── A_cell_clusters000649.tif │ ├── A_cell_clusters000650.tif │ ├── A_cell_clusters000651.tif │ ├── A_cell_clusters000652.tif │ ├── A_cell_clusters000653.tif │ ├── A_cell_clusters000654.tif │ ├── A_cell_clusters000655.tif │ ├── A_cell_clusters000656.tif │ ├── A_cell_clusters000657.tif │ ├── A_cell_clusters000658.tif │ ├── A_cell_clusters000659.tif │ ├── A_cell_clusters000660.tif │ ├── A_cell_clusters000661.tif │ ├── A_cell_clusters000662.tif │ ├── A_cell_clusters000663.tif │ ├── A_cell_clusters000664.tif │ ├── A_cell_clusters000665.tif │ ├── A_cell_clusters000666.tif │ ├── A_cell_clusters000667.tif │ ├── A_cell_clusters000668.tif │ ├── A_cell_clusters000669.tif │ ├── A_cell_clusters000670.tif │ ├── A_cell_clusters000671.tif │ ├── A_cell_clusters000672.tif │ ├── B_keratocytes000673.tif │ ├── B_keratocytes000674.tif │ ├── B_keratocytes000675.tif │ ├── B_keratocytes000676.tif │ ├── B_keratocytes000677.tif │ ├── B_keratocytes000678.tif │ ├── B_keratocytes000679.tif │ ├── B_keratocytes000680.tif │ ├── B_keratocytes000681.tif │ ├── B_keratocytes000682.tif │ ├── B_keratocytes000683.tif │ ├── B_keratocytes000684.tif │ ├── B_keratocytes000685.tif │ ├── B_keratocytes000686.tif │ ├── B_keratocytes000687.tif │ ├── B_keratocytes000688.tif │ ├── B_keratocytes000689.tif │ ├── B_keratocytes000690.tif │ ├── B_keratocytes000691.tif │ ├── B_keratocytes000692.tif │ ├── B_keratocytes000693.tif │ ├── B_keratocytes000694.tif │ ├── B_keratocytes000695.tif │ ├── B_keratocytes000696.tif │ ├── B_keratocytes000697.tif │ ├── B_keratocytes000698.tif │ ├── B_keratocytes000699.tif │ ├── B_keratocytes000700.tif │ ├── B_keratocytes000701.tif │ ├── B_keratocytes000702.tif │ ├── B_keratocytes000703.tif │ ├── C_knizocytes000704.tif │ ├── C_knizocytes000705.tif │ ├── C_knizocytes000706.tif │ ├── C_knizocytes000707.tif │ ├── C_knizocytes000708.tif │ ├── C_knizocytes000709.tif │ ├── C_knizocytes000710.tif │ ├── C_knizocytes000711.tif │ ├── C_knizocytes000712.tif │ ├── C_knizocytes000713.tif │ ├── C_knizocytes000714.tif │ ├── C_knizocytes000715.tif │ ├── C_knizocytes000716.tif │ ├── C_knizocytes000717.tif │ ├── C_knizocytes000718.tif │ ├── C_knizocytes000719.tif │ ├── C_knizocytes000720.tif │ ├── C_knizocytes000721.tif │ ├── C_knizocytes000722.tif │ ├── C_knizocytes000723.tif │ ├── C_knizocytes000724.tif │ ├── C_knizocytes000725.tif │ ├── C_knizocytes000726.tif │ ├── D_multilobate_cells000727.tif │ ├── D_multilobate_cells000728.tif │ ├── D_multilobate_cells000729.tif │ ├── D_multilobate_cells000730.tif │ ├── D_multilobate_cells000731.tif │ ├── D_multilobate_cells000732.tif │ ├── D_multilobate_cells000733.tif │ ├── D_multilobate_cells000734.tif │ ├── D_multilobate_cells000735.tif │ ├── D_multilobate_cells000736.tif │ ├── D_multilobate_cells000737.tif │ └── D_multilobate_cells000738.tif │ ├── mask │ ├── A_cell_clusters000604.tif │ ├── A_cell_clusters000605.tif │ ├── A_cell_clusters000606.tif │ ├── A_cell_clusters000607.tif │ ├── A_cell_clusters000608.tif │ ├── A_cell_clusters000609.tif │ ├── A_cell_clusters000610.tif │ ├── A_cell_clusters000611.tif │ ├── A_cell_clusters000612.tif │ ├── A_cell_clusters000613.tif │ ├── A_cell_clusters000614.tif │ ├── A_cell_clusters000615.tif │ ├── A_cell_clusters000616.tif │ ├── A_cell_clusters000617.tif │ ├── A_cell_clusters000618.tif │ ├── A_cell_clusters000619.tif │ ├── A_cell_clusters000620.tif │ ├── A_cell_clusters000621.tif │ ├── A_cell_clusters000622.tif │ ├── A_cell_clusters000623.tif │ ├── A_cell_clusters000624.tif │ ├── A_cell_clusters000625.tif │ ├── A_cell_clusters000626.tif │ ├── A_cell_clusters000627.tif │ ├── A_cell_clusters000628.tif │ ├── A_cell_clusters000629.tif │ ├── A_cell_clusters000630.tif │ ├── A_cell_clusters000631.tif │ ├── A_cell_clusters000632.tif │ ├── A_cell_clusters000633.tif │ ├── A_cell_clusters000634.tif │ ├── A_cell_clusters000635.tif │ ├── A_cell_clusters000636.tif │ ├── A_cell_clusters000637.tif │ ├── A_cell_clusters000638.tif │ ├── A_cell_clusters000639.tif │ ├── A_cell_clusters000640.tif │ ├── A_cell_clusters000641.tif │ ├── A_cell_clusters000642.tif │ ├── A_cell_clusters000643.tif │ ├── A_cell_clusters000644.tif │ ├── A_cell_clusters000645.tif │ ├── A_cell_clusters000646.tif │ ├── A_cell_clusters000647.tif │ ├── A_cell_clusters000648.tif │ ├── A_cell_clusters000649.tif │ ├── A_cell_clusters000650.tif │ ├── A_cell_clusters000651.tif │ ├── A_cell_clusters000652.tif │ ├── A_cell_clusters000653.tif │ ├── A_cell_clusters000654.tif │ ├── A_cell_clusters000655.tif │ ├── A_cell_clusters000656.tif │ ├── A_cell_clusters000657.tif │ ├── A_cell_clusters000658.tif │ ├── A_cell_clusters000659.tif │ ├── A_cell_clusters000660.tif │ ├── A_cell_clusters000661.tif │ ├── A_cell_clusters000662.tif │ ├── A_cell_clusters000663.tif │ ├── A_cell_clusters000664.tif │ ├── A_cell_clusters000665.tif │ ├── A_cell_clusters000666.tif │ ├── A_cell_clusters000667.tif │ ├── A_cell_clusters000668.tif │ ├── A_cell_clusters000669.tif │ ├── A_cell_clusters000670.tif │ ├── A_cell_clusters000671.tif │ ├── A_cell_clusters000672.tif │ ├── B_keratocytes000673.tif │ ├── B_keratocytes000674.tif │ ├── B_keratocytes000675.tif │ ├── B_keratocytes000676.tif │ ├── B_keratocytes000677.tif │ ├── B_keratocytes000678.tif │ ├── B_keratocytes000679.tif │ ├── B_keratocytes000680.tif │ ├── B_keratocytes000681.tif │ ├── B_keratocytes000682.tif │ ├── B_keratocytes000683.tif │ ├── B_keratocytes000684.tif │ ├── B_keratocytes000685.tif │ ├── B_keratocytes000686.tif │ ├── B_keratocytes000687.tif │ ├── B_keratocytes000688.tif │ ├── B_keratocytes000689.tif │ ├── B_keratocytes000690.tif │ ├── B_keratocytes000691.tif │ ├── B_keratocytes000692.tif │ ├── B_keratocytes000693.tif │ ├── B_keratocytes000694.tif │ ├── B_keratocytes000695.tif │ ├── B_keratocytes000696.tif │ ├── B_keratocytes000697.tif │ ├── B_keratocytes000698.tif │ ├── B_keratocytes000699.tif │ ├── B_keratocytes000700.tif │ ├── B_keratocytes000701.tif │ ├── B_keratocytes000702.tif │ ├── B_keratocytes000703.tif │ ├── C_knizocytes000704.tif │ ├── C_knizocytes000705.tif │ ├── C_knizocytes000706.tif │ ├── C_knizocytes000707.tif │ ├── C_knizocytes000708.tif │ ├── C_knizocytes000709.tif │ ├── C_knizocytes000710.tif │ ├── C_knizocytes000711.tif │ ├── C_knizocytes000712.tif │ ├── C_knizocytes000713.tif │ ├── C_knizocytes000714.tif │ ├── C_knizocytes000715.tif │ ├── C_knizocytes000716.tif │ ├── C_knizocytes000717.tif │ ├── C_knizocytes000718.tif │ ├── C_knizocytes000719.tif │ ├── C_knizocytes000720.tif │ ├── C_knizocytes000721.tif │ ├── C_knizocytes000722.tif │ ├── C_knizocytes000723.tif │ ├── C_knizocytes000724.tif │ ├── C_knizocytes000725.tif │ ├── C_knizocytes000726.tif │ ├── D_multilobate_cells000727.tif │ ├── D_multilobate_cells000728.tif │ ├── D_multilobate_cells000729.tif │ ├── D_multilobate_cells000730.tif │ ├── D_multilobate_cells000731.tif │ ├── D_multilobate_cells000732.tif │ ├── D_multilobate_cells000733.tif │ ├── D_multilobate_cells000734.tif │ ├── D_multilobate_cells000735.tif │ ├── D_multilobate_cells000736.tif │ ├── D_multilobate_cells000737.tif │ └── D_multilobate_cells000738.tif │ ├── obj │ ├── A_cell_clusters000604.tif │ ├── A_cell_clusters000605.tif │ ├── A_cell_clusters000606.tif │ ├── A_cell_clusters000607.tif │ ├── A_cell_clusters000608.tif │ ├── A_cell_clusters000609.tif │ ├── A_cell_clusters000610.tif │ ├── A_cell_clusters000611.tif │ ├── A_cell_clusters000612.tif │ ├── A_cell_clusters000613.tif │ ├── A_cell_clusters000614.tif │ ├── A_cell_clusters000615.tif │ ├── A_cell_clusters000616.tif │ ├── A_cell_clusters000617.tif │ ├── A_cell_clusters000618.tif │ ├── A_cell_clusters000619.tif │ ├── A_cell_clusters000620.tif │ ├── A_cell_clusters000621.tif │ ├── A_cell_clusters000622.tif │ ├── A_cell_clusters000623.tif │ ├── A_cell_clusters000624.tif │ ├── A_cell_clusters000625.tif │ ├── A_cell_clusters000626.tif │ ├── A_cell_clusters000627.tif │ ├── A_cell_clusters000628.tif │ ├── A_cell_clusters000629.tif │ ├── A_cell_clusters000630.tif │ ├── A_cell_clusters000631.tif │ ├── A_cell_clusters000632.tif │ ├── A_cell_clusters000633.tif │ ├── A_cell_clusters000634.tif │ ├── A_cell_clusters000635.tif │ ├── A_cell_clusters000636.tif │ ├── A_cell_clusters000637.tif │ ├── A_cell_clusters000638.tif │ ├── A_cell_clusters000639.tif │ ├── A_cell_clusters000640.tif │ ├── A_cell_clusters000641.tif │ ├── A_cell_clusters000642.tif │ ├── A_cell_clusters000643.tif │ ├── A_cell_clusters000644.tif │ ├── A_cell_clusters000645.tif │ ├── A_cell_clusters000646.tif │ ├── A_cell_clusters000647.tif │ ├── A_cell_clusters000648.tif │ ├── A_cell_clusters000649.tif │ ├── A_cell_clusters000650.tif │ ├── A_cell_clusters000651.tif │ ├── A_cell_clusters000652.tif │ ├── A_cell_clusters000653.tif │ ├── A_cell_clusters000654.tif │ ├── A_cell_clusters000655.tif │ ├── A_cell_clusters000656.tif │ ├── A_cell_clusters000657.tif │ ├── A_cell_clusters000658.tif │ ├── A_cell_clusters000659.tif │ ├── A_cell_clusters000660.tif │ ├── A_cell_clusters000661.tif │ ├── A_cell_clusters000662.tif │ ├── A_cell_clusters000663.tif │ ├── A_cell_clusters000664.tif │ ├── A_cell_clusters000665.tif │ ├── A_cell_clusters000666.tif │ ├── A_cell_clusters000667.tif │ ├── A_cell_clusters000668.tif │ ├── A_cell_clusters000669.tif │ ├── A_cell_clusters000670.tif │ ├── A_cell_clusters000671.tif │ ├── A_cell_clusters000672.tif │ ├── B_keratocytes000673.tif │ ├── B_keratocytes000674.tif │ ├── B_keratocytes000675.tif │ ├── B_keratocytes000676.tif │ ├── B_keratocytes000677.tif │ ├── B_keratocytes000678.tif │ ├── B_keratocytes000679.tif │ ├── B_keratocytes000680.tif │ ├── B_keratocytes000681.tif │ ├── B_keratocytes000682.tif │ ├── B_keratocytes000683.tif │ ├── B_keratocytes000684.tif │ ├── B_keratocytes000685.tif │ ├── B_keratocytes000686.tif │ ├── B_keratocytes000687.tif │ ├── B_keratocytes000688.tif │ ├── B_keratocytes000689.tif │ ├── B_keratocytes000690.tif │ ├── B_keratocytes000691.tif │ ├── B_keratocytes000692.tif │ ├── B_keratocytes000693.tif │ ├── B_keratocytes000694.tif │ ├── B_keratocytes000695.tif │ ├── B_keratocytes000696.tif │ ├── B_keratocytes000697.tif │ ├── B_keratocytes000698.tif │ ├── B_keratocytes000699.tif │ ├── B_keratocytes000700.tif │ ├── B_keratocytes000701.tif │ ├── B_keratocytes000702.tif │ ├── B_keratocytes000703.tif │ ├── C_knizocytes000704.tif │ ├── C_knizocytes000705.tif │ ├── C_knizocytes000706.tif │ ├── C_knizocytes000707.tif │ ├── C_knizocytes000708.tif │ ├── C_knizocytes000709.tif │ ├── C_knizocytes000710.tif │ ├── C_knizocytes000711.tif │ ├── C_knizocytes000712.tif │ ├── C_knizocytes000713.tif │ ├── C_knizocytes000714.tif │ ├── C_knizocytes000715.tif │ ├── C_knizocytes000716.tif │ ├── C_knizocytes000717.tif │ ├── C_knizocytes000718.tif │ ├── C_knizocytes000719.tif │ ├── C_knizocytes000720.tif │ ├── C_knizocytes000721.tif │ ├── C_knizocytes000722.tif │ ├── C_knizocytes000723.tif │ ├── C_knizocytes000724.tif │ ├── C_knizocytes000725.tif │ ├── C_knizocytes000726.tif │ ├── D_multilobate_cells000727.tif │ ├── D_multilobate_cells000728.tif │ ├── D_multilobate_cells000729.tif │ ├── D_multilobate_cells000730.tif │ ├── D_multilobate_cells000731.tif │ ├── D_multilobate_cells000732.tif │ ├── D_multilobate_cells000733.tif │ ├── D_multilobate_cells000734.tif │ ├── D_multilobate_cells000735.tif │ ├── D_multilobate_cells000736.tif │ ├── D_multilobate_cells000737.tif │ └── D_multilobate_cells000738.tif │ └── params.json ├── figures ├── SHAPR_architecture.png ├── SHAPR_logo.png ├── SHAPR_topology.png └── youtube.png ├── pyproject.toml ├── requirements.txt ├── setup.py └── shapr ├── __init__.py ├── __pycache__ ├── __init__.cpython-38.pyc ├── _settings.cpython-38.pyc ├── data_generator.cpython-38.pyc ├── evaluate.cpython-38.pyc ├── main.cpython-38.pyc ├── metrics.cpython-38.pyc ├── model.cpython-38.pyc └── utils.cpython-38.pyc ├── _settings.py ├── config ├── 3d-cell-culture-0D.json ├── 3d-cell-culture-1D.json ├── 3d-cell-culture-2D.json ├── debug.json ├── red-blood-cell-0D.json ├── red-blood-cell-1D.json ├── red-blood-cell-2D.json ├── red-blood-cell.json ├── small-0D.json ├── small-1D.json └── small-2D.json ├── data_generator.py ├── main.py ├── metrics.py ├── model.py ├── params.json ├── run.py ├── run.sh ├── run_train_script.py ├── scripts ├── analyse_interpolation.py ├── analyse_wandb.py ├── calculate_persistence_diagrams.py ├── evaluation.py ├── evaluation │ ├── nuclei.json │ └── red-blood-cell.json ├── make_gallery.py ├── tif_to_nrrd.py ├── tif_to_x3d.py └── viewer.py ├── sweep.sh ├── sweeps ├── debug.yaml ├── red-blood-cell-baseline.yaml ├── red-blood-cell-d0.yaml ├── red-blood-cell-d1.yaml ├── red-blood-cell-d2.yaml ├── red-blood-cell.yaml ├── small.yaml ├── topology-adversarial.yaml ├── topology-all-dims.yaml ├── topology-big-lambda.yaml ├── topology-superlevel.yaml └── topology.yaml ├── tests ├── test_data │ ├── images │ │ ├── A_cell_clusters000604.tif │ │ ├── A_cell_clusters000605.tif │ │ └── A_cell_clusters000606.tif │ └── json │ │ └── settings_testing_params.json └── unit_tests │ ├── test_date_generator.py │ ├── test_metric.py │ ├── test_model.py │ ├── test_settings.py │ └── test_utils.py └── utils.py /.gitignore: -------------------------------------------------------------------------------- 1 | lightning_logs/ 2 | __pycache__/ 3 | 4 | *~ 5 | *.lock 6 | *.swp 7 | 8 | .idea/ 9 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright (C) 2022 Dominik Waibel & Bastian Rieck 2 | 3 | Redistribution and use in source and binary forms, with or without 4 | modification, are permitted provided that the following conditions are 5 | met: 6 | 7 | Redistributions of source code must retain the above copyright notice, 8 | this list of conditions and the following disclaimer. 9 | 10 | Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | 14 | Neither the name of the copyright holder nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 19 | IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 20 | TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 | HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 24 | TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 25 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 26 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 27 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 28 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | -------------------------------------------------------------------------------- /docs/jupyter notebook /Run ShapeAE from notebook.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "This notebook can be used to run ShapeAE locally or in google colab\n", 8 | "\n", 9 | "We first install ShapeAE then set the paths and run it" 10 | ] 11 | }, 12 | { 13 | "cell_type": "code", 14 | "execution_count": 1, 15 | "metadata": {}, 16 | "outputs": [ 17 | { 18 | "name": "stdout", 19 | "output_type": "stream", 20 | "text": [ 21 | "Collecting shapr\n", 22 | " Using cached shapr-0.0.2-py3-none-any.whl (9.3 kB)\n", 23 | "Requirement already satisfied: keras>=2.2.4 in /home/dominik/anaconda3/lib/python3.7/site-packages (from shapr) (2.3.1)\n", 24 | "Requirement already satisfied: imageio in /home/dominik/anaconda3/lib/python3.7/site-packages (from shapr) (2.6.1)\n", 25 | "Requirement already satisfied: scikit-image in /home/dominik/anaconda3/lib/python3.7/site-packages (from shapr) (0.16.2)\n", 26 | "Requirement already satisfied: scikit-learn in /home/dominik/anaconda3/lib/python3.7/site-packages (from shapr) (0.24.0)\n", 27 | "Requirement already satisfied: six>=1.9.0 in /home/dominik/anaconda3/lib/python3.7/site-packages (from keras>=2.2.4->shapr) (1.14.0)\n", 28 | "Requirement already satisfied: numpy>=1.9.1 in /home/dominik/anaconda3/lib/python3.7/site-packages (from keras>=2.2.4->shapr) (1.18.5)\n", 29 | "Requirement already satisfied: scipy>=0.14 in /home/dominik/anaconda3/lib/python3.7/site-packages (from keras>=2.2.4->shapr) (1.4.1)\n", 30 | "Requirement already satisfied: keras-applications>=1.0.6 in /home/dominik/anaconda3/lib/python3.7/site-packages (from keras>=2.2.4->shapr) (1.0.8)\n", 31 | "Requirement already satisfied: h5py in /home/dominik/anaconda3/lib/python3.7/site-packages (from keras>=2.2.4->shapr) (2.10.0)\n", 32 | "Requirement already satisfied: keras-preprocessing>=1.0.5 in /home/dominik/anaconda3/lib/python3.7/site-packages (from keras>=2.2.4->shapr) (1.1.2)\n", 33 | "Requirement already satisfied: pyyaml in /home/dominik/anaconda3/lib/python3.7/site-packages (from keras>=2.2.4->shapr) (5.3)\n", 34 | "Requirement already satisfied: pillow in /home/dominik/anaconda3/lib/python3.7/site-packages (from imageio->shapr) (7.0.0)\n", 35 | "Requirement already satisfied: PyWavelets>=0.4.0 in /home/dominik/anaconda3/lib/python3.7/site-packages (from scikit-image->shapr) (1.1.1)\n", 36 | "Requirement already satisfied: networkx>=2.0 in /home/dominik/anaconda3/lib/python3.7/site-packages (from scikit-image->shapr) (2.4)\n", 37 | "Requirement already satisfied: matplotlib!=3.0.0,>=2.0.0 in /home/dominik/anaconda3/lib/python3.7/site-packages (from scikit-image->shapr) (3.1.3)\n", 38 | "Requirement already satisfied: threadpoolctl>=2.0.0 in /home/dominik/anaconda3/lib/python3.7/site-packages (from scikit-learn->shapr) (2.1.0)\n", 39 | "Requirement already satisfied: joblib>=0.11 in /home/dominik/anaconda3/lib/python3.7/site-packages (from scikit-learn->shapr) (0.14.1)\n", 40 | "Requirement already satisfied: kiwisolver>=1.0.1 in /home/dominik/anaconda3/lib/python3.7/site-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image->shapr) (1.1.0)\n", 41 | "Requirement already satisfied: cycler>=0.10 in /home/dominik/anaconda3/lib/python3.7/site-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image->shapr) (0.10.0)\n", 42 | "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /home/dominik/anaconda3/lib/python3.7/site-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image->shapr) (2.4.6)\n", 43 | "Requirement already satisfied: python-dateutil>=2.1 in /home/dominik/anaconda3/lib/python3.7/site-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image->shapr) (2.8.1)\n", 44 | "Requirement already satisfied: decorator>=4.3.0 in /home/dominik/anaconda3/lib/python3.7/site-packages (from networkx>=2.0->scikit-image->shapr) (4.4.1)\n", 45 | "Requirement already satisfied: setuptools in /home/dominik/anaconda3/lib/python3.7/site-packages (from kiwisolver>=1.0.1->matplotlib!=3.0.0,>=2.0.0->scikit-image->shapr) (45.2.0.post20200210)\n", 46 | "Installing collected packages: shapr\n", 47 | "Successfully installed shapr-0.0.2\n", 48 | "\u001b[33mWARNING: You are using pip version 21.3.1; however, version 22.0.2 is available.\n", 49 | "You should consider upgrading via the '/home/dominik/anaconda3/bin/python3 -m pip install --upgrade pip' command.\u001b[0m\n" 50 | ] 51 | } 52 | ], 53 | "source": [ 54 | "# first we install ShapeAE using pip install \n", 55 | "!pip3 install shapr" 56 | ] 57 | }, 58 | { 59 | "cell_type": "markdown", 60 | "metadata": {}, 61 | "source": [ 62 | "Now we choose the desired settings: \n", 63 | "settings.path : The path containing the image, mask and obj folder with correspondig files (see sample)\n", 64 | "settings.result_path : The path where ShapeAEs results should be saved\n", 65 | "settings.random_seed : The random seed \n", 66 | "settings.batch_size : The batchsize, we recommend an even number smaller than 10 and larger than 4 \n", 67 | "settings.epochs_ShapeAE : The number of epochs ShapeAE should be trained in a supervised fashion\n", 68 | "settings.epochs_cShapeAE : The number of epochs ShapeAE should be trained with the discriminator" 69 | ] 70 | }, 71 | { 72 | "cell_type": "code", 73 | "execution_count": null, 74 | "metadata": { 75 | "scrolled": false 76 | }, 77 | "outputs": [], 78 | "source": [ 79 | "from shapr import _settings, run_train, run_evaluation\n", 80 | "settings.path = \"./docs/sample/\"\n", 81 | "settings.result_path = \"./docs/sample/SHAPR_results/\"\n", 82 | "#run ShapeAE\n", 83 | "run_train()" 84 | ] 85 | }, 86 | { 87 | "cell_type": "code", 88 | "execution_count": null, 89 | "metadata": {}, 90 | "outputs": [], 91 | "source": [] 92 | }, 93 | { 94 | "cell_type": "code", 95 | "execution_count": null, 96 | "metadata": {}, 97 | "outputs": [], 98 | "source": [] 99 | } 100 | ], 101 | "metadata": { 102 | "kernelspec": { 103 | "display_name": "Python 3", 104 | "language": "python", 105 | "name": "python3" 106 | }, 107 | "language_info": { 108 | "codemirror_mode": { 109 | "name": "ipython", 110 | "version": 3 111 | }, 112 | "file_extension": ".py", 113 | "mimetype": "text/x-python", 114 | "name": "python", 115 | "nbconvert_exporter": "python", 116 | "pygments_lexer": "ipython3", 117 | "version": "3.7.6" 118 | } 119 | }, 120 | "nbformat": 4, 121 | "nbformat_minor": 4 122 | } -------------------------------------------------------------------------------- /docs/pre-post-processing/Calculate IoU .ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "Jupyter notebook to calcualte the Intersection over Union between the groundtruth, \n", 8 | "SHAPR prediction, cylinder and ellipse fit. \n", 9 | "Written by Dominik Waibel & Niklas Kiermeyer" 10 | ] 11 | }, 12 | { 13 | "cell_type": "markdown", 14 | "metadata": {}, 15 | "source": [ 16 | "Required Folder Structure\n", 17 | "\n", 18 | "-- SHAPR_dataset\n", 19 | "-- -- Ellipse_fit\n", 20 | "-- -- Cylinder_fit \n", 21 | "\n", 22 | "-- SHAPR_results" 23 | ] 24 | }, 25 | { 26 | "cell_type": "code", 27 | "execution_count": null, 28 | "metadata": {}, 29 | "outputs": [], 30 | "source": [ 31 | "#import dependencies\n", 32 | "import os \n", 33 | "import numpy as np\n", 34 | "from skimage.io import imread, imsave\n", 35 | "from skimage.measure import label, regionprops\n", 36 | "from skimage import measure\n", 37 | "import trimesh\n", 38 | "import matplotlib.pyplot as plt\n", 39 | "from mpl_toolkits.mplot3d.art3d import Poly3DCollection\n", 40 | "import trimesh\n", 41 | "import cv2\n", 42 | "import math\n", 43 | "from skimage.transform import resize\n", 44 | "import numpy.linalg as linalg\n", 45 | "from pyellipsoid import drawing\n", 46 | "from skimage.filters import threshold_otsu\n", 47 | "from skimage.feature import shape_index\n", 48 | "from scipy.ndimage.measurements import center_of_mass\n", 49 | "from skimage.filters import gaussian\n", 50 | "import seaborn as sns\n", 51 | "import keras.backend as K\n", 52 | "from scipy.ndimage.morphology import binary_dilation\n", 53 | "from scipy.ndimage import gaussian_filter\n", 54 | "import copy\n", 55 | "from scipy.ndimage.morphology import binary_fill_holes" 56 | ] 57 | }, 58 | { 59 | "cell_type": "code", 60 | "execution_count": null, 61 | "metadata": {}, 62 | "outputs": [], 63 | "source": [ 64 | "# set the path to the dataset folder and SHAPR results\n", 65 | "org_path = \"./SHAPR_dataset/SHAPR_results/\"\n", 66 | "test_path = \"./SHAPR_dataset//\"\n" 67 | ] 68 | }, 69 | { 70 | "cell_type": "code", 71 | "execution_count": null, 72 | "metadata": {}, 73 | "outputs": [], 74 | "source": [ 75 | "# normalize and threshold the data using Otsu's method: \n", 76 | "#https://scikit-image.org/docs/dev/auto_examples/segmentation/plot_thresholding.html\n", 77 | "def norm_thres(data): \n", 78 | " maxd = np.max(data)\n", 79 | " data = np.nan_to_num(data / maxd)\n", 80 | " if np.max(data) > 0:\n", 81 | " thresh = threshold_otsu(data)\n", 82 | " #binary = data > 0.5\n", 83 | " #print(\"threshold\", thresh)\n", 84 | " binary = data > thresh\n", 85 | " else: \n", 86 | " binary = data\n", 87 | " return binary*1.0" 88 | ] 89 | }, 90 | { 91 | "cell_type": "code", 92 | "execution_count": null, 93 | "metadata": {}, 94 | "outputs": [], 95 | "source": [ 96 | "def IoU(y_true,y_pred): \n", 97 | " intersection = y_true + y_pred\n", 98 | " intersection = np.count_nonzero(intersection > 1.5)\n", 99 | " union = y_true + y_pred\n", 100 | " union = np.count_nonzero(union > 0.5)\n", 101 | " return intersection / union" 102 | ] 103 | }, 104 | { 105 | "cell_type": "code", 106 | "execution_count": null, 107 | "metadata": { 108 | "scrolled": true 109 | }, 110 | "outputs": [], 111 | "source": [ 112 | "IoU_cylinder = []; IoU_ellipse = []; IoU_shapr = []\n", 113 | "\n", 114 | "files = os.listdir(org_path)\n", 115 | "print(\"found\", len(files), \"files\")\n", 116 | "\n", 117 | "\n", 118 | "for index, file in enumerate(files): \n", 119 | " print(index, file)\n", 120 | " cylinder3d = imread(test_path + \"/Cylinder_fit/\"+file)/255.\n", 121 | " ellipse3d = imread(test_path + \"/Ellipse_fit/\"+file)/255.\n", 122 | " obj_gt = norm_thres(np.nan_to_num(imread(test_path + \"obj/\"+ file))) \n", 123 | " SHAPR = norm_thres(np.nan_to_num(np.squeeze(imread(org_path + file))))\n", 124 | "\n", 125 | " IoU_cylinder.append(IoU(cylinder3d,obj_gt))\n", 126 | " IoU_ellipse.append(IoU(ellipse3d,obj_gt))\n", 127 | " IoU_shapr.append(IoU(SHAPR, obj_gt))\n", 128 | " fname.append(file)\n" 129 | ] 130 | }, 131 | { 132 | "cell_type": "code", 133 | "execution_count": null, 134 | "metadata": {}, 135 | "outputs": [], 136 | "source": [ 137 | "print(\"Errors in %\")\n", 138 | "print(np.mean(IoU_shapr)*100, np.std(IoU_shapr)*100)\n", 139 | "print(np.mean(IoU_cylinder)*100,np.std(IoU_cylinder)*100 )\n", 140 | "print(np.mean(IoU_ellipse)*100, np.std(IoU_ellipse)*100)\n", 141 | "\n", 142 | "from scipy.stats import wilcoxon\n", 143 | "\n", 144 | "print(wilcoxon(IoU_shapr, IoU_mask3d))\n", 145 | "print(wilcoxon(IoU_shapr, IoU_ellipse))\n", 146 | "\n", 147 | "plt.figure(figsize =(8,6))\n", 148 | "ax = sns.violinplot(data = [IoU_shapr, IoU_cylinder, IoU_ellipse], \n", 149 | " showfliers=False,color='lightgray', boxprops={'facecolor':'None'}, orient = \"h\")\n", 150 | "ax = sns.swarmplot(data = [IoU_shapr, IoU_cylinder, IoU_ellipse],color=\".25\", size =1.5, orient = \"h\")\n", 151 | "plt.xlabel('Wrongly labeled voxels', size = 15)\n", 152 | "plt.yticks([0, 1, 2], [\"SHAPR\",\"Cylinder\",\n", 153 | " \"Ellipse\"], size = 15)\n", 154 | "\n", 155 | "\n", 156 | "plt.locator_params(axis='x', nbins=4)\n", 157 | "plt.tight_layout()\n", 158 | "plt.grid(b=None)\n", 159 | "plt.grid(b=None)\n", 160 | "\n", 161 | "plt.show()" 162 | ] 163 | } 164 | ], 165 | "metadata": { 166 | "kernelspec": { 167 | "display_name": "Python 3", 168 | "language": "python", 169 | "name": "python3" 170 | }, 171 | "language_info": { 172 | "codemirror_mode": { 173 | "name": "ipython", 174 | "version": 3 175 | }, 176 | "file_extension": ".py", 177 | "mimetype": "text/x-python", 178 | "name": "python", 179 | "nbconvert_exporter": "python", 180 | "pygments_lexer": "ipython3", 181 | "version": "3.6.8rc1" 182 | } 183 | }, 184 | "nbformat": 4, 185 | "nbformat_minor": 4 186 | } 187 | -------------------------------------------------------------------------------- /docs/pre-post-processing/Create cylinder and ellipse shapes.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "Jupyter notebook to create the cylinder and ellipse fit from the 2D segmentation. \n", 8 | "Written by Dominik Waibel & Niklas Kiermeyer" 9 | ] 10 | }, 11 | { 12 | "cell_type": "markdown", 13 | "metadata": {}, 14 | "source": [ 15 | "Required Folder Structure\n", 16 | "\n", 17 | "-- SHAPR_dataset\n", 18 | "-- -- mask\n", 19 | "-- -- Ellipse_fit\n", 20 | "-- -- Cylinder_fit \n", 21 | "\n", 22 | "while the 2D segmentations are located in the mask folder" 23 | ] 24 | }, 25 | { 26 | "cell_type": "code", 27 | "execution_count": null, 28 | "metadata": {}, 29 | "outputs": [], 30 | "source": [ 31 | "#import dependencies\n", 32 | "import os \n", 33 | "import numpy as np\n", 34 | "from skimage.io import imread, imsave\n", 35 | "from skimage.measure import label, regionprops\n", 36 | "from skimage import measure\n", 37 | "import trimesh\n", 38 | "import matplotlib.pyplot as plt\n", 39 | "from mpl_toolkits.mplot3d.art3d import Poly3DCollection\n", 40 | "import trimesh\n", 41 | "import cv2\n", 42 | "import math\n", 43 | "from skimage.transform import resize\n", 44 | "import numpy.linalg as linalg\n", 45 | "from pyellipsoid import drawing\n", 46 | "from skimage.filters import threshold_otsu\n", 47 | "from skimage.feature import shape_index\n", 48 | "from scipy.ndimage.measurements import center_of_mass\n", 49 | "from skimage.filters import gaussian\n", 50 | "import seaborn as sns\n", 51 | "import keras.backend as K\n", 52 | "from scipy.ndimage.morphology import binary_dilation\n", 53 | "from scipy.ndimage import gaussian_filter\n", 54 | "import copy\n", 55 | "from scipy.ndimage.morphology import binary_fill_holes\n", 56 | "from matplotlib.patches import Ellipse" 57 | ] 58 | }, 59 | { 60 | "cell_type": "code", 61 | "execution_count": null, 62 | "metadata": {}, 63 | "outputs": [], 64 | "source": [ 65 | "# set the path to the dataset folder\n", 66 | "path = \"./SHAPR_dataset/\"" 67 | ] 68 | }, 69 | { 70 | "cell_type": "code", 71 | "execution_count": null, 72 | "metadata": {}, 73 | "outputs": [], 74 | "source": [ 75 | "# normalize and threshold the data using Otsu's method: \n", 76 | "#https://scikit-image.org/docs/dev/auto_examples/segmentation/plot_thresholding.html\n", 77 | "def norm_thres(data): \n", 78 | " maxd = np.max(data)\n", 79 | " data = np.nan_to_num(data / maxd)\n", 80 | " if np.max(data) > 0:\n", 81 | " thresh = threshold_otsu(data)\n", 82 | " binary = data > thresh\n", 83 | " else: \n", 84 | " binary = data\n", 85 | " return binary*1.0" 86 | ] 87 | }, 88 | { 89 | "cell_type": "code", 90 | "execution_count": null, 91 | "metadata": {}, 92 | "outputs": [], 93 | "source": [ 94 | "# perform an allipse fit\n", 95 | "def fitEllipse(cont):\n", 96 | "\n", 97 | " x=cont[:,0]\n", 98 | " y=cont[:,1]\n", 99 | "\n", 100 | " x=x[:,None]\n", 101 | " y=y[:,None]\n", 102 | "\n", 103 | " D=np.hstack([x*x,x*y,y*y,x,y,np.ones(x.shape)])\n", 104 | " S=np.dot(D.T,D)\n", 105 | " C=np.zeros([6,6])\n", 106 | " C[0,2]=C[2,0]=2\n", 107 | " C[1,1]=-1\n", 108 | " E,V=np.linalg.eig(np.dot(np.linalg.inv(S),C))\n", 109 | "\n", 110 | " n=np.argmax(np.abs(E))\n", 111 | "\n", 112 | " a=V[:,n]\n", 113 | "\n", 114 | " #-------------------Fit ellipse-------------------\n", 115 | " b,c,d,f,g,a=a[1]/2., a[2], a[3]/2., a[4]/2., a[5], a[0]\n", 116 | " num=b*b-a*c\n", 117 | " cx=(c*d-b*f)/num\n", 118 | " cy=(a*f-b*d)/num\n", 119 | "\n", 120 | " angle=0.5*np.arctan(2*b/(a-c))*180/np.pi\n", 121 | " up = 2*(a*f*f+c*d*d+g*b*b-2*b*d*f-a*c*g)\n", 122 | " down1=(b*b-a*c)*( (c-a)*np.sqrt(1+4*b*b/((a-c)*(a-c)))-(c+a))\n", 123 | " down2=(b*b-a*c)*( (a-c)*np.sqrt(1+4*b*b/((a-c)*(a-c)))-(c+a))\n", 124 | " a=np.nan_to_num(np.sqrt(abs(up/down1)))\n", 125 | " b=np.nan_to_num(np.sqrt(abs(up/down2)))\n", 126 | "\n", 127 | " params=[cx,cy,a,b,angle]\n", 128 | "\n", 129 | " return params " 130 | ] 131 | }, 132 | { 133 | "cell_type": "code", 134 | "execution_count": null, 135 | "metadata": {}, 136 | "outputs": [], 137 | "source": [ 138 | "# fit an ellipse to the 2D segmentation mask\n", 139 | "def get_ellipse(mask): \n", 140 | " contours, hierarchy = cv2.findContours(mask, 1, 2)\n", 141 | " if len(contours) >= 1:\n", 142 | " cnt = contours[0]\n", 143 | " if len(cnt) > 5:\n", 144 | " #try:\n", 145 | " if 1 ==1 :\n", 146 | " ell_params = fitEllipse(cnt[:,0])\n", 147 | " x, y, MA, ma, angle = ell_params\n", 148 | " image_shape = (64,64,64)\n", 149 | " # Define an ellipsoid, axis order is: X, Y, Z\n", 150 | " ell_center = (x, y, 32)\n", 151 | " ell_radii = (MA, ma, (MA+ma)/(4))\n", 152 | " ell_angles = np.deg2rad([0, 0, angle.real])\n", 153 | " ellipse3d = drawing.make_ellipsoid_image(image_shape, ell_center, ell_radii, ell_angles)\n", 154 | " return ellipse3d*1.0\n", 155 | " else:\n", 156 | " return np.zeros((64, 64,64))\n", 157 | " else:\n", 158 | " return np.zeros((64, 64,64))" 159 | ] 160 | }, 161 | { 162 | "cell_type": "code", 163 | "execution_count": null, 164 | "metadata": {}, 165 | "outputs": [], 166 | "source": [ 167 | "# fit a cylinder to the 2D segmentation\n", 168 | "def get_cylinder(mask):\n", 169 | " contours, hierarchy = cv2.findContours(mask, 1, 2)\n", 170 | " if len(contours) >= 1:\n", 171 | " cnt = contours[0]\n", 172 | " if len(cnt) > 3:\n", 173 | " #try:\n", 174 | " ell_params = fitEllipse(cnt[:,0])\n", 175 | " x, y, MA, ma, angle = ell_params\n", 176 | "\n", 177 | " mask3Dinner = mask[np.newaxis,...]\n", 178 | " z_radius = int(round(MA+ma)/(2))\n", 179 | " if z_radius > 64:\n", 180 | " z_radius = 64 \n", 181 | " if z_radius < 1:\n", 182 | " z_radius = 1\n", 183 | " mask3Dinner = resize(mask3Dinner,(z_radius,64,64), preserve_range=True)\n", 184 | " mask3d = np.zeros((64,64,64))\n", 185 | " mask3d[32-int(np.shape(mask3Dinner)[0]/2):32-int(np.shape(mask3Dinner)[0]/2)+int(np.shape(mask3Dinner)[0]),:,:] = mask3Dinner\n", 186 | " return mask3d \n", 187 | " else:\n", 188 | " return np.zeros((64, 64,64))\n", 189 | " else:\n", 190 | " return np.zeros((64, 64,64))" 191 | ] 192 | }, 193 | { 194 | "cell_type": "code", 195 | "execution_count": null, 196 | "metadata": { 197 | "scrolled": true 198 | }, 199 | "outputs": [], 200 | "source": [ 201 | "files = os.listdir(path + \"/mask\")\n", 202 | "print(\"found\", len(files), \"files\")\n", 203 | "\n", 204 | "for index, file in enumerate(files): \n", 205 | " print(index, file)\n", 206 | " #get the 2D segmentation (\"mask\")\n", 207 | " mask = imread(path + \"/mask/\"+ file)\n", 208 | " mask = np.array(binary_fill_holes(mask).astype(\"uint8\"))\n", 209 | " #perform the cylidner and ellipse fit\n", 210 | " ellipse = np.nan_to_num(get_ellipse(mask))\n", 211 | " cylinder = norm_thres(np.nan_to_num(get_cylinder(mask)))\n", 212 | " #save the cylinder and ellipse to the respective folders\n", 213 | " imsave(path + \"/Cylinder_fit/\"+file, (cylinder*255.).astype(\"uint8\"))\n", 214 | " imsave(path + \"/Ellipse_fit/\"+file, (ellipse*255.).astype(\"uint8\"))\n", 215 | " " 216 | ] 217 | }, 218 | { 219 | "cell_type": "code", 220 | "execution_count": null, 221 | "metadata": {}, 222 | "outputs": [], 223 | "source": [] 224 | } 225 | ], 226 | "metadata": { 227 | "kernelspec": { 228 | "display_name": "SHAPR", 229 | "language": "python", 230 | "name": "shapr" 231 | }, 232 | "language_info": { 233 | "codemirror_mode": { 234 | "name": "ipython", 235 | "version": 3 236 | }, 237 | "file_extension": ".py", 238 | "mimetype": "text/x-python", 239 | "name": "python", 240 | "nbconvert_exporter": "python", 241 | "pygments_lexer": "ipython3", 242 | "version": "3.9.5" 243 | } 244 | }, 245 | "nbformat": 4, 246 | "nbformat_minor": 4 247 | } 248 | -------------------------------------------------------------------------------- /docs/pre-post-processing/Extract Features from 2D Microscope.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "Jupyter notebook to extract features from the 2D microscope image\n", 8 | "Written by Dominik Waibel & Niklas Kiermeyer" 9 | ] 10 | }, 11 | { 12 | "cell_type": "code", 13 | "execution_count": null, 14 | "metadata": {}, 15 | "outputs": [], 16 | "source": [ 17 | "#import dependencies\n", 18 | "import os \n", 19 | "import numpy as np\n", 20 | "from skimage.io import imread, imsave\n", 21 | "from skimage.measure import label, regionprops\n", 22 | "from skimage import measure\n", 23 | "import trimesh\n", 24 | "import matplotlib.pyplot as plt\n", 25 | "from mpl_toolkits.mplot3d.art3d import Poly3DCollection\n", 26 | "import cv2\n", 27 | "import math\n", 28 | "from skimage.transform import resize\n", 29 | "import numpy.linalg as linalg\n", 30 | "from pyellipsoid import drawing\n", 31 | "from skimage.filters import threshold_otsu\n", 32 | "from skimage.feature import shape_index\n", 33 | "from scipy.ndimage.measurements import center_of_mass\n", 34 | "from skimage.filters import gaussian\n", 35 | "import seaborn as sns\n", 36 | "import csv\n", 37 | "from skimage.morphology import convex_hull_image\n", 38 | "from skimage.feature import greycomatrix, greycoprops\n", 39 | "from skimage.measure import moments, inertia_tensor_eigvals\n", 40 | "from skimage.feature import hog\n", 41 | "import copy\n", 42 | "from scipy.ndimage import gaussian_filter\n", 43 | "from skimage.filters import gabor" 44 | ] 45 | }, 46 | { 47 | "cell_type": "code", 48 | "execution_count": null, 49 | "metadata": {}, 50 | "outputs": [], 51 | "source": [ 52 | "# set the path to the 2D segmentations (\"mask\") and the folder where the features should be saved\n", 53 | "test_path = \"./SHAPR_dataset/\"\n", 54 | "out_path = \"./SHAPR_dataset/features/\"" 55 | ] 56 | }, 57 | { 58 | "cell_type": "code", 59 | "execution_count": null, 60 | "metadata": {}, 61 | "outputs": [], 62 | "source": [ 63 | "# normalize and threshold the data using Otsu's method: \n", 64 | "#https://scikit-image.org/docs/dev/auto_examples/segmentation/plot_thresholding.html\n", 65 | "def norm_thres(data): \n", 66 | " maxd = np.max(data)\n", 67 | " data = data / maxd\n", 68 | " data = np.nan_to_num(data)\n", 69 | " if np.max(data) > 0:\n", 70 | " thresh = threshold_otsu(data)\n", 71 | " binary = data > thresh\n", 72 | " else: \n", 73 | " binary = data\n", 74 | " return binary*1.0" 75 | ] 76 | }, 77 | { 78 | "cell_type": "code", 79 | "execution_count": null, 80 | "metadata": { 81 | "scrolled": true 82 | }, 83 | "outputs": [], 84 | "source": [ 85 | "import mahotas\n", 86 | "from skimage.feature import hog\n", 87 | "\n", 88 | "files = os.listdir(test_path + \"/image/\")\n", 89 | "print(\"found\", len(files), \"files\")\n", 90 | "\n", 91 | "gabor_header = [\"gabor\"]\n", 92 | "glcm_cor_header = [\"glcm_cor\"]\n", 93 | "glcm_diss_header = [\"glcm_diss\"]\n", 94 | "\n", 95 | "with open(out_path + '/mask_2dBF.csv', 'w') as writeFile:\n", 96 | " writer = csv.writer(writeFile)\n", 97 | " #create and combine the header\n", 98 | " header1 = ['filename', 'mean', 'std']\n", 99 | " header = header1 + gabor_header + glcm_diss_header + glcm_cor_header\n", 100 | " print(\"len features\", len(header))\n", 101 | " writer.writerow(header)\n", 102 | " for index, file in enumerate(files): \n", 103 | "\n", 104 | " print(index, file)\n", 105 | " #read the data\n", 106 | " mask = norm_thres(np.squeeze(imread(test_path + \"/mask/\" + file)))\n", 107 | "\n", 108 | " image = imread(test_path + \"/image/\" + file)\n", 109 | " #threshold the image with the mask\n", 110 | " data_in = image*mask\n", 111 | "\n", 112 | "\n", 113 | " #calculate the glcm features\n", 114 | " glcm = greycomatrix(data_in.astype(\"uint8\"), distances=[5], angles=[0], levels=256,\n", 115 | " symmetric=True, normed=True)\n", 116 | " glcm_diss = [(greycoprops(glcm, 'dissimilarity')[0, 0])]\n", 117 | " glcm_cor = [(greycoprops(glcm, 'correlation')[0, 0])]\n", 118 | " #calculate the gabor features\n", 119 | " gabor_feat = [np.sum(gabor(data_in,1)[0])]\n", 120 | " #combine the features and write them to the .csv file\n", 121 | " feat = [file, np.mean(data_in), np.std(data_in)]\n", 122 | " print(\"len features\", len(feat), len(header1))\n", 123 | " feat = feat + gabor_feat + glcm_diss + glcm_cor\n", 124 | " writer.writerow(feat) " 125 | ] 126 | }, 127 | { 128 | "cell_type": "code", 129 | "execution_count": null, 130 | "metadata": {}, 131 | "outputs": [], 132 | "source": [] 133 | }, 134 | { 135 | "cell_type": "code", 136 | "execution_count": null, 137 | "metadata": {}, 138 | "outputs": [], 139 | "source": [] 140 | } 141 | ], 142 | "metadata": { 143 | "kernelspec": { 144 | "display_name": "SHAPR", 145 | "language": "python", 146 | "name": "shapr" 147 | }, 148 | "language_info": { 149 | "codemirror_mode": { 150 | "name": "ipython", 151 | "version": 3 152 | }, 153 | "file_extension": ".py", 154 | "mimetype": "text/x-python", 155 | "name": "python", 156 | "nbconvert_exporter": "python", 157 | "pygments_lexer": "ipython3", 158 | "version": "3.9.5" 159 | } 160 | }, 161 | "nbformat": 4, 162 | "nbformat_minor": 4 163 | } 164 | -------------------------------------------------------------------------------- /docs/pre-post-processing/Extract features from 2D segmentation.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "Jupyter notebook to extract features from the 2D segmentation\n", 8 | "Written by Dominik Waibel & Niklas Kiermeyer" 9 | ] 10 | }, 11 | { 12 | "cell_type": "code", 13 | "execution_count": null, 14 | "metadata": {}, 15 | "outputs": [], 16 | "source": [ 17 | "#import dependencies\n", 18 | "import os \n", 19 | "import numpy as np\n", 20 | "from skimage.io import imread, imsave\n", 21 | "from skimage.measure import label, regionprops\n", 22 | "from skimage import measure\n", 23 | "import trimesh\n", 24 | "import matplotlib.pyplot as plt\n", 25 | "from mpl_toolkits.mplot3d.art3d import Poly3DCollection\n", 26 | "import trimesh\n", 27 | "import cv2\n", 28 | "import math\n", 29 | "from skimage.transform import resize\n", 30 | "import numpy.linalg as linalg\n", 31 | "from pyellipsoid import drawing\n", 32 | "from skimage.filters import threshold_otsu\n", 33 | "from skimage.feature import shape_index\n", 34 | "from scipy.ndimage.measurements import center_of_mass\n", 35 | "from skimage.filters import gaussian\n", 36 | "import seaborn as sns\n", 37 | "import csv\n", 38 | "from scipy.ndimage.morphology import binary_dilation\n", 39 | "import copy\n", 40 | "from scipy.ndimage import gaussian_filter\n", 41 | "from skimage.morphology import convex_hull_image\n", 42 | "from skimage.feature import greycomatrix, greycoprops\n", 43 | "from skimage.measure import moments\n", 44 | "from skimage.feature import hog\n", 45 | "from skimage.filters import gabor" 46 | ] 47 | }, 48 | { 49 | "cell_type": "code", 50 | "execution_count": null, 51 | "metadata": {}, 52 | "outputs": [], 53 | "source": [ 54 | "# set the path to the 2D segmentations (\"mask\") and the folder where the features should be saved\n", 55 | "test_path = \"./SHAPR/Blood_cell//mask/\"\n", 56 | "out_path = \"./Blood_cell/features/\"" 57 | ] 58 | }, 59 | { 60 | "cell_type": "code", 61 | "execution_count": null, 62 | "metadata": {}, 63 | "outputs": [], 64 | "source": [ 65 | "# normalize and threshold the data using Otsu's method: \n", 66 | "#https://scikit-image.org/docs/dev/auto_examples/segmentation/plot_thresholding.html\n", 67 | "def norm_thres(data): \n", 68 | " maxd = np.max(data)\n", 69 | " data = data / maxd\n", 70 | " data = np.nan_to_num(data)\n", 71 | " if np.min(data) >0:\n", 72 | " thresh = threshold_otsu(data)\n", 73 | " binary = data > thresh\n", 74 | " else: \n", 75 | " binary = data\n", 76 | " return binary*1.0" 77 | ] 78 | }, 79 | { 80 | "cell_type": "code", 81 | "execution_count": null, 82 | "metadata": {}, 83 | "outputs": [], 84 | "source": [ 85 | "files = os.listdir(test_path)\n", 86 | "print(\"found\", len(files), \"files\")\n", 87 | "fdheader = [\"fd\"+str(i) for i in range(512)]\n", 88 | "\n", 89 | "with open(out_path + 'mask_features.csv', 'w') as writeFile:\n", 90 | " writer = csv.writer(writeFile)\n", 91 | " #create and combine the header\n", 92 | " header = ['filename_msk', \"mean_msk\", 'surface_msk', 'boundary_msk', 'roughtness_msk', \n", 93 | " 'convexity_msk', \"moment_cr_msk\", \"moment_cc_msk\", \"gabor1_msk\",\"gabor2_msk\"]\n", 94 | " writer.writerow(header)\n", 95 | " \n", 96 | " for index, file in enumerate(files): \n", 97 | " print(index, file)\n", 98 | " #read the data\n", 99 | " mask = np.nan_to_num(norm_thres(np.squeeze(imread(test_path + file))/255.))\n", 100 | " #calculate the boundary lenght\n", 101 | " msk = copy.deepcopy(mask)\n", 102 | " k = np.ones((3,3),dtype=int)\n", 103 | " msk = msk.astype(int)\n", 104 | " boundary = binary_dilation(msk==0, k) & msk\n", 105 | " boundary_len = np.sum(boundary)\n", 106 | " #calculate the area\n", 107 | " mask_vol = np.sum(msk)\n", 108 | " #calculate the roughness\n", 109 | " smoothed_mask = copy.deepcopy(gaussian_filter(mask,2))\n", 110 | " smoothed_mask = smoothed_mask > 0.5\n", 111 | " roughtness = np.sum(np.abs(smoothed_mask-mask))\n", 112 | " #calculate the convexity\n", 113 | " convexity = np.sum(convex_hull_image(mask)-mask)\n", 114 | " #calcualte the moments\n", 115 | " m_m = measure.moments(msk)\n", 116 | " cr_m = m_m[0, 1] / m_m[0, 0]\n", 117 | " cc_m = m_m[1, 0] / m_m[0, 0]\n", 118 | " \n", 119 | " #calcualte the gabor features\n", 120 | " gabor_msk1 = np.sum(gabor(msk,1)[0])\n", 121 | " gabor_msk2 = np.sum(gabor(msk,0.1)[0])\n", 122 | " #combine the features and write them to the .csv file\n", 123 | " feat = [file, np.mean(mask), mask_vol, boundary_len, roughtness,convexity, \n", 124 | " cr_m, cc_m, \n", 125 | " gabor_msk1, gabor_msk2]\n", 126 | " \n", 127 | " print(\"len features\", len(feat), len(header))\n", 128 | " writer.writerow(feat)\n" 129 | ] 130 | } 131 | ], 132 | "metadata": { 133 | "kernelspec": { 134 | "display_name": "Python 3", 135 | "language": "python", 136 | "name": "python3" 137 | }, 138 | "language_info": { 139 | "codemirror_mode": { 140 | "name": "ipython", 141 | "version": 3 142 | }, 143 | "file_extension": ".py", 144 | "mimetype": "text/x-python", 145 | "name": "python", 146 | "nbconvert_exporter": "python", 147 | "pygments_lexer": "ipython3", 148 | "version": "3.6.8rc1" 149 | } 150 | }, 151 | "nbformat": 4, 152 | "nbformat_minor": 4 153 | } 154 | -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000604.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000604.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000605.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000605.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000606.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000606.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000607.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000607.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000608.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000608.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000609.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000609.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000610.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000610.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000611.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000611.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000612.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000612.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000613.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000613.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000614.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000614.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000615.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000615.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000616.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000616.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000617.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000617.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000618.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000618.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000619.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000619.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000620.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000620.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000621.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000621.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000622.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000622.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000623.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000623.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000624.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000624.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000625.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000625.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000626.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000626.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000627.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000627.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000628.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000628.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000629.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000629.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000630.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000630.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000631.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000631.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000632.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000632.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000633.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000633.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000634.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000634.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000635.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000635.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000636.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000636.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000637.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000637.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000638.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000638.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000639.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000639.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000640.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000640.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000641.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000641.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000642.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000642.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000643.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000643.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000644.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000644.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000645.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000645.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000646.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000646.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000647.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000647.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000648.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000648.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000649.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000649.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000650.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000650.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000651.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000651.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000652.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000652.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000653.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000653.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000654.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000654.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000655.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000655.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000656.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000656.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000657.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000657.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000658.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000658.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000659.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000659.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000660.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000660.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000661.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000661.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000662.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000662.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000663.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000663.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000664.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000664.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000665.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000665.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000666.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000666.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000667.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000667.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000668.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000668.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000669.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000669.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000670.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000670.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000671.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000671.tif -------------------------------------------------------------------------------- /docs/sample/image/A_cell_clusters000672.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/A_cell_clusters000672.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000673.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000673.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000674.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000674.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000675.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000675.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000676.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000676.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000677.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000677.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000678.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000678.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000679.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000679.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000680.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000680.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000681.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000681.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000682.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000682.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000683.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000683.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000684.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000684.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000685.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000685.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000686.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000686.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000687.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000687.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000688.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000688.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000689.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000689.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000690.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000690.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000691.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000691.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000692.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000692.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000693.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000693.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000694.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000694.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000695.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000695.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000696.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000696.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000697.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000697.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000698.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000698.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000699.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000699.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000700.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000700.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000701.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000701.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000702.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000702.tif -------------------------------------------------------------------------------- /docs/sample/image/B_keratocytes000703.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/B_keratocytes000703.tif -------------------------------------------------------------------------------- /docs/sample/image/C_knizocytes000704.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/C_knizocytes000704.tif -------------------------------------------------------------------------------- /docs/sample/image/C_knizocytes000705.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/C_knizocytes000705.tif -------------------------------------------------------------------------------- /docs/sample/image/C_knizocytes000706.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/C_knizocytes000706.tif -------------------------------------------------------------------------------- /docs/sample/image/C_knizocytes000707.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/C_knizocytes000707.tif -------------------------------------------------------------------------------- /docs/sample/image/C_knizocytes000708.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/C_knizocytes000708.tif -------------------------------------------------------------------------------- /docs/sample/image/C_knizocytes000709.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/C_knizocytes000709.tif -------------------------------------------------------------------------------- /docs/sample/image/C_knizocytes000710.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/C_knizocytes000710.tif -------------------------------------------------------------------------------- /docs/sample/image/C_knizocytes000711.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/C_knizocytes000711.tif -------------------------------------------------------------------------------- /docs/sample/image/C_knizocytes000712.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/C_knizocytes000712.tif -------------------------------------------------------------------------------- /docs/sample/image/C_knizocytes000713.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/C_knizocytes000713.tif -------------------------------------------------------------------------------- /docs/sample/image/C_knizocytes000714.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/C_knizocytes000714.tif -------------------------------------------------------------------------------- /docs/sample/image/C_knizocytes000715.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/C_knizocytes000715.tif -------------------------------------------------------------------------------- /docs/sample/image/C_knizocytes000716.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/C_knizocytes000716.tif -------------------------------------------------------------------------------- /docs/sample/image/C_knizocytes000717.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/C_knizocytes000717.tif -------------------------------------------------------------------------------- /docs/sample/image/C_knizocytes000718.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/C_knizocytes000718.tif -------------------------------------------------------------------------------- /docs/sample/image/C_knizocytes000719.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/C_knizocytes000719.tif -------------------------------------------------------------------------------- /docs/sample/image/C_knizocytes000720.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/C_knizocytes000720.tif -------------------------------------------------------------------------------- /docs/sample/image/C_knizocytes000721.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/C_knizocytes000721.tif -------------------------------------------------------------------------------- /docs/sample/image/C_knizocytes000722.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/C_knizocytes000722.tif -------------------------------------------------------------------------------- /docs/sample/image/C_knizocytes000723.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/C_knizocytes000723.tif -------------------------------------------------------------------------------- /docs/sample/image/C_knizocytes000724.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/C_knizocytes000724.tif -------------------------------------------------------------------------------- /docs/sample/image/C_knizocytes000725.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/C_knizocytes000725.tif -------------------------------------------------------------------------------- /docs/sample/image/C_knizocytes000726.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/C_knizocytes000726.tif -------------------------------------------------------------------------------- /docs/sample/image/D_multilobate_cells000727.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/D_multilobate_cells000727.tif -------------------------------------------------------------------------------- /docs/sample/image/D_multilobate_cells000728.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/D_multilobate_cells000728.tif -------------------------------------------------------------------------------- /docs/sample/image/D_multilobate_cells000729.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/D_multilobate_cells000729.tif -------------------------------------------------------------------------------- /docs/sample/image/D_multilobate_cells000730.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/D_multilobate_cells000730.tif -------------------------------------------------------------------------------- /docs/sample/image/D_multilobate_cells000731.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/D_multilobate_cells000731.tif -------------------------------------------------------------------------------- /docs/sample/image/D_multilobate_cells000732.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/D_multilobate_cells000732.tif -------------------------------------------------------------------------------- /docs/sample/image/D_multilobate_cells000733.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/D_multilobate_cells000733.tif -------------------------------------------------------------------------------- /docs/sample/image/D_multilobate_cells000734.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/D_multilobate_cells000734.tif -------------------------------------------------------------------------------- /docs/sample/image/D_multilobate_cells000735.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/D_multilobate_cells000735.tif -------------------------------------------------------------------------------- /docs/sample/image/D_multilobate_cells000736.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/D_multilobate_cells000736.tif -------------------------------------------------------------------------------- /docs/sample/image/D_multilobate_cells000737.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/D_multilobate_cells000737.tif -------------------------------------------------------------------------------- /docs/sample/image/D_multilobate_cells000738.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/image/D_multilobate_cells000738.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000604.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000604.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000605.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000605.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000606.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000606.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000607.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000607.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000608.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000608.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000609.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000609.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000610.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000610.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000611.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000611.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000612.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000612.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000613.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000613.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000614.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000614.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000615.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000615.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000616.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000616.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000617.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000617.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000618.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000618.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000619.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000619.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000620.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000620.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000621.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000621.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000622.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000622.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000623.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000623.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000624.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000624.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000625.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000625.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000626.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000626.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000627.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000627.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000628.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000628.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000629.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000629.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000630.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000630.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000631.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000631.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000632.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000632.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000633.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000633.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000634.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000634.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000635.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000635.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000636.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000636.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000637.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000637.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000638.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000638.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000639.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000639.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000640.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000640.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000641.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000641.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000642.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000642.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000643.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000643.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000644.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000644.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000645.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000645.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000646.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000646.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000647.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000647.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000648.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000648.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000649.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000649.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000650.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000650.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000651.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000651.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000652.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000652.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000653.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000653.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000654.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000654.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000655.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000655.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000656.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000656.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000657.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000657.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000658.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000658.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000659.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000659.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000660.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000660.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000661.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000661.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000662.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000662.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000663.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000663.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000664.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000664.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000665.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000665.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000666.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000666.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000667.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000667.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000668.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000668.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000669.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000669.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000670.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000670.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000671.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000671.tif -------------------------------------------------------------------------------- /docs/sample/mask/A_cell_clusters000672.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/A_cell_clusters000672.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000673.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000673.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000674.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000674.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000675.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000675.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000676.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000676.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000677.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000677.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000678.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000678.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000679.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000679.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000680.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000680.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000681.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000681.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000682.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000682.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000683.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000683.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000684.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000684.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000685.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000685.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000686.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000686.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000687.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000687.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000688.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000688.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000689.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000689.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000690.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000690.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000691.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000691.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000692.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000692.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000693.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000693.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000694.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000694.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000695.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000695.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000696.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000696.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000697.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000697.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000698.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000698.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000699.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000699.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000700.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000700.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000701.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000701.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000702.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000702.tif -------------------------------------------------------------------------------- /docs/sample/mask/B_keratocytes000703.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/B_keratocytes000703.tif -------------------------------------------------------------------------------- /docs/sample/mask/C_knizocytes000704.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/C_knizocytes000704.tif -------------------------------------------------------------------------------- /docs/sample/mask/C_knizocytes000705.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/C_knizocytes000705.tif -------------------------------------------------------------------------------- /docs/sample/mask/C_knizocytes000706.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/C_knizocytes000706.tif -------------------------------------------------------------------------------- /docs/sample/mask/C_knizocytes000707.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/C_knizocytes000707.tif -------------------------------------------------------------------------------- /docs/sample/mask/C_knizocytes000708.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/C_knizocytes000708.tif -------------------------------------------------------------------------------- /docs/sample/mask/C_knizocytes000709.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/C_knizocytes000709.tif -------------------------------------------------------------------------------- /docs/sample/mask/C_knizocytes000710.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/C_knizocytes000710.tif -------------------------------------------------------------------------------- /docs/sample/mask/C_knizocytes000711.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/C_knizocytes000711.tif -------------------------------------------------------------------------------- /docs/sample/mask/C_knizocytes000712.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/C_knizocytes000712.tif -------------------------------------------------------------------------------- /docs/sample/mask/C_knizocytes000713.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/C_knizocytes000713.tif -------------------------------------------------------------------------------- /docs/sample/mask/C_knizocytes000714.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/C_knizocytes000714.tif -------------------------------------------------------------------------------- /docs/sample/mask/C_knizocytes000715.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/C_knizocytes000715.tif -------------------------------------------------------------------------------- /docs/sample/mask/C_knizocytes000716.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/C_knizocytes000716.tif -------------------------------------------------------------------------------- /docs/sample/mask/C_knizocytes000717.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/C_knizocytes000717.tif -------------------------------------------------------------------------------- /docs/sample/mask/C_knizocytes000718.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/C_knizocytes000718.tif -------------------------------------------------------------------------------- /docs/sample/mask/C_knizocytes000719.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/C_knizocytes000719.tif -------------------------------------------------------------------------------- /docs/sample/mask/C_knizocytes000720.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/C_knizocytes000720.tif -------------------------------------------------------------------------------- /docs/sample/mask/C_knizocytes000721.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/C_knizocytes000721.tif -------------------------------------------------------------------------------- /docs/sample/mask/C_knizocytes000722.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/C_knizocytes000722.tif -------------------------------------------------------------------------------- /docs/sample/mask/C_knizocytes000723.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/C_knizocytes000723.tif -------------------------------------------------------------------------------- /docs/sample/mask/C_knizocytes000724.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/C_knizocytes000724.tif -------------------------------------------------------------------------------- /docs/sample/mask/C_knizocytes000725.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/C_knizocytes000725.tif -------------------------------------------------------------------------------- /docs/sample/mask/C_knizocytes000726.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/C_knizocytes000726.tif -------------------------------------------------------------------------------- /docs/sample/mask/D_multilobate_cells000727.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/D_multilobate_cells000727.tif -------------------------------------------------------------------------------- /docs/sample/mask/D_multilobate_cells000728.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/D_multilobate_cells000728.tif -------------------------------------------------------------------------------- /docs/sample/mask/D_multilobate_cells000729.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/D_multilobate_cells000729.tif -------------------------------------------------------------------------------- /docs/sample/mask/D_multilobate_cells000730.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/D_multilobate_cells000730.tif -------------------------------------------------------------------------------- /docs/sample/mask/D_multilobate_cells000731.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/D_multilobate_cells000731.tif -------------------------------------------------------------------------------- /docs/sample/mask/D_multilobate_cells000732.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/D_multilobate_cells000732.tif -------------------------------------------------------------------------------- /docs/sample/mask/D_multilobate_cells000733.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/D_multilobate_cells000733.tif -------------------------------------------------------------------------------- /docs/sample/mask/D_multilobate_cells000734.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/D_multilobate_cells000734.tif -------------------------------------------------------------------------------- /docs/sample/mask/D_multilobate_cells000735.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/D_multilobate_cells000735.tif -------------------------------------------------------------------------------- /docs/sample/mask/D_multilobate_cells000736.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/D_multilobate_cells000736.tif -------------------------------------------------------------------------------- /docs/sample/mask/D_multilobate_cells000737.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/D_multilobate_cells000737.tif -------------------------------------------------------------------------------- /docs/sample/mask/D_multilobate_cells000738.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/mask/D_multilobate_cells000738.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000604.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000604.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000605.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000605.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000606.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000606.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000607.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000607.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000608.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000608.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000609.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000609.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000610.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000610.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000611.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000611.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000612.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000612.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000613.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000613.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000614.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000614.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000615.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000615.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000616.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000616.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000617.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000617.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000618.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000618.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000619.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000619.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000620.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000620.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000621.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000621.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000622.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000622.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000623.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000623.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000624.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000624.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000625.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000625.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000626.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000626.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000627.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000627.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000628.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000628.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000629.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000629.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000630.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000630.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000631.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000631.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000632.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000632.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000633.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000633.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000634.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000634.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000635.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000635.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000636.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000636.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000637.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000637.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000638.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000638.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000639.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000639.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000640.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000640.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000641.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000641.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000642.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000642.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000643.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000643.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000644.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000644.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000645.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000645.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000646.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000646.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000647.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000647.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000648.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000648.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000649.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000649.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000650.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000650.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000651.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000651.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000652.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000652.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000653.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000653.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000654.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000654.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000655.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000655.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000656.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000656.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000657.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000657.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000658.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000658.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000659.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000659.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000660.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000660.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000661.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000661.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000662.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000662.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000663.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000663.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000664.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000664.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000665.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000665.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000666.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000666.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000667.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000667.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000668.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000668.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000669.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000669.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000670.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000670.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000671.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000671.tif -------------------------------------------------------------------------------- /docs/sample/obj/A_cell_clusters000672.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/A_cell_clusters000672.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000673.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000673.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000674.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000674.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000675.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000675.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000676.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000676.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000677.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000677.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000678.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000678.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000679.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000679.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000680.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000680.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000681.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000681.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000682.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000682.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000683.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000683.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000684.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000684.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000685.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000685.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000686.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000686.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000687.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000687.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000688.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000688.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000689.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000689.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000690.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000690.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000691.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000691.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000692.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000692.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000693.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000693.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000694.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000694.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000695.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000695.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000696.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000696.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000697.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000697.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000698.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000698.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000699.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000699.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000700.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000700.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000701.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000701.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000702.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000702.tif -------------------------------------------------------------------------------- /docs/sample/obj/B_keratocytes000703.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/B_keratocytes000703.tif -------------------------------------------------------------------------------- /docs/sample/obj/C_knizocytes000704.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/C_knizocytes000704.tif -------------------------------------------------------------------------------- /docs/sample/obj/C_knizocytes000705.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/C_knizocytes000705.tif -------------------------------------------------------------------------------- /docs/sample/obj/C_knizocytes000706.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/C_knizocytes000706.tif -------------------------------------------------------------------------------- /docs/sample/obj/C_knizocytes000707.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/C_knizocytes000707.tif -------------------------------------------------------------------------------- /docs/sample/obj/C_knizocytes000708.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/C_knizocytes000708.tif -------------------------------------------------------------------------------- /docs/sample/obj/C_knizocytes000709.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/C_knizocytes000709.tif -------------------------------------------------------------------------------- /docs/sample/obj/C_knizocytes000710.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/C_knizocytes000710.tif -------------------------------------------------------------------------------- /docs/sample/obj/C_knizocytes000711.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/C_knizocytes000711.tif -------------------------------------------------------------------------------- /docs/sample/obj/C_knizocytes000712.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/C_knizocytes000712.tif -------------------------------------------------------------------------------- /docs/sample/obj/C_knizocytes000713.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/C_knizocytes000713.tif -------------------------------------------------------------------------------- /docs/sample/obj/C_knizocytes000714.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/C_knizocytes000714.tif -------------------------------------------------------------------------------- /docs/sample/obj/C_knizocytes000715.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/C_knizocytes000715.tif -------------------------------------------------------------------------------- /docs/sample/obj/C_knizocytes000716.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/C_knizocytes000716.tif -------------------------------------------------------------------------------- /docs/sample/obj/C_knizocytes000717.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/C_knizocytes000717.tif -------------------------------------------------------------------------------- /docs/sample/obj/C_knizocytes000718.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/C_knizocytes000718.tif -------------------------------------------------------------------------------- /docs/sample/obj/C_knizocytes000719.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/C_knizocytes000719.tif -------------------------------------------------------------------------------- /docs/sample/obj/C_knizocytes000720.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/C_knizocytes000720.tif -------------------------------------------------------------------------------- /docs/sample/obj/C_knizocytes000721.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/C_knizocytes000721.tif -------------------------------------------------------------------------------- /docs/sample/obj/C_knizocytes000722.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/C_knizocytes000722.tif -------------------------------------------------------------------------------- /docs/sample/obj/C_knizocytes000723.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/C_knizocytes000723.tif -------------------------------------------------------------------------------- /docs/sample/obj/C_knizocytes000724.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/C_knizocytes000724.tif -------------------------------------------------------------------------------- /docs/sample/obj/C_knizocytes000725.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/C_knizocytes000725.tif -------------------------------------------------------------------------------- /docs/sample/obj/C_knizocytes000726.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/C_knizocytes000726.tif -------------------------------------------------------------------------------- /docs/sample/obj/D_multilobate_cells000727.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/D_multilobate_cells000727.tif -------------------------------------------------------------------------------- /docs/sample/obj/D_multilobate_cells000728.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/D_multilobate_cells000728.tif -------------------------------------------------------------------------------- /docs/sample/obj/D_multilobate_cells000729.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/D_multilobate_cells000729.tif -------------------------------------------------------------------------------- /docs/sample/obj/D_multilobate_cells000730.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/D_multilobate_cells000730.tif -------------------------------------------------------------------------------- /docs/sample/obj/D_multilobate_cells000731.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/D_multilobate_cells000731.tif -------------------------------------------------------------------------------- /docs/sample/obj/D_multilobate_cells000732.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/D_multilobate_cells000732.tif -------------------------------------------------------------------------------- /docs/sample/obj/D_multilobate_cells000733.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/D_multilobate_cells000733.tif -------------------------------------------------------------------------------- /docs/sample/obj/D_multilobate_cells000734.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/D_multilobate_cells000734.tif -------------------------------------------------------------------------------- /docs/sample/obj/D_multilobate_cells000735.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/D_multilobate_cells000735.tif -------------------------------------------------------------------------------- /docs/sample/obj/D_multilobate_cells000736.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/D_multilobate_cells000736.tif -------------------------------------------------------------------------------- /docs/sample/obj/D_multilobate_cells000737.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/D_multilobate_cells000737.tif -------------------------------------------------------------------------------- /docs/sample/obj/D_multilobate_cells000738.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/docs/sample/obj/D_multilobate_cells000738.tif -------------------------------------------------------------------------------- /docs/sample/params.json: -------------------------------------------------------------------------------- 1 | { 2 | "path": "./docs/sample/", 3 | "result_path": "./docs/sample/Results/", 4 | "random_seed" : 0, 5 | "batch_size": 6, 6 | "epochs_SHAPR": 30, 7 | "epochs_cSHAPR": 30 8 | } 9 | -------------------------------------------------------------------------------- /figures/SHAPR_architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/figures/SHAPR_architecture.png -------------------------------------------------------------------------------- /figures/SHAPR_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/figures/SHAPR_logo.png -------------------------------------------------------------------------------- /figures/SHAPR_topology.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/figures/SHAPR_topology.png -------------------------------------------------------------------------------- /figures/youtube.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/figures/youtube.png -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool] 2 | [tool.poetry] 3 | name = "shapr" 4 | version = "0.0.2" 5 | license = "MIT" 6 | keywords = ["Computational", "Biology", "Deep", "Learning"] 7 | classifiers = ["Development Status :: 3 - Alpha", "Topic :: Scientific/Engineering :: Image Recognition", "License :: OSI Approved :: MIT License"] 8 | homepage = "https://github.com/marrlab/ShapeAE" 9 | authors = ["Dominik Waibel, Niklas Kiermeyer, Mohammad Mirkazemi "] 10 | description="SHAPR" 11 | 12 | 13 | [tool.poetry.dependencies] 14 | python = ">=3.9,<3.11" 15 | imageio = "*" 16 | torch = "*" 17 | scikit-image = "*" 18 | scikit-learn = "*" 19 | rising = "^0.2.2" 20 | pytorch-lightning = "^1.5.8" 21 | torchvision = "^0.11.2" 22 | wandb = "^0.12.9" 23 | torch-topological = {path = "../pytorch-topological", develop=true} 24 | pandas = "^1.4.0" 25 | vedo = "^2022.0.1" 26 | jupyter = "^1.0.0" 27 | trimesh = "^3.9.42" 28 | seaborn = "^0.11.2" 29 | pynrrd = "^0.4.3" 30 | nbformat = "^5.4.0" 31 | nbconvert = "^6.5.0" 32 | 33 | [tool.poetry.dev-dependencies] 34 | notebook = "^6.4.12" 35 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | imageio 2 | matplotlib 3 | numpy 4 | pandas 5 | scikit-image 6 | scikit-learn 7 | pytorch -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | import os 2 | from setuptools import setup, find_packages 3 | from pathlib import Path 4 | 5 | def read(fname): 6 | return open(os.path.join(os.path.dirname(__file__), fname)).read() 7 | 8 | setup( 9 | name = 'shapr_torch', 10 | version='0.0.1', 11 | author='Dominik Waibel, Bastian Rieck', 12 | author_email='dominik.waibel@helmholtz-muenchen.de', 13 | license='MIT', 14 | keywords='Computational Biology Deep Learning', 15 | packages=find_packages(exclude=['doc*', 'test*']), 16 | url='https://github.com/marrlab/SHAPR_torch/', 17 | install_requires=['torch', 'imageio', 'scikit-image', 'scikit-learn', 'torch-topological', 'tensorflow', 'pytorch_lightning', 'torchvision'], 18 | classifiers=[ 19 | 'Development Status :: 3 - Alpha', 20 | 'Topic :: Scientific/Engineering :: Image Recognition', 21 | 'License :: OSI Approved :: MIT License', 22 | ] 23 | ) 24 | -------------------------------------------------------------------------------- /shapr/__init__.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | from shapr.utils import * 4 | from shapr.main import run_train, run_evaluation 5 | -------------------------------------------------------------------------------- /shapr/__pycache__/__init__.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/shapr/__pycache__/__init__.cpython-38.pyc -------------------------------------------------------------------------------- /shapr/__pycache__/_settings.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/shapr/__pycache__/_settings.cpython-38.pyc -------------------------------------------------------------------------------- /shapr/__pycache__/data_generator.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/shapr/__pycache__/data_generator.cpython-38.pyc -------------------------------------------------------------------------------- /shapr/__pycache__/evaluate.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/shapr/__pycache__/evaluate.cpython-38.pyc -------------------------------------------------------------------------------- /shapr/__pycache__/main.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/shapr/__pycache__/main.cpython-38.pyc -------------------------------------------------------------------------------- /shapr/__pycache__/metrics.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/shapr/__pycache__/metrics.cpython-38.pyc -------------------------------------------------------------------------------- /shapr/__pycache__/model.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/shapr/__pycache__/model.cpython-38.pyc -------------------------------------------------------------------------------- /shapr/__pycache__/utils.cpython-38.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/shapr/__pycache__/utils.cpython-38.pyc -------------------------------------------------------------------------------- /shapr/_settings.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # -*- coding: utf-8 -*- 3 | 4 | import pathlib 5 | import typing 6 | import json 7 | import os 8 | 9 | def auto_property(attr_storage_name): 10 | ''' 11 | Automatically decorate the attribute with @property 12 | ''' 13 | def get_attr(instance): 14 | return instance.__dict__[attr_storage_name] 15 | 16 | def set_attr(instance, value): 17 | instance.__dict__[attr_storage_name] = value 18 | 19 | return property(get_attr, set_attr) 20 | 21 | class FrozenClass(): 22 | ''' 23 | For child classes. It prevent to add new attributes to the setting from outside 24 | and prevents giving mistaken arguments to the setting. 25 | ''' 26 | __is_frozen = False 27 | def __setattr__(self, key, value): 28 | if self.__is_frozen and not hasattr(self, key): 29 | raise AttributeError(f"'{key}' is not among the attributes of targeted object. It is an instance of a frozen class.") 30 | 31 | super().__setattr__(key, value) 32 | 33 | def set_attributes_with_keys(self, kwargs): 34 | for attr_name, attr_value in kwargs.items(): 35 | self.__setattr__(attr_name, attr_value) 36 | 37 | def __call__(self, kwargs): 38 | self.set_attributes_with_keys(self, kwargs) 39 | 40 | def _frozen(self): 41 | self.__is_frozen = True 42 | 43 | 44 | 45 | class SHAPRConfig(FrozenClass): 46 | """ 47 | Manages the configuration of the SHAPR 48 | """ 49 | __config_param_names = dict( 50 | path = "__path", 51 | result_path = "__result_path", 52 | pretrained_weights_path = "__pretrained_weights_path", 53 | random_seed = "__random_seed", 54 | batch_size="__batch_size", 55 | epochs_SHAPR="epochs_SHAPR", 56 | epochs_cSHAPR="epochs_cSHAPR", 57 | topo_lambda="__topo_lambda", # strength of topological regularisation 58 | topo_interp="__topo_interp", # size of downsampled input data 59 | topo_feat_d='__topo_feat_d', # dim. of topological features to use 60 | topo_feat_s='__topo_feat_s', # superlevel features 61 | topo_loss_q='__topo_loss_q', # exponent for loss calculations 62 | topo_loss_r='__topo_loss_r', # additional regularisation 63 | ) 64 | 65 | __config_param_default = dict( 66 | path = "", 67 | result_path = "", 68 | pretrained_weights_path = "", 69 | random_seed = 0, 70 | batch_size = 6, 71 | epochs_SHAPR = 30, 72 | epochs_cSHAPR = 30, 73 | topo_lambda=0.0, 74 | topo_interp=0, 75 | topo_feat_d=2, 76 | topo_feat_s=False, 77 | topo_loss_q=2, 78 | topo_loss_r=False, 79 | ) 80 | 81 | def __init__(self, params=None): 82 | for param, storing_param in self.__config_param_names.items(): 83 | self.__setattr__(param, auto_property(storing_param)) 84 | self._frozen() 85 | 86 | # setting initial values. 87 | self.set_attributes_with_keys(self.__config_param_default) 88 | 89 | if params is None: 90 | params_fname = os.path.join( 91 | os.path.dirname(__file__), 'params.json' 92 | ) 93 | 94 | if os.path.isfile(params_fname): 95 | self.read_json(params_fname) 96 | else: 97 | self.read_json(params) 98 | 99 | def __str__(self): 100 | s = "------ settings parameters ------\n" 101 | for _k, _ in self.__config_param_names.items(): 102 | s += f"{_k}: {self.__getattribute__(_k)}\n" 103 | return s 104 | 105 | def read_json(self, file_path): 106 | with open(file_path) as f: 107 | _initial_values = json.load(f) 108 | _initial_values = {_k: _v for (_k, _v) in _initial_values.items() if not _k.startswith("_comment")} 109 | self.set_attributes_with_keys(_initial_values) 110 | -------------------------------------------------------------------------------- /shapr/config/3d-cell-culture-0D.json: -------------------------------------------------------------------------------- 1 | { 2 | "path": "../data/3D cell culture", 3 | "result_path": "", 4 | "random_seed" : 0, 5 | "batch_size": 6, 6 | "epochs_SHAPR": 100, 7 | "epochs_cSHAPR": 0, 8 | "topo_lambda": 0.1, 9 | "topo_interp": 16, 10 | "topo_feat_d": 0 11 | } 12 | -------------------------------------------------------------------------------- /shapr/config/3d-cell-culture-1D.json: -------------------------------------------------------------------------------- 1 | { 2 | "path": "../data/3D cell culture", 3 | "result_path": "", 4 | "random_seed" : 0, 5 | "batch_size": 6, 6 | "epochs_SHAPR": 100, 7 | "epochs_cSHAPR": 0, 8 | "topo_lambda": 0.1, 9 | "topo_interp": 16, 10 | "topo_feat_d": 1 11 | } 12 | -------------------------------------------------------------------------------- /shapr/config/3d-cell-culture-2D.json: -------------------------------------------------------------------------------- 1 | { 2 | "path": "../data/3D cell culture", 3 | "result_path": "", 4 | "random_seed" : 0, 5 | "batch_size": 6, 6 | "epochs_SHAPR": 100, 7 | "epochs_cSHAPR": 0, 8 | "topo_lambda": 0.1, 9 | "topo_interp": 16, 10 | "topo_feat_d": 2 11 | } 12 | -------------------------------------------------------------------------------- /shapr/config/debug.json: -------------------------------------------------------------------------------- 1 | { 2 | "path": "../docs/sample/", 3 | "result_path": "../results/debug/", 4 | "random_seed" : 0, 5 | "batch_size": 6, 6 | "epochs_SHAPR": 2, 7 | "epochs_cSHAPR": 0, 8 | "topo_lambda": 0.10, 9 | "topo_interp": 16, 10 | "topo_feat_d": 0 11 | } 12 | -------------------------------------------------------------------------------- /shapr/config/red-blood-cell-0D.json: -------------------------------------------------------------------------------- 1 | { 2 | "path": "../data/Red blood cell", 3 | "result_path": "", 4 | "random_seed" : 0, 5 | "batch_size": 6, 6 | "epochs_SHAPR": 100, 7 | "epochs_cSHAPR": 0, 8 | "topo_lambda": 0.1, 9 | "topo_interp": 16, 10 | "topo_feat_d": 0 11 | } 12 | -------------------------------------------------------------------------------- /shapr/config/red-blood-cell-1D.json: -------------------------------------------------------------------------------- 1 | { 2 | "path": "../data/Red blood cell", 3 | "result_path": "", 4 | "random_seed" : 0, 5 | "batch_size": 6, 6 | "epochs_SHAPR": 100, 7 | "epochs_cSHAPR": 0, 8 | "topo_lambda": 0.1, 9 | "topo_interp": 16, 10 | "topo_feat_d": 1 11 | } 12 | -------------------------------------------------------------------------------- /shapr/config/red-blood-cell-2D.json: -------------------------------------------------------------------------------- 1 | { 2 | "path": "../data/Red blood cell", 3 | "result_path": "", 4 | "random_seed" : 0, 5 | "batch_size": 6, 6 | "epochs_SHAPR": 100, 7 | "epochs_cSHAPR": 0, 8 | "topo_lambda": 0.1, 9 | "topo_interp": 16, 10 | "topo_feat_d": 2 11 | } 12 | -------------------------------------------------------------------------------- /shapr/config/red-blood-cell.json: -------------------------------------------------------------------------------- 1 | { 2 | "path": "../data/Red blood cell", 3 | "result_path": "", 4 | "random_seed" : 0, 5 | "batch_size": 6, 6 | "epochs_SHAPR": 100, 7 | "epochs_cSHAPR": 0, 8 | "topo_lambda": 0.0, 9 | "topo_interp": 4, 10 | "topo_feat_d": 0 11 | } 12 | -------------------------------------------------------------------------------- /shapr/config/small-0D.json: -------------------------------------------------------------------------------- 1 | { 2 | "path": "../docs/sample/", 3 | "result_path": "", 4 | "random_seed" : 0, 5 | "batch_size": 6, 6 | "epochs_SHAPR": 30, 7 | "epochs_cSHAPR": 0, 8 | "topo_lambda": 0.1, 9 | "topo_interp": 16, 10 | "topo_feat_d": 0 11 | } 12 | -------------------------------------------------------------------------------- /shapr/config/small-1D.json: -------------------------------------------------------------------------------- 1 | { 2 | "path": "../docs/sample/", 3 | "result_path": "", 4 | "random_seed" : 0, 5 | "batch_size": 6, 6 | "epochs_SHAPR": 30, 7 | "epochs_cSHAPR": 0, 8 | "topo_lambda": 0.1, 9 | "topo_interp": 16, 10 | "topo_feat_d": 1 11 | } 12 | -------------------------------------------------------------------------------- /shapr/config/small-2D.json: -------------------------------------------------------------------------------- 1 | { 2 | "path": "../docs/sample/", 3 | "result_path": "", 4 | "random_seed" : 0, 5 | "batch_size": 6, 6 | "epochs_SHAPR": 30, 7 | "epochs_cSHAPR": 0, 8 | "topo_lambda": 0.1, 9 | "topo_interp": 16, 10 | "topo_feat_d": 2 11 | } 12 | -------------------------------------------------------------------------------- /shapr/data_generator.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | from shapr.utils import * 3 | from shapr.metrics import * 4 | from torch.utils.data import Dataset 5 | import pytorch_lightning as pl 6 | from torchvision import transforms 7 | from torch.utils.data import DataLoader, random_split 8 | 9 | def augmentation(obj, img, random_seed): 10 | random.seed(random_seed) 11 | np.random.seed(random_seed) 12 | if random.choice([True, True, False]) == True: 13 | obj = np.flip(obj, len(np.shape(obj)) - 1).copy() 14 | img = np.flip(img, len(np.shape(img)) - 1).copy() 15 | if random.choice([True, True, False]) == True: 16 | obj = np.flip(obj, len(np.shape(obj)) - 2).copy() 17 | img = np.flip(img, len(np.shape(img)) - 2).copy() 18 | 19 | if random.choice([True, True, False]) == True: 20 | angle = np.random.choice(int(360 * 100)) / 100 21 | img = np.nan_to_num(rotate(img, angle, resize=False, preserve_range=True)) 22 | for i in range(0, np.shape(obj)[0]): 23 | obj[i, :, :] = np.nan_to_num(rotate(obj[i, :, :], angle, resize=False, preserve_range=True)) 24 | 25 | if random.choice([True, True, False]) == True: 26 | from skimage.util import random_noise 27 | img = random_noise(img, mode='gaussian', var= 0.02) 28 | 29 | if random.choice([True, True, False]) == True: 30 | obj_shape = np.shape(obj) 31 | img_shape = np.shape(img) 32 | x_shift = np.random.choice(int(40)) 33 | y_shift = np.random.choice(int(40)) 34 | x_shift2 = np.random.choice(int(40)) 35 | y_shift2 = np.random.choice(int(40)) 36 | z_shift = np.random.choice(int(10)) 37 | z_shift2 = np.random.choice(int(10)) 38 | obj = obj[z_shift:-(z_shift2+1), x_shift:-(x_shift2+1), y_shift:-(y_shift2+1)] 39 | img = img[int(x_shift/4):-int(x_shift2/4+1), int(y_shift/4):-int(y_shift2/4+1),:] 40 | obj = resize(obj, obj_shape, preserve_range=True) 41 | img = resize(img, img_shape, preserve_range=True) 42 | return obj, img 43 | 44 | 45 | 46 | """ 47 | The data generator will open the 3D segmentation, 2D masks and 2D images for each fold from the directory given the filenames and return a tensor 48 | The 2D mask and the 2D image will be multiplied pixel-wise to remove the background 49 | """ 50 | 51 | class SHAPRDataset(Dataset): 52 | def __init__(self, path, filenames, random_seed): 53 | self.path = path 54 | self.filenames = filenames 55 | self.random_seed = random_seed 56 | 57 | def __len__(self): 58 | return len(self.filenames) 59 | 60 | def __getitem__(self, idx): 61 | obj = import_image(os.path.join(self.path, "obj", self.filenames[idx])) / 255. 62 | img = import_image(os.path.join(self.path, "mask", self.filenames[idx])) / 255. 63 | bf = import_image(os.path.join(self.path, "image", self.filenames[idx])) / 255. 64 | msk_bf = np.zeros((2, int(np.shape(img)[0]), int(np.shape(img)[1]))) 65 | msk_bf[0, :, :] = img 66 | msk_bf[1, :, :] = bf * img 67 | obj, msk_bf = augmentation(obj, msk_bf, self.random_seed) 68 | mask_bf = msk_bf[:, np.newaxis, ...] 69 | obj = obj[np.newaxis,:,:,:] 70 | return torch.from_numpy(mask_bf).float(), torch.from_numpy(obj).float() 71 | 72 | 73 | def get_test_image(self, filename): 74 | img = import_image(os.path.join(self.path, "mask", filename)) / 255. 75 | bf = import_image(os.path.join(self.path, "image", filename)) / 255. 76 | obj = import_image(os.path.join(self.path, "obj", filename)) / 255. 77 | mask_bf = np.zeros((2, 1, int(np.shape(img)[0]), int(np.shape(img)[1]))) 78 | mask_bf[0, 0, :, :] = img 79 | mask_bf[1, 0, :, :] = bf * img 80 | mask_bf = mask_bf[np.newaxis,...] 81 | return mask_bf, obj 82 | 83 | 84 | -------------------------------------------------------------------------------- /shapr/metrics.py: -------------------------------------------------------------------------------- 1 | import torch 2 | import torch.nn as nn 3 | import torch.nn.functional as F 4 | 5 | class Dice_loss(torch.nn.Module): 6 | def __init__(self): 7 | super(Dice_loss, self).__init__() 8 | 9 | def forward(self, y_pred, y_true): 10 | ones = torch.ones_like(y_true) 11 | 12 | mask = y_true != 2 13 | 14 | p0 = y_pred 15 | p1 = ones - y_pred 16 | g0 = y_true 17 | g1 = ones - y_true 18 | 19 | tp_num = torch.sum((p0 * g0)[mask]) 20 | fp_num = torch.sum((p0 * g1)[mask]) 21 | fn_num = torch.sum((p1 * g0)[mask]) 22 | 23 | prec = (tp_num + 1) / (tp_num + fp_num + 1) 24 | rec = (tp_num + 1) / (tp_num + fn_num + 1) 25 | f1 = 2 * prec * rec / (prec + rec + 1e-8) 26 | return 1 - f1 27 | 28 | class Volume_error(torch.nn.Module): 29 | def __init__(self): 30 | super(Volume_error, self).__init__() 31 | 32 | def forward(self, y_pred, y_true): 33 | y_pred_binary = (y_pred > 0.5).float() 34 | y_true_binary = (y_true > 0.5).float() 35 | return torch.abs(torch.count_nonzero(y_pred_binary)-torch.count_nonzero(y_true_binary))/torch.count_nonzero(y_true_binary) 36 | 37 | class IoU_error(torch.nn.Module): 38 | def __init__(self): 39 | super(IoU_error, self).__init__() 40 | 41 | def forward(self, y_pred, y_true): 42 | y_pred_binary = (y_pred > 0.5).float() 43 | y_true_binary = (y_true > 0.5).float() 44 | intersection = y_pred_binary + y_true_binary 45 | intersection = torch.count_nonzero(intersection > 1.5) 46 | union = y_pred_binary + y_true_binary 47 | union = torch.count_nonzero(union > 0.5) 48 | return 1 - intersection / union 49 | -------------------------------------------------------------------------------- /shapr/params.json: -------------------------------------------------------------------------------- 1 | { 2 | "path": "/media/dominik/LaCie/SHAPR_pytorch/Blood_cell/", 3 | "result_path": "/media/dominik/LaCie/SHAPR_pytorch/Blood_cell/results_topo_adverserial_2/", 4 | "random_seed" : 0, 5 | "batch_size": 5, 6 | "epochs_SHAPR": 100, 7 | "epochs_cSHAPR": 100, 8 | "topo_lambda": 0.1, 9 | "topo_interp": 16, 10 | "topo_feat_d": 0 11 | } 12 | -------------------------------------------------------------------------------- /shapr/run.py: -------------------------------------------------------------------------------- 1 | """Run hyperparameter sweep or ordinary run. 2 | 3 | This is the main script for running training, either in the form of 4 | sweeps over hyperparameters or as a stand-alone run. It is possible 5 | to override *all* settings for a run. 6 | """ 7 | 8 | import argparse 9 | 10 | from shapr import run_train 11 | from shapr._settings import SHAPRConfig 12 | 13 | 14 | if __name__ == '__main__': 15 | parser = argparse.ArgumentParser() 16 | default_config = SHAPRConfig() 17 | 18 | # Check which arguments we can actually override from outside. 19 | shapr_args = set() 20 | 21 | for k, _ in default_config._SHAPRConfig__config_param_names.items(): 22 | parser.add_argument( 23 | f'--{k}', 24 | type=type(default_config.__getattribute__(k)), 25 | ) 26 | 27 | shapr_args.add(k) 28 | 29 | parser.add_argument( 30 | '--fold', 31 | type=int, 32 | help='Specifies input fold to use' 33 | ) 34 | 35 | parser.add_argument( 36 | '-p', '--params', 37 | type=str, 38 | default=None, 39 | help='Config file' 40 | ) 41 | 42 | args = parser.parse_args() 43 | 44 | # Prepare arguments that were overridden by the user from the 45 | # command-line (or via a sweep, for instance). 46 | overrides = {} 47 | 48 | for k, v in vars(args).items(): 49 | if k in shapr_args and v is not None: 50 | overrides[k] = v 51 | 52 | run_train(params=args.params, overrides=overrides, args=args) 53 | -------------------------------------------------------------------------------- /shapr/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ -z "$1" ]; then 4 | PARAMS=""; 5 | else 6 | PARAMS=" --params $1"; 7 | fi 8 | 9 | # Shift remainder of all parameters; we can drop $1 since we already 10 | # handled it above. 11 | shift 12 | 13 | PARAMS="${PARAMS} $@" 14 | 15 | sbatch -p gpu_p \ 16 | -J "topo_shapr" \ 17 | -o "topo_shapr%j.out" \ 18 | -x supergpu[05-08] \ 19 | --gres=gpu:1 \ 20 | --qos=gpu \ 21 | --cpus-per-task=4 \ 22 | --mem=4G \ 23 | --nice=10000 \ 24 | --wrap "poetry run python run.py $PARAMS" 25 | -------------------------------------------------------------------------------- /shapr/run_train_script.py: -------------------------------------------------------------------------------- 1 | """Run training with optional external parameters file.""" 2 | 3 | import argparse 4 | 5 | from shapr import run_train 6 | 7 | 8 | if __name__ == '__main__': 9 | parser = argparse.ArgumentParser() 10 | parser.add_argument( 11 | '-p', '--params', 12 | type=str, 13 | default=None, 14 | help='Config file' 15 | ) 16 | 17 | args = parser.parse_args() 18 | run_train(params=args.params) 19 | -------------------------------------------------------------------------------- /shapr/scripts/analyse_interpolation.py: -------------------------------------------------------------------------------- 1 | """Analyse interpolation errors of input data set (in terms of TDA).""" 2 | 3 | import argparse 4 | import os 5 | import torch 6 | 7 | from shapr._settings import SHAPRConfig 8 | from shapr.data_generator import SHAPRDataset 9 | 10 | from torch.utils.data import DataLoader 11 | 12 | from torch_topological.nn import CubicalComplex 13 | from torch_topological.nn import WassersteinDistance 14 | 15 | 16 | if __name__ == '__main__': 17 | parser = argparse.ArgumentParser() 18 | parser.add_argument( 19 | '-p', '--params', 20 | type=str, 21 | default=None, 22 | help='Config file' 23 | ) 24 | parser.add_argument( 25 | '-s', '--size', 26 | type=int, 27 | help='If set, overrides size specified in configuration' 28 | ) 29 | 30 | args = parser.parse_args() 31 | 32 | settings = SHAPRConfig(params=args.params) 33 | 34 | all_files = os.listdir( 35 | os.path.join(settings.path, "obj/") 36 | ) 37 | 38 | data_set = SHAPRDataset(settings.path, all_files, settings.random_seed) 39 | loader = DataLoader(data_set, batch_size=8, shuffle=True) 40 | 41 | size = settings.topo_interp 42 | 43 | if args.size is not None: 44 | size = args.size 45 | 46 | loss_fn = WassersteinDistance(q=2) 47 | 48 | cubical_complex = CubicalComplex(dim=3) 49 | 50 | for _, objects in loader: 51 | objects_interp = torch.nn.functional.interpolate( 52 | input=objects, size=(size, ) * 3, 53 | mode='trilinear', 54 | align_corners=True, 55 | ) 56 | 57 | objects = objects.squeeze() 58 | objects_interp = objects_interp.squeeze() 59 | 60 | pers_info_source = cubical_complex(objects) 61 | pers_info_interp = cubical_complex(objects_interp) 62 | 63 | loss = torch.stack([ 64 | loss_fn(pred_batch, true_batch) 65 | for pred_batch, true_batch in 66 | zip(pers_info_source, pers_info_interp) 67 | ]) 68 | 69 | for value in loss.numpy(): 70 | print(size, value) 71 | 72 | -------------------------------------------------------------------------------- /shapr/scripts/analyse_wandb.py: -------------------------------------------------------------------------------- 1 | """Analyse `wandb` output files.""" 2 | 3 | import argparse 4 | 5 | import numpy as np 6 | import pandas as pd 7 | 8 | 9 | def show_best_performance(df): 10 | """Extract best performance over different scenarios.""" 11 | # Only use finished runs; plus, remove columns that consist of only 12 | # NaN values, as they might interfere with grouping. 13 | df = df.query('State == "finished"') 14 | df = df.dropna(axis=1, how='all') 15 | 16 | metric_columns = [ 17 | col for col in df.columns if col.startswith('test') 18 | ] 19 | 20 | topo_params = [ 21 | col for col in df.columns if col.startswith('topo_') 22 | ] 23 | 24 | # Specify aggregation functions for the `groupby` operation below. 25 | agg = { 26 | metric: [np.mean, np.std] for metric in metric_columns 27 | } 28 | 29 | df_grouped = df.groupby(topo_params).agg(agg) 30 | print(df_grouped) 31 | 32 | means = [ 33 | (c, h) for (c, h) in df_grouped.columns if h == 'mean' 34 | ] 35 | 36 | n_levels = len(df_grouped.index.names) 37 | 38 | print('Minima are achieved by the following groups:\n') 39 | for level in range(n_levels): 40 | print(df_grouped[means].groupby(level=level).idxmin()) 41 | 42 | # Aggregate over all scenarios and find the best compromise 43 | # solution. 44 | print('\nMean performance over all scores:\n') 45 | print(df_grouped[means].mean(axis=1)) 46 | 47 | print( 48 | '\nOverall minimum performance:', 49 | df_grouped[means].mean(axis=1).idxmin(axis=0) 50 | ) 51 | 52 | print('\nRestricting to scenarios with small regularisation strength:\n') 53 | 54 | # Filter scenario that we converged on. 55 | df = df.query('topo_lambda < 1.0 and topo_interp < 24') 56 | 57 | if len(df['topo_lambda'].unique()) <= 1: 58 | topo_params.remove('topo_lambda') 59 | df = df.drop('topo_lambda', axis='columns') 60 | 61 | df_grouped = df.groupby(topo_params).agg(agg) 62 | print(df_grouped) 63 | 64 | 65 | if __name__ == '__main__': 66 | parser = argparse.ArgumentParser() 67 | parser.add_argument('FILENAME', type=str, help='Input filename') 68 | 69 | args = parser.parse_args() 70 | 71 | df = pd.read_csv(args.FILENAME) 72 | show_best_performance(df) 73 | -------------------------------------------------------------------------------- /shapr/scripts/calculate_persistence_diagrams.py: -------------------------------------------------------------------------------- 1 | """Calculate persistence diagrams of input images.""" 2 | 3 | import argparse 4 | import os 5 | import torch 6 | 7 | import numpy as np 8 | import torch.nn as nn 9 | 10 | from shapr.utils import import_image 11 | 12 | from torch_topological.nn import CubicalComplex 13 | from torch_topological.nn import WassersteinDistance 14 | 15 | from torch_topological.utils import total_persistence 16 | 17 | import matplotlib.pyplot as plt 18 | 19 | 20 | if __name__ == '__main__': 21 | parser = argparse.ArgumentParser() 22 | parser.add_argument( 23 | 'FILE', 24 | nargs='+', 25 | type=str, 26 | help='Input file(s)' 27 | ) 28 | parser.add_argument( 29 | '-s', '--size', 30 | type=int, 31 | help='Specifies size for interpolation' 32 | ) 33 | 34 | args = parser.parse_args() 35 | 36 | cubical_complex = CubicalComplex(dim=3) 37 | 38 | # Collects all persistence information in order to calculate 39 | # distances afterwards. 40 | pers_info_all = [] 41 | 42 | for filename in args.FILE: 43 | img = import_image(filename) / 255.0 44 | img = torch.tensor(img.squeeze()) 45 | 46 | if args.size is not None: 47 | img = img.unsqueeze(dim=0).unsqueeze(dim=0) 48 | size = (args.size,) * 3 49 | img = nn.functional.interpolate( 50 | input=img, 51 | size=size, 52 | 53 | ).squeeze() 54 | 55 | img = img.unsqueeze(dim=0) 56 | 57 | pers_info = cubical_complex(img)[0] 58 | pers_info_all.append(pers_info) 59 | 60 | fig, axes = plt.subplots(ncols=len(pers_info), squeeze=True) 61 | 62 | for dim, info in enumerate(pers_info): 63 | diagram = info.diagram 64 | 65 | axes[dim].set_aspect('equal') 66 | axes[dim].set_xlim(-0.1, 1.1) 67 | axes[dim].set_ylim(-0.1, 1.1) 68 | axes[dim].scatter(diagram[:, 0], diagram[:, 1]) 69 | axes[dim].plot([-0.1, 1.1], [-0.1, 1.1], 'k') 70 | 71 | print(info.diagram) 72 | 73 | name = os.path.basename(filename) 74 | name = os.path.splitext(name)[0] 75 | name = f'{name}_d{dim}.txt' 76 | 77 | np.savetxt( 78 | os.path.join('/tmp', name), 79 | info.diagram.numpy(), 80 | fmt='%.4f', 81 | header='creation destruction', 82 | comments='', 83 | ) 84 | 85 | wasserstein = WassersteinDistance(q=2) 86 | 87 | for x, y in zip(pers_info_all, pers_info_all[1:]): 88 | for dim, (x_, y_) in enumerate(zip(x, y)): 89 | dist = wasserstein(x_, y_) 90 | 91 | print('Dimension:', dim) 92 | print( 93 | 'Total persistence:', 94 | total_persistence(x_.diagram, p=1), 95 | total_persistence(y_.diagram, p=1) 96 | ) 97 | print('Distance:', dist) 98 | 99 | plt.show() 100 | -------------------------------------------------------------------------------- /shapr/scripts/evaluation.py: -------------------------------------------------------------------------------- 1 | """Evaluate data with respect to ground truth and plot it. 2 | 3 | This script generates plots for evaluating runs of SHAPR. Different 4 | scenarios or models can be tested against a "ground truth" data set 5 | and the results are stored in PDF files. 6 | 7 | This script requres a configuration file to work. 8 | """ 9 | 10 | import argparse 11 | import collections 12 | import copy 13 | import json 14 | import os 15 | 16 | import numpy as np 17 | import pandas as pd 18 | 19 | import matplotlib.pyplot as plt 20 | import seaborn as sns 21 | 22 | from tqdm import tqdm 23 | 24 | from scipy.ndimage import gaussian_filter 25 | from scipy.ndimage.morphology import binary_dilation 26 | 27 | from skimage.filters import threshold_otsu 28 | from skimage.io import imread 29 | 30 | 31 | plt.rcParams.update({ 32 | 'font.family': 'serif', 33 | 'text.usetex': True, 34 | 'svg.fonttype': 'none', 35 | }) 36 | 37 | 38 | def parse_config(filename): 39 | """Parse JSON configuration file. 40 | 41 | Parameters 42 | ---------- 43 | filename : str 44 | Input filename; must be a JSON configuration file. 45 | 46 | Returns 47 | ------- 48 | dict 49 | The parsed configuration. 50 | """ 51 | with open(filename) as f: 52 | config = json.load(f) 53 | 54 | assert 'source' in config 55 | assert 'targets' in config 56 | 57 | return config 58 | 59 | 60 | def norm_thres(data): 61 | """Perform Otsu's method for thresholding.""" 62 | maxd = np.max(data) 63 | data = np.nan_to_num(data / maxd) 64 | if np.max(data) > 0: 65 | thresh = threshold_otsu(data) 66 | binary = data > thresh 67 | else: 68 | binary = data 69 | 70 | return binary * 1.0 71 | 72 | 73 | def get_surface(obj): 74 | """Calculate surface area.""" 75 | k = np.ones((3, 3, 3), dtype=int) 76 | obj = obj.astype(int) 77 | boundary = binary_dilation(obj == 0, k) & obj 78 | return np.sum(boundary) 79 | 80 | 81 | def IoU(y_true, y_pred): 82 | """Calculate IoU between ground truth and prediction.""" 83 | intersection = y_true + y_pred 84 | intersection = np.count_nonzero(intersection > 1.5) 85 | union = y_true + y_pred 86 | union = np.count_nonzero(union > 0.5) 87 | return intersection / union 88 | 89 | 90 | def get_roughness(obj): 91 | """Calculate surface roughness.""" 92 | smoothed_obj = copy.deepcopy(gaussian_filter(obj, 2)) 93 | smoothed_obj = smoothed_obj > 0.5 94 | return np.sum(np.abs(smoothed_obj - obj)) 95 | 96 | 97 | def evaluate(source, target, quick=False): 98 | """Evaluate source and target image along different dimensions. 99 | 100 | Parameters 101 | ---------- 102 | quick : bool 103 | If set, only calculates metrics that do not require extensive 104 | surface meshing operations. 105 | 106 | Returns 107 | ------- 108 | dict 109 | A dictionary with the keys being abbreviations of the error 110 | metrics, and the values being the result of the comparison. 111 | Together, these dictionaries will be combined into a larger 112 | data frame that contains the raw values. 113 | """ 114 | data = { 115 | 'iou_error': (1 - IoU(source, target)), 116 | 'volume_error': ( 117 | np.abs(np.sum(target) - np.sum(source)) / np.sum(source) 118 | ) 119 | } 120 | 121 | if not quick: 122 | source_surface = get_surface(source) 123 | data['surface_error'] = ( 124 | np.abs(get_surface(target) - source_surface) 125 | / source_surface 126 | ) 127 | 128 | source_roughness = get_roughness(source) 129 | data['roughness_error'] = ( 130 | np.abs(get_roughness(target) - source_roughness) 131 | / source_roughness 132 | ) 133 | 134 | return data 135 | 136 | 137 | def make_df(data, metric): 138 | """Create data frame for all targets, using a given metric. 139 | 140 | Parameters 141 | ---------- 142 | data : dict of `pd.DataFrame` 143 | Data frames; the keys are supposed to belong to different 144 | targets, while the values store all evaluated metrics. 145 | 146 | metric : str 147 | Metric to extract; must refer to a valid column of all the data 148 | frames. 149 | 150 | Returns 151 | ------- 152 | pd.DataFrame 153 | Long-form data set storing the results of `metric`. 154 | """ 155 | result = {} 156 | 157 | for target in data: 158 | result[target] = data[target][metric] 159 | 160 | return pd.DataFrame.from_dict(result) 161 | 162 | 163 | def swarmplot(data, label, ax): 164 | """Create swarmplot with specific label.""" 165 | ax = sns.violinplot( 166 | data=data, 167 | showfliers=False, 168 | color='lightgray', 169 | boxprops={'facecolor': 'None'}, 170 | orient='h', 171 | ax=ax 172 | ) 173 | 174 | ax = sns.swarmplot( 175 | data=data, 176 | color='.25', 177 | size=1.0, 178 | orient='h', 179 | ax=ax 180 | ) 181 | 182 | ax.set_xlabel(label, size=20) 183 | ax.set_xlim(-0.01, 1.01) 184 | 185 | 186 | if __name__ == '__main__': 187 | parser = argparse.ArgumentParser() 188 | parser.add_argument('CONFIG', type=str, help='Configuration file') 189 | 190 | parser.add_argument( 191 | '-q', '--quick', 192 | action='store_true', 193 | help='If set, only calculates statistics that can be obtained ' 194 | 'efficiently.' 195 | ) 196 | 197 | args = parser.parse_args() 198 | config = parse_config(args.CONFIG) 199 | 200 | # Stores all metrics calculated during the script run. The key 201 | # refers to one of the targets that is configured by the user, 202 | # while the values are the resulting metrics. 203 | data = collections.defaultdict(list) 204 | 205 | source_path = config['source']['path'] 206 | filenames = sorted(os.listdir(source_path)) 207 | processed = [] 208 | 209 | for filename in tqdm(filenames, desc='File'): 210 | source = norm_thres( 211 | imread(os.path.join(source_path, filename)) 212 | ) 213 | 214 | # First check whether all files exist; else, we skip processing 215 | # in order to ensure consistent lists. 216 | skip = False 217 | for target_ in config['targets']: 218 | target_path = os.path.join(target_['path'], filename) 219 | 220 | if not os.path.exists(target_path): 221 | skip = True 222 | break 223 | 224 | if skip: 225 | continue 226 | else: 227 | processed.append(os.path.basename(filename)) 228 | 229 | for target_ in config['targets']: 230 | target_path = os.path.join(target_['path'], filename) 231 | 232 | target = np.squeeze( 233 | norm_thres(np.nan_to_num( 234 | imread(target_path) 235 | ) 236 | ) 237 | ) 238 | 239 | label = target_['label'] 240 | data[label].append( 241 | evaluate(source, target, args.quick) 242 | ) 243 | 244 | for target in data.keys(): 245 | data[target] = pd.DataFrame.from_records(data[target]) 246 | data[target]['filename'] = processed 247 | 248 | fig, axes = plt.subplots( 249 | ncols=4 - 2 * args.quick, 250 | squeeze=True, 251 | sharey=True, 252 | figsize=(16, 6) 253 | ) 254 | 255 | filenames = list(map(os.path.basename, filenames)) 256 | 257 | if len(filenames) > len(processed): 258 | skipped = sorted(set(filenames) - set(processed)) 259 | print(f'Skipped some files: {skipped}') 260 | 261 | swarmplot(make_df(data, 'iou_error'), '1 - IoU', axes[0]) 262 | swarmplot(make_df(data, 'volume_error'), 'Rel. volume error', axes[1]) 263 | 264 | if not args.quick: 265 | swarmplot( 266 | make_df(data, 'surface_error'), 267 | 'Rel. surface area error', 268 | axes[2], 269 | ) 270 | 271 | swarmplot( 272 | make_df(data, 'roughness_error'), 273 | 'Rel. surface roughness error', 274 | axes[3], 275 | ) 276 | 277 | plt.tight_layout() 278 | plt.savefig(config['output'], backend='svg') 279 | plt.show() 280 | -------------------------------------------------------------------------------- /shapr/scripts/evaluation/nuclei.json: -------------------------------------------------------------------------------- 1 | { 2 | "source": { 3 | "path": "../../data/publication_data/nuclei/obj" 4 | }, 5 | "targets": [ 6 | { 7 | "label": "Without $\\mathcal{L}_\\mathrm{T}$", 8 | "path": "../../data/publication_data/nuclei/results_no_topo_adverserial_batchsize_3" 9 | }, 10 | { 11 | "label": "With $\\mathcal{L}_\\mathrm{T}$", 12 | "path": "../../data/publication_data/nuclei/results_topo_adv_dim2_bs3" 13 | } 14 | ], 15 | "output": "/tmp/nuclei.svg" 16 | } 17 | -------------------------------------------------------------------------------- /shapr/scripts/evaluation/red-blood-cell.json: -------------------------------------------------------------------------------- 1 | { 2 | "source": { 3 | "path": "../../data/publication_data/red_blood_cell/obj" 4 | }, 5 | "targets": [ 6 | { 7 | "label": "Without $\\mathcal{L}_\\mathrm{T}$", 8 | "path": "../../data/publication_data/red_blood_cell/results_no_topo_adverserial_batchsize_3" 9 | }, 10 | { 11 | "label": "With $\\mathcal{L}_\\mathrm{T}$", 12 | "path": "../../data/publication_data/red_blood_cell/results_topo_adv_dim2_bs3" 13 | } 14 | ], 15 | "output": "/tmp/red-blood-cell.svg" 16 | } 17 | -------------------------------------------------------------------------------- /shapr/scripts/tif_to_nrrd.py: -------------------------------------------------------------------------------- 1 | """Convert volumetric TIF to NRRD file for better visualisation.""" 2 | 3 | import argparse 4 | import nrrd 5 | import os 6 | 7 | from shapr.utils import import_image 8 | from tqdm import tqdm 9 | 10 | 11 | if __name__ == '__main__': 12 | parser = argparse.ArgumentParser() 13 | parser.add_argument( 14 | 'FILE', 15 | type=str, 16 | nargs='+', 17 | help='Input file(s)' 18 | ) 19 | 20 | args = parser.parse_args() 21 | 22 | for filename in tqdm(args.FILE, desc='File'): 23 | image_data = import_image(filename).squeeze() 24 | 25 | out_name = os.path.splitext(filename)[0] + '.nrrd' 26 | nrrd.write(out_name, image_data) 27 | -------------------------------------------------------------------------------- /shapr/scripts/tif_to_x3d.py: -------------------------------------------------------------------------------- 1 | """Convert volume TIF to X3D file for web-based visualisation.""" 2 | 3 | import argparse 4 | import os 5 | 6 | from shapr.utils import import_image 7 | 8 | from skimage.filters import threshold_otsu 9 | 10 | from tqdm import tqdm 11 | 12 | from vedo import Plotter 13 | from vedo import Volume 14 | 15 | 16 | def to_x3d(name, image_data): 17 | """Convert image data to X3D file. 18 | 19 | Parameters 20 | ---------- 21 | name : str 22 | Name to use for the converted file 23 | 24 | image_data : np.array 25 | Raw image data 26 | """ 27 | plt = Plotter(size=(600, 600), bg='GhostWhite', offscreen=True) 28 | volume = Volume(image_data).isosurface() 29 | 30 | # Add some nice colours based on the y coordinate. This is just for 31 | # visualisation purposes. 32 | coords = volume.points() 33 | volume.cmap('Spectral', coords[:, 1]) 34 | 35 | plt.show(volume, axes=1, viewup='z') 36 | plt.export(name, binary=False) 37 | plt.close() 38 | 39 | 40 | if __name__ == '__main__': 41 | parser = argparse.ArgumentParser() 42 | parser.add_argument( 43 | 'FILE', 44 | type=str, 45 | nargs='+', 46 | help='Input file(s)' 47 | ) 48 | 49 | args = parser.parse_args() 50 | 51 | for filename in tqdm(args.FILE, desc='File'): 52 | image_data = import_image(filename).squeeze() 53 | 54 | to_x3d( 55 | os.path.splitext(filename)[0] + '.x3d', 56 | image_data 57 | ) 58 | -------------------------------------------------------------------------------- /shapr/scripts/viewer.py: -------------------------------------------------------------------------------- 1 | """Viewer for volumetric result images.""" 2 | 3 | import argparse 4 | 5 | from vedo import Volume 6 | 7 | from vedo.applications import IsosurfaceBrowser 8 | from vedo.applications import RayCastPlotter 9 | 10 | from shapr.utils import import_image 11 | 12 | from skimage.filters import threshold_otsu 13 | 14 | 15 | if __name__ == '__main__': 16 | parser = argparse.ArgumentParser() 17 | parser.add_argument('INPUT', type=str, help='Input filename') 18 | 19 | parser.add_argument( 20 | '-m', '--mode', 21 | type=str, 22 | choices=['ray', 'iso'], 23 | default='iso', 24 | help='Determine visualisation type' 25 | ) 26 | 27 | parser.add_argument( 28 | '-t', '--threshold', 29 | action='store_true', 30 | help='If set, determines binarisation threshold automatically' 31 | ) 32 | 33 | args = parser.parse_args() 34 | 35 | image_data = import_image(args.INPUT).squeeze() 36 | 37 | if args.threshold: 38 | thres = threshold_otsu(image_data) 39 | image_data = image_data > thres 40 | image_data = image_data.astype(float) 41 | image_data *= 1.0 42 | 43 | volume = Volume(image_data) 44 | 45 | if args.mode == 'ray': 46 | plotter = RayCastPlotter(volume) 47 | else: 48 | plotter = IsosurfaceBrowser(volume, c='gold') 49 | 50 | plotter.show(axes=7).close() 51 | -------------------------------------------------------------------------------- /shapr/sweep.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Create jobs for a specific sweep. 4 | 5 | NAME="topo_shapr_sweep" 6 | SWEEP=$1 7 | 8 | if [ -z "$1" ]; then 9 | exit -1 10 | fi 11 | 12 | if [ -z "$2" ]; then 13 | N_JOBS=48; 14 | else 15 | N_JOBS=$2; 16 | fi 17 | 18 | for i in `seq ${N_JOBS}`; do 19 | sbatch -p gpu_p \ 20 | -J ${NAME} \ 21 | -o "${NAME}_%j.out" \ 22 | -x supergpu[05-08] \ 23 | --gres=gpu:1 \ 24 | --qos=gpu \ 25 | --cpus-per-task=4 \ 26 | --mem=4G \ 27 | --nice=10000 \ 28 | --wrap "poetry run wandb agent --count 1 $1" 29 | done 30 | -------------------------------------------------------------------------------- /shapr/sweeps/debug.yaml: -------------------------------------------------------------------------------- 1 | method: grid 2 | 3 | entity: shapr_topological 4 | project: SHAPR_topological 5 | 6 | parameters: 7 | path: 8 | value: "../docs/sample/" 9 | result_path: 10 | value: "" 11 | epochs_SHAPR: 12 | value: 2 13 | epochs_cSHAPR: 14 | value: 0 15 | topo_interp: 16 | value: 8 17 | topo_feat_d: 18 | values: [0, 1] 19 | topo_lambda: 20 | value: 0.1 21 | fold: 22 | values: [0, 1] 23 | 24 | program: run.py 25 | -------------------------------------------------------------------------------- /shapr/sweeps/red-blood-cell-baseline.yaml: -------------------------------------------------------------------------------- 1 | method: grid 2 | 3 | entity: shapr_topological 4 | project: SHAPR_topological 5 | 6 | parameters: 7 | path: 8 | value: "../data/Red blood cell" 9 | result_path: 10 | value: "../results/red-blood-cell-baseline-sb" 11 | batch_size: 12 | value: 3 13 | epochs_SHAPR: 14 | value: 100 15 | epochs_cSHAPR: 16 | value: 100 17 | topo_interp: 18 | value: 4 19 | topo_feat_d: 20 | value: 0 21 | topo_lambda: 22 | value: 0.0 23 | topo_loss_r: 24 | value: True 25 | fold: 26 | values: [0, 1, 2, 3, 4] 27 | 28 | program: run.py 29 | -------------------------------------------------------------------------------- /shapr/sweeps/red-blood-cell-d0.yaml: -------------------------------------------------------------------------------- 1 | method: grid 2 | 3 | entity: shapr_topological 4 | project: SHAPR_topological 5 | 6 | parameters: 7 | path: 8 | value: "../data/Red blood cell" 9 | result_path: 10 | value: "../results/red-blood-cell-at-sb-d0" 11 | batch_size: 12 | value: 3 13 | epochs_SHAPR: 14 | value: 100 15 | epochs_cSHAPR: 16 | value: 100 17 | topo_interp: 18 | value: 16 19 | topo_feat_d: 20 | value: 0 21 | topo_lambda: 22 | value: 0.1 23 | topo_loss_r: 24 | value: True 25 | fold: 26 | values: [0, 1, 2, 3, 4] 27 | 28 | program: run.py 29 | -------------------------------------------------------------------------------- /shapr/sweeps/red-blood-cell-d1.yaml: -------------------------------------------------------------------------------- 1 | method: grid 2 | 3 | entity: shapr_topological 4 | project: SHAPR_topological 5 | 6 | parameters: 7 | path: 8 | value: "../data/Red blood cell" 9 | result_path: 10 | value: "../results/red-blood-cell-at-sb-d1" 11 | batch_size: 12 | value: 3 13 | epochs_SHAPR: 14 | value: 100 15 | epochs_cSHAPR: 16 | value: 100 17 | topo_interp: 18 | value: 16 19 | topo_feat_d: 20 | value: 1 21 | topo_lambda: 22 | value: 0.1 23 | topo_loss_r: 24 | value: True 25 | fold: 26 | values: [0, 1, 2, 3, 4] 27 | 28 | program: run.py 29 | -------------------------------------------------------------------------------- /shapr/sweeps/red-blood-cell-d2.yaml: -------------------------------------------------------------------------------- 1 | method: grid 2 | 3 | entity: shapr_topological 4 | project: SHAPR_topological 5 | 6 | parameters: 7 | path: 8 | value: "../data/Red blood cell" 9 | result_path: 10 | value: "../results/red-blood-cell-at-sb-d2" 11 | batch_size: 12 | value: 3 13 | epochs_SHAPR: 14 | value: 100 15 | epochs_cSHAPR: 16 | value: 100 17 | topo_interp: 18 | value: 16 19 | topo_feat_d: 20 | value: 2 21 | topo_lambda: 22 | value: 0.1 23 | topo_loss_r: 24 | value: True 25 | fold: 26 | values: [0, 1, 2, 3, 4] 27 | 28 | program: run.py 29 | -------------------------------------------------------------------------------- /shapr/sweeps/red-blood-cell.yaml: -------------------------------------------------------------------------------- 1 | method: grid 2 | 3 | entity: shapr_topological 4 | project: SHAPR_topological 5 | 6 | parameters: 7 | path: 8 | value: "../data/Red blood cell" 9 | result_path: 10 | value: "" 11 | batch_size: 12 | value: 6 13 | result_path: 14 | value: "" 15 | epochs_SHAPR: 16 | value: 100 17 | epochs_cSHAPR: 18 | value: 100 19 | topo_interp: 20 | value: 16 21 | topo_feat_d: 22 | values: [0, 1, 2] 23 | topo_lambda: 24 | value: 0.1 25 | topo_loss_r: 26 | value: True 27 | fold: 28 | values: [0, 1, 2, 3, 4] 29 | 30 | program: run.py 31 | -------------------------------------------------------------------------------- /shapr/sweeps/small.yaml: -------------------------------------------------------------------------------- 1 | method: grid 2 | 3 | entity: shapr_topological 4 | project: SHAPR_topological 5 | 6 | parameters: 7 | path: 8 | value: "../docs/sample/" 9 | result_path: 10 | value: "" 11 | epochs_SHAPR: 12 | value: 100 13 | epochs_cSHAPR: 14 | value: 0 15 | topo_interp: 16 | value: 16 17 | topo_feat_d: 18 | values: [0, 1, 2] 19 | topo_lambda: 20 | value: 0.1 21 | topo_loss_r: 22 | value: True 23 | fold: 24 | values: [0, 1, 2, 3, 4] 25 | 26 | program: run.py 27 | -------------------------------------------------------------------------------- /shapr/sweeps/topology-adversarial.yaml: -------------------------------------------------------------------------------- 1 | method: grid 2 | 3 | entity: shapr_topological 4 | project: SHAPR_topological 5 | 6 | parameters: 7 | path: 8 | value: "../docs/sample/" 9 | result_path: 10 | value: "" 11 | epochs_SHAPR: 12 | value: 100 13 | epochs_cSHAPR: 14 | value: 100 15 | topo_interp: 16 | value: 16 17 | topo_feat_d: 18 | values: [0, 1, 2] 19 | topo_lambda: 20 | values: [0.01, 0.1] 21 | fold: 22 | values: [0, 1, 2, 3, 4] 23 | 24 | program: run.py 25 | -------------------------------------------------------------------------------- /shapr/sweeps/topology-all-dims.yaml: -------------------------------------------------------------------------------- 1 | method: grid 2 | 3 | entity: shapr_topological 4 | project: SHAPR_topological 5 | 6 | parameters: 7 | path: 8 | value: "../docs/sample/" 9 | result_path: 10 | value: "" 11 | epochs_SHAPR: 12 | value: 100 13 | epochs_cSHAPR: 14 | value: 0 15 | topo_interp: 16 | value: 16 17 | topo_feat_d: 18 | value: -1 19 | topo_feat_s: 20 | values: [True, False] 21 | topo_lambda: 22 | values: [0.1, 0.5] 23 | fold: 24 | values: [0, 1] 25 | 26 | program: run.py 27 | -------------------------------------------------------------------------------- /shapr/sweeps/topology-big-lambda.yaml: -------------------------------------------------------------------------------- 1 | method: grid 2 | 3 | entity: shapr_topological 4 | project: SHAPR_topological 5 | 6 | parameters: 7 | path: 8 | value: "../docs/sample/" 9 | result_path: 10 | value: "" 11 | epochs_SHAPR: 12 | value: 100 13 | epochs_cSHAPR: 14 | value: 0 15 | topo_interp: 16 | value: 16 17 | topo_feat_d: 18 | values: [0, 1, 2] 19 | topo_lambda: 20 | values: [10.0, 100.0] 21 | fold: 22 | values: [0, 1, 2, 3, 4] 23 | 24 | program: run.py 25 | -------------------------------------------------------------------------------- /shapr/sweeps/topology-superlevel.yaml: -------------------------------------------------------------------------------- 1 | method: grid 2 | 3 | entity: shapr_topological 4 | project: SHAPR_topological 5 | 6 | parameters: 7 | path: 8 | value: "../docs/sample/" 9 | result_path: 10 | value: "" 11 | epochs_SHAPR: 12 | value: 100 13 | epochs_cSHAPR: 14 | value: 0 15 | topo_interp: 16 | value: 16 17 | topo_feat_d: 18 | values: [0, 1, 2] 19 | topo_feat_s: 20 | value: True 21 | topo_lambda: 22 | value: 0.1 23 | fold: 24 | values: [0, 1, 2, 3, 4] 25 | 26 | program: run.py 27 | -------------------------------------------------------------------------------- /shapr/sweeps/topology.yaml: -------------------------------------------------------------------------------- 1 | method: grid 2 | 3 | entity: shapr_topological 4 | project: SHAPR_topological 5 | 6 | parameters: 7 | path: 8 | value: "../docs/sample/" 9 | result_path: 10 | value: "" 11 | epochs_SHAPR: 12 | value: 100 13 | epochs_cSHAPR: 14 | values: [0, 100] 15 | topo_interp: 16 | values: [8, 16] 17 | topo_feat_d: 18 | values: [0, 1, 2] 19 | topo_lambda: 20 | values: [0.1, 0.5] 21 | fold: 22 | values: [0, 1] 23 | 24 | program: run.py 25 | -------------------------------------------------------------------------------- /shapr/tests/test_data/images/A_cell_clusters000604.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/shapr/tests/test_data/images/A_cell_clusters000604.tif -------------------------------------------------------------------------------- /shapr/tests/test_data/images/A_cell_clusters000605.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/shapr/tests/test_data/images/A_cell_clusters000605.tif -------------------------------------------------------------------------------- /shapr/tests/test_data/images/A_cell_clusters000606.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/shapr/tests/test_data/images/A_cell_clusters000606.tif -------------------------------------------------------------------------------- /shapr/tests/test_data/json/settings_testing_params.json: -------------------------------------------------------------------------------- 1 | { 2 | "path": "path1_json", 3 | "result_path": "path2_json", 4 | "pretrained_weights_path": "path3_json", 5 | "random_seed" : 21, 6 | "batch_size": 5, 7 | "epochs_ShapeAE": 50, 8 | "epochs_cShapeAE": 500 9 | } -------------------------------------------------------------------------------- /shapr/tests/unit_tests/test_date_generator.py: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | def test_augmentation(): 5 | 6 | assert obj == expected_obj 7 | assert img == expected_img 8 | 9 | 10 | def test_data_generator(path, filenames): 11 | """ 12 | test data_generator using a small data set from 'test_data' folder. 13 | """ 14 | # can be a list of X_batch, Y_batch 15 | assert X_batch == expcted_X_batch 16 | assert Y_batch == expcted_X_batch 17 | 18 | 19 | def test_data_generator_test_set(path, filenames): 20 | """ 21 | test data_data_generator_test_set 22 | """ 23 | assert img_out_2 == expcted_img_out_2 24 | 25 | 26 | -------------------------------------------------------------------------------- /shapr/tests/unit_tests/test_metric.py: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | def test_dice_coef(): 6 | """ 7 | unit test for dice_coef() 8 | """ 9 | assert dice_coef() == expected_dice_coef 10 | 11 | 12 | def test_dice_coef_loss(): 13 | """ 14 | unit test for dice_coef_loss() 15 | """ 16 | assert dice_coef_loss() == expected_dice_coef_loss 17 | 18 | 19 | def test_dice_crossentropy_loss(): 20 | """ 21 | unit test for dice_coef_loss() 22 | """ 23 | assert dice_dice_crossentropy_loss() == expected_dice_crossentropy_loss 24 | -------------------------------------------------------------------------------- /shapr/tests/unit_tests/test_model.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marrlab/SHAPR_torch/d1bf5e7e8f9c30c3e3f1c0d84d53039c005be51e/shapr/tests/unit_tests/test_model.py -------------------------------------------------------------------------------- /shapr/tests/unit_tests/test_settings.py: -------------------------------------------------------------------------------- 1 | from shapeae import settings 2 | import pytest 3 | import json 4 | from pathlib import Path 5 | 6 | def test_settings_default_values(): 7 | with open(Path(__file__).parents[2].joinpath("default_params.json"), 'r') as f: 8 | default_params = json.load(f) 9 | 10 | for (_k, _v) in default_params.items(): 11 | assert getattr(settings, _k) == _v 12 | 13 | def test_setting_values_with_object_attributes(): 14 | _params = dict( 15 | path= "path1", 16 | result_path = "path2", 17 | pretrained_weights_path = "path3", 18 | random_seed = 42, 19 | batch_size = 10, 20 | epochs_ShapeAE = 100, 21 | epochs_cShapeAE = 1000, 22 | ) 23 | settings.path = _params['path'] 24 | settings.result_path = _params['result_path'] 25 | settings.pretrained_weights_path = _params['pretrained_weights_path'] 26 | settings.random_seed = _params['random_seed'] 27 | settings.batch_size = _params['batch_size'] 28 | settings.epochs_ShapeAE = _params['epochs_SHAPR'] 29 | settings.epochs_cShapeAE = _params['epochs_cSHAPR'] 30 | 31 | assert settings.path == _params['path'] 32 | assert settings.result_path == _params['result_path'] 33 | assert settings.pretrained_weights_path == _params['pretrained_weights_path'] 34 | assert settings.random_seed == _params['random_seed'] 35 | assert settings.batch_size == _params['batch_size'] 36 | assert settings.epochs_ShapeAE == _params['epochs_SHAPR'] 37 | assert settings.epochs_cShapeAE == _params['epochs_cSHAPR'] 38 | 39 | def test_setting_read_json(): 40 | settings.read_json(Path(__file__).parents[1].joinpath("test_data/json", "settings_testing_params.json")) 41 | 42 | 43 | assert settings.path == "path1_json" 44 | assert settings.result_path == "path2_json" 45 | assert settings.pretrained_weights_path == "path3_json" 46 | assert settings.random_seed == 21 47 | assert settings.batch_size == 5 48 | assert settings.epochs_ShapeAE == 50 49 | assert settings.epochs_cShapeAE == 500 50 | 51 | 52 | -------------------------------------------------------------------------------- /shapr/tests/unit_tests/test_utils.py: -------------------------------------------------------------------------------- 1 | from shapeae import import_image 2 | #import pytest 3 | 4 | def test_import_image(): 5 | _image = import_image("shapr/tests/test_data/images/A_cell_clusters000604.tif") 6 | assert _image.shape == (64, 64) 7 | -------------------------------------------------------------------------------- /shapr/utils.py: -------------------------------------------------------------------------------- 1 | from skimage.io import imread 2 | import numpy as np 3 | import os 4 | import numpy as np 5 | from skimage.io import imread, imsave 6 | from skimage.transform import resize, rotate 7 | import random 8 | from sklearn.model_selection import KFold 9 | from sklearn.model_selection import train_test_split 10 | import time 11 | import torch 12 | 13 | 14 | # Mohammad: Does scikit-image imread take care of all type of image? 15 | def import_image(path_name): 16 | ''' 17 | This function loads the image from the specified path 18 | NOTE: The alpha channel is removed (if existing) for consistency 19 | Args: 20 | path_name (str): path to image file 21 | 22 | return: 23 | image_data: numpy array containing the image data in at the given path. 24 | ''' 25 | if path_name.endswith('.npy'): 26 | image_data = np.array(np.load(path_name)) 27 | else: 28 | image_data = imread(path_name) 29 | # If has an alpha channel, remove it for consistency 30 | if np.array(np.shape(image_data))[-1] == 4: 31 | image_data = image_data[: ,: ,0:3] 32 | return image_data --------------------------------------------------------------------------------