├── .github └── workflows │ └── book.yml ├── .gitignore ├── LICENSE-CC-BY ├── README.md ├── docs ├── _config.yml ├── _toc.yml ├── images │ ├── 2290861_computer_laptop_network_notebook_share_icon.png │ ├── 2290861_computer_laptop_network_notebook_share_icon_link_free.txt │ ├── biapol_logo.png │ ├── cle_logo.png │ ├── cupy_logo.png │ ├── cupy_logo_image_data_source_and_license.txt │ ├── dfg_logo.png │ ├── elephant-logo.png │ ├── idr_logo.png │ ├── idr_logo_image_data_souce_and_license.txt │ ├── johannes_mueller.jpg │ ├── jupyter_logo.png │ ├── mamba_logo.png │ ├── mamba_logo_source.txt │ ├── mara_lampert.jpeg │ ├── marcelo_zoccoler_photo.jpg │ ├── napari-image_logo_image_source.txt │ ├── napari_logo.png │ ├── ome-logomark.png │ ├── omero_mark_licence_permissions_link.txt │ ├── package_manager.jpeg │ ├── pol_logo.png │ ├── python_logo.png │ ├── python_logo_image_data_source.txt │ ├── qt_logo.png │ ├── robert_haase.png │ ├── scikit-image_logo_image_source.txt │ ├── skimage_logo.png │ ├── sphinx_logo.png │ ├── sphinx_logo_license │ ├── stardist_logo.jpg │ ├── stardist_logo_image_source.txt │ ├── tud_logo.png │ └── yolo_dataset.PNG ├── imprint.md ├── intro.md ├── johannes_mueller │ ├── .gitignore │ ├── Readme.md │ ├── anaconda_getting_started │ │ ├── Readme.md │ │ └── imgs │ │ │ ├── 1_anaconda_download.jpg │ │ │ ├── 2_anaconda_install_1.jpg │ │ │ ├── 2_anaconda_install_2.jpg │ │ │ ├── 2_anaconda_install_3.jpg │ │ │ ├── 2_anaconda_install_4.jpg │ │ │ ├── 2_anaconda_install_5.jpg │ │ │ ├── 2_anaconda_install_6.jpg │ │ │ ├── 3_create_environments_1.jpg │ │ │ ├── 3_create_environments_2.jpg │ │ │ ├── 3_create_environments_3.jpg │ │ │ ├── 3_create_environments_4.jpg │ │ │ ├── 4_jupyter_lab.png │ │ │ ├── 4_jupyter_lab2.png │ │ │ └── 4_jupyter_lab3.png │ ├── entry_sphinx │ │ ├── Readme.md │ │ └── images │ │ │ ├── generate_docstring.png │ │ │ ├── screenshot_1.JPG │ │ │ ├── screenshot_2.JPG │ │ │ ├── screenshot_3.JPG │ │ │ ├── screenshot_4.JPG │ │ │ ├── screenshot_5.JPG │ │ │ └── screenshot_6.JPG │ ├── entry_user_inter │ │ └── Readme.md │ ├── entry_user_interf2 │ │ ├── Readme.md │ │ └── scripts │ │ │ ├── example_1 │ │ │ ├── MainWindow.py │ │ │ ├── MainWindow.ui │ │ │ ├── MyGUI.py │ │ │ └── matplotlibwidgetFile.py │ │ │ ├── example_2 │ │ │ ├── MainWindow.py │ │ │ ├── MainWindow.ui │ │ │ ├── MyGUI.py │ │ │ └── matplotlibwidgetFile.py │ │ │ └── example_3 │ │ │ ├── MainWindow.py │ │ │ ├── MainWindow.ui │ │ │ ├── MyGUI.py │ │ │ ├── matplotlibwidgetFile.py │ │ │ └── stylefile.qss │ ├── qtdesigner_and_magicgui │ │ ├── Readme.md │ │ ├── example │ │ │ ├── complex_widget.ui │ │ │ ├── demo.ipynb │ │ │ └── my_custom_widget.py │ │ └── imgs │ │ │ ├── 10_final_widget.PNG │ │ │ ├── 11_widget_options.PNG │ │ │ ├── 12_widget_in_napari.PNG │ │ │ ├── 13_widget_in_napari_and_magicgui.PNG │ │ │ ├── 14_threshold_widget.gif │ │ │ ├── 1_create_widget.PNG │ │ │ ├── 2_create_widget.PNG │ │ │ ├── 3_create_widget.PNG │ │ │ ├── 4_available_layouts.PNG │ │ │ ├── 5_scaled_widgets.PNG │ │ │ ├── 6_spacers.PNG │ │ │ ├── 7_drop_spacers.PNG │ │ │ ├── 8_drop_spacers2.PNG │ │ │ └── 9_vertical_layout.PNG │ └── yolo_from_omero │ │ ├── detection.yaml │ │ ├── imgs │ │ ├── PR_curve.png │ │ ├── annotate.gif │ │ ├── confusion_matrix.png │ │ ├── confusion_matrix_normalized.png │ │ ├── image1.png │ │ ├── image2.PNG │ │ ├── image3.PNG │ │ ├── image4.PNG │ │ ├── image5.png │ │ ├── image6.png │ │ ├── image7.png │ │ ├── image8.png │ │ ├── labels.jpg │ │ ├── train_batch0.jpg │ │ ├── val_batch1_labels.jpg │ │ ├── val_batch1_pred.jpg │ │ └── well_102_t0_x2671.34_y1437.11.png │ │ └── train_yolo.ipynb ├── mara_lampert │ ├── getting_started_with_mambaforge_and_python │ │ ├── imgs │ │ │ ├── 1_mambaforge_download_1.png │ │ │ ├── 1_mambaforge_download_11.png │ │ │ ├── 1_mambaforge_download_12.png │ │ │ ├── 1_mambaforge_download_2.png │ │ │ ├── 2_mac_install_1.png │ │ │ ├── 2_mac_install_2.png │ │ │ ├── 2_mac_install_3.png │ │ │ ├── 2_mac_install_4.png │ │ │ ├── 2_mambaforge_install_1.png │ │ │ ├── 2_mambaforge_install_2.png │ │ │ ├── 2_mambaforge_install_3.png │ │ │ ├── 2_mambaforge_install_4.png │ │ │ ├── 2_mambaforge_install_5.png │ │ │ ├── 2_mambaforge_install_6.png │ │ │ ├── 2_mambaforge_install_7.png │ │ │ ├── 2_miniforge_install_1.png │ │ │ ├── 2_miniforge_install_2.png │ │ │ ├── 2_miniforge_install_3.png │ │ │ ├── 2_miniforge_install_4.png │ │ │ ├── 2_miniforge_install_5.png │ │ │ ├── 2_miniforge_install_6.png │ │ │ ├── 2_miniforge_install_7.png │ │ │ ├── 3_envs_1.png │ │ │ ├── 3_envs_2.png │ │ │ ├── 4_devbio_napari_1.png │ │ │ ├── 5_jupyter_1.png │ │ │ ├── 5_jupyter_2.png │ │ │ ├── 5_jupyter_3.png │ │ │ ├── 5_jupyter_4.png │ │ │ └── 6_install_seaborn.png │ │ └── readme.md │ ├── getting_started_with_miniforge_and_python │ │ ├── imgs │ │ │ ├── 1_miniforge_download_12.png │ │ │ ├── 2_mac_install_1.png │ │ │ ├── 2_mac_install_2.png │ │ │ ├── 2_mac_install_3.png │ │ │ ├── 2_mac_install_4.png │ │ │ ├── 2_miniforge_install_1.png │ │ │ ├── 2_miniforge_install_2.png │ │ │ ├── 2_miniforge_install_3.png │ │ │ ├── 2_miniforge_install_4.png │ │ │ ├── 2_miniforge_install_5.png │ │ │ ├── 2_miniforge_install_6.png │ │ │ ├── 2_miniforge_install_7.png │ │ │ ├── 3_envs_1.png │ │ │ ├── 3_envs_2.png │ │ │ ├── 4_devbio_napari_1.png │ │ │ ├── 5_jupyter_1.png │ │ │ ├── 5_jupyter_2.png │ │ │ ├── 5_jupyter_3.png │ │ │ ├── 5_jupyter_4.png │ │ │ ├── 6_install_seaborn.png │ │ │ └── 6_install_seaborn_2.png │ │ └── readme.md │ └── readme.md ├── marcelo_zoccoler │ ├── entry_user_interf3 │ │ ├── Readme.md │ │ ├── images │ │ │ ├── 21_Map_of_Tabuaeran_Kiribati_blue.png │ │ │ ├── designer_stylesheet.png │ │ │ ├── designer_stylesheet0.png │ │ │ ├── flood_tool_gui.png │ │ │ ├── map_of_Tauaeran_license.txt │ │ │ ├── napari_flood_tool1.png │ │ │ ├── napari_flood_tool1b.png │ │ │ ├── napari_flood_tool2.png │ │ │ ├── napari_flood_tool3.png │ │ │ ├── napari_flood_tool4.png │ │ │ ├── napari_flood_tool5.png │ │ │ ├── napari_island_in_napari.png │ │ │ ├── napari_window.png │ │ │ └── napari_window_in_napari.png │ │ └── scripts │ │ │ ├── add_flood_tool.py │ │ │ ├── flood_tool.ui │ │ │ ├── functiongui_add_flood_tool.py │ │ │ └── magicgui_add_flood_tool.py │ ├── entry_user_interf4 │ │ ├── Readme.md │ │ ├── images │ │ │ ├── cookiecutter_questions1.png │ │ │ ├── cookiecutter_questions2.png │ │ │ ├── directory_items.png │ │ │ ├── flood_plugin_PR.png │ │ │ ├── flood_plugin_commit.png │ │ │ ├── flood_plugin_merge.png │ │ │ ├── flood_plugin_v1.png │ │ │ ├── github_desktop1.png │ │ │ ├── github_desktop1b.png │ │ │ ├── github_desktop1c.png │ │ │ ├── github_release.png │ │ │ ├── github_repo_page.png │ │ │ ├── napari_plugin1.png │ │ │ └── new_branch.png │ │ └── scripts │ │ │ └── flood_tool.ui │ ├── jamovi │ │ ├── data │ │ │ ├── .gitignore │ │ │ ├── Results_black.csv │ │ │ └── Results_white.csv │ │ ├── images │ │ │ ├── TEM_filter_sample_and_overlay.png │ │ │ ├── jamovi-icon.png │ │ │ ├── screen0.PNG │ │ │ ├── screen1.PNG │ │ │ ├── screen2.PNG │ │ │ ├── screen3a.PNG │ │ │ ├── screen3b.PNG │ │ │ ├── screen4a.PNG │ │ │ ├── screen4b.PNG │ │ │ ├── screen4c.PNG │ │ │ ├── screen5a.PNG │ │ │ ├── screen6.PNG │ │ │ ├── screen7.PNG │ │ │ └── screen7b.PNG │ │ └── jamovi.md │ ├── mini_sabbatical_rike │ │ └── Readme.md │ ├── omero_scripts │ │ ├── figures │ │ │ ├── omero_screen1.png │ │ │ ├── omero_screen2.png │ │ │ ├── omero_screen3.png │ │ │ ├── omero_screen4.png │ │ │ ├── omero_screen5.png │ │ │ ├── omero_screen6.png │ │ │ └── refresh.png │ │ └── readme.md │ └── readme.md ├── people.md ├── robert_haase │ ├── browsing_idr │ │ ├── browse_idr.ipynb │ │ ├── idr_api │ │ │ ├── idr1.png │ │ │ ├── idr2.png │ │ │ ├── idr3.png │ │ │ ├── idr4.png │ │ │ ├── idr_collab.png │ │ │ ├── img_1.png │ │ │ └── img_1_thumbnail.png │ │ └── readme.md │ ├── clesperanto_google_colab │ │ ├── clesperanto_colab │ │ │ ├── colab1.png │ │ │ ├── colab10.png │ │ │ ├── colab11.png │ │ │ ├── colab2.png │ │ │ ├── colab3a.png │ │ │ ├── colab3b.png │ │ │ ├── colab4.png │ │ │ ├── colab5.png │ │ │ ├── colab6.png │ │ │ ├── colab7.png │ │ │ ├── colab8.png │ │ │ ├── colab9.png │ │ │ └── restart_runtime.png │ │ └── readme.md │ ├── cupy_cucim │ │ ├── cupy_cucim.ipynb │ │ ├── cupy_cucim │ │ │ ├── cu1.png │ │ │ ├── cu2.png │ │ │ ├── cu3.png │ │ │ ├── cu4.png │ │ │ ├── cu5.png │ │ │ ├── cu6.png │ │ │ ├── cu7.png │ │ │ └── cu8.png │ │ └── readme.md │ ├── ms_build_tools │ │ ├── download1.png │ │ ├── download2.png │ │ ├── error.png │ │ ├── install.png │ │ ├── install2.png │ │ ├── readme.md │ │ └── success.png │ ├── readme.md │ ├── stardist_gpu │ │ ├── images │ │ │ ├── check_env1.png │ │ │ ├── check_env2.png │ │ │ ├── check_env3.png │ │ │ ├── download_cuda.png │ │ │ ├── download_cudnn.png │ │ │ ├── install_cudnn1.png │ │ │ ├── install_cudnn2.png │ │ │ ├── install_cudnn3.png │ │ │ ├── install_stardist.png │ │ │ ├── install_stardist2.png │ │ │ ├── use_stardist1.png │ │ │ ├── use_stardist2.png │ │ │ ├── use_stardist3.png │ │ │ ├── use_stardist4.png │ │ │ └── use_stardist5.png │ │ └── readme.md │ └── why_we_blog │ │ └── readme.md ├── ryan_savill │ ├── 01_intro_to_python │ │ ├── IDE_overview.png │ │ └── readme.md │ ├── 02_intro_to_skimage │ │ ├── Introduction to Image Analysis Basics in Python with Scikit Image.ipynb │ │ ├── output_11_0.png │ │ ├── output_13_0.png │ │ ├── output_15_1.png │ │ ├── output_17_1.png │ │ ├── output_19_1.png │ │ ├── output_7_2.png │ │ ├── output_9_0.png │ │ └── readme.md │ ├── 03_background_subtraction │ │ ├── MAX_Lund_18.0_22.0_Hours Z-projection t1.tif │ │ ├── background subtraction in scipy and scikit image.ipynb │ │ ├── image_analysis_functions.py │ │ ├── output_13_1.png │ │ ├── output_17_2.png │ │ ├── output_19_1.png │ │ ├── output_21_1.png │ │ ├── output_3_1.png │ │ ├── output_5_1.png │ │ ├── output_7_0.png │ │ └── readme.md │ ├── principal_feature_analysis │ │ └── readme.md │ └── readme.md ├── stefan_hahmann │ ├── elephant_server_installation_windows │ │ ├── images │ │ │ ├── Windows_Subsystem_for_Linux_logo.png │ │ │ ├── docker-hello-world.png │ │ │ ├── docker-logo-blue.png │ │ │ ├── docker-wsl-integration.png │ │ │ ├── elephant-control-panel.png │ │ │ ├── elephant-logo.png │ │ │ ├── elephant-server-interface.png │ │ │ ├── fiji.png │ │ │ ├── hostnamectl.png │ │ │ ├── mastodon.png │ │ │ ├── nvidia.png │ │ │ ├── start-wsl.png │ │ │ └── wsl_l_v.png │ │ └── readme.md │ ├── github_desktop_jupyter_notebook │ │ ├── images │ │ │ ├── clone-project.png │ │ │ ├── git-logo.png │ │ │ ├── github-logo.png │ │ │ ├── github-mark.png │ │ │ ├── jupyter-logo.png │ │ │ ├── jupyterlab-notebook-edit.png │ │ │ ├── jupyterlab-notebook-run.png │ │ │ ├── jupyterlab-notebooks.png │ │ │ └── jupyterlab-start.png │ │ └── readme.md │ ├── readme.md │ ├── readme │ │ └── stefan_hahmann.jpg │ └── stardist_gpu_2025 │ │ ├── images │ │ ├── check_env1.png │ │ ├── check_env2.png │ │ ├── check_env3.png │ │ ├── cudnn_download.png │ │ ├── download_cuda.png │ │ ├── install_cudnn1.png │ │ ├── install_cudnn2.png │ │ ├── install_cudnn3.png │ │ ├── install_stardist.png │ │ ├── install_stardist2.png │ │ ├── tensorflow-gpu-table.png │ │ ├── use_stardist1.png │ │ ├── use_stardist2.png │ │ ├── use_stardist3.png │ │ ├── use_stardist4.png │ │ └── use_stardist5.gif │ │ └── readme.md └── till_korten │ ├── devbio-napari_cluster │ ├── images │ │ ├── 10_imshow.png │ │ ├── 1_login.png │ │ ├── 2_start_server.png │ │ ├── 3_configure_node.png │ │ ├── 4_wait.png │ │ ├── 7_open_notebook.png │ │ ├── 8_select_kernel.png │ │ └── 9_select_devbio_napari.png │ └── readme.md │ └── devbio-napari_cluster_setup │ ├── images │ ├── 1_login.png │ ├── 2_start_server.png │ ├── 3_configure_node.png │ ├── 4_wait.png │ ├── 5_open_terminal.png │ ├── 6_terminal_output.png │ ├── 7_open_notebook.png │ ├── 8_select_kernel.png │ ├── 9_select_devbio_napari.png │ ├── a1_new_project_application.png │ ├── a2_trial_project.png │ ├── a3_PI_PC_email.png │ ├── a4_CPU_GPU.png │ └── a6_data_management.png │ └── readme.md └── requirements.txt /.github/workflows/book.yml: -------------------------------------------------------------------------------- 1 | name: deploy-book 2 | 3 | # Only run this when the master branch changes 4 | on: 5 | push: 6 | branches: 7 | - master 8 | - main 9 | 10 | # This job installs dependencies, build the book, and pushes it to `gh-pages` 11 | jobs: 12 | deploy-book: 13 | runs-on: ubuntu-latest 14 | steps: 15 | - uses: actions/checkout@v2 16 | 17 | # Install dependencies 18 | - name: Set up Python 3.9 19 | uses: actions/setup-python@v1 20 | with: 21 | python-version: 3.9 22 | 23 | - name: Install dependencies 24 | run: | 25 | pip install -r requirements.txt 26 | 27 | 28 | # Build the book 29 | - name: Build the book 30 | run: | 31 | jupyter-book build docs/ 32 | 33 | # Push the book's HTML to github-pages 34 | - name: GitHub Pages action 35 | uses: peaceiris/actions-gh-pages@v3.5.9 36 | with: 37 | github_token: ${{ secrets.GITHUB_TOKEN }} 38 | publish_dir: ./docs/_build/html 39 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.idea/ 2 | docs/marcelo_zoccoler/entry_user_interf3/scripts/__pycache__/flood_tool.cpython-37.pyc 3 | 4 | .DS_Store 5 | 6 | .ipynb_checkpoints 7 | /docs/_build 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # The BiA-PoL Blog 2 | This repository contains a collection of blog posts explaining bio-image analysis to a broad audience, focusing on life-scientists. The content is available at 3 | 4 | https://biapol.github.io/blog/ 5 | 6 | It is maintained using [Jupyter lab](https://jupyterlab.readthedocs.io/en/stable/) and build using [Jupyter book](https://jupyterbook.org/intro.html). 7 | 8 | Most of us study and work at the [Bio-image Analysis Technology Development group](https://physics-of-life.tu-dresden.de/bia) at the [DFG Cluster of Excellence "Physics of Life" at the TU Dresden](https://physics-of-life.tu-dresden.de/). 9 | We blog about image data science, knowledge exchange and research data management in the life sciences. The contents of this blog are licensed by the respective authors under [CC-BY 4.0](https://creativecommons.org/licenses/by/4.0/) license unless a different license is specified. 10 | 11 | 12 | 13 | 14 | ## Acknowledgements 15 | We acknowledge the support by the Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) under Germany’s Excellence Strategy – EXC2068 - Cluster of Excellence Physics of Life of TU Dresden. 16 | 17 | 18 | 19 | [Imprint](https://biapol.github.io/blog/imprint) 20 | -------------------------------------------------------------------------------- /docs/_config.yml: -------------------------------------------------------------------------------- 1 | # Book settings 2 | # Learn more at https://jupyterbook.org/customize/config.html 3 | 4 | title: BiA-PoL blog 5 | author: Marcelo Zoccoler, Johannes Müller, Till Korten, Ryan Savill, Mara Lampert, Stefan Hahmann, Robert Haase, DFG Cluster of Excellence "Physics of Life", TU Dresden 6 | copyright: "2024" 7 | logo: images/biapol_logo.png 8 | execute: 9 | execute_notebooks: off 10 | 11 | # Define the name of the latex output file for PDF builds 12 | latex: 13 | latex_documents: 14 | targetname: BiA-PoL_blog.tex 15 | 16 | # Add a bibtex file so that we can create citations 17 | # bibtex_bibfiles: 18 | # - references.bib 19 | 20 | # Information about where the book exists on the web 21 | repository: 22 | url: https://github.com/BiAPoL/blog 23 | path_to_book: docs 24 | branch: master # Which branch of the repository should be used when creating links (optional) 25 | 26 | # Add GitHub buttons to your book 27 | html: 28 | use_issues_button: true 29 | use_repository_button: true 30 | 31 | parse: 32 | myst_enable_extensions: 33 | - html_image 34 | - dollarmath 35 | - amsmath 36 | -------------------------------------------------------------------------------- /docs/_toc.yml: -------------------------------------------------------------------------------- 1 | # Table of contents 2 | # Learn more at https://jupyterbook.org/customize/toc.html 3 | 4 | format: jb-book 5 | root: intro 6 | parts: 7 | - caption: Blog Posts 8 | chapters: 9 | # Add new chapters here (recent first) 10 | - file: stefan_hahmann/stardist_gpu_2025/readme 11 | - file: johannes_mueller/yolo_from_omero/train_yolo 12 | - file: mara_lampert/getting_started_with_miniforge_and_python/readme 13 | - file: stefan_hahmann/elephant_server_installation_windows/readme 14 | - file: stefan_hahmann/github_desktop_jupyter_notebook/readme 15 | - file: johannes_mueller/qtdesigner_and_magicgui/Readme 16 | - file: mara_lampert/getting_started_with_mambaforge_and_python/readme 17 | - file: till_korten/devbio-napari_cluster/readme 18 | - file: till_korten/devbio-napari_cluster_setup/readme 19 | - file: marcelo_zoccoler/omero_scripts/readme 20 | - file: marcelo_zoccoler/mini_sabbatical_rike/Readme 21 | - file: johannes_mueller/anaconda_getting_started/Readme 22 | - file: johannes_mueller/entry_sphinx/Readme 23 | - file: johannes_mueller/entry_user_inter/Readme 24 | sections: 25 | - file: johannes_mueller/entry_user_interf2/Readme 26 | - file: marcelo_zoccoler/entry_user_interf3/Readme 27 | - file: marcelo_zoccoler/entry_user_interf4/Readme 28 | - file: marcelo_zoccoler/jamovi/jamovi 29 | - file: robert_haase/ms_build_tools/readme 30 | - file: ryan_savill/principal_feature_analysis/readme 31 | - file: ryan_savill/03_background_subtraction/readme 32 | - file: ryan_savill/02_intro_to_skimage/readme 33 | - file: robert_haase/stardist_gpu/readme 34 | - file: ryan_savill/01_intro_to_python/readme 35 | - file: robert_haase/cupy_cucim/readme 36 | - file: robert_haase/browsing_idr/readme 37 | - file: robert_haase/clesperanto_google_colab/readme 38 | 39 | - caption: About the Blog 40 | chapters: 41 | - file: robert_haase/why_we_blog/readme 42 | - file: people 43 | sections: 44 | - file: mara_lampert/readme 45 | - file: stefan_hahmann/readme 46 | - file: johannes_mueller/Readme 47 | - file: marcelo_zoccoler/readme 48 | - file: ryan_savill/readme 49 | - file: robert_haase/readme 50 | - file: imprint 51 | -------------------------------------------------------------------------------- /docs/images/2290861_computer_laptop_network_notebook_share_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/images/2290861_computer_laptop_network_notebook_share_icon.png -------------------------------------------------------------------------------- /docs/images/2290861_computer_laptop_network_notebook_share_icon_link_free.txt: -------------------------------------------------------------------------------- 1 | This image is free for commercial use. 2 | 3 | https://www.iconfinder.com/icons/2290861/computer_laptop_network_notebook_share_web_icon -------------------------------------------------------------------------------- /docs/images/biapol_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/images/biapol_logo.png -------------------------------------------------------------------------------- /docs/images/cle_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/images/cle_logo.png -------------------------------------------------------------------------------- /docs/images/cupy_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/images/cupy_logo.png -------------------------------------------------------------------------------- /docs/images/cupy_logo_image_data_source_and_license.txt: -------------------------------------------------------------------------------- 1 | The cupy logo is adapted from the cupy github repository, where it is licensed under the MIT license. 2 | https://github.com/cupy/cupy/blob/master/LICENSE 3 | 4 | https://github.com/cupy/cupy/blob/master/docs/image/cupy_logo_1000px.png 5 | 6 | Copyright (c) 2015 Preferred Infrastructure, Inc. 7 | Copyright (c) 2015 Preferred Networks, Inc. 8 | 9 | Permission is hereby granted, free of charge, to any person obtaining a copy 10 | of this software and associated documentation files (the "Software"), to deal 11 | in the Software without restriction, including without limitation the rights 12 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 13 | copies of the Software, and to permit persons to whom the Software is 14 | furnished to do so, subject to the following conditions: 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | -------------------------------------------------------------------------------- /docs/images/dfg_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/images/dfg_logo.png -------------------------------------------------------------------------------- /docs/images/elephant-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/images/elephant-logo.png -------------------------------------------------------------------------------- /docs/images/idr_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/images/idr_logo.png -------------------------------------------------------------------------------- /docs/images/johannes_mueller.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/images/johannes_mueller.jpg -------------------------------------------------------------------------------- /docs/images/jupyter_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/images/jupyter_logo.png -------------------------------------------------------------------------------- /docs/images/mamba_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/images/mamba_logo.png -------------------------------------------------------------------------------- /docs/images/mamba_logo_source.txt: -------------------------------------------------------------------------------- 1 | The Mamba logo has been taken from https://github.com/mamba-org/mamba 2 | 3 | It is licensed BSD3: 4 | https://github.com/mamba-org/mamba/blob/main/LICENSE -------------------------------------------------------------------------------- /docs/images/mara_lampert.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/images/mara_lampert.jpeg -------------------------------------------------------------------------------- /docs/images/marcelo_zoccoler_photo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/images/marcelo_zoccoler_photo.jpg -------------------------------------------------------------------------------- /docs/images/napari-image_logo_image_source.txt: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2018, Napari 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | * Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 12 | * Redistributions in binary form must reproduce the above copyright notice, 13 | this list of conditions and the following disclaimer in the documentation 14 | and/or other materials provided with the distribution. 15 | 16 | * Neither the name of the copyright holder nor the names of its 17 | contributors may be used to endorse or promote products derived from 18 | this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /docs/images/napari_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/images/napari_logo.png -------------------------------------------------------------------------------- /docs/images/ome-logomark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/images/ome-logomark.png -------------------------------------------------------------------------------- /docs/images/omero_mark_licence_permissions_link.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/images/omero_mark_licence_permissions_link.txt -------------------------------------------------------------------------------- /docs/images/package_manager.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/images/package_manager.jpeg -------------------------------------------------------------------------------- /docs/images/pol_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/images/pol_logo.png -------------------------------------------------------------------------------- /docs/images/python_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/images/python_logo.png -------------------------------------------------------------------------------- /docs/images/python_logo_image_data_source.txt: -------------------------------------------------------------------------------- 1 | The python logo was adapted from this source: https://www.python.org/community/logos/ 2 | 3 | Guidelines for Use 4 | The Python logo is a trademark of the Python Software Foundation, which is responsible for defending against any damaging or confusing uses of the trademark. 5 | 6 | See the PSF Trademark Usage Policy. 7 | 8 | In general, we want the logo to be used as widely as possible to indicate use of Python or suitability for Python. However, please ask first when using a derived version of the logo or when in doubt. 9 | 10 | https://www.python.org/community/logos/ -------------------------------------------------------------------------------- /docs/images/qt_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/images/qt_logo.png -------------------------------------------------------------------------------- /docs/images/robert_haase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/images/robert_haase.png -------------------------------------------------------------------------------- /docs/images/scikit-image_logo_image_source.txt: -------------------------------------------------------------------------------- 1 | The Scikit-image logo was adapted from https://scikit-image.org 2 | 3 | Scikit-image is available under this license: 4 | 5 | Copyright (C) 2019, the scikit-image team 6 | All rights reserved. 7 | 8 | Redistribution and use in source and binary forms, with or without 9 | modification, are permitted provided that the following conditions are 10 | met: 11 | 12 | 1. Redistributions of source code must retain the above copyright 13 | notice, this list of conditions and the following disclaimer. 14 | 2. Redistributions in binary form must reproduce the above copyright 15 | notice, this list of conditions and the following disclaimer in 16 | the documentation and/or other materials provided with the 17 | distribution. 18 | 3. Neither the name of skimage nor the names of its contributors may be 19 | used to endorse or promote products derived from this software without 20 | specific prior written permission. 21 | 22 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 23 | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 24 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 25 | DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 26 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 27 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 28 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29 | HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 30 | STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 31 | IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 32 | POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /docs/images/skimage_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/images/skimage_logo.png -------------------------------------------------------------------------------- /docs/images/sphinx_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/images/sphinx_logo.png -------------------------------------------------------------------------------- /docs/images/stardist_logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/images/stardist_logo.jpg -------------------------------------------------------------------------------- /docs/images/stardist_logo_image_source.txt: -------------------------------------------------------------------------------- 1 | The star dist logo is available under a BSD 3.0 license 2 | Shared via https://github.com/stardist/stardist/ 3 | 4 | BSD 3-Clause License 5 | 6 | Copyright (c) 2018-2021, Uwe Schmidt, Martin Weigert 7 | All rights reserved. 8 | 9 | Redistribution and use in source and binary forms, with or without 10 | modification, are permitted provided that the following conditions are met: 11 | 12 | * Redistributions of source code must retain the above copyright notice, this 13 | list of conditions and the following disclaimer. 14 | 15 | * Redistributions in binary form must reproduce the above copyright notice, 16 | this list of conditions and the following disclaimer in the documentation 17 | and/or other materials provided with the distribution. 18 | 19 | * Neither the name of the copyright holder nor the names of its 20 | contributors may be used to endorse or promote products derived from 21 | this software without specific prior written permission. 22 | 23 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 24 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 25 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 26 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 27 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 28 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 29 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 30 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 31 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 32 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /docs/images/tud_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/images/tud_logo.png -------------------------------------------------------------------------------- /docs/images/yolo_dataset.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/images/yolo_dataset.PNG -------------------------------------------------------------------------------- /docs/imprint.md: -------------------------------------------------------------------------------- 1 | 2 | # Imprint 3 | 4 | ## Impressum 5 | ### Angaben gemäß § 5 TMG 6 | 7 | Dr. rer. medic. Robert Haase\ 8 | DFG Cluster of Excellence “Physics of Life”, TU Dresden\ 9 | Am Tatzberg 47/49\ 10 | 01307 Dresden 11 | 12 | ### Kontakt 13 | Telefon: +49 351 463-40315\ 14 | E-Mail: robert.haase (at] tu-dresden.de 15 | 16 | ### Verantwortlich für den Inhalt nach § 55 Abs. 2 RStV: 17 | Dr. rer. medic. Robert Haase\ 18 | DFG Cluster of Excellence “Physics of Life”, TU Dresden\ 19 | Am Tatzberg 47/49\ 20 | 01307 Dresden 21 | 22 | # Haftungsausschluss 23 | 24 | ## Haftung für Inhalte 25 | 26 | Die Inhalte unserer Seiten wurden mit größter Sorgfalt erstellt. Für die Richtigkeit, Vollständigkeit und Aktualität der Inhalte können wir jedoch keine Gewähr übernehmen. Als Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen. Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen. 27 | 28 | ## Haftung für Links 29 | 30 | Unser Angebot enthält Links zu externen Webseiten Dritter, auf deren Inhalte wir keinen Einfluss haben. Deshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. Für die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. Die verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße überprüft. Rechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht erkennbar. Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen. 31 | 32 | ## Urheberrecht 33 | 34 | Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen Urheberrecht. Die Vervielfältigung, Bearbeitung, Verbreitung und jede Art der Verwertung außerhalb der Grenzen des Urheberrechtes sind gestattet unter Einhaltung der Lizenzbedingungen der [Creative Commons CC-BY 4.0 Lizenz](https://creativecommons.org/licenses/by/4.0/). Soweit die Inhalte auf dieser Seite nicht vom Betreiber erstellt wurden, werden die Urheberrechte Dritter beachtet. Insbesondere werden Inhalte Dritter als solche gekennzeichnet. Sollten Sie trotzdem auf eine Urheberrechtsverletzung aufmerksam werden, bitten wir um einen entsprechenden Hinweis. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Inhalte umgehend entfernen. 35 | 36 | ## Datenschutz 37 | 38 | Die Nutzung unserer Webseite ist in der Regel ohne Angabe personenbezogener Daten möglich. Soweit auf unseren Seiten personenbezogene Daten (beispielsweise Name, Anschrift oder eMail-Adressen) erhoben werden, erfolgt dies, soweit möglich, stets auf freiwilliger Basis. Diese Daten werden ohne Ihre ausdrückliche Zustimmung nicht an Dritte weitergegeben. 39 | Wir weisen darauf hin, dass die Datenübertragung im Internet (z.B. bei der Kommunikation per E-Mail) Sicherheitslücken aufweisen kann. Ein lückenloser Schutz der Daten vor dem Zugriff durch Dritte ist nicht möglich. 40 | Der Nutzung von im Rahmen der Impressumspflicht veröffentlichten Kontaktdaten durch Dritte zur Übersendung von nicht ausdrücklich angeforderter Werbung und Informationsmaterialien wird hiermit ausdrücklich widersprochen. Die Betreiber der Seiten behalten sich ausdrücklich rechtliche Schritte im Falle der unverlangten Zusendung von Werbeinformationen, etwa durch Spam-Mails, vor. 41 | -------------------------------------------------------------------------------- /docs/intro.md: -------------------------------------------------------------------------------- 1 | # Welcome! 2 | Most of us study and work at the [Bio-image Analysis Technology Development group](https://physics-of-life.tu-dresden.de/bia) at the [DFG Cluster of Excellence "Physics of Life" at the TU Dresden](https://physics-of-life.tu-dresden.de/). 3 | We blog about image data science, knowledge exchange and research data management in the life sciences. The contents of this blog are licensed by the respective authors under [CC-BY 4.0](https://creativecommons.org/licenses/by/4.0/) license unless a different license is specified. 4 | 5 | If you want to read more about why we blog, please check out [this blog post](robert_haase/why_we_blog/readme.md). 6 | 7 | If you have feedback or suggestions, if spotted a typo, broken link or misleading explanation, please get in touch via a 8 | [github issue](https://github.com/BiAPoL/blog/issues) or 9 | [pull request](https://github.com/BiAPoL/blog/pulls) so that we can fix it. Contributions are very welcome. 10 | 11 | ## Recent blog posts 12 | 13 | ### [Using StarDist in napari with GPU-support in Windows (2025)](stefan_hahmann/stardist_gpu_2025/readme) 14 | 15 | [Stefan Hahmann](stefan_hahmann/readme), January 20th, 2025
16 |

