diff --git a/album_catalog_index.db b/album_catalog_index.db index b9d2645..65b578b 100644 Binary files a/album_catalog_index.db and b/album_catalog_index.db differ diff --git a/solutions/DL4MicEverywhere/stardist-3d-zerocostdl4mic/CHANGELOG.md b/solutions/DL4MicEverywhere/stardist-3d-zerocostdl4mic/CHANGELOG.md new file mode 100644 index 0000000..5896fe0 --- /dev/null +++ b/solutions/DL4MicEverywhere/stardist-3d-zerocostdl4mic/CHANGELOG.md @@ -0,0 +1,8 @@ +# Changelog +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [1.15.3] - 2024-10-15 +../CHANGELOG.md diff --git a/solutions/DL4MicEverywhere/stardist-3d-zerocostdl4mic/solution.py b/solutions/DL4MicEverywhere/stardist-3d-zerocostdl4mic/solution.py new file mode 100644 index 0000000..810fe45 --- /dev/null +++ b/solutions/DL4MicEverywhere/stardist-3d-zerocostdl4mic/solution.py @@ -0,0 +1,166 @@ +###album catalog: cellcanvas + +# Based on https://github.com/HenriquesLab/DL4MicEverywhere/blob/main/notebooks/ZeroCostDL4Mic_notebooks/StarDist_3D_DL4Mic/configuration.yaml +# and https://github.com/betaseg/solutions/blob/main/solutions/io.github.betaseg/cellsketch-plot/solution.py + +from album.runner.api import setup +import subprocess + +try: + subprocess.check_output('nvidia-smi') + gpu_access = True +except Exception: + gpu_access = False + +def install(): + from album.runner.api import get_app_path + from git import Repo + import subprocess + import requests + import shutil + import os + + # Clone the DL4MicEverywhere repository + clone_url = "https://github.com/HenriquesLab/DL4MicEverywhere" + repo_path = get_app_path().joinpath("DL4MicEverywhere") + Repo.clone_from(clone_url, repo_path) + assert (repo_path.exists()) + + # URL of the notebook you want to download + notebook_url = "https://raw.githubusercontent.com/HenriquesLab/ZeroCostDL4Mic/master/Colab_notebooks/StarDist_3D_ZeroCostDL4Mic.ipynb" + + notebook_path = get_app_path().joinpath("StarDist_3D_ZeroCostDL4Mic.ipynb") + notebook_path.parent.mkdir(parents=True, exist_ok=True) + + response = requests.get(notebook_url) + response.raise_for_status() + + with open(notebook_path, 'wb') as notebook_file: + notebook_file.write(response.content) + + assert notebook_path.exists(), "Notebook download failed" + + # Convert the notebook to its colabless form + section_to_remove = "1.1. 1.2. 2. 6.2." + section_to_remove = section_to_remove.split(' ') + + python_command = ["python", ".tools/notebook_autoconversion/transform.py", "-p", f"{get_app_path()}", "-n", "StarDist_3D_ZeroCostDL4Mic.ipynb", "-s"] + python_command += section_to_remove + + subprocess.run(python_command, cwd=to) + subprocess.run(["mv", get_app_path().joinpath("colabless_StarDist_3D_ZeroCostDL4Mic.ipynb"), get_app_path().joinpath("StarDist_3D_ZeroCostDL4Mic.ipynb")]) + + # Remove the cloned DL4MicEverywhere repository + if os.name == 'nt': + os.system(f'rmdir /s /q "{to}"') + else: + # rmtree has no permission to do this on Windows + shutil.rmtree(to) + +def run(): + from album.runner.api import get_args, get_app_path + import subprocess + import os + + # Fetch arguments and paths + args = get_args() + app_path = get_app_path() + + # Path to the downloaded notebook + notebook_path = app_path.joinpath("StarDist_3D_ZeroCostDL4Mic.ipynb") + + # Ensure the notebook exists + assert notebook_path.exists(), "Notebook does not exist" + + # Output path for running the notebook + output_path = args.path + os.makedirs(output_path, exist_ok=True) + print(f"Saving output to {output_path}") + + # Set the LD_LIBRARY_PATH to allow TensorFlow to find the CUDA libraries + global gpu_access + if gpu_access: + os.environ["LD_LIBRARY_PATH"] = f"{os.environ['LD_LIBRARY_PATH']}:{os.environ['CONDA_PREFIX']}/lib" + + # Optionally, launch the Jupyter notebook to show the results + subprocess.run(["jupyter", "lab", str(notebook_path)], cwd=str(output_path)) + +if gpu_access: + channels = """ +- conda-forge +- nvidia +- anaconda +- defaults +""" + dependencies = """ +- python=3.10 +- cudatoolkit=11.8.0 +- cudnn=8.6.0 +- pip +- pkg-config +""" +else: + channels = """ +- conda-forge +- defaults +""" + dependencies = f""" +- python=3.10 +- pip +- pkg-config +""" + +env_file = f""" +channels: +{channels} +dependencies: +{dependencies} +- pip: + - GitPython==3.1.43 + - Pillow==9.4.0 + - astropy==5.2.2 + - csbdeep==0.7.4 + - fpdf2==2.7.4 + - future==0.18.3 + - google==2.0.3 + - gputools==0.2.14 + - h5py==3.10.0 + - ipywidgets==8.1.0 + - matplotlib==3.7.1 + - numpy==1.22.4 + - opencv-python==4.8.0.76 + - pandas==1.5.3 + - pathlib==1.0.1 + - pip==23.1.2 + - scikit-image==0.19.3 + - scikit-learn==1.2.2 + - scipy==1.10.1 + - stardist==0.8.5 + - tensorflow==2.12.0 + - tifffile==2023.7.18 + - tqdm==4.65.0 + - wget==3.2 +""" + +setup( + group="DL4MicEverywhere", + name="stardist-3d-zerocostdl4mic", + version="1.15.3", + solution_creators=["DL4Mic team", "album team"], + title="stardist-3d-zerocostdl4mic implementation.", + description="3D instance segmentation of oval objects (ie nuclei). StarDist is a deep-learning method that can be used to segment cell nuclei in 3D (xyz) images. Note - visit the ZeroCostDL4Mic wiki to check the original publications this network is based on and make sure you cite these.", + documentation="https://raw.githubusercontent.com/HenriquesLab/ZeroCostDL4Mic/master/BioimageModelZoo/README.md", + tags=['colab', 'notebook', 'StarDist', 'segmentation', 'ZeroCostDL4Mic', '3D', 'dl4miceverywhere'], + args=[{ + "name": "path", + "type": "string", + "default": ".", + "description": "What is your working path?" + }], + cite=[{'doi': 'https://doi.org/10.1038/s41467-021-22518-0', 'text': 'von Chamier, L., Laine, R.F., Jukkala, J. et al. Democratising deep learning for microscopy with ZeroCostDL4Mic. Nat Commun 12, 2276 (2021). https://doi.org/10.1038/s41467-021-22518-0'}, {'text': 'Martin Weigert, Uwe Schmidt, Robert Haase, Ko Sugawara, Gene Myers. Star-convex Polyhedra for 3D Object Detection and Segmentation in Microscopy. \tarXiv. https://arxiv.org/abs/1908.03636', 'url': 'https://arxiv.org/abs/1908.03636'}], + album_api_version="0.5.1", + covers=[], + run=run, + install=install, + dependencies={"environment_file": env_file}, +) diff --git a/solutions/DL4MicEverywhere/stardist-3d-zerocostdl4mic/solution.yml b/solutions/DL4MicEverywhere/stardist-3d-zerocostdl4mic/solution.yml new file mode 100644 index 0000000..3230946 --- /dev/null +++ b/solutions/DL4MicEverywhere/stardist-3d-zerocostdl4mic/solution.yml @@ -0,0 +1,36 @@ +album_api_version: 0.5.1 +args: +- default: . + description: What is your working path? + name: path + type: string +changelog: ../CHANGELOG.md +cite: +- doi: https://doi.org/10.1038/s41467-021-22518-0 + text: von Chamier, L., Laine, R.F., Jukkala, J. et al. Democratising deep learning + for microscopy with ZeroCostDL4Mic. Nat Commun 12, 2276 (2021). https://doi.org/10.1038/s41467-021-22518-0 +- text: "Martin Weigert, Uwe Schmidt, Robert Haase, Ko Sugawara, Gene Myers. Star-convex\ + \ Polyhedra for 3D Object Detection and Segmentation in Microscopy. \tarXiv. https://arxiv.org/abs/1908.03636" + url: https://arxiv.org/abs/1908.03636 +covers: [] +description: 3D instance segmentation of oval objects (ie nuclei). StarDist is a deep-learning + method that can be used to segment cell nuclei in 3D (xyz) images. Note - visit + the ZeroCostDL4Mic wiki to check the original publications this network is based + on and make sure you cite these. +documentation: https://raw.githubusercontent.com/HenriquesLab/ZeroCostDL4Mic/master/BioimageModelZoo/README.md +group: DL4MicEverywhere +name: stardist-3d-zerocostdl4mic +solution_creators: +- DL4Mic team +- album team +tags: +- colab +- notebook +- StarDist +- segmentation +- ZeroCostDL4Mic +- 3D +- dl4miceverywhere +timestamp: '2024-10-15T17:50:19.093307' +title: stardist-3d-zerocostdl4mic implementation. +version: 1.15.3