This blog post documents how to setup a Windows 10 system such that it can run the StarDist 2D and 3D plugin for Napari.

17 | 18 | ### [Training a yolo model on an OMERO dataset](ref:yolo_omero) 19 | 20 | [Johannes Soltwedel](johannes_mueller/readme), August 12th, 2024
21 |

YOLO is a powerful tool for object detection and thus, obviously interesting in bio-image analysis. This blog post will show you how to train a YOLO model on an OMERO dataset.

22 | 23 | ### [Getting started with Miniforge and Python](mara_lampert/getting_started_with_miniforge_and_python/readme)] 24 | 25 | [Mara Lampert](mara_lampert/readme), July 8th, 2024
26 |

This post will help you to get started with Python using Miniforge. More precisely, you will learn how to install Miniforge, how to create and use conda environments and you will get to know some important packages for bio image analysis.

27 | 28 | ### [Installation of Elephant Server on Windows](stefan_hahmann/elephant_server_installation_windows/readme) 29 | 30 | [Stefan Hahmann](stefan_hahmann/readme), April 24th, 2024
31 |

ELEPHANT is a platform for 3D cell tracking, based on incremental and interactive deep learning. This post will show you how to install the ELEPHANT server component on a Windows machine.

32 | 33 | Find more blog posts on the left sidebar. 34 | Enjoy reading! 35 | 36 | ## Acknowledgements 37 | We acknowledge the support by the Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) under Germany’s Excellence Strategy – EXC2068 - Cluster of Excellence Physics of Life of TU Dresden. 38 | 39 | 40 | 41 | [Imprint](imprint.md) 42 | -------------------------------------------------------------------------------- /docs/johannes_mueller/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/johannes_mueller/Readme.md: -------------------------------------------------------------------------------- 1 | # Johannes Soltwedel 2 | 3 | pol 4 | 5 | Hi! My name is Johannes and I originally studied physics. No coding, no biology, just classic physics: lasers, calculations, stuff like that. 6 | As I started to progress through the academic cycle, I began to be more and more interested into the life sciences: I worked on thermographic imaging of breast 7 | cancer lesions in my Master thesis and micro-environmental features of head-and neck tumors in mice during my PhD thesis. 8 | The more I got to learn about such biological systems, the more I got fascinated by the overwhelming complexity of biological systems - and the variance of approaches we have to address this! 9 | In particular, my recently finished thesis included analyzing large-scale microscopic image data (~20000 x 20000 pixels) of tumor samples in a way that 10 | would be reproducible and time-wise feasible - enter bio-image analysis. 11 | 12 | In 2021, I became part of the bio-image analysis group of Robert Haase at Physics of Life (POL) in Dresden. My task will be to develop tailored bio-image workflows for my fellow researchers, 13 | educate others to empower them to develop their own workflows and develop new methods such that they can be deployed by as many researchers as possible. 14 | 15 | ## Blog posts 16 | * [GUIs in Python - getting started](entry_user_inter/Readme) 17 | * [Advanced GUIs with Qt designer](entry_user_interf2/Readme) 18 | * [Automated package documentation with Sphinx](entry_sphinx/Readme) 19 | * [Getting started with Python and Anaconda](anaconda_getting_started/Readme) 20 | * [Training a yolo model on an OMERO dataset](ref:yolo_omero) 21 | 22 | ## Links 23 | * [BiA-PoL group website](https://physics-of-life.tu-dresden.de/en/research/technology-development-groups/bio-image-analysis) 24 | * [Johannes on twitter](https://twitter.com/jm_mightypirate) 25 | * [Johannes on github](https://github.com/jo-mueller) 26 | 27 | [Imprint](../imprint) 28 | -------------------------------------------------------------------------------- /docs/johannes_mueller/anaconda_getting_started/imgs/1_anaconda_download.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/anaconda_getting_started/imgs/1_anaconda_download.jpg -------------------------------------------------------------------------------- /docs/johannes_mueller/anaconda_getting_started/imgs/2_anaconda_install_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/anaconda_getting_started/imgs/2_anaconda_install_1.jpg -------------------------------------------------------------------------------- /docs/johannes_mueller/anaconda_getting_started/imgs/2_anaconda_install_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/anaconda_getting_started/imgs/2_anaconda_install_2.jpg -------------------------------------------------------------------------------- /docs/johannes_mueller/anaconda_getting_started/imgs/2_anaconda_install_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/anaconda_getting_started/imgs/2_anaconda_install_3.jpg -------------------------------------------------------------------------------- /docs/johannes_mueller/anaconda_getting_started/imgs/2_anaconda_install_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/anaconda_getting_started/imgs/2_anaconda_install_4.jpg -------------------------------------------------------------------------------- /docs/johannes_mueller/anaconda_getting_started/imgs/2_anaconda_install_5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/anaconda_getting_started/imgs/2_anaconda_install_5.jpg -------------------------------------------------------------------------------- /docs/johannes_mueller/anaconda_getting_started/imgs/2_anaconda_install_6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/anaconda_getting_started/imgs/2_anaconda_install_6.jpg -------------------------------------------------------------------------------- /docs/johannes_mueller/anaconda_getting_started/imgs/3_create_environments_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/anaconda_getting_started/imgs/3_create_environments_1.jpg -------------------------------------------------------------------------------- /docs/johannes_mueller/anaconda_getting_started/imgs/3_create_environments_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/anaconda_getting_started/imgs/3_create_environments_2.jpg -------------------------------------------------------------------------------- /docs/johannes_mueller/anaconda_getting_started/imgs/3_create_environments_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/anaconda_getting_started/imgs/3_create_environments_3.jpg -------------------------------------------------------------------------------- /docs/johannes_mueller/anaconda_getting_started/imgs/3_create_environments_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/anaconda_getting_started/imgs/3_create_environments_4.jpg -------------------------------------------------------------------------------- /docs/johannes_mueller/anaconda_getting_started/imgs/4_jupyter_lab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/anaconda_getting_started/imgs/4_jupyter_lab.png -------------------------------------------------------------------------------- /docs/johannes_mueller/anaconda_getting_started/imgs/4_jupyter_lab2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/anaconda_getting_started/imgs/4_jupyter_lab2.png -------------------------------------------------------------------------------- /docs/johannes_mueller/anaconda_getting_started/imgs/4_jupyter_lab3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/anaconda_getting_started/imgs/4_jupyter_lab3.png -------------------------------------------------------------------------------- /docs/johannes_mueller/entry_sphinx/images/generate_docstring.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/entry_sphinx/images/generate_docstring.png -------------------------------------------------------------------------------- /docs/johannes_mueller/entry_sphinx/images/screenshot_1.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/entry_sphinx/images/screenshot_1.JPG -------------------------------------------------------------------------------- /docs/johannes_mueller/entry_sphinx/images/screenshot_2.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/entry_sphinx/images/screenshot_2.JPG -------------------------------------------------------------------------------- /docs/johannes_mueller/entry_sphinx/images/screenshot_3.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/entry_sphinx/images/screenshot_3.JPG -------------------------------------------------------------------------------- /docs/johannes_mueller/entry_sphinx/images/screenshot_4.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/entry_sphinx/images/screenshot_4.JPG -------------------------------------------------------------------------------- /docs/johannes_mueller/entry_sphinx/images/screenshot_5.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/entry_sphinx/images/screenshot_5.JPG -------------------------------------------------------------------------------- /docs/johannes_mueller/entry_sphinx/images/screenshot_6.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/entry_sphinx/images/screenshot_6.JPG -------------------------------------------------------------------------------- /docs/johannes_mueller/entry_user_interf2/scripts/example_1/MainWindow.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # Form implementation generated from reading ui file 'MainWindow.ui' 4 | # 5 | # Created by: PyQt5 UI code generator 5.9.2 6 | # 7 | # WARNING! All changes made in this file will be lost! 8 | 9 | from PyQt5 import QtCore, QtGui, QtWidgets 10 | 11 | class Ui_MainWindow(object): 12 | def setupUi(self, MainWindow): 13 | MainWindow.setObjectName("MainWindow") 14 | MainWindow.resize(300, 147) 15 | self.centralwidget = QtWidgets.QWidget(MainWindow) 16 | self.centralwidget.setObjectName("centralwidget") 17 | self.gridLayout = QtWidgets.QGridLayout(self.centralwidget) 18 | self.gridLayout.setObjectName("gridLayout") 19 | self.label_2 = QtWidgets.QLabel(self.centralwidget) 20 | self.label_2.setObjectName("label_2") 21 | self.gridLayout.addWidget(self.label_2, 1, 3, 1, 1) 22 | self.label = QtWidgets.QLabel(self.centralwidget) 23 | self.label.setObjectName("label") 24 | self.gridLayout.addWidget(self.label, 0, 3, 1, 1) 25 | self.pushButton = QtWidgets.QPushButton(self.centralwidget) 26 | self.pushButton.setObjectName("pushButton") 27 | self.gridLayout.addWidget(self.pushButton, 0, 2, 1, 1) 28 | self.spinBox = QtWidgets.QSpinBox(self.centralwidget) 29 | self.spinBox.setObjectName("spinBox") 30 | self.gridLayout.addWidget(self.spinBox, 0, 1, 1, 1) 31 | self.horizontalSlider = QtWidgets.QSlider(self.centralwidget) 32 | self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal) 33 | self.horizontalSlider.setObjectName("horizontalSlider") 34 | self.gridLayout.addWidget(self.horizontalSlider, 1, 1, 1, 2) 35 | MainWindow.setCentralWidget(self.centralwidget) 36 | self.menubar = QtWidgets.QMenuBar(MainWindow) 37 | self.menubar.setGeometry(QtCore.QRect(0, 0, 300, 21)) 38 | self.menubar.setObjectName("menubar") 39 | MainWindow.setMenuBar(self.menubar) 40 | self.statusbar = QtWidgets.QStatusBar(MainWindow) 41 | self.statusbar.setObjectName("statusbar") 42 | MainWindow.setStatusBar(self.statusbar) 43 | 44 | self.retranslateUi(MainWindow) 45 | QtCore.QMetaObject.connectSlotsByName(MainWindow) 46 | 47 | def retranslateUi(self, MainWindow): 48 | _translate = QtCore.QCoreApplication.translate 49 | MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) 50 | self.label_2.setText(_translate("MainWindow", "TextLabel")) 51 | self.label.setText(_translate("MainWindow", "TextLabel")) 52 | self.pushButton.setText(_translate("MainWindow", "PushButton")) 53 | 54 | -------------------------------------------------------------------------------- /docs/johannes_mueller/entry_user_interf2/scripts/example_1/MainWindow.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWindow 4 | 5 | 6 | 7 | 0 8 | 0 9 | 300 10 | 147 11 | 12 | 13 | 14 | MainWindow 15 | 16 | 17 | 18 | 19 | 20 | 21 | TextLabel 22 | 23 | 24 | 25 | 26 | 27 | 28 | TextLabel 29 | 30 | 31 | 32 | 33 | 34 | 35 | PushButton 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | Qt::Horizontal 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 0 55 | 0 56 | 300 57 | 21 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /docs/johannes_mueller/entry_user_interf2/scripts/example_1/MyGUI.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | Created on Mon Oct 18 15:56:18 2021 4 | 5 | @author: johan 6 | """ 7 | 8 | import sys 9 | 10 | # This imports the previously generated UI file 11 | from MainWindow import Ui_MainWindow 12 | 13 | from PyQt5.QtCore import Qt 14 | from PyQt5.QtWidgets import QApplication, QMainWindow 15 | 16 | # Define the the main window class 17 | class MainWindow(QMainWindow, Ui_MainWindow): 18 | def __init__(self): 19 | super().__init__() 20 | 21 | #Initialize GUI 22 | self.setupUi(self) 23 | 24 | self.pushButton.clicked.connect(self.print2label_1) 25 | self.horizontalSlider.valueChanged.connect(self.print2label_2) 26 | 27 | def print2label_1(self): 28 | 29 | # read value from spinbox 30 | value = self.spinBox.value() 31 | 32 | # print value to textlabel 33 | self.label.setText(f'{value}') 34 | 35 | def print2label_2(self): 36 | 37 | # read value from slider 38 | value = self.horizontalSlider.value() 39 | 40 | # print value to textlabel 41 | self.label_2.setText(f'{value}') 42 | 43 | def closeEvent(self, event): 44 | self.close() 45 | app.quit() 46 | 47 | # Start the application 48 | app = QApplication(sys.argv) 49 | 50 | window = MainWindow() 51 | window.show() 52 | 53 | app.exec_() 54 | -------------------------------------------------------------------------------- /docs/johannes_mueller/entry_user_interf2/scripts/example_1/matplotlibwidgetFile.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | """ 4 | Given a QWidget object these objects give a matplotlib window in Qt4/5 5 | with one subplot and the toolbar. Can be used in designer for promoting 6 | QWidgets. 7 | """ 8 | 9 | from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas 10 | from matplotlib.backends.backend_qt5 import NavigationToolbar2QT as NavigationToolbar 11 | 12 | from matplotlib.figure import Figure 13 | 14 | from PyQt5.QtWidgets import QSizePolicy 15 | from PyQt5.QtWidgets import QVBoxLayout 16 | from PyQt5.QtWidgets import QWidget 17 | 18 | import numpy as np 19 | 20 | 21 | class MplCanvas(FigureCanvas): 22 | """ 23 | Defines the canvas of the matplotlib window 24 | """ 25 | 26 | def __init__(self): 27 | self.fig = Figure() # create figure 28 | self.axes = self.fig.add_subplot(111) # create subplot 29 | 30 | FigureCanvas.__init__(self, self.fig) # initialize canvas 31 | FigureCanvas.setSizePolicy(self, QSizePolicy.Expanding, 32 | QSizePolicy.Expanding) 33 | FigureCanvas.updateGeometry(self) 34 | 35 | class matplotlibWidget(QWidget): 36 | """ 37 | The matplotlibWidget class based on QWidget 38 | """ 39 | def __init__(self, parent=None): 40 | QWidget.__init__(self, parent) 41 | # save canvas and toolbar 42 | self.canvas = MplCanvas() 43 | self.toolbar = NavigationToolbar(self.canvas, self) 44 | # set layout and add them to widget 45 | self.vbl = QVBoxLayout() 46 | self.vbl.addWidget(self.toolbar) 47 | self.vbl.addWidget(self.canvas) 48 | self.setLayout(self.vbl) -------------------------------------------------------------------------------- /docs/johannes_mueller/entry_user_interf2/scripts/example_2/MainWindow.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # Form implementation generated from reading ui file 'MainWindow.ui' 4 | # 5 | # Created by: PyQt5 UI code generator 5.9.2 6 | # 7 | # WARNING! All changes made in this file will be lost! 8 | 9 | from PyQt5 import QtCore, QtGui, QtWidgets 10 | 11 | class Ui_MainWindow(object): 12 | def setupUi(self, MainWindow): 13 | MainWindow.setObjectName("MainWindow") 14 | MainWindow.resize(387, 295) 15 | MainWindow.setAutoFillBackground(False) 16 | self.centralwidget = QtWidgets.QWidget(MainWindow) 17 | self.centralwidget.setObjectName("centralwidget") 18 | self.gridLayout = QtWidgets.QGridLayout(self.centralwidget) 19 | self.gridLayout.setObjectName("gridLayout") 20 | self.plotWidget = matplotlibWidget(self.centralwidget) 21 | self.plotWidget.setObjectName("plotWidget") 22 | self.gridLayout.addWidget(self.plotWidget, 0, 0, 1, 1) 23 | MainWindow.setCentralWidget(self.centralwidget) 24 | self.menubar = QtWidgets.QMenuBar(MainWindow) 25 | self.menubar.setGeometry(QtCore.QRect(0, 0, 387, 21)) 26 | self.menubar.setObjectName("menubar") 27 | MainWindow.setMenuBar(self.menubar) 28 | self.statusbar = QtWidgets.QStatusBar(MainWindow) 29 | self.statusbar.setObjectName("statusbar") 30 | MainWindow.setStatusBar(self.statusbar) 31 | 32 | self.retranslateUi(MainWindow) 33 | QtCore.QMetaObject.connectSlotsByName(MainWindow) 34 | 35 | def retranslateUi(self, MainWindow): 36 | _translate = QtCore.QCoreApplication.translate 37 | MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) 38 | 39 | from matplotlibwidgetFile import matplotlibWidget 40 | -------------------------------------------------------------------------------- /docs/johannes_mueller/entry_user_interf2/scripts/example_2/MainWindow.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWindow 4 | 5 | 6 | 7 | 0 8 | 0 9 | 387 10 | 295 11 | 12 | 13 | 14 | MainWindow 15 | 16 | 17 | false 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 0 30 | 0 31 | 387 32 | 21 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | matplotlibWidget 41 | QWidget 42 |
matplotlibwidgetFile.h
43 | 1 44 |
45 |
46 | 47 | 48 |
49 | -------------------------------------------------------------------------------- /docs/johannes_mueller/entry_user_interf2/scripts/example_2/MyGUI.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | # This imports the previously generated UI file 4 | from MainWindow import Ui_MainWindow 5 | 6 | from PyQt5.QtCore import Qt 7 | from PyQt5.QtWidgets import QApplication, QMainWindow 8 | 9 | # Define the the main window class 10 | class MainWindow(QMainWindow, Ui_MainWindow): 11 | def __init__(self): 12 | super().__init__() 13 | 14 | #Initialize GUI 15 | self.setupUi(self) 16 | 17 | def closeEvent(self, event): 18 | self.close() 19 | app.quit() 20 | 21 | 22 | # Start the application 23 | app = QApplication(sys.argv) 24 | 25 | window = MainWindow() 26 | window.show() 27 | 28 | app.exec_() 29 | -------------------------------------------------------------------------------- /docs/johannes_mueller/entry_user_interf2/scripts/example_2/matplotlibwidgetFile.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | """ 4 | Given a QWidget object these objects give a matplotlib window in Qt4/5 5 | with one subplot and the toolbar. Can be used in designer for promoting 6 | QWidgets. 7 | """ 8 | 9 | from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas 10 | from matplotlib.backends.backend_qt5 import NavigationToolbar2QT as NavigationToolbar 11 | 12 | from matplotlib.figure import Figure 13 | 14 | from PyQt5.QtWidgets import QSizePolicy 15 | from PyQt5.QtWidgets import QVBoxLayout 16 | from PyQt5.QtWidgets import QWidget 17 | 18 | import numpy as np 19 | 20 | 21 | class MplCanvas(FigureCanvas): 22 | """ 23 | Defines the canvas of the matplotlib window 24 | """ 25 | 26 | def __init__(self): 27 | self.fig = Figure() # create figure 28 | self.axes = self.fig.add_subplot(111) # create subplot 29 | 30 | FigureCanvas.__init__(self, self.fig) # initialize canvas 31 | FigureCanvas.setSizePolicy(self, QSizePolicy.Expanding, 32 | QSizePolicy.Expanding) 33 | FigureCanvas.updateGeometry(self) 34 | 35 | class matplotlibWidget(QWidget): 36 | """ 37 | The matplotlibWidget class based on QWidget 38 | """ 39 | def __init__(self, parent=None): 40 | QWidget.__init__(self, parent) 41 | # save canvas and toolbar 42 | self.canvas = MplCanvas() 43 | self.toolbar = NavigationToolbar(self.canvas, self) 44 | # set layout and add them to widget 45 | self.vbl = QVBoxLayout() 46 | self.vbl.addWidget(self.toolbar) 47 | self.vbl.addWidget(self.canvas) 48 | self.setLayout(self.vbl) -------------------------------------------------------------------------------- /docs/johannes_mueller/entry_user_interf2/scripts/example_3/MainWindow.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # Form implementation generated from reading ui file 'MainWindow.ui' 4 | # 5 | # Created by: PyQt5 UI code generator 5.9.2 6 | # 7 | # WARNING! All changes made in this file will be lost! 8 | 9 | from PyQt5 import QtCore, QtGui, QtWidgets 10 | 11 | class Ui_MainWindow(object): 12 | def setupUi(self, MainWindow): 13 | MainWindow.setObjectName("MainWindow") 14 | MainWindow.resize(300, 147) 15 | self.centralwidget = QtWidgets.QWidget(MainWindow) 16 | self.centralwidget.setObjectName("centralwidget") 17 | self.gridLayout = QtWidgets.QGridLayout(self.centralwidget) 18 | self.gridLayout.setObjectName("gridLayout") 19 | self.label_2 = QtWidgets.QLabel(self.centralwidget) 20 | self.label_2.setObjectName("label_2") 21 | self.gridLayout.addWidget(self.label_2, 1, 3, 1, 1) 22 | self.label = QtWidgets.QLabel(self.centralwidget) 23 | self.label.setObjectName("label") 24 | self.gridLayout.addWidget(self.label, 0, 3, 1, 1) 25 | self.pushButton = QtWidgets.QPushButton(self.centralwidget) 26 | self.pushButton.setObjectName("pushButton") 27 | self.gridLayout.addWidget(self.pushButton, 0, 2, 1, 1) 28 | self.spinBox = QtWidgets.QSpinBox(self.centralwidget) 29 | self.spinBox.setObjectName("spinBox") 30 | self.gridLayout.addWidget(self.spinBox, 0, 1, 1, 1) 31 | self.horizontalSlider = QtWidgets.QSlider(self.centralwidget) 32 | self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal) 33 | self.horizontalSlider.setObjectName("horizontalSlider") 34 | self.gridLayout.addWidget(self.horizontalSlider, 1, 1, 1, 2) 35 | MainWindow.setCentralWidget(self.centralwidget) 36 | self.menubar = QtWidgets.QMenuBar(MainWindow) 37 | self.menubar.setGeometry(QtCore.QRect(0, 0, 300, 21)) 38 | self.menubar.setObjectName("menubar") 39 | MainWindow.setMenuBar(self.menubar) 40 | self.statusbar = QtWidgets.QStatusBar(MainWindow) 41 | self.statusbar.setObjectName("statusbar") 42 | MainWindow.setStatusBar(self.statusbar) 43 | 44 | self.retranslateUi(MainWindow) 45 | QtCore.QMetaObject.connectSlotsByName(MainWindow) 46 | 47 | def retranslateUi(self, MainWindow): 48 | _translate = QtCore.QCoreApplication.translate 49 | MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) 50 | self.label_2.setText(_translate("MainWindow", "TextLabel")) 51 | self.label.setText(_translate("MainWindow", "TextLabel")) 52 | self.pushButton.setText(_translate("MainWindow", "PushButton")) 53 | 54 | -------------------------------------------------------------------------------- /docs/johannes_mueller/entry_user_interf2/scripts/example_3/MainWindow.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWindow 4 | 5 | 6 | 7 | 0 8 | 0 9 | 300 10 | 147 11 | 12 | 13 | 14 | MainWindow 15 | 16 | 17 | 18 | 19 | 20 | 21 | TextLabel 22 | 23 | 24 | 25 | 26 | 27 | 28 | TextLabel 29 | 30 | 31 | 32 | 33 | 34 | 35 | PushButton 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | Qt::Horizontal 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 0 55 | 0 56 | 300 57 | 21 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /docs/johannes_mueller/entry_user_interf2/scripts/example_3/MyGUI.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | Created on Mon Oct 18 15:56:18 2021 4 | 5 | @author: johan 6 | """ 7 | 8 | import sys, os 9 | 10 | # This imports the previously generated UI file 11 | from MainWindow import Ui_MainWindow 12 | 13 | from PyQt5.QtCore import Qt 14 | from PyQt5.QtWidgets import QApplication, QMainWindow 15 | 16 | # Define the the main window class 17 | class MainWindow(QMainWindow, Ui_MainWindow): 18 | def __init__(self): 19 | super().__init__() 20 | 21 | #Initialize GUI 22 | self.setupUi(self) 23 | 24 | self.pushButton.clicked.connect(self.print2label_1) 25 | self.horizontalSlider.valueChanged.connect(self.print2label_2) 26 | 27 | def print2label_1(self): 28 | 29 | # read value from spinbox 30 | value = self.spinBox.value() 31 | 32 | # print value to textlabel 33 | self.label.setText(f'{value}') 34 | 35 | def print2label_2(self): 36 | 37 | # read value from slider 38 | value = self.horizontalSlider.value() 39 | 40 | # print value to textlabel 41 | self.label_2.setText(f'{value}') 42 | 43 | def closeEvent(self, event): 44 | self.close() 45 | app.quit() 46 | 47 | # Start the application 48 | app = QApplication(sys.argv) 49 | 50 | window = MainWindow() 51 | window.show() 52 | 53 | stylefile = os.path.join(os.getcwd(), 'stylefile.qss') 54 | window.setStyleSheet(open(stylefile, "r").read()) 55 | 56 | app.exec_() 57 | -------------------------------------------------------------------------------- /docs/johannes_mueller/entry_user_interf2/scripts/example_3/matplotlibwidgetFile.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | """ 4 | Given a QWidget object these objects give a matplotlib window in Qt4/5 5 | with one subplot and the toolbar. Can be used in designer for promoting 6 | QWidgets. 7 | """ 8 | 9 | from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas 10 | from matplotlib.backends.backend_qt5 import NavigationToolbar2QT as NavigationToolbar 11 | 12 | from matplotlib.figure import Figure 13 | 14 | from PyQt5.QtWidgets import QSizePolicy 15 | from PyQt5.QtWidgets import QVBoxLayout 16 | from PyQt5.QtWidgets import QWidget 17 | 18 | import numpy as np 19 | 20 | 21 | class MplCanvas(FigureCanvas): 22 | """ 23 | Defines the canvas of the matplotlib window 24 | """ 25 | 26 | def __init__(self): 27 | self.fig = Figure() # create figure 28 | self.axes = self.fig.add_subplot(111) # create subplot 29 | 30 | FigureCanvas.__init__(self, self.fig) # initialize canvas 31 | FigureCanvas.setSizePolicy(self, QSizePolicy.Expanding, 32 | QSizePolicy.Expanding) 33 | FigureCanvas.updateGeometry(self) 34 | 35 | class matplotlibWidget(QWidget): 36 | """ 37 | The matplotlibWidget class based on QWidget 38 | """ 39 | def __init__(self, parent=None): 40 | QWidget.__init__(self, parent) 41 | # save canvas and toolbar 42 | self.canvas = MplCanvas() 43 | self.toolbar = NavigationToolbar(self.canvas, self) 44 | # set layout and add them to widget 45 | self.vbl = QVBoxLayout() 46 | self.vbl.addWidget(self.toolbar) 47 | self.vbl.addWidget(self.canvas) 48 | self.setLayout(self.vbl) -------------------------------------------------------------------------------- /docs/johannes_mueller/qtdesigner_and_magicgui/example/complex_widget.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Form 4 | 5 | 6 | 7 | 0 8 | 0 9 | 400 10 | 212 11 | 12 | 13 | 14 | Form 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 0 24 | 25 | 26 | 27 | Tab 1 28 | 29 | 30 | 31 | 32 | 33 | PushButton 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | Qt::Horizontal 44 | 45 | 46 | 47 | 48 | 49 | 50 | Qt::Vertical 51 | 52 | 53 | 54 | 20 55 | 40 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | Tab 2 65 | 66 | 67 | 68 | 69 | 30 70 | 40 71 | 47 72 | 14 73 | 74 | 75 | 76 | TextLabel 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | Qt::Vertical 86 | 87 | 88 | 89 | 20 90 | 40 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | -------------------------------------------------------------------------------- /docs/johannes_mueller/qtdesigner_and_magicgui/example/demo.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import napari\n", 10 | "from my_custom_widget import my_custom_widget\n", 11 | "from skimage import data" 12 | ] 13 | }, 14 | { 15 | "cell_type": "code", 16 | "execution_count": 2, 17 | "metadata": {}, 18 | "outputs": [ 19 | { 20 | "data": { 21 | "text/plain": [ 22 | "" 23 | ] 24 | }, 25 | "execution_count": 2, 26 | "metadata": {}, 27 | "output_type": "execute_result" 28 | } 29 | ], 30 | "source": [ 31 | "viewer = napari.Viewer()\n", 32 | "viewer.add_image(data.camera(), name=\"camera\")\n", 33 | "\n", 34 | "widget = my_custom_widget(viewer)\n", 35 | "viewer.window.add_dock_widget(widget, area=\"right\")" 36 | ] 37 | } 38 | ], 39 | "metadata": { 40 | "kernelspec": { 41 | "display_name": "stress", 42 | "language": "python", 43 | "name": "python3" 44 | }, 45 | "language_info": { 46 | "codemirror_mode": { 47 | "name": "ipython", 48 | "version": 3 49 | }, 50 | "file_extension": ".py", 51 | "mimetype": "text/x-python", 52 | "name": "python", 53 | "nbconvert_exporter": "python", 54 | "pygments_lexer": "ipython3", 55 | "version": "3.9.16" 56 | }, 57 | "orig_nbformat": 4 58 | }, 59 | "nbformat": 4, 60 | "nbformat_minor": 2 61 | } 62 | -------------------------------------------------------------------------------- /docs/johannes_mueller/qtdesigner_and_magicgui/example/my_custom_widget.py: -------------------------------------------------------------------------------- 1 | from qtpy.QtWidgets import QWidget 2 | from qtpy.QtCore import QEvent, QObject 3 | from qtpy import uic 4 | from pathlib import Path 5 | 6 | from magicgui.widgets import create_widget 7 | from napari.layers import Image 8 | 9 | 10 | class my_custom_widget(QWidget): 11 | def __init__(self, napari_viewer): 12 | super().__init__() 13 | 14 | self.viewer = napari_viewer 15 | uic.loadUi(Path(__file__).parent / "./complex_widget.ui", self) 16 | 17 | # add magicgui widget to widget layout 18 | self.image_layer_select = create_widget(annotation=Image, 19 | label="Image_layer") 20 | self.layout().insertWidget(0, self.image_layer_select.native) 21 | self.installEventFilter(self) 22 | 23 | # connect slider to function 24 | self.horizontal_slider_widget.valueChanged.connect(self.on_slider_change) 25 | 26 | def eventFilter(self, obj: QObject, event: QEvent): 27 | if event.type() == QEvent.ParentChange: 28 | self.image_layer_select.parent_changed.emit(self.parent()) 29 | 30 | return super().eventFilter(obj, event) 31 | 32 | def on_slider_change(self): 33 | image_layer = self.image_layer_select.value 34 | binary_image = image_layer.data > self.horizontal_slider_widget.value() 35 | 36 | if 'result of threshold' not in self.viewer.layers: 37 | self.viewer.add_image(binary_image, 38 | name='result of threshold', 39 | opacity=0.5) 40 | else: 41 | self.viewer.layers['result of threshold'].data = binary_image -------------------------------------------------------------------------------- /docs/johannes_mueller/qtdesigner_and_magicgui/imgs/10_final_widget.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/qtdesigner_and_magicgui/imgs/10_final_widget.PNG -------------------------------------------------------------------------------- /docs/johannes_mueller/qtdesigner_and_magicgui/imgs/11_widget_options.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/qtdesigner_and_magicgui/imgs/11_widget_options.PNG -------------------------------------------------------------------------------- /docs/johannes_mueller/qtdesigner_and_magicgui/imgs/12_widget_in_napari.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/qtdesigner_and_magicgui/imgs/12_widget_in_napari.PNG -------------------------------------------------------------------------------- /docs/johannes_mueller/qtdesigner_and_magicgui/imgs/13_widget_in_napari_and_magicgui.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/qtdesigner_and_magicgui/imgs/13_widget_in_napari_and_magicgui.PNG -------------------------------------------------------------------------------- /docs/johannes_mueller/qtdesigner_and_magicgui/imgs/14_threshold_widget.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/qtdesigner_and_magicgui/imgs/14_threshold_widget.gif -------------------------------------------------------------------------------- /docs/johannes_mueller/qtdesigner_and_magicgui/imgs/1_create_widget.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/qtdesigner_and_magicgui/imgs/1_create_widget.PNG -------------------------------------------------------------------------------- /docs/johannes_mueller/qtdesigner_and_magicgui/imgs/2_create_widget.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/qtdesigner_and_magicgui/imgs/2_create_widget.PNG -------------------------------------------------------------------------------- /docs/johannes_mueller/qtdesigner_and_magicgui/imgs/3_create_widget.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/qtdesigner_and_magicgui/imgs/3_create_widget.PNG -------------------------------------------------------------------------------- /docs/johannes_mueller/qtdesigner_and_magicgui/imgs/4_available_layouts.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/qtdesigner_and_magicgui/imgs/4_available_layouts.PNG -------------------------------------------------------------------------------- /docs/johannes_mueller/qtdesigner_and_magicgui/imgs/5_scaled_widgets.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/qtdesigner_and_magicgui/imgs/5_scaled_widgets.PNG -------------------------------------------------------------------------------- /docs/johannes_mueller/qtdesigner_and_magicgui/imgs/6_spacers.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/qtdesigner_and_magicgui/imgs/6_spacers.PNG -------------------------------------------------------------------------------- /docs/johannes_mueller/qtdesigner_and_magicgui/imgs/7_drop_spacers.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/qtdesigner_and_magicgui/imgs/7_drop_spacers.PNG -------------------------------------------------------------------------------- /docs/johannes_mueller/qtdesigner_and_magicgui/imgs/8_drop_spacers2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/qtdesigner_and_magicgui/imgs/8_drop_spacers2.PNG -------------------------------------------------------------------------------- /docs/johannes_mueller/qtdesigner_and_magicgui/imgs/9_vertical_layout.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/qtdesigner_and_magicgui/imgs/9_vertical_layout.PNG -------------------------------------------------------------------------------- /docs/johannes_mueller/yolo_from_omero/detection.yaml: -------------------------------------------------------------------------------- 1 | path: E:/BiAPoL/yolo_demo/dataset # dataset root dir 2 | train: train/images # train images (relative to 'path') 128 images 3 | val: val/images # val images (relative to 'path') 128 images 4 | test: test/images # test images (optional) 5 | 6 | names: 7 | 0: cell 8 | 1: compacted 9 | 2: spheroid 10 | 3: dead -------------------------------------------------------------------------------- /docs/johannes_mueller/yolo_from_omero/imgs/PR_curve.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/yolo_from_omero/imgs/PR_curve.png -------------------------------------------------------------------------------- /docs/johannes_mueller/yolo_from_omero/imgs/annotate.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/yolo_from_omero/imgs/annotate.gif -------------------------------------------------------------------------------- /docs/johannes_mueller/yolo_from_omero/imgs/confusion_matrix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/yolo_from_omero/imgs/confusion_matrix.png -------------------------------------------------------------------------------- /docs/johannes_mueller/yolo_from_omero/imgs/confusion_matrix_normalized.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/yolo_from_omero/imgs/confusion_matrix_normalized.png -------------------------------------------------------------------------------- /docs/johannes_mueller/yolo_from_omero/imgs/image1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/yolo_from_omero/imgs/image1.png -------------------------------------------------------------------------------- /docs/johannes_mueller/yolo_from_omero/imgs/image2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/yolo_from_omero/imgs/image2.PNG -------------------------------------------------------------------------------- /docs/johannes_mueller/yolo_from_omero/imgs/image3.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/yolo_from_omero/imgs/image3.PNG -------------------------------------------------------------------------------- /docs/johannes_mueller/yolo_from_omero/imgs/image4.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/yolo_from_omero/imgs/image4.PNG -------------------------------------------------------------------------------- /docs/johannes_mueller/yolo_from_omero/imgs/image5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/yolo_from_omero/imgs/image5.png -------------------------------------------------------------------------------- /docs/johannes_mueller/yolo_from_omero/imgs/image6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/yolo_from_omero/imgs/image6.png -------------------------------------------------------------------------------- /docs/johannes_mueller/yolo_from_omero/imgs/image7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/yolo_from_omero/imgs/image7.png -------------------------------------------------------------------------------- /docs/johannes_mueller/yolo_from_omero/imgs/image8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/yolo_from_omero/imgs/image8.png -------------------------------------------------------------------------------- /docs/johannes_mueller/yolo_from_omero/imgs/labels.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/yolo_from_omero/imgs/labels.jpg -------------------------------------------------------------------------------- /docs/johannes_mueller/yolo_from_omero/imgs/train_batch0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/yolo_from_omero/imgs/train_batch0.jpg -------------------------------------------------------------------------------- /docs/johannes_mueller/yolo_from_omero/imgs/val_batch1_labels.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/yolo_from_omero/imgs/val_batch1_labels.jpg -------------------------------------------------------------------------------- /docs/johannes_mueller/yolo_from_omero/imgs/val_batch1_pred.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/yolo_from_omero/imgs/val_batch1_pred.jpg -------------------------------------------------------------------------------- /docs/johannes_mueller/yolo_from_omero/imgs/well_102_t0_x2671.34_y1437.11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/johannes_mueller/yolo_from_omero/imgs/well_102_t0_x2671.34_y1437.11.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/1_mambaforge_download_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/1_mambaforge_download_1.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/1_mambaforge_download_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/1_mambaforge_download_11.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/1_mambaforge_download_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/1_mambaforge_download_12.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/1_mambaforge_download_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/1_mambaforge_download_2.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_mac_install_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_mac_install_1.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_mac_install_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_mac_install_2.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_mac_install_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_mac_install_3.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_mac_install_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_mac_install_4.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_mambaforge_install_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_mambaforge_install_1.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_mambaforge_install_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_mambaforge_install_2.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_mambaforge_install_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_mambaforge_install_3.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_mambaforge_install_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_mambaforge_install_4.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_mambaforge_install_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_mambaforge_install_5.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_mambaforge_install_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_mambaforge_install_6.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_mambaforge_install_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_mambaforge_install_7.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_miniforge_install_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_miniforge_install_1.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_miniforge_install_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_miniforge_install_2.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_miniforge_install_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_miniforge_install_3.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_miniforge_install_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_miniforge_install_4.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_miniforge_install_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_miniforge_install_5.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_miniforge_install_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_miniforge_install_6.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_miniforge_install_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/2_miniforge_install_7.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/3_envs_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/3_envs_1.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/3_envs_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/3_envs_2.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/4_devbio_napari_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/4_devbio_napari_1.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/5_jupyter_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/5_jupyter_1.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/5_jupyter_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/5_jupyter_2.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/5_jupyter_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/5_jupyter_3.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/5_jupyter_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/5_jupyter_4.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/6_install_seaborn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_mambaforge_and_python/imgs/6_install_seaborn.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/1_miniforge_download_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/1_miniforge_download_12.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/2_mac_install_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/2_mac_install_1.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/2_mac_install_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/2_mac_install_2.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/2_mac_install_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/2_mac_install_3.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/2_mac_install_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/2_mac_install_4.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/2_miniforge_install_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/2_miniforge_install_1.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/2_miniforge_install_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/2_miniforge_install_2.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/2_miniforge_install_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/2_miniforge_install_3.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/2_miniforge_install_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/2_miniforge_install_4.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/2_miniforge_install_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/2_miniforge_install_5.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/2_miniforge_install_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/2_miniforge_install_6.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/2_miniforge_install_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/2_miniforge_install_7.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/3_envs_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/3_envs_1.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/3_envs_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/3_envs_2.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/4_devbio_napari_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/4_devbio_napari_1.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/5_jupyter_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/5_jupyter_1.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/5_jupyter_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/5_jupyter_2.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/5_jupyter_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/5_jupyter_3.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/5_jupyter_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/5_jupyter_4.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/6_install_seaborn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/6_install_seaborn.png -------------------------------------------------------------------------------- /docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/6_install_seaborn_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/mara_lampert/getting_started_with_miniforge_and_python/imgs/6_install_seaborn_2.png -------------------------------------------------------------------------------- /docs/mara_lampert/readme.md: -------------------------------------------------------------------------------- 1 | # Mara Lampert 2 | 3 | pol 4 | 5 | ## Blog posts 6 | 7 | Hi! My name is Mara and I studied Molecular Biology and Biotechnology at TU Dresden. During my studies, I learned more about animals, plants and microbes and how they work than about computers. But in the context of the module, _Bioinformatics_, I had a very engaging lecture about Bio-image Analysis held by Robert. This gave the impulse for me diving deeper into computer science and image analysis. 8 | 9 | In 2022, I became part of the Bio-image Analysis Group of Robert Haase at Physics of Life (PoL) in Dresden. First as a student assistant, now as a research assistant. My aim is to increase my knowledge about image analysis in python. I am excited about this interdisciplinary work and would like to facilitate and increase the exchange between computer scientists and biologists. 10 | 11 | Below is an index with all blogposts I already wrote, which will be updated with content every now and then. 12 | 13 | Enjoy coding! 14 | 15 | ## Blog posts 16 | * [Getting started with Mambaforge and Python ](getting_started_with_mambaforge_and_python/readme) 17 | * [Getting started with Miniforge and Python ](getting_started_with_miniforge_and_python/readme) 18 | 19 | ## Links 20 | * [BiA-PoL group website](https://physics-of-life.tu-dresden.de/en/research/technology-development-groups/bio-image-analysis) 21 | * [Mara on twitter](https://twitter.com/maralampert) 22 | * [Mara on github](https://github.com/marabuuu) 23 | 24 | [Imprint](../imprint) 25 | 26 | -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf3/images/21_Map_of_Tabuaeran_Kiribati_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/entry_user_interf3/images/21_Map_of_Tabuaeran_Kiribati_blue.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf3/images/designer_stylesheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/entry_user_interf3/images/designer_stylesheet.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf3/images/designer_stylesheet0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/entry_user_interf3/images/designer_stylesheet0.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf3/images/flood_tool_gui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/entry_user_interf3/images/flood_tool_gui.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf3/images/napari_flood_tool1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/entry_user_interf3/images/napari_flood_tool1.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf3/images/napari_flood_tool1b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/entry_user_interf3/images/napari_flood_tool1b.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf3/images/napari_flood_tool2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/entry_user_interf3/images/napari_flood_tool2.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf3/images/napari_flood_tool3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/entry_user_interf3/images/napari_flood_tool3.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf3/images/napari_flood_tool4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/entry_user_interf3/images/napari_flood_tool4.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf3/images/napari_flood_tool5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/entry_user_interf3/images/napari_flood_tool5.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf3/images/napari_island_in_napari.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/entry_user_interf3/images/napari_island_in_napari.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf3/images/napari_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/entry_user_interf3/images/napari_window.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf3/images/napari_window_in_napari.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/entry_user_interf3/images/napari_window_in_napari.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf3/scripts/add_flood_tool.py: -------------------------------------------------------------------------------- 1 | import napari 2 | from skimage.io import imread 3 | from qtpy.QtWidgets import QMainWindow 4 | from qtpy import uic 5 | from pathlib import Path 6 | 7 | def flood(image, delta): 8 | new_level = delta*85 9 | label_image = image <= new_level 10 | label_image = label_image.astype(int)*13 # label 13 is blue in napari 11 | return(label_image, new_level) 12 | 13 | # Define the main window class 14 | class FancyGUI(QMainWindow): 15 | def __init__(self, napari_viewer): # include napari_viewer as argument (it has to have this name) 16 | super().__init__() 17 | self.viewer = napari_viewer 18 | self.UI_FILE = str(Path(__file__).parent / "flood_tool.ui") # path to .ui file 19 | uic.loadUi(self.UI_FILE, self) # load QtDesigner .ui file 20 | 21 | self.label_layer = None # stored label layer variable 22 | self.pushButton.clicked.connect(self.apply_delta) 23 | 24 | def apply_delta(self): 25 | image = self.viewer.layers['napari_island'].data # We chose to use the layer name to find the correct image layer 26 | delta = self.doubleSpinBox.value() 27 | label, level = flood(image, delta) 28 | if self.label_layer is None: 29 | self.label_layer = self.viewer.add_labels(label) 30 | else: 31 | self.label_layer.data = label 32 | self.horizontalSlider.setValue(level) 33 | 34 | viewer = napari.Viewer() 35 | napari_image = imread('../images/21_Map_of_Tabuaeran_Kiribati_blue.png') # Reads an image from file 36 | viewer.add_image(napari_image, name='napari_island') # Adds the image to the viewer and give the image layer a name 37 | 38 | flood_widget = FancyGUI(viewer) # Create instance from our class 39 | viewer.window.add_dock_widget(flood_widget, area='right') # Add our gui instance to napari viewer 40 | -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf3/scripts/flood_tool.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWindow 4 | 5 | 6 | 7 | 0 8 | 0 9 | 288 10 | 76 11 | 12 | 13 | 14 | 15 | 288 16 | 76 17 | 18 | 19 | 20 | Flood Tool 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 288 29 | 76 30 | 31 | 32 | 33 | 34 | 35 | 36 | Qt::Vertical 37 | 38 | 39 | 40 | 20 41 | 40 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 75 51 | true 52 | 53 | 54 | 55 | Represents current gray value 56 | 57 | 58 | Sea Level (dm): 59 | 60 | 61 | 62 | 63 | 64 | 65 | false 66 | 67 | 68 | 69 | 0 70 | 14 71 | 72 | 73 | 74 | background-color : qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 0, 255), stop:1 rgba(0, 0, 255, 255)); 75 | 76 | 77 | 78 | 0 79 | 80 | 81 | 255 82 | 83 | 84 | Qt::Horizontal 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 30 93 | 20 94 | 95 | 96 | 97 | background-color: rgb(0, 0, 255); 98 | color: rgb(255, 255, 255); 99 | font: 75 12pt "MS Shell Dlg 2"; 100 | border: 2px solid white; 101 | border-radius: 5px; 102 | 103 | 104 | Apply 105 | 106 | 107 | 108 | 109 | 110 | 111 | 3.000000000000000 112 | 113 | 114 | 0.100000000000000 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 75 123 | true 124 | 125 | 126 | 127 | Temperature (Δ°C) 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf3/scripts/functiongui_add_flood_tool.py: -------------------------------------------------------------------------------- 1 | import napari 2 | from skimage.io import imread 3 | from napari.types import ImageData, LabelsData, LayerDataTuple 4 | from magicgui.widgets import FunctionGui 5 | 6 | def flood(image: ImageData, delta: float=0, new_level: int=0) -> LayerDataTuple: 7 | new_level = delta*85 8 | label_image = image <= new_level 9 | label_image = label_image.astype(int)*13 # label 13 is blue in napari 10 | return((label_image, {'name': 'flood result','metadata': {'new_level':new_level}})) 11 | 12 | class MyGui(FunctionGui): 13 | def __init__(self): 14 | super().__init__( 15 | flood, 16 | call_button=False, 17 | auto_call=True, 18 | layout='vertical', 19 | param_options={'delta': 20 | {'label': 'Temperature Increase (Δ°C):', 21 | 'min': 0, 'max' : 3, 'step': 0.1}, 22 | 'new_level': 23 | {'label':'Sea Level (dm):', 'widget_type':'Slider', 24 | 'min': 0, 'max' : 255, 'enabled' : False}} 25 | ) 26 | 27 | def __call__(self): 28 | label_image = super().__call__() 29 | new_level = round(label_image[1]['metadata']['new_level']) 30 | self.new_level.value = new_level 31 | 32 | 33 | napari_image = imread('../images/21_Map_of_Tabuaeran_Kiribati_blue.png') 34 | viewer = napari.Viewer() 35 | viewer.add_image(napari_image, name='napari_island') 36 | 37 | flood_widget = MyGui() 38 | viewer.window.add_dock_widget(flood_widget, area='right') -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf3/scripts/magicgui_add_flood_tool.py: -------------------------------------------------------------------------------- 1 | import napari 2 | from skimage.io import imread 3 | from magicgui import magicgui 4 | from napari.types import ImageData, LabelsData 5 | 6 | def flood(image: ImageData, delta: float=0, new_level: int=0) -> LabelsData: 7 | new_level = delta*85 8 | label_image = image <= new_level 9 | label_image = label_image.astype(int)*13 # label 13 is blue in napari 10 | return(label_image) 11 | 12 | viewer = napari.Viewer() 13 | napari_image = imread('../images/21_Map_of_Tabuaeran_Kiribati_blue.png') # Reads an image from file 14 | viewer.add_image(napari_image, name='napari_island') # Adds the image to the viewer and give the image layer a name 15 | 16 | flood_widget = magicgui(flood, delta={'label': 'Temperature Increase (Δ°C):', # Create GUI with magicgui 17 | 'min': 0, 'max' : 3, 'step': 0.1}, 18 | new_level={'label':'Sea Level (dm):', 'widget_type':'Slider', 19 | 'min': 0, 'max' : 255, "enabled": False}, 20 | auto_call=True) 21 | 22 | # Thalley Lambert contributed to the annotated function below 23 | @flood_widget.delta.changed.connect # Connect a function to delta (spinbox widget) 24 | def update_level(delta: float): 25 | flood_widget.new_level.value = delta * 85 # Update slider when spinbox changes 26 | 27 | viewer.window.add_dock_widget(flood_widget, area='right') # Add our gui instance to napari viewer 28 | 29 | -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf4/images/cookiecutter_questions1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/entry_user_interf4/images/cookiecutter_questions1.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf4/images/cookiecutter_questions2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/entry_user_interf4/images/cookiecutter_questions2.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf4/images/directory_items.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/entry_user_interf4/images/directory_items.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf4/images/flood_plugin_PR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/entry_user_interf4/images/flood_plugin_PR.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf4/images/flood_plugin_commit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/entry_user_interf4/images/flood_plugin_commit.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf4/images/flood_plugin_merge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/entry_user_interf4/images/flood_plugin_merge.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf4/images/flood_plugin_v1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/entry_user_interf4/images/flood_plugin_v1.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf4/images/github_desktop1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/entry_user_interf4/images/github_desktop1.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf4/images/github_desktop1b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/entry_user_interf4/images/github_desktop1b.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf4/images/github_desktop1c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/entry_user_interf4/images/github_desktop1c.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf4/images/github_release.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/entry_user_interf4/images/github_release.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf4/images/github_repo_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/entry_user_interf4/images/github_repo_page.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf4/images/napari_plugin1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/entry_user_interf4/images/napari_plugin1.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf4/images/new_branch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/entry_user_interf4/images/new_branch.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/entry_user_interf4/scripts/flood_tool.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWindow 4 | 5 | 6 | 7 | 0 8 | 0 9 | 288 10 | 76 11 | 12 | 13 | 14 | 15 | 288 16 | 76 17 | 18 | 19 | 20 | Flood Tool 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 288 29 | 76 30 | 31 | 32 | 33 | 34 | 35 | 36 | 255 37 | 38 | 39 | 40 | 41 | 42 | 43 | Qt::Vertical 44 | 45 | 46 | 47 | 20 48 | 40 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | Gray value (0-255): 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 0 65 | 14 66 | 67 | 68 | 69 | background-color : qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(255, 255, 255, 255), stop:1 rgba(0, 0, 255, 255)); 70 | 71 | 72 | 73 | 0 74 | 75 | 76 | 255 77 | 78 | 79 | Qt::Horizontal 80 | 81 | 82 | 83 | 84 | 85 | 86 | Represents current gray value 87 | 88 | 89 | Water Level: 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/jamovi/data/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/jamovi/data/Results_black.csv: -------------------------------------------------------------------------------- 1 | ,Area,Mean,Circ.,AR,Round,Solidity 2 | 1,84,148.548,0.880,1.304,0.767,0.880 3 | 2,32,164.250,0.991,1.224,0.817,0.901 4 | 3,89,159.494,0.643,1.476,0.678,0.802 5 | 4,21,172.714,1.000,1.116,0.896,0.857 6 | 5,35,153.429,0.897,1.082,0.924,0.854 7 | 6,32,166.125,0.991,1.242,0.805,0.889 8 | 7,43,177.349,0.585,1.960,0.510,0.761 9 | 8,25,178.560,0.714,2.781,0.360,0.820 10 | 9,27,173.778,0.836,1.255,0.797,0.818 11 | 10,23,174.043,0.824,1.803,0.555,0.807 12 | 11,50,149.300,0.681,2.690,0.372,0.833 13 | 12,72,155.736,0.625,2.594,0.386,0.823 14 | 13,70,145.400,0.857,1.531,0.653,0.843 15 | 14,93,137.892,0.720,1.741,0.575,0.849 16 | 15,35,162.343,0.809,1.908,0.524,0.909 17 | 16,73,139.726,0.907,1.205,0.830,0.896 18 | 17,27,158.111,1.000,1.316,0.760,0.885 19 | 18,21,174.905,1.000,1.147,0.872,0.933 20 | 19,32,192.344,0.710,1.463,0.684,0.800 21 | 20,30,158.433,0.769,1.306,0.765,0.800 22 | 21,637,169.868,0.362,1.795,0.557,0.696 23 | 22,108,141.444,0.730,1.260,0.794,0.847 24 | 23,29,161.828,0.784,1.872,0.534,0.841 25 | 24,47,164.979,0.654,1.781,0.561,0.740 26 | 25,35,167.257,0.777,1.430,0.699,0.833 27 | 26,133,139.609,0.592,2.793,0.358,0.850 28 | 27,239,118.322,0.683,1.174,0.852,0.823 29 | 28,31,153.968,0.838,1.189,0.841,0.861 30 | 29,23,163.435,1.000,1.227,0.815,0.902 31 | 30,57,136.965,0.839,1.449,0.690,0.857 32 | 31,65,155.846,0.730,1.330,0.752,0.807 33 | 32,56,167.000,0.775,1.509,0.663,0.903 34 | -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/jamovi/data/Results_white.csv: -------------------------------------------------------------------------------- 1 | ,Area,Mean,Circ.,AR,Round,Solidity 2 | 1,38,247.289,0.819,1.844,0.542,0.927 3 | 2,173,246.769,0.877,1.251,0.799,0.945 4 | 3,168,247.048,0.985,1.101,0.908,0.944 5 | 4,406,247.493,0.747,1.820,0.549,0.899 6 | 5,188,246.362,0.934,1.184,0.844,0.938 7 | 6,186,246.253,0.946,1.187,0.842,0.947 8 | 7,419,247.439,0.711,1.607,0.622,0.866 9 | 8,32,242.000,1.000,1.000,1.000,0.941 10 | 9,76,245.855,0.944,1.212,0.825,0.916 11 | 10,173,247.329,0.860,1.716,0.583,0.930 12 | 11,170,246.035,0.949,1.088,0.919,0.934 13 | 12,105,246.448,0.997,1.159,0.863,0.959 14 | 13,135,246.556,0.960,1.227,0.815,0.931 15 | 14,54,243.926,0.933,1.544,0.648,0.908 16 | 15,300,245.730,0.588,1.869,0.535,0.800 17 | 16,58,246.259,1.000,1.371,0.730,0.935 18 | 17,397,245.781,0.600,2.321,0.431,0.844 19 | 18,163,245.233,0.879,1.336,0.748,0.918 20 | 19,152,244.987,0.892,1.271,0.787,0.918 21 | 20,121,245.298,0.937,1.113,0.899,0.931 22 | 21,166,246.422,0.959,1.031,0.970,0.951 23 | 22,41,244.634,1.000,1.009,0.991,0.932 24 | 23,45,244.844,0.658,3.012,0.332,0.957 25 | 24,352,246.517,0.776,1.800,0.556,0.890 26 | 25,86,245.174,0.832,1.962,0.510,0.896 27 | 26,203,247.000,0.933,1.133,0.882,0.938 28 | 27,180,245.500,0.795,1.866,0.536,0.902 29 | 28,265,246.706,0.868,1.309,0.764,0.923 30 | 29,69,243.362,0.939,1.261,0.793,0.908 31 | 30,197,245.289,0.926,1.178,0.849,0.934 32 | 31,47,246.255,1.000,1.150,0.870,0.931 33 | 32,105,245.857,0.984,1.164,0.859,0.938 34 | 33,147,244.905,0.967,1.179,0.849,0.930 35 | 34,156,245.019,0.949,1.193,0.838,0.929 36 | 35,206,245.641,0.803,1.443,0.693,0.866 37 | 36,149,244.832,0.965,1.139,0.878,0.937 38 | 37,139,245.914,0.868,1.410,0.709,0.894 39 | 38,302,246.219,0.728,2.135,0.468,0.891 40 | 39,106,245.085,0.841,1.585,0.631,0.938 41 | 40,141,245.525,0.938,1.104,0.906,0.919 42 | 41,209,245.780,0.615,2.447,0.409,0.857 43 | 42,171,245.959,0.954,1.046,0.956,0.947 44 | 43,64,245.578,0.998,1.220,0.820,0.928 45 | 44,52,242.981,1.000,1.272,0.786,0.912 46 | 45,133,244.940,0.946,1.230,0.813,0.930 47 | 46,362,245.760,0.602,2.134,0.469,0.815 48 | 47,161,244.851,0.979,1.162,0.861,0.944 49 | 48,98,246.418,0.961,1.153,0.867,0.929 50 | 49,77,246.948,0.791,2.049,0.488,0.928 51 | 50,166,244.645,0.950,1.267,0.789,0.933 52 | 51,162,244.265,0.960,1.153,0.867,0.950 53 | 52,162,244.728,0.975,1.043,0.959,0.931 54 | 53,373,245.188,0.753,1.808,0.553,0.878 55 | 54,116,246.328,0.977,1.038,0.963,0.939 56 | 55,251,245.112,0.847,1.545,0.647,0.909 57 | 56,350,245.171,0.705,2.054,0.487,0.871 58 | 57,170,245.759,0.865,1.215,0.823,0.916 59 | 58,161,245.174,0.944,1.119,0.894,0.923 60 | 59,168,244.792,0.897,1.141,0.876,0.913 61 | 60,36,245.167,1.000,1.186,0.843,0.935 62 | 61,184,245.870,0.894,1.196,0.836,0.936 63 | 62,82,246.500,0.659,2.630,0.380,0.943 64 | 63,150,244.060,0.961,1.132,0.883,0.923 65 | 64,293,246.276,0.760,1.655,0.604,0.904 66 | 65,155,244.219,0.753,1.942,0.515,0.891 67 | 66,193,244.280,0.907,1.282,0.780,0.923 68 | 67,198,245.273,0.952,1.149,0.870,0.934 69 | 68,125,243.456,0.952,1.063,0.941,0.933 70 | 69,152,243.842,0.934,1.287,0.777,0.944 71 | 70,47,245.234,1.000,1.172,0.853,0.931 72 | 71,38,244.079,1.000,1.159,0.863,0.950 73 | 72,126,243.397,0.921,1.277,0.783,0.940 74 | 73,106,243.594,0.904,1.303,0.768,0.951 75 | 74,136,245.456,0.915,1.308,0.764,0.941 76 | 75,134,243.433,0.927,1.110,0.901,0.931 77 | 76,264,243.477,0.632,2.033,0.492,0.822 78 | 77,174,244.707,0.873,1.306,0.766,0.941 79 | 78,148,243.534,0.868,1.045,0.957,0.908 80 | 79,166,244.500,0.845,1.285,0.778,0.917 81 | 80,138,243.312,0.861,1.503,0.665,0.896 82 | 81,136,244.044,0.881,1.215,0.823,0.922 83 | 82,105,245.476,0.953,1.120,0.893,0.929 84 | -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/jamovi/images/TEM_filter_sample_and_overlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/jamovi/images/TEM_filter_sample_and_overlay.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/jamovi/images/jamovi-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/jamovi/images/jamovi-icon.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/jamovi/images/screen0.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/jamovi/images/screen0.PNG -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/jamovi/images/screen1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/jamovi/images/screen1.PNG -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/jamovi/images/screen2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/jamovi/images/screen2.PNG -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/jamovi/images/screen3a.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/jamovi/images/screen3a.PNG -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/jamovi/images/screen3b.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/jamovi/images/screen3b.PNG -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/jamovi/images/screen4a.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/jamovi/images/screen4a.PNG -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/jamovi/images/screen4b.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/jamovi/images/screen4b.PNG -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/jamovi/images/screen4c.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/jamovi/images/screen4c.PNG -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/jamovi/images/screen5a.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/jamovi/images/screen5a.PNG -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/jamovi/images/screen6.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/jamovi/images/screen6.PNG -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/jamovi/images/screen7.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/jamovi/images/screen7.PNG -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/jamovi/images/screen7b.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/jamovi/images/screen7b.PNG -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/jamovi/jamovi.md: -------------------------------------------------------------------------------- 1 | # Jamovi: statistical analysis made visual and easy (powered with R) 2 | [Marcelo Zoccoler](../readme), October 7th 2021 3 | 4 | Statistical analysis software exist for decades. So why care about "just another one". Well, for one main reason: simplicity. And I mean simplicity by a clean interface and an easy usage. Besides that, [Jamovi](https://www.jamovi.org/) is open-source and developed in R, a powerful programming language to perform statistical tests. 5 | 6 | Almost every field in science uses statistical analysis as a tool to validate or refuse a hypothesis. Thus, popular commercial software, like [SPSS](https://www.ibm.com/analytics/spss-statistics-software), [SAS](https://www.sas.com/en_us/home.html), [Origin](https://www.originlab.com/), [Stata](https://www.stata.com/), [Prism](https://www.graphpad.com/scientific-software/prism/), as well as Excel itself, have been and are used. They are all very powerful platforms, but their initial interface with too many menus and buttons may intimidate new users (besides the price). There is a free similar option to SPSS called [PSPP](https://www.gnu.org/software/pspp/), but since it mimics the latter, their interfaces are similar. 7 | Another options would be using programming languages like [Python](https://www.python.org/) and [R](https://www.r-project.org/), but that still wards off all non-programmers. 8 | 9 | Recently, two options free and open-source emerged as a solution to this: [JASP](https://jasp-stats.org/) and [Jamovi](https://www.jamovi.org/). They are very much alike, but here I will focus on this last one for no particular reason. 10 | 11 | Since I work with image analysis, I will use Jamovi to compare features of different elements in the following image (a sample from [imageJ](https://imagej.net/software/fiji/) called "TEM_filter_sample"). Let's suppose I did 2 distinct segmentations and I want to compare the shapes of the black elements (yellow contour) against the white elements (red contour): 12 | 13 | ![](images/TEM_filter_sample_and_overlay.png) 14 | 15 | Then I saved 2 [tables](https://github.com/BiAPoL/blog/raw/master/marcelo_zoccoler/jamovi/data) (as .csv files) containing data about shape descriptors. 16 | 17 | ## Installing Jamovi 18 | 19 | Just download it from the [website](https://www.jamovi.org/) and follow standard installation steps. 20 | There are also a [user guide](https://www.jamovi.org/user-manual.html) and [other tutorials](https://www.jamovi.org/community.html) there! 21 | 22 | ## Using Jamovi 23 | 24 | Open Jamovi and you will see a screen like the one shown below: 25 | 26 | ![](images/screen0.PNG) 27 | 28 | It is hardly possible to have a starting screen simpler than that. You have 4 tabs: Variables, Data, Analysis and Edit. And a split screen: left, where your data will live, and right, where the results will show up. 29 | 30 | ## Importing your data 31 | 32 | You could type your data yourself in the left side, but since we already have our data from elsewhere, let's import it. On the top left, click on the 3 dashes symbol and then click on "Import". You should get a screen like this one: 33 | 34 | ![](images/screen1.PNG) 35 | 36 | Browse your data folder. Now, if you want to import data from 2 or more files, like in this case, it is important to press CTRL/CMD and click on every file before clicking on the "Import" button at the bottom. 37 | 38 | If you used the tables I provided in this example, you may notice some empty columns A, B and C, which were already there before importing the files. Let's delete those variables by clicking on "Variables", selecting them and clicking on "Delete". 39 | 40 | ![](images/screen2.PNG) 41 | 42 | ## Descriptive analysis 43 | 44 | Now we are ready for analysis! It is always a good idea to take a look at the data before performing statistical tests. So, let's go to "Analysis -> Exploration" and observe descriptors about a certain feature. In our case, we are interested in Circularity, so click on the variable "Circ." and then click on the arrow at the top to put this feature in the "Variables" box. We also want to see this feature separated by our black/white elements, so click on the variable "source" and then click on the second arrow to put it in the "Split by" box. You will already see a table on the right side showing some statistics like mean, median, etc. 45 | 46 | ![](images/screen3a.PNG) 47 | 48 | You can also add plots! 49 | 50 | ![](images/screen3b.PNG) 51 | 52 | ## Hypothesis testing: T-tests 53 | 54 | Then let's do a t-test. Go to "Analyses -> T-tests -> Independent Samples T-Test". 55 | 56 | ![](images/screen4a.PNG) 57 | 58 | Since our data seems to be not normally distributed, we will perform a [Mann-Whitney U test](https://en.wikipedia.org/wiki/Mann%E2%80%93Whitney_U_test) (shown below in red). We can also perform [normality](https://en.wikipedia.org/wiki/Normal_distribution) and [homoscedasticity](https://en.wikipedia.org/wiki/Homoscedasticity) tests to check our assumptions (shown in green). 59 | 60 | ![](images/screen4b.PNG) 61 | 62 | And generate plots related to the [t-test](https://en.wikipedia.org/wiki/Student%27s_t-test) (check "Descriptive plots" below in red) and a [Q-Q plot](https://en.wikipedia.org/wiki/Q%E2%80%93Q_plot) (shown in green). 63 | 64 | ![](images/screen4c.PNG) 65 | 66 | ## Correlation analysis 67 | 68 | Another analysis we could run is [correlation](https://en.wikipedia.org/wiki/Correlation). Let's check if roundness and aspect ratio are correlated. 69 | In the Analyses tab, click "Regression -> Correlation Matrix". Then just assign the variables "Round" and "AR" to right box, choose the correlations you want, like Pearson and Spearman, and activate some plot by checking checkboxes. 70 | 71 | ![](images/screen5a.PNG) 72 | 73 | We can see that they are negatively correlated, as one would expect by examining their [documentation](https://imagej.nih.gov/ij/docs/menus/analyze.html). 74 | 75 | ## Editing 76 | 77 | All figures and tables produced can be exported or removed by right-clicking on them. Jamovi allows just a small amount of layout editing. If you click on the three dots at the upper right corner, you can change zoom, color palette and also enable "Syntax mode", which then display the R code responsible for executing the tests and generating the plots. 78 | 79 | ![](images/screen6.PNG) 80 | 81 | ## Extra features 82 | 83 | Finally, extra functionality and tests that might be missing with the standard installation can be added as plugins. For instance, if one wants to perform power analysis, this can be done by clicking on the "+ Modules" button at the top right. Then, a list of plugins is displayed for installation. 84 | 85 | ![](images/screen7.PNG) 86 | 87 | If you install "jpower" for example, the new module appears as an extra button right next to the other analyses. 88 | 89 | ![](images/screen7b.PNG) 90 | 91 | You can find more information in their [documentation](https://jamovi.readthedocs.io/en/latest/index.html). 92 | -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/mini_sabbatical_rike/Readme.md: -------------------------------------------------------------------------------- 1 | # Mini-Sabbatical Experience at Bia-PoL 2 | Friederike Kessel, February 28th 2022 3 | 4 | Hello, my name is Rike. For the last four years I have been a PhD student in experimental nephrology at the University Hospital Carl Gustav Carus in Dresden. During this time I started diving into the possibilities of bioimage analysis with Fiji. By using the ImageJ Macro language I helped colleagues to automatize workflows for the quantification of fluorescent signals in histology and intravital microscopy in mice. 5 | 6 | I contacted Robert at the BiAPoL because I was looking for something different, interesting to do for a short time between finishing my PhD and starting a new job as PostDoc in the field of neuroregeneration. Surprisingly, he already had the concept of a mini-sabbatical for this kind of scenario in mind – so for four weeks in November 2021 I joined him and his group for some exploration in the field of bioimage analysis. 7 | 8 | After some general brainstorming with Robert about what I was interested in, plus what might actually be relevant for my future position, I got started. I got a desk in the office together with Marcelo and Johannes. Everyone was very supportive and I could simply try and get into new plugins – just the things I never had the time or headspace to fully explore during my PhD. The main new topics included the general use of GitLab for project specific communication, tracking of cells in 4D with Trackmate and Mastodon in ImageJ, setting up and using Napari (for the first time) for segmentation of cells with StarDist 3D, including unsupervised clustering of these datasets with the napari-clusters-plotter. Although halfway through the sabbatical the pandemic situation in saxony drastically worsened and everyone was eager to work from home again, the regular coffee breaks in online meetings still made me feel like I was part of a team. I am very grateful for Robert’s, Marcelo’s and Johannes’ time, patience and the expertise they willingly shared with me. 9 | 10 | In conclusion I can only say: A mini-sabbatical, especially in a non-pressure environment, is the prefect way to gain new perspectives and connect with other scientists. I definitely recommend the general concept itself, and Robert’s group specifically - for anyone, from students to group leaders. I really hope that I will be able to repeat this experience in the future. 11 | -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/omero_scripts/figures/omero_screen1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/omero_scripts/figures/omero_screen1.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/omero_scripts/figures/omero_screen2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/omero_scripts/figures/omero_screen2.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/omero_scripts/figures/omero_screen3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/omero_scripts/figures/omero_screen3.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/omero_scripts/figures/omero_screen4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/omero_scripts/figures/omero_screen4.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/omero_scripts/figures/omero_screen5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/omero_scripts/figures/omero_screen5.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/omero_scripts/figures/omero_screen6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/omero_scripts/figures/omero_screen6.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/omero_scripts/figures/refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/marcelo_zoccoler/omero_scripts/figures/refresh.png -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/omero_scripts/readme.md: -------------------------------------------------------------------------------- 1 | # Running Deep-Learning Scripts in the BiA-PoL Omero Server 2 | [Marcelo Zoccoler](../readme), May 2nd 2022 3 | 4 | ## Omero Server 5 | 6 | OMERO is client-server software for managing, visualizing and analyzing microscopy images and associated metadata. Once configured, it can be accessed from a few different interfaces, which are: 7 | - A command line; 8 | - A web browser; 9 | - A Desktop application. 10 | 11 | Viewing images and running scripts can be done from any of these interfaces, but importing images to the server can only be done via command line or the desktop application. Thus, in this tutorial, we show 12 | 1. how to load data using the desktop application, called Omero Insight; 13 | 2. how to run a script for deep-learning (Stardist 2D) through the browser. 14 | 15 | ## Getting access to the BiA-PoL Omero Server 16 | 17 | The Bio-Image Analysis group from the Physics of Life Cluster of Excellence has an Omero server. If you have access to your own omero server, you may skip to the next section. 18 | 19 | Access to the BiA-PoL Omero server may be provided to local users through the following steps: 20 | 21 | 1. Contact BiA-PoL members to check if you are allowed to get access to the server by email. 22 | 2. One of the BiA-PoL members will ask the IT department to create an account for you. You need a ZIH account for that. 23 | 3. Configure a VPN access by following [these instructions](https://intranet.crt-dresden.de/it-department/external-access.html). 24 | 4. Connect to the "Biotec Crtd Journal Access" VPN. 25 | 26 | ## Importing data to the Omero Server 27 | 28 | As mentioned before, you can import data to the server either via command line or via the Desktop Client. Here, we will explain the second option (Omero Insight application). 29 | The Omero webpage has a good step-by-step tutorial of how to import images to the server using the Desktop client application `Omero.insight`. When asked (step 2 of the link below), provide your omero server address. For the BiA-PoL server, the address is https://omero-int.biotec.tu-dresden.de . 30 | 31 | - [Import data using the Desktop Client](https://omero-guides.readthedocs.io/projects/upload/en/latest/import-desktop-client.html#setup) 32 | 33 | After installing Omero Insight and loading some images, you can access the server from Omero Insight, from command line or from the browser. From this point forward, we will only be accessing it from the browser. The server address from the browser is slightly different: https://omero-web.biotec.tu-dresden.de . There, provide the same ZIH username and password to connect to the server. Remember to be connected to the VPN! 34 | 35 | ## Running Omero Scripts 36 | 37 | After logging in, you should get to the following screen: 38 | 39 | ![](figures/omero_screen1.png) 40 | 41 | Images in Omero are usually organized as: 42 | ``` 43 | User/Client 44 | └──Project 45 | | └──Dataset 46 | | └──Images 47 | └──Orphaned Images 48 | ``` 49 | 50 | The Orphaned Images is the place where images are stored if they have no Project associated to them. You can browse through this file structure by clicking on the `+` buttons to open these directories. Once you reach the Dataset level, you can see image thumbnails in the main panel. If you click on them, you can get the corresponding information on the right side. One of the most important properties is the Project/Dataset/Image ID (magenta arrow in the figure below), which you will usually need to provide to scripts. 51 | 52 | ![](figures/omero_screen2.png) 53 | 54 | Omero scripts can be run by clicking on the small button with two gears on top of the screen (magenta square). A pop-up menu should open where you can select the origin of your scripts (`omero` or `CMCB`). 55 | 56 | ![](figures/omero_screen3.png) 57 | 58 | In `omero`, you can run the standard omero scripts. If you are logged to BiA-PoL omero server, you also have access to run one of the plugins we are developing in `CMCB`. Most of them are work in progress, that is why you may find names starting with 'testing'. In this tutorial, we will use "apply_stardist2D". Clicking on it open a new small window: 59 | 60 | 61 | 62 | There you should provide 3 parameters: the "Data Type" (Dataset or Image), the corresponding ID and one of the pretrained Stardist2D models. Then, click on the "Run Script" button. The Activities window (magenta square below) should pop-up on the top, indicating the status of execution. After the script finish running, it should look like this: 63 | 64 | 65 | 66 | You can download the "Info" (green arrow above) and "Error" (cyan arrow above) as text files. "Error" may contain errors or, in this case, just some warnings that can be ignored. "Info" contains information returned from print statements within the script. 67 | 68 | The resulting labeled image may not be visible after that. If that is the case, refresh the files by clicking on the refresh button: 69 | 70 | 71 | 72 | ![](figures/omero_screen6.png) 73 | 74 | The output image should now appear in the same place as the input image/dataset. It gets the name 'label_2D' + the chosen model + the input image name. It also gets some tags and key/pair values assigned to it to indicate how it was produced (right side panel). 75 | 76 | That's it! You ran a server-side custom script and got its outputs. 77 | -------------------------------------------------------------------------------- /docs/marcelo_zoccoler/readme.md: -------------------------------------------------------------------------------- 1 | # Marcelo Zoccoler 2 | 3 | ![](../images/marcelo_zoccoler_photo.jpg) 4 | 5 | Hi! My name is Marcelo and I am an Electrical Engineer who has specialized in Life Sciences and Image Analysis! 6 | Most of my work has been done on tools and software for image analysis focused on microscopy data. 7 | 8 | During my Masters and PhD in Biomedical Engineering, I have worked with measuring microtubules stiffness by image analysis and modeling at UJF (now Université Grenoble Alpes) in France. After that, I have performed experiments with single cardiomyocytes under electrical fields in a [fluorescence microscope that was assembled by our group](https://doi.org/10.1007/978-3-319-19387-8_318) at UNICAMP in Brazil. There, I started developing algorithms and software for bio-image analysis in MATLAB and Python. I also used a lot of Fiji as well! The goals were to quantify calcium concentration and membrane potential in these cells. Since some of these signals are very weak, I developed a software to extract these signals from noisy images called [METROID](https://doi.org/10.1186/s12859-020-03661-9). Most recently, I have contributed to develop a software called [PoET](https://doi.org/10.1093/bioadv/vbab037) that automatically measures Giant Unilamellar Vesicles (GUV) pores and I have designed an online simulator as a tool to teach students about electrochemical balance across a semipermeable membrane. 9 | 10 | Since 2021, as a researcher for the Bio-image Analysis Technology Development group (BiA-PoL) at the DFG Cluster of Excellence “Physics of Life” at TU Dresden, I am developing courses and tools, mostly in Python and Fiji, that are intended to break down the barriers that biologists and biophysicists might experience when delving into the data science jungle. Below you will find some links to content related to my studies and how to find me. 11 | 12 | # Blog posts 13 | 14 | * [Jamovi: statistical analysis made visual and easy (powered with R)](jamovi/jamovi) 15 | * [Creating advanced GUIs for napari](entry_user_interf3/Readme) 16 | * [Turning napari GUI into plugins](entry_user_interf4/Readme) 17 | 18 | # Links 19 | * pol [BiA-PoL website](https://physics-of-life.tu-dresden.de/en/research/core-groups/bio-image-analysis) 20 | * twitter [Twitter](https://twitter.com/zoccolermarcelo) 21 | * github [Github](https://github.com/zoccoler) 22 | * rg [ResearchGate](https://www.researchgate.net/profile/Marcelo-Zoccoler) 23 | -------------------------------------------------------------------------------- /docs/people.md: -------------------------------------------------------------------------------- 1 | # BiA-PoL blog authors 2 | 3 | * [Robert Haase](/robert_haase/readme) 4 | * [Ryan Savill](/ryan_savill/readme) 5 | * [Marcelo Zoccoler](/marcelo_zoccoler/readme) 6 | * [Johannes Müller](/johannes_mueller/Readme) 7 | * [Mara Lampert](/mara_lampert/readme) 8 | * [Stefan Hahmann](/stefan_hahmann/readme) 9 | 10 | [Imprint](/imprint) 11 | -------------------------------------------------------------------------------- /docs/robert_haase/browsing_idr/idr_api/idr1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/browsing_idr/idr_api/idr1.png -------------------------------------------------------------------------------- /docs/robert_haase/browsing_idr/idr_api/idr2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/browsing_idr/idr_api/idr2.png -------------------------------------------------------------------------------- /docs/robert_haase/browsing_idr/idr_api/idr3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/browsing_idr/idr_api/idr3.png -------------------------------------------------------------------------------- /docs/robert_haase/browsing_idr/idr_api/idr4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/browsing_idr/idr_api/idr4.png -------------------------------------------------------------------------------- /docs/robert_haase/browsing_idr/idr_api/idr_collab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/browsing_idr/idr_api/idr_collab.png -------------------------------------------------------------------------------- /docs/robert_haase/browsing_idr/idr_api/img_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/browsing_idr/idr_api/img_1.png -------------------------------------------------------------------------------- /docs/robert_haase/browsing_idr/idr_api/img_1_thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/browsing_idr/idr_api/img_1_thumbnail.png -------------------------------------------------------------------------------- /docs/robert_haase/clesperanto_google_colab/clesperanto_colab/colab1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/clesperanto_google_colab/clesperanto_colab/colab1.png -------------------------------------------------------------------------------- /docs/robert_haase/clesperanto_google_colab/clesperanto_colab/colab10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/clesperanto_google_colab/clesperanto_colab/colab10.png -------------------------------------------------------------------------------- /docs/robert_haase/clesperanto_google_colab/clesperanto_colab/colab11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/clesperanto_google_colab/clesperanto_colab/colab11.png -------------------------------------------------------------------------------- /docs/robert_haase/clesperanto_google_colab/clesperanto_colab/colab2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/clesperanto_google_colab/clesperanto_colab/colab2.png -------------------------------------------------------------------------------- /docs/robert_haase/clesperanto_google_colab/clesperanto_colab/colab3a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/clesperanto_google_colab/clesperanto_colab/colab3a.png -------------------------------------------------------------------------------- /docs/robert_haase/clesperanto_google_colab/clesperanto_colab/colab3b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/clesperanto_google_colab/clesperanto_colab/colab3b.png -------------------------------------------------------------------------------- /docs/robert_haase/clesperanto_google_colab/clesperanto_colab/colab4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/clesperanto_google_colab/clesperanto_colab/colab4.png -------------------------------------------------------------------------------- /docs/robert_haase/clesperanto_google_colab/clesperanto_colab/colab5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/clesperanto_google_colab/clesperanto_colab/colab5.png -------------------------------------------------------------------------------- /docs/robert_haase/clesperanto_google_colab/clesperanto_colab/colab6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/clesperanto_google_colab/clesperanto_colab/colab6.png -------------------------------------------------------------------------------- /docs/robert_haase/clesperanto_google_colab/clesperanto_colab/colab7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/clesperanto_google_colab/clesperanto_colab/colab7.png -------------------------------------------------------------------------------- /docs/robert_haase/clesperanto_google_colab/clesperanto_colab/colab8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/clesperanto_google_colab/clesperanto_colab/colab8.png -------------------------------------------------------------------------------- /docs/robert_haase/clesperanto_google_colab/clesperanto_colab/colab9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/clesperanto_google_colab/clesperanto_colab/colab9.png -------------------------------------------------------------------------------- /docs/robert_haase/clesperanto_google_colab/clesperanto_colab/restart_runtime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/clesperanto_google_colab/clesperanto_colab/restart_runtime.png -------------------------------------------------------------------------------- /docs/robert_haase/clesperanto_google_colab/readme.md: -------------------------------------------------------------------------------- 1 | # GPU-accelerated image processing in the cloud using Google Colab and clEsperanto 2 | [Robert Haase](../readme), June 5th 2021 3 | 4 | Not every computer has a powerful graphics processing unit (GPU) and thus, 5 | it might make sense to use cloud computing, e.g. provided by Google. In this 6 | blog post I give a short intro into Google Colab and how to enable 7 | GPU-accelerated image processing in the cloud using [clEsperanto](https://clesperanto.net). 8 | 9 | See also 10 | * [Getting Started With Google Colab by Anne Bonner](https://towardsdatascience.com/getting-started-with-google-colab-f2fff97f594c) 11 | * [clEsperanto count blobs tutorial](https://nbviewer.jupyter.org/github/clEsperanto/pyclesperanto_prototype/blob/master/demo/basics/count_blobs.ipynb) 12 | 13 | ## Step 1: Create a new notebook 14 | Go to [https://colab.research.google.com/](https://colab.research.google.com/) 15 | and click on `New Notebook` 16 | ![](clesperanto_colab/colab1.png) 17 | 18 | ## Step 2: Activate access to a GPU 19 | In the `Runtime` menu, click on `Change runtime type` 20 | ![](clesperanto_colab/colab2.png) 21 | 22 | The dialog allows you to select hardware accelerators. Select `GPU` and click on `Save`. 23 | ![](clesperanto_colab/colab3b.png) 24 | 25 | ## Step 4: Install pyclesperanto 26 | For installing pyclesperanto, enter this code in a cell and hit SHIFT-ENTER. 27 | ``` 28 | !pip install pyclesperanto_prototype 29 | ``` 30 | ![](clesperanto_colab/colab3a.png) 31 | 32 | After installation, you may read a message asking you to restart your kernel. If so, click on 'Restart Runtime'. 33 | ![](clesperanto_colab/restart_runtime.png) 34 | 35 | Afterwards, test the installation by printing out which GPU-device is selected: 36 | ``` 37 | import pyclesperanto_prototype as cle 38 | 39 | cle.get_device() 40 | ``` 41 | ![](clesperanto_colab/colab4.png) 42 | 43 | ## Step 4: Testing image processing 44 | For processing an image, we use scikit-image to load it from the cloud first 45 | ``` 46 | from skimage.io import imread 47 | 48 | image = cle.push(imread('https://samples.fiji.sc/blobs.png')) 49 | image.shape 50 | ``` 51 | and clesperantos' `imshow` function to visualize it: 52 | ![](clesperanto_colab/colab5.png) 53 | 54 | An image processing workflow using the GPU looks for example like this: 55 | ``` 56 | blurred = cle.gaussian_blur(image, sigma_x=2, sigma_y=2) 57 | binary = cle.threshold_otsu(blurred) 58 | labels = cle.connected_components_labeling_box(binary) 59 | ``` 60 | Label images can be visualized with `cle.imshow` as well by providing the parameter `labels=True`. 61 | ``` 62 | cle.imshow(labels, labels=True) 63 | ``` 64 | ![](clesperanto_colab/colab6.png) 65 | 66 | ## Step 5: Connecting google drive 67 | For saving image processing results to our google drive, we need to connect to it: 68 | ``` 69 | from google.colab import drive 70 | drive.mount('/content/gdrive') 71 | ``` 72 | The procedure involves creating an authorization code. 73 | In order to generate it, click on the provided link and follow the instructions. 74 | Give access to your Google drive to Google Colab: 75 | ![](clesperanto_colab/colab7.png) 76 | Afterwards, copy the authorization code by clicking the `copy to clipboard` button 77 | ![](clesperanto_colab/colab8.png) 78 | and paste the code in the respective field in your notebook: 79 | ![](clesperanto_colab/colab9.png) 80 | After the connection was established successfully, you can save to your google drive like this: 81 | 82 | ![](clesperanto_colab/colab10.png) 83 | ``` 84 | from skimage.io import imsave 85 | imsave('/content/gdrive/My Drive/labels.tif', cle.pull(labels)) 86 | ``` 87 | You will then see the saved file in your google drive: 88 | ![](clesperanto_colab/colab11.png) 89 | 90 | ## Hints 91 | 92 | ### Sharing notebooks via github.com 93 | If you have a [github](https://github.com) account, you can upload a notebook also to a github repository. 94 | Afterwards, you can enter the location of the repository into a google colab link to share it with collaborators: 95 | 96 | For example, a notebook on github.com can have this URL: 97 | ``` 98 | https://github.com/clEsperanto/pyclesperanto_google_colab/blob/main/interactive_example.ipynb 99 | ``` 100 | and the corresponding Google Colab address looks like this: 101 | ``` 102 | https://colab.research.google.com/github/clEsperanto/pyclesperanto_google_colab/blob/main/interactive_example.ipynb 103 | ``` 104 | [Try it out!](https://colab.research.google.com/github/clEsperanto/pyclesperanto_google_colab/blob/main/interactive_example.ipynb) 105 | 106 | ### How much memory does my GPU have? 107 | You can read how much memory is available from the device object. 108 | Divide the value three times by 1024 to get the amount of memory in giga bytes. 109 | ``` 110 | dev = cle.get_device() 111 | dev.device.global_mem_size / 1024 / 1024 / 1024 112 | ``` 113 | 114 | ### How much memory is currently in use? 115 | If you are using an NVidia GPU, you can the [NVidia System Management Interface](https://developer.nvidia.com/nvidia-system-management-interface): 116 | ``` 117 | !nvidia-smi 118 | ``` 119 | It will give an overview about what's currently going on on your GPU: 120 | ``` 121 | +-----------------------------------------------------------------------------+ 122 | | NVIDIA-SMI 465.27 Driver Version: 460.32.03 CUDA Version: 11.2 | 123 | |-------------------------------+----------------------+----------------------+ 124 | | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | 125 | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | 126 | | | | MIG M. | 127 | |===============================+======================+======================| 128 | | 0 Tesla T4 Off | 00000000:00:04.0 Off | 0 | 129 | | N/A 63C P0 30W / 70W | 106MiB / 15109MiB | 0% Default | 130 | | | | N/A | 131 | +-------------------------------+----------------------+----------------------+ 132 | 133 | +-----------------------------------------------------------------------------+ 134 | | Processes: | 135 | | GPU GI CI PID Type Process name GPU Memory | 136 | | ID ID Usage | 137 | |=============================================================================| 138 | +-----------------------------------------------------------------------------+ 139 | ``` 140 | 141 | # Disclosure 142 | When reading this blog post, please have in mind that I'm one of the core developers of [clesperanto](https://clesperanto.net). I may be biased on the one side and even more interested on feedback on the other side. 143 | 144 | # Acknowledgements 145 | I would like to thank Florian Jug and Wei Ouyang for introducing me to Google Colab and showing me tips and tricks. -------------------------------------------------------------------------------- /docs/robert_haase/cupy_cucim/cupy_cucim/cu1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/cupy_cucim/cupy_cucim/cu1.png -------------------------------------------------------------------------------- /docs/robert_haase/cupy_cucim/cupy_cucim/cu2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/cupy_cucim/cupy_cucim/cu2.png -------------------------------------------------------------------------------- /docs/robert_haase/cupy_cucim/cupy_cucim/cu3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/cupy_cucim/cupy_cucim/cu3.png -------------------------------------------------------------------------------- /docs/robert_haase/cupy_cucim/cupy_cucim/cu4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/cupy_cucim/cupy_cucim/cu4.png -------------------------------------------------------------------------------- /docs/robert_haase/cupy_cucim/cupy_cucim/cu5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/cupy_cucim/cupy_cucim/cu5.png -------------------------------------------------------------------------------- /docs/robert_haase/cupy_cucim/cupy_cucim/cu6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/cupy_cucim/cupy_cucim/cu6.png -------------------------------------------------------------------------------- /docs/robert_haase/cupy_cucim/cupy_cucim/cu7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/cupy_cucim/cupy_cucim/cu7.png -------------------------------------------------------------------------------- /docs/robert_haase/cupy_cucim/cupy_cucim/cu8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/cupy_cucim/cupy_cucim/cu8.png -------------------------------------------------------------------------------- /docs/robert_haase/cupy_cucim/readme.md: -------------------------------------------------------------------------------- 1 | # GPU-accelerated image processing using cupy and cucim 2 | [Robert Haase](../readme), June 6th 2021 3 | 4 | Processing large images with python can take time. In order to accelerate processing, graphics processing units (GPUs) can be exploited, for example using [NVidia CUDA](https://en.wikipedia.org/wiki/CUDA). For processing images with CUDA, there are a couple of libraries available. We will take a closer look at [cupy](https://cupy.dev/), which brings more general computing capabilities for CUDA compatible GPUs, and [cucim](https://github.com/rapidsai/cucim), a library of image processing specific operations using CUDA. Both together can serve as GPU-surrogate for [scikit-image](https://scikit-image.org/). 5 | 6 | See also 7 | * [StackOverflow: Is it possible to install cupy on google colab?](https://stackoverflow.com/questions/49135065/is-it-possible-to-install-cupy-on-google-colab) 8 | * [cupy basics tutorial](https://docs.cupy.dev/en/stable/user_guide/basic.html) 9 | * [cucim example notebooks](https://github.com/rapidsai/cucim/blob/branch-0.20/notebooks/Welcome.ipynb) 10 | 11 | Before we start, we need to install CUDA and CUCIM it properly. The following commands make this notebook run in Google Colab. Installation instructions for linux can be found [here](https://github.com/rapidsai/cucim) and [other operating systems are not supported](https://github.com/rapidsai/cucim/issues/60) at the time of writing this. 12 | 13 | ```shell 14 | !curl https://colab.chainer.org/install | sh - 15 | 16 | !pip install cucim 17 | !pip install scipy scikit-image cupy-cuda100 18 | ``` 19 | 20 | You can also go through this blog post as a [google colab notebook](https://colab.research.google.com/github/biapol/blog/blob/master/robert_haase/cupy_cucim/cupy_cucim.ipynb) 21 | 22 | We can check the installation by importing all libraries we need. 23 | ``` 24 | import numpy as np 25 | import cupy as cp 26 | import cucim 27 | from skimage.io import imread, imshow 28 | import pandas as pd 29 | ``` 30 | 31 | In the following, we are using image data from Paci et al shared under the [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) license. See also: https://doi.org/10.17867/10000140 32 | 33 | ```python 34 | image = imread('https://idr.openmicroscopy.org/webclient/render_image_download/9844418/?format=tif') 35 | 36 | imshow(image) 37 | ``` 38 | ![](cupy_cucim/cu1.png) 39 | 40 | In order to process an image using CUDA on the GPU, we need to convert it. Under the hood of this conversion, the image data is sent from computer random access memory (RAM) to the GPUs memory. 41 | ```python 42 | image_gpu = cp.asarray(image) 43 | 44 | image_gpu.shape 45 | ``` 46 | ``` 47 | (640, 640, 3) 48 | ``` 49 | 50 | Extracting a single channel out of the three-channel image works like if we were working with 51 | [numpy](https://numpy.org/). 52 | Showing the image using scikit-image `imshow` does not work, because the CUDA image is not available in memory. 53 | In order to get it back from GPU memory, we need to convert it to a numpy array. 54 | ```python 55 | single_channel_gpu = image_gpu[:,:,1] 56 | 57 | # the following line would fail 58 | # imshow(single_channel_gpu) 59 | 60 | # get single channel image back from GPU memory and show it 61 | single_channel = np.asarray(single_channel_gpu) 62 | imshow(single_channel) 63 | ``` 64 | ![](cupy_cucim/cu2.png) 65 | 66 | We can also do this within a convenience function, making our following code shorter and easier to read. 67 | ```python 68 | def gpu_imshow(image_gpu): 69 | image = np.asarray(image_gpu) 70 | imshow(image) 71 | ``` 72 | 73 | ## Image filtering and segmentation 74 | 75 | The [cucim developers](https://github.com/rapidsai/cucim/graphs/contributors) have re-implemented many functions from scikit image, 76 | e.g. the [Gaussian blur filter](https://docs.rapids.ai/api/cucim/stable/api.html#cucim.skimage.filters.gaussian), 77 | [Otsu Thresholding](https://docs.rapids.ai/api/cucim/stable/api.html#cucim.skimage.filters.threshold_otsu) 78 | after [Otsu et al. 1979](https://ieeexplore.ieee.org/document/4310076), 79 | [binary erosion](https://docs.rapids.ai/api/cucim/stable/api.html#cucim.skimage.morphology.binary_erosion) 80 | and [connected component labeling](https://docs.rapids.ai/api/cucim/stable/api.html#cucim.skimage.measure.label). 81 | 82 | ```python 83 | from cucim.skimage.filters import gaussian 84 | 85 | blurred_gpu = gaussian(single_channel_gpu, sigma=5) 86 | 87 | gpu_imshow(blurred_gpu) 88 | ``` 89 | 90 | ![](cupy_cucim/cu3.png) 91 | 92 | ```python 93 | from cucim.skimage.filters import threshold_otsu 94 | 95 | # determine threshold 96 | threshold = threshold_otsu(blurred_gpu) 97 | 98 | # binarize image by apply the threshold 99 | binary_gpu = blurred_gpu > threshold 100 | 101 | gpu_imshow(binary_gpu) 102 | ``` 103 | 104 | ![](cupy_cucim/cu4.png) 105 | 106 | ```python 107 | from cucim.skimage.morphology import binary_erosion, disk 108 | 109 | eroded_gpu = binary_erosion(binary_gpu, selem=disk(2)) 110 | 111 | gpu_imshow(eroded_gpu) 112 | ``` 113 | 114 | ![](cupy_cucim/cu5.png) 115 | 116 | ```python 117 | from cucim.skimage.measure import label 118 | 119 | labels_gpu = label(eroded_gpu) 120 | 121 | gpu_imshow(labels_gpu) 122 | ``` 123 | 124 | ![](cupy_cucim/cu6.png) 125 | 126 | 127 | For visualization purposes, it is recommended to turn the label image into an 128 | [RGB](https://en.wikipedia.org/wiki/RGB_color_model) image, especially if you want to save it to disk. 129 | ```python 130 | from cucim.skimage.color import label2rgb 131 | 132 | labels_rgb_gpu = label2rgb(labels_gpu) 133 | 134 | gpu_imshow(labels_rgb_gpu) 135 | ``` 136 | 137 | ![](cupy_cucim/cu7.png) 138 | 139 | ## Quantitative measurements 140 | 141 | Also quantitative measurements using [regionprops_table](https://docs.rapids.ai/api/cucim/stable/api.html#cucim.skimage.measure.regionprops_table) have been implemented in cucim. A major difference is that you need to convert its result back to numpy if you want to continue processing on the CPU, e.g. using [pandas](https://pandas.pydata.org/). 142 | 143 | ```python 144 | from cucim.skimage.measure import regionprops_table 145 | 146 | table_gpu = regionprops_table(labels_gpu, intensity_image=single_channel_gpu, properties=('mean_intensity', 'area', 'solidity')) 147 | 148 | table_gpu 149 | ``` 150 | 151 | ``` 152 | {'area': array([ 238, 5833, 6006, 5679, 2534, 4200, 4655, 2662, 3846, 3350, 5005, 153 | 2200, 3952, 3837, 4298, 4111, 139]), 154 | 'mean_intensity': array([68.93277311, 54.14537974, 68.23676324, 59.95175207, 87.22178374, 155 | 71.32666667, 74.37529538, 64.63561232, 58.93213729, 66.88656716, 156 | 62.15684316, 50.51363636, 62.50177126, 92.24863174, 71.68776175, 157 | 51.80345415, 72.3381295 ]), 158 | 'solidity': array([0.97942387, 0.95842918, 0.97785738, 0.97964464, 0.98868513, 159 | 0.98522167, 0.98727466, 0.99143389, 0.87171351, 0.98355843, 160 | 0.96864718, 0.59945504, 0.98676654, 0.98510911, 0.98397436, 161 | 0.97997616, 0.97887324])} 162 | ``` 163 | 164 | ```python 165 | # The following line would fail. 166 | # pd.DataFrame(table_gpu) 167 | 168 | # We need to convert that table to numpy before we can pass it to pandas. 169 | table = {item[0] : cp.asnumpy(item[1]) for item in table_gpu.items()} 170 | pd.DataFrame(table) 171 | ``` 172 | ![](cupy_cucim/cu8.png) 173 | 174 | Note: As alternative, one may want to dive into [cuDF](https://github.com/rapidsai/cudf) the CUDA-based counterpart for pandas DataFrames. 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | -------------------------------------------------------------------------------- /docs/robert_haase/ms_build_tools/download1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/ms_build_tools/download1.png -------------------------------------------------------------------------------- /docs/robert_haase/ms_build_tools/download2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/ms_build_tools/download2.png -------------------------------------------------------------------------------- /docs/robert_haase/ms_build_tools/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/ms_build_tools/error.png -------------------------------------------------------------------------------- /docs/robert_haase/ms_build_tools/install.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/ms_build_tools/install.png -------------------------------------------------------------------------------- /docs/robert_haase/ms_build_tools/install2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/ms_build_tools/install2.png -------------------------------------------------------------------------------- /docs/robert_haase/ms_build_tools/readme.md: -------------------------------------------------------------------------------- 1 | # Installing Microsoft buildtools on Windows 2 | [Robert Haase](../readme), July 9th 2021 3 | 4 | Installing python libraries on Windows can be tricky. When using `pip install` on a Windows computer that is not regularly visited by a hardcore programmer, a typical error message is "error: Microsoft Visual C++ 14.0 or greater is required.". 5 | This blog post shows how to deal with it and also hints how to avoid installing software that is not necessary. 6 | 7 | ## Symptoms: Installations fail 8 | I hit that issue today on a freshly installed Windows computer when installing `tvb-gdist`. This command failed unfortunately: 9 | 10 | ``` 11 | pip install tvb-gdist 12 | ``` 13 | 14 | It showed this error message: 15 | 16 | ![](error.png) 17 | Note: This screenshot has been contrast enhanced. Normally, you can't read such errors on Windows so clearly. 18 | 19 | ## Downloading build tools 20 | The error message provides a URL and we can visit that website. 21 | [https://visualstudio.microsoft.com/visual-cpp-build-tools/](https://visualstudio.microsoft.com/visual-cpp-build-tools/) 22 | 23 | ![](download1.png) 24 | 25 | The "Download Build Tools" link is pretty obvious and clicking it leads us to another website: 26 | 27 | ![](download2.png) 28 | 29 | The second website is a bit misleading as it appears we downloaded "Visual Studio" and are going to install it. 30 | We didn't. And we don't need to. 31 | This website appears to me as an advertisement for Microsoft's Integrated Development Environment, which we don't need this time. 32 | The download of the buildtools will start a couple of seconds later and we just need to execute "vs_buildtools__1234567.8901234.exe" that appears, e.g. on the bottom of the screen in the Chrome Browser. 33 | 34 | No need to download or install anything else. 35 | 36 | ## Installing buildtools 37 | After starting the installer, the following form shows up. 38 | One only needs to activate a single checkbox, "Desktop Development with C++", and click on "Install" in the bottom right. 39 | 40 | ![](install.png) 41 | 42 | Installation will then look like this for a while: 43 | 44 | ![](install2.png) 45 | 46 | Afterwards, it might be necessary to restart your computer. Do this. 47 | 48 | ## Checking if installation succeeded 49 | If we try to install `tvb-gdist` again, it will succeed: 50 | ``` 51 | pip install tvb-gdist 52 | ``` 53 | 54 | ![](success.png) 55 | 56 | In the future, on this particular computer, installation of python packages might be easier. 57 | -------------------------------------------------------------------------------- /docs/robert_haase/ms_build_tools/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/ms_build_tools/success.png -------------------------------------------------------------------------------- /docs/robert_haase/readme.md: -------------------------------------------------------------------------------- 1 | # Robert Haase 2 | 3 | 4 | 5 | My name is Robert and I am computer scientist by training. 6 | Over the years I turned into an image data scientist working in the life sciences. 7 | Thus, I don't feel like a computer scientist anymore and not yet as biologist neither. 8 | In the past decade, I worked registering microscopy images of histological stainings of tumor tissue with magnetic resonance imaging, 9 | swarm intelligence based algorithms for medical image segmentation for positron emission tomography in the cancer research context and 10 | analysing manifold images from mostly fluorescence microscopy. 11 | I have job titles such as bio-image analyst, scientific software engineer and image data science consultant. 12 | I give lectures about bio-image analysis, bio-statistics, programming and machine learning at the Biotechnology Center of the TU Dresden and world-wide via youtube. 13 | 14 | Since 2020 I'm heading the Bio-image Analysis Technology Development group (BiA-PoL) at the DFG Cluster of Excellence "Physics of Life" at the TU Dresden where I also started this blog. 15 | I serve here as editor and I'm supporting students, employees and collaborators of the BiA-PoL in communicating their science and technology with the world. 16 | 17 | ## Blog posts 18 | * [GPU-accelerated image processing in the cloud using Google Colab and clEsperanto](clesperanto_google_colab/readme) 19 | * [Browsing the Open Microscopy Image Data Resource with Python](browsing_idr/readme) 20 | * [GPU-accelerated image processing using cupy and cucim](cupy_cucim/readme) 21 | * [Using StarDist in napari with GPU-support in Windows](stardist_gpu/readme) 22 | * [Installing Microsoft buildtools on Windows](ms_build_tools/readme) 23 | 24 | ## Links 25 | * [BiA-PoL group website](https://physics-of-life.tu-dresden.de/en/research/core-groups/bio-image-analysis) 26 | * [Robert on twitter](https://twitter.com/haesleinhuepf) 27 | * [Robert on github](https://github.com/haesleinhuepf) 28 | * [Robert on youtube](https://youtube.com/haesleinhuepf) 29 | 30 | [Imprint](../imprint) 31 | -------------------------------------------------------------------------------- /docs/robert_haase/stardist_gpu/images/check_env1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/stardist_gpu/images/check_env1.png -------------------------------------------------------------------------------- /docs/robert_haase/stardist_gpu/images/check_env2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/stardist_gpu/images/check_env2.png -------------------------------------------------------------------------------- /docs/robert_haase/stardist_gpu/images/check_env3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/stardist_gpu/images/check_env3.png -------------------------------------------------------------------------------- /docs/robert_haase/stardist_gpu/images/download_cuda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/stardist_gpu/images/download_cuda.png -------------------------------------------------------------------------------- /docs/robert_haase/stardist_gpu/images/download_cudnn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/stardist_gpu/images/download_cudnn.png -------------------------------------------------------------------------------- /docs/robert_haase/stardist_gpu/images/install_cudnn1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/stardist_gpu/images/install_cudnn1.png -------------------------------------------------------------------------------- /docs/robert_haase/stardist_gpu/images/install_cudnn2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/stardist_gpu/images/install_cudnn2.png -------------------------------------------------------------------------------- /docs/robert_haase/stardist_gpu/images/install_cudnn3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/stardist_gpu/images/install_cudnn3.png -------------------------------------------------------------------------------- /docs/robert_haase/stardist_gpu/images/install_stardist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/stardist_gpu/images/install_stardist.png -------------------------------------------------------------------------------- /docs/robert_haase/stardist_gpu/images/install_stardist2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/stardist_gpu/images/install_stardist2.png -------------------------------------------------------------------------------- /docs/robert_haase/stardist_gpu/images/use_stardist1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/stardist_gpu/images/use_stardist1.png -------------------------------------------------------------------------------- /docs/robert_haase/stardist_gpu/images/use_stardist2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/stardist_gpu/images/use_stardist2.png -------------------------------------------------------------------------------- /docs/robert_haase/stardist_gpu/images/use_stardist3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/stardist_gpu/images/use_stardist3.png -------------------------------------------------------------------------------- /docs/robert_haase/stardist_gpu/images/use_stardist4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/stardist_gpu/images/use_stardist4.png -------------------------------------------------------------------------------- /docs/robert_haase/stardist_gpu/images/use_stardist5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/robert_haase/stardist_gpu/images/use_stardist5.png -------------------------------------------------------------------------------- /docs/robert_haase/why_we_blog/readme.md: -------------------------------------------------------------------------------- 1 | # Why we blog 2 | [Robert Haase](../readme), May 30th 2021 3 | 4 | Bio-image analysis is an emerging field. 5 | New technological developments in the middle ground between microscopy and data science emerge rapidly and new ways for processing image data change the way how we do research in biology and biophysics. 6 | As it is challenging to keep track of all the new developments, we need to share efforts with other groups world wide in exploring and exploiting new algorithms, software, plugins and libraries. 7 | We start blogging here in 2021 because there is knowledge to share which is too casual for a scientific publication and too substantial so that it cannot be expressed in a tweet. 8 | In our blog we will explore technologies, teaching material, web services, data sets, online resources, products and any kind of digital asset of bio-image data science. 9 | And we will share what we discover openly accessible to our local collaborators and readers world-wide in this blog. 10 | 11 | If you have feedback or suggestions, if spotted a typo, broken link or misleading explanation, please get in touch via a 12 | [github issue](https://github.com/BiAPoL/blog/issues) or 13 | [pull request](https://github.com/BiAPoL/blog/pulls) so that we can fix it. Contributions are very welcome. 14 | 15 | Enjoy reading! 16 | 17 | Robert Haase 18 | 19 | Group Leader, Bio-image Analysis Technology Development\ 20 | DFG Cluster of Excellence “Physics of Life”, TU Dresden\ 21 | Am Tatzberg 47/49, 01307 Dresden\ 22 | [https://physics-of-life.tu-dresden.de/bia](https://physics-of-life.tu-dresden.de/bia) 23 | 24 | [Imprint](https://biapol.github.io/blog/imprint) -------------------------------------------------------------------------------- /docs/ryan_savill/01_intro_to_python/IDE_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/ryan_savill/01_intro_to_python/IDE_overview.png -------------------------------------------------------------------------------- /docs/ryan_savill/02_intro_to_skimage/output_11_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/ryan_savill/02_intro_to_skimage/output_11_0.png -------------------------------------------------------------------------------- /docs/ryan_savill/02_intro_to_skimage/output_13_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/ryan_savill/02_intro_to_skimage/output_13_0.png -------------------------------------------------------------------------------- /docs/ryan_savill/02_intro_to_skimage/output_15_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/ryan_savill/02_intro_to_skimage/output_15_1.png -------------------------------------------------------------------------------- /docs/ryan_savill/02_intro_to_skimage/output_17_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/ryan_savill/02_intro_to_skimage/output_17_1.png -------------------------------------------------------------------------------- /docs/ryan_savill/02_intro_to_skimage/output_19_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/ryan_savill/02_intro_to_skimage/output_19_1.png -------------------------------------------------------------------------------- /docs/ryan_savill/02_intro_to_skimage/output_7_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/ryan_savill/02_intro_to_skimage/output_7_2.png -------------------------------------------------------------------------------- /docs/ryan_savill/02_intro_to_skimage/output_9_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/ryan_savill/02_intro_to_skimage/output_9_0.png -------------------------------------------------------------------------------- /docs/ryan_savill/03_background_subtraction/MAX_Lund_18.0_22.0_Hours Z-projection t1.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/ryan_savill/03_background_subtraction/MAX_Lund_18.0_22.0_Hours Z-projection t1.tif -------------------------------------------------------------------------------- /docs/ryan_savill/03_background_subtraction/image_analysis_functions.py: -------------------------------------------------------------------------------- 1 | def subtract_background(image, radius=50, light_bg=False): 2 | # import libraries 3 | from skimage.morphology import white_tophat, black_tophat, disk 4 | 5 | # generate structuring element 6 | str_el = disk(radius) 7 | 8 | # use appropriate filter depending on the background colour 9 | if light_bg: 10 | return black_tophat(image, str_el) 11 | else: 12 | return white_tophat(image, str_el) -------------------------------------------------------------------------------- /docs/ryan_savill/03_background_subtraction/output_13_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/ryan_savill/03_background_subtraction/output_13_1.png -------------------------------------------------------------------------------- /docs/ryan_savill/03_background_subtraction/output_17_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/ryan_savill/03_background_subtraction/output_17_2.png -------------------------------------------------------------------------------- /docs/ryan_savill/03_background_subtraction/output_19_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/ryan_savill/03_background_subtraction/output_19_1.png -------------------------------------------------------------------------------- /docs/ryan_savill/03_background_subtraction/output_21_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/ryan_savill/03_background_subtraction/output_21_1.png -------------------------------------------------------------------------------- /docs/ryan_savill/03_background_subtraction/output_3_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/ryan_savill/03_background_subtraction/output_3_1.png -------------------------------------------------------------------------------- /docs/ryan_savill/03_background_subtraction/output_5_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/ryan_savill/03_background_subtraction/output_5_1.png -------------------------------------------------------------------------------- /docs/ryan_savill/03_background_subtraction/output_7_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/ryan_savill/03_background_subtraction/output_7_0.png -------------------------------------------------------------------------------- /docs/ryan_savill/readme.md: -------------------------------------------------------------------------------- 1 | # Ryan Savill 2 | ## Image Analysis in Python from a Biologist for Biologists 3 | ## About Me 4 | I'm a Master Student in molecular bioengineering (in your university it's probably called some combination of technology, biology and engineering) and have become interested in image analysis when I had a lecture on it. It seems that image analysis is becoming more and more commonplace in biology labs as microscopy and antibody stainings are becoming easier to use and more accessible. However I have decided to dive in the deep end and want to get used to image analysis in python, which in comparison to other tools like cellprofiler and ImageJ is much more coding based. This is a steep learning curve especially for biologists that have not coded for long, but the tools that are available in python allow the implementation of really advanced functions as well as cutting edge techniques. So to take away some of the burden of getting used to python this is a resource for biologists and other scientists, sharing things I have learnt and resources I used to get into programming in python. 5 | 6 | Below you'll find an index of topics that I'll cover, which will be updated with content every now and then. All resources I'm using will be linked to or are available in the github repository of this Blog! 7 | 8 | ## Getting into Image Processing with Python 9 | * [Introduction to Using Python for Image Analysis](01_intro_to_python/readme.md) 10 | * [Introduction to Image Analysis Basics in Python with Scikit Image](02_intro_to_skimage/readme.md) 11 | * [Background Subtraction](03_background_subtraction/readme.md) 12 | 13 | ## Other Interesting Stuff 14 | * [Principal Feature Analysis - What It Does and Python Implementation](principal_feature_analysis/readme.md) 15 | 16 | ## Links 17 | * [Twitter](https://twitter.com/RyanSavill4) 18 | * [Research Gate](https://www.researchgate.net/profile/Ryan-Savill) 19 | * Email: ryan_george.savill@mailbox.tu-dresden.de 20 | 21 | ### Have Fun Coding! 22 | -------------------------------------------------------------------------------- /docs/stefan_hahmann/elephant_server_installation_windows/images/Windows_Subsystem_for_Linux_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/elephant_server_installation_windows/images/Windows_Subsystem_for_Linux_logo.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/elephant_server_installation_windows/images/docker-hello-world.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/elephant_server_installation_windows/images/docker-hello-world.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/elephant_server_installation_windows/images/docker-logo-blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/elephant_server_installation_windows/images/docker-logo-blue.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/elephant_server_installation_windows/images/docker-wsl-integration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/elephant_server_installation_windows/images/docker-wsl-integration.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/elephant_server_installation_windows/images/elephant-control-panel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/elephant_server_installation_windows/images/elephant-control-panel.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/elephant_server_installation_windows/images/elephant-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/elephant_server_installation_windows/images/elephant-logo.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/elephant_server_installation_windows/images/elephant-server-interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/elephant_server_installation_windows/images/elephant-server-interface.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/elephant_server_installation_windows/images/fiji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/elephant_server_installation_windows/images/fiji.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/elephant_server_installation_windows/images/hostnamectl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/elephant_server_installation_windows/images/hostnamectl.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/elephant_server_installation_windows/images/mastodon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/elephant_server_installation_windows/images/mastodon.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/elephant_server_installation_windows/images/nvidia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/elephant_server_installation_windows/images/nvidia.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/elephant_server_installation_windows/images/start-wsl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/elephant_server_installation_windows/images/start-wsl.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/elephant_server_installation_windows/images/wsl_l_v.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/elephant_server_installation_windows/images/wsl_l_v.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/github_desktop_jupyter_notebook/images/clone-project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/github_desktop_jupyter_notebook/images/clone-project.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/github_desktop_jupyter_notebook/images/git-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/github_desktop_jupyter_notebook/images/git-logo.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/github_desktop_jupyter_notebook/images/github-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/github_desktop_jupyter_notebook/images/github-logo.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/github_desktop_jupyter_notebook/images/github-mark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/github_desktop_jupyter_notebook/images/github-mark.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/github_desktop_jupyter_notebook/images/jupyter-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/github_desktop_jupyter_notebook/images/jupyter-logo.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/github_desktop_jupyter_notebook/images/jupyterlab-notebook-edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/github_desktop_jupyter_notebook/images/jupyterlab-notebook-edit.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/github_desktop_jupyter_notebook/images/jupyterlab-notebook-run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/github_desktop_jupyter_notebook/images/jupyterlab-notebook-run.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/github_desktop_jupyter_notebook/images/jupyterlab-notebooks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/github_desktop_jupyter_notebook/images/jupyterlab-notebooks.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/github_desktop_jupyter_notebook/images/jupyterlab-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/github_desktop_jupyter_notebook/images/jupyterlab-start.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/github_desktop_jupyter_notebook/readme.md: -------------------------------------------------------------------------------- 1 | # Running bio image analysis workflows on your machine 2 | 3 | [Stefan Hahmann](../readme.md), December 21st 2023 4 | 5 | ## Introduction 6 | 7 | Jupyter Notebooks may be used to run bio image analysis workflows on your machine with your own data. They are a great tool to share workflows with others. 8 | This blog post will show you how to use [Github Desktop](https://desktop.github.com/) and [Jupyter Lab](https://jupyterlab.readthedocs.io/en/stable/) to run a workflow documented in a [Jupyter Notebook](https://jupyter.org/) on your local machine with your own data. 9 | 10 | ## Prerequisites 11 | 12 | [Git](https://git-scm.com/) is a version control system that allows you to track changes in your files. It is widely used in software development, because source files of code are frequently changed during the development process. Files that belong together are stored in a so-called repository. 13 | A repository can be stored on a local computer or on a web server. Git allows you to synchronize your local repository with a remote repository. This is useful, if you want to collaborate with other people on the same files. 14 | 15 | git-logo 16 | 17 | [GitHub](https://github.com/) is a web-based hosting service for Git repositories. [GitHub Desktop](https://desktop.github.com/) is a client for Git and Github. It allows you to manage your Git repositories locally on your computer. 18 | 19 | git-logo git-logo 20 | 21 | [Jupyter Notebooks](https://jupyter.org/) are documents that contain code, equations, visualizations and narrative text. They are widely used in data science and research. The can contain workflows that help you to analyse your data. [Jupyter Lab](https://jupyterlab.readthedocs.io/en/stable/) allows you to edit and run Jupyter Notebooks. 22 | 23 | git-logo 24 | 25 | [Python](https://www.python.org/) is a programming language that is widely used in data science and research. 26 | 27 | [Napari](https://napari.org) is a multi-dimensional image viewer implemented in Python. 28 | 29 | ## Installation 30 | 31 | ### Git 32 | 33 | There is no need to install Git separately before installing GitHub Desktop. GitHub Desktop includes a bundled version of Git, so when you install GitHub Desktop, it will also install Git as part of the process. 34 | 35 | ### GitHub Desktop 36 | 37 | Download and install [GitHub Desktop](https://desktop.github.com/). Choose the version for your operating system. GitHub.com provides installers for Windows and Mac. Users on Unix-like systems may follow these [instructions](https://dev.to/rahedmir/is-github-desktop-available-for-gnu-linux-4a69) to install a [fork](https://github.com/shiftkey/desktop/releases) of GitHub Desktop. 38 | 39 | ### Jupyter Lab 40 | 41 | The installation of Jupyter Lab on your local machine is part of the installation of Python and Conda. You can follow the instructions in [Getting started with Miniforge and Python](../../mara_lampert/getting_started_with_mambaforge_and_python/readme) for this. 42 | 43 | You should have installed now Python and the environment [devbio-napari](https://github.com/haesleinhuepf/devbio-napari), a distribution of napari with a set of plugins for bioimage analysis. 44 | 45 | ## Clone the repository 46 | 47 | Open GitHub Desktop and click "File" > "Clone a repository from the Internet...". Enter the name of the repository you want to clone, e.g.: [BiAPoL/Bio-image_Analysis_with_Python](https://github.com/BiAPoL/Bio-image_Analysis_with_Python) and the local path where you want to store the repository on your computer. Click "Clone". 48 | ![Clone project](images/clone-project.png) 49 | 50 | ## Starting Jupyter Lab 51 | 52 | Open a terminal and navigate to the folder where you have cloned the repository. 53 | 54 | Activate the environment by entering this (assuming you have used the name `my_first_env` for your environment, otherwise `my_first_env` must be replaced by the name of your environment): 55 | 56 | ``` 57 | mamba activate my_first_env 58 | ``` 59 | 60 | Start [Jupyter lab](https://jupyter.org/) from the terminal like this: 61 | 62 | ``` 63 | jupyter lab 64 | ``` 65 | 66 | A browser will open and show you the following web page. 67 | 68 | ![Jupyter Lab](images/jupyterlab-start.png) 69 | 70 | ## Running a Jupyter Notebook 71 | 72 | Navigate to the notebook you want to run and click on it. Notebooks have the file extension `.ipynb`. The notebook will open in a new tab. 73 | 74 | ![Jupyter Lab](images/jupyterlab-notebooks.png) 75 | 76 | Run the notebook by clicking on the "Run" button in the toolbar or by pressing "Shift + Enter". While a cell is running, a star is shown in the square brackets on the left side of the cell. When the cell has finished running, a number is shown in the square brackets. 77 | 78 | ![Jupyter Lab](images/jupyterlab-notebook-run.png) 79 | 80 | Before you run a cell, you can change the code in the cell. This allows you to adapt the workflow to your needs. You may e.g. change the path to the data you want to analyse. 81 | 82 | ![Jupyter Lab](images/jupyterlab-notebook-edit.png) 83 | 84 | It is possible to skip cells. This is useful, if you want to run only parts of the workflow. To skip a cell, click on the next cell, after the cell you want to skip and then click on the "Run". This will run the selected cell. 85 | 86 | 87 | -------------------------------------------------------------------------------- /docs/stefan_hahmann/readme.md: -------------------------------------------------------------------------------- 1 | # Stefan Hahmann 2 | 3 | ![stefan_hahmann.jpg](readme/stefan_hahmann.jpg) 4 | 5 | Hi! My name is Stefan. 6 | 7 | Originally, I studied geodesy at [HTW Dresden](https://www.htw-dresden.de/hochschule/fakultaeten/geoinformation). Towards the end of my studies, I focused in geoinformatics. 8 | 9 | During my professional career, I continuously developed software tools in different domains mainly in Java, but also using PHP, JavaScript, R and Python. Before moving to academia, I developed tools for [geomarketing](https://www.microm.de/apps/mapchart-gis). I did PhD at [TU Dresden](https://tu-dresden.de/bu/umwelt/geo/ifk), where I investigated the [relationship between space and semantics of social media data](https://nbn-resolving.org/urn:nbn:de:bsz:14-qucosa-148835). 10 | During my Postdoc, I worked at [Heidelberg University](https://www.geog.uni-heidelberg.de/gis/), where I contributed to the route planning service [OpenRouteService.org](https://maps.openrouteservice.org/#/) and at [Fraunhofer IVI](https://www.ivi.fraunhofer.de/), where I contributed to [Mobikat](https://www.mobikat.net/en.html), a decision support tool for fire departments, rescue services and police. 11 | 12 | Since 2022, I work as a [research software engineer](https://de-rse.org/en/) for the Bio-image Analysis Technology Development group ([BiA-PoL](https://physics-of-life.tu-dresden.de/research/core-groups/bio-image-analysis/people)) at the DFG Cluster of Excellence “[Physics of Life](https://physics-of-life.tu-dresden.de/)” at TU Dresden. I am developing plugins for the image analysis software [Fiji](https://imagej.net/software/fiji/) and workflows for the image analysis software [Napari](https://napari.org/stable/), where currently most of the time I am [extending](https://github.com/mastodon-sc/mastodon-deep-lineage) the (cell) tracking module [Mastodon](https://mastodon.readthedocs.io/en/latest/). 13 | 14 | # Blog posts 15 | 16 | * [Running bio image analysis workflows on your machine](github_desktop_jupyter_notebook/readme) 17 | * [Installation of Elephant Server on Windows](elephant_server_installation_windows/readme) 18 | * [Using StarDist in napari with GPU-support in Windows (2025)](stardist_gpu_2025/readme) 19 | 20 | # Links 21 | 22 | * [Twitter](https://twitter.com/stefanhahmann) 23 | * [Github](https://github.com/stefanhahmann/) 24 | * [ORCID](https://orcid.org/0000-0002-8145-7090) 25 | -------------------------------------------------------------------------------- /docs/stefan_hahmann/readme/stefan_hahmann.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/readme/stefan_hahmann.jpg -------------------------------------------------------------------------------- /docs/stefan_hahmann/stardist_gpu_2025/images/check_env1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/stardist_gpu_2025/images/check_env1.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/stardist_gpu_2025/images/check_env2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/stardist_gpu_2025/images/check_env2.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/stardist_gpu_2025/images/check_env3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/stardist_gpu_2025/images/check_env3.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/stardist_gpu_2025/images/cudnn_download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/stardist_gpu_2025/images/cudnn_download.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/stardist_gpu_2025/images/download_cuda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/stardist_gpu_2025/images/download_cuda.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/stardist_gpu_2025/images/install_cudnn1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/stardist_gpu_2025/images/install_cudnn1.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/stardist_gpu_2025/images/install_cudnn2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/stardist_gpu_2025/images/install_cudnn2.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/stardist_gpu_2025/images/install_cudnn3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/stardist_gpu_2025/images/install_cudnn3.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/stardist_gpu_2025/images/install_stardist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/stardist_gpu_2025/images/install_stardist.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/stardist_gpu_2025/images/install_stardist2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/stardist_gpu_2025/images/install_stardist2.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/stardist_gpu_2025/images/tensorflow-gpu-table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/stardist_gpu_2025/images/tensorflow-gpu-table.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/stardist_gpu_2025/images/use_stardist1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/stardist_gpu_2025/images/use_stardist1.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/stardist_gpu_2025/images/use_stardist2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/stardist_gpu_2025/images/use_stardist2.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/stardist_gpu_2025/images/use_stardist3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/stardist_gpu_2025/images/use_stardist3.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/stardist_gpu_2025/images/use_stardist4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/stardist_gpu_2025/images/use_stardist4.png -------------------------------------------------------------------------------- /docs/stefan_hahmann/stardist_gpu_2025/images/use_stardist5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/stefan_hahmann/stardist_gpu_2025/images/use_stardist5.gif -------------------------------------------------------------------------------- /docs/till_korten/devbio-napari_cluster/images/10_imshow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/till_korten/devbio-napari_cluster/images/10_imshow.png -------------------------------------------------------------------------------- /docs/till_korten/devbio-napari_cluster/images/1_login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/till_korten/devbio-napari_cluster/images/1_login.png -------------------------------------------------------------------------------- /docs/till_korten/devbio-napari_cluster/images/2_start_server.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/till_korten/devbio-napari_cluster/images/2_start_server.png -------------------------------------------------------------------------------- /docs/till_korten/devbio-napari_cluster/images/3_configure_node.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/till_korten/devbio-napari_cluster/images/3_configure_node.png -------------------------------------------------------------------------------- /docs/till_korten/devbio-napari_cluster/images/4_wait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/till_korten/devbio-napari_cluster/images/4_wait.png -------------------------------------------------------------------------------- /docs/till_korten/devbio-napari_cluster/images/7_open_notebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/till_korten/devbio-napari_cluster/images/7_open_notebook.png -------------------------------------------------------------------------------- /docs/till_korten/devbio-napari_cluster/images/8_select_kernel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/till_korten/devbio-napari_cluster/images/8_select_kernel.png -------------------------------------------------------------------------------- /docs/till_korten/devbio-napari_cluster/images/9_select_devbio_napari.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/till_korten/devbio-napari_cluster/images/9_select_devbio_napari.png -------------------------------------------------------------------------------- /docs/till_korten/devbio-napari_cluster_setup/images/1_login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/till_korten/devbio-napari_cluster_setup/images/1_login.png -------------------------------------------------------------------------------- /docs/till_korten/devbio-napari_cluster_setup/images/2_start_server.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/till_korten/devbio-napari_cluster_setup/images/2_start_server.png -------------------------------------------------------------------------------- /docs/till_korten/devbio-napari_cluster_setup/images/3_configure_node.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/till_korten/devbio-napari_cluster_setup/images/3_configure_node.png -------------------------------------------------------------------------------- /docs/till_korten/devbio-napari_cluster_setup/images/4_wait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/till_korten/devbio-napari_cluster_setup/images/4_wait.png -------------------------------------------------------------------------------- /docs/till_korten/devbio-napari_cluster_setup/images/5_open_terminal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/till_korten/devbio-napari_cluster_setup/images/5_open_terminal.png -------------------------------------------------------------------------------- /docs/till_korten/devbio-napari_cluster_setup/images/6_terminal_output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/till_korten/devbio-napari_cluster_setup/images/6_terminal_output.png -------------------------------------------------------------------------------- /docs/till_korten/devbio-napari_cluster_setup/images/7_open_notebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/till_korten/devbio-napari_cluster_setup/images/7_open_notebook.png -------------------------------------------------------------------------------- /docs/till_korten/devbio-napari_cluster_setup/images/8_select_kernel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/till_korten/devbio-napari_cluster_setup/images/8_select_kernel.png -------------------------------------------------------------------------------- /docs/till_korten/devbio-napari_cluster_setup/images/9_select_devbio_napari.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/till_korten/devbio-napari_cluster_setup/images/9_select_devbio_napari.png -------------------------------------------------------------------------------- /docs/till_korten/devbio-napari_cluster_setup/images/a1_new_project_application.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/till_korten/devbio-napari_cluster_setup/images/a1_new_project_application.png -------------------------------------------------------------------------------- /docs/till_korten/devbio-napari_cluster_setup/images/a2_trial_project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/till_korten/devbio-napari_cluster_setup/images/a2_trial_project.png -------------------------------------------------------------------------------- /docs/till_korten/devbio-napari_cluster_setup/images/a3_PI_PC_email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/till_korten/devbio-napari_cluster_setup/images/a3_PI_PC_email.png -------------------------------------------------------------------------------- /docs/till_korten/devbio-napari_cluster_setup/images/a4_CPU_GPU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/till_korten/devbio-napari_cluster_setup/images/a4_CPU_GPU.png -------------------------------------------------------------------------------- /docs/till_korten/devbio-napari_cluster_setup/images/a6_data_management.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BiAPoL/blog/829c3bacff981fbff63a9391462249e0d58c0141/docs/till_korten/devbio-napari_cluster_setup/images/a6_data_management.png -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | jupyter-book 2 | matplotlib 3 | numpy --------------------------------------------------------------------------------