napari-stitcher 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. napari_stitcher-0.1.0/.github/workflows/documentation_main.yml +27 -0
  2. napari_stitcher-0.1.0/.github/workflows/documentation_release.yml +31 -0
  3. napari_stitcher-0.1.0/.github/workflows/test_and_deploy.yml +89 -0
  4. napari_stitcher-0.1.0/.gitignore +87 -0
  5. napari_stitcher-0.1.0/.napari-hub/DESCRIPTION.md +35 -0
  6. napari_stitcher-0.1.0/.napari-hub/config.yml +18 -0
  7. napari_stitcher-0.1.0/.pre-commit-config.yaml +41 -0
  8. napari_stitcher-0.1.0/LICENSE +28 -0
  9. napari_stitcher-0.1.0/MANIFEST.in +5 -0
  10. napari_stitcher-0.1.0/PKG-INFO +102 -0
  11. napari_stitcher-0.1.0/README.md +56 -0
  12. napari_stitcher-0.1.0/docs/contributing.md +3 -0
  13. napari_stitcher-0.1.0/docs/docs_requirements.txt +84 -0
  14. napari_stitcher-0.1.0/docs/images/demo_3d.mp4 +0 -0
  15. napari_stitcher-0.1.0/docs/images/logo.png +0 -0
  16. napari_stitcher-0.1.0/docs/images/naming_convention_example.png +0 -0
  17. napari_stitcher-0.1.0/docs/images/napari-stitcher-loaded-mosaic-annotated-inkscape.svg +169 -0
  18. napari_stitcher-0.1.0/docs/images/napari-stitcher-loaded-mosaic-annotated.png +0 -0
  19. napari_stitcher-0.1.0/docs/images/napari-stitcher-loaded-mosaic.png +0 -0
  20. napari_stitcher-0.1.0/docs/images/preposition.gif +0 -0
  21. napari_stitcher-0.1.0/docs/images/preposition3d.gif +0 -0
  22. napari_stitcher-0.1.0/docs/images/preposition_mosaic.gif +0 -0
  23. napari_stitcher-0.1.0/docs/index.md +27 -0
  24. napari_stitcher-0.1.0/docs/installation.md +137 -0
  25. napari_stitcher-0.1.0/docs/loading.md +14 -0
  26. napari_stitcher-0.1.0/docs/naming_convention.md +22 -0
  27. napari_stitcher-0.1.0/docs/prearrangement.md +54 -0
  28. napari_stitcher-0.1.0/docs/scripting.md +12 -0
  29. napari_stitcher-0.1.0/docs/writing.md +7 -0
  30. napari_stitcher-0.1.0/mkdocs.yml +90 -0
  31. napari_stitcher-0.1.0/pyproject.toml +14 -0
  32. napari_stitcher-0.1.0/setup.cfg +68 -0
  33. napari_stitcher-0.1.0/src/napari_stitcher/__init__.py +16 -0
  34. napari_stitcher-0.1.0/src/napari_stitcher/_mosaic_widget.py +192 -0
  35. napari_stitcher-0.1.0/src/napari_stitcher/_reader.py +98 -0
  36. napari_stitcher-0.1.0/src/napari_stitcher/_sample_data.py +66 -0
  37. napari_stitcher-0.1.0/src/napari_stitcher/_stitcher_widget.py +594 -0
  38. napari_stitcher-0.1.0/src/napari_stitcher/_tests/__init__.py +0 -0
  39. napari_stitcher-0.1.0/src/napari_stitcher/_tests/test_mosaic_widget.py +54 -0
  40. napari_stitcher-0.1.0/src/napari_stitcher/_tests/test_reader.py +36 -0
  41. napari_stitcher-0.1.0/src/napari_stitcher/_tests/test_stitcher_widget.py +277 -0
  42. napari_stitcher-0.1.0/src/napari_stitcher/_tests/test_viewer_utils.py +69 -0
  43. napari_stitcher-0.1.0/src/napari_stitcher/_tests/test_writer.py +95 -0
  44. napari_stitcher-0.1.0/src/napari_stitcher/_utils.py +102 -0
  45. napari_stitcher-0.1.0/src/napari_stitcher/_version.py +16 -0
  46. napari_stitcher-0.1.0/src/napari_stitcher/_writer.py +65 -0
  47. napari_stitcher-0.1.0/src/napari_stitcher/napari.yaml +55 -0
  48. napari_stitcher-0.1.0/src/napari_stitcher/viewer_utils.py +399 -0
  49. napari_stitcher-0.1.0/src/napari_stitcher.egg-info/PKG-INFO +102 -0
  50. napari_stitcher-0.1.0/src/napari_stitcher.egg-info/SOURCES.txt +54 -0
  51. napari_stitcher-0.1.0/src/napari_stitcher.egg-info/dependency_links.txt +1 -0
  52. napari_stitcher-0.1.0/src/napari_stitcher.egg-info/entry_points.txt +2 -0
  53. napari_stitcher-0.1.0/src/napari_stitcher.egg-info/requires.txt +21 -0
  54. napari_stitcher-0.1.0/src/napari_stitcher.egg-info/top_level.txt +1 -0
  55. napari_stitcher-0.1.0/tox.ini +20 -0
@@ -0,0 +1,27 @@
1
+ name: Generate main documentation
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+
8
+ jobs:
9
+ docs-main:
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - name: Checkout repository
13
+ uses: actions/checkout@v4
14
+ with:
15
+ fetch-depth: 0
16
+ - name: Set up Python
17
+ uses: actions/setup-python@v4
18
+ with:
19
+ python-version: "3.11"
20
+ - name: Install dependencies
21
+ run: pip install -r docs/docs_requirements.txt
22
+ - name: Setup doc deploy
23
+ run: |
24
+ git config --global user.name Docs deploy
25
+ git config --global user.email docs@dummy.bot.com
26
+ - name: Build docs website
27
+ run: mike deploy main --push && mike set-default --push main
@@ -0,0 +1,31 @@
1
+ name: Generate [version] documentation
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ jobs:
8
+ build:
9
+ name: Deploy docs to GitHub Pages
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - name: Checkout repository
13
+ uses: actions/checkout@v4
14
+ with:
15
+ fetch-depth: 0
16
+ - name: Set up Python
17
+ uses: actions/setup-python@v4
18
+ with:
19
+ python-version: "3.11"
20
+ - name: Install dependencies
21
+ run: pip install -r docs/docs_requirements.txt
22
+ - name: Setup doc deploy
23
+ run: |
24
+ git config --global user.name Docs deploy
25
+ git config --global user.email docs@dummy.bot.com
26
+ - name: Set release notes tag
27
+ run: |
28
+ export RELEASE_TAG_VERSION="${{ github.event.release.tag_name }}"
29
+ echo RELEASE_TAG_VERSION="${RELEASE_TAG_VERSION:1}" >> "$GITHUB_ENV"
30
+ - name: Build docs website
31
+ run: mike deploy "${RELEASE_TAG_VERSION}" --push
@@ -0,0 +1,89 @@
1
+ # This workflows will upload a Python Package using Twine when a release is created
2
+ # For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries
3
+
4
+ name: Test and Deploy
5
+
6
+ on:
7
+ push:
8
+ branches:
9
+ - main
10
+ tags:
11
+ - "v*" # Push events to matching v*, i.e. v1.0, v20.15.10
12
+ pull_request:
13
+ branches:
14
+ - main
15
+ workflow_dispatch:
16
+
17
+ jobs:
18
+ test:
19
+ name: ${{ matrix.platform }} py${{ matrix.python-version }}
20
+ runs-on: ${{ matrix.platform }}
21
+ strategy:
22
+ matrix:
23
+ # platform: [ubuntu-latest, windows-latest, macos-latest]
24
+ platform: [ubuntu-latest, macos-latest]
25
+ python-version: ['3.9', '3.10', '3.11']
26
+
27
+ steps:
28
+ - uses: actions/checkout@v3
29
+
30
+ - name: Set up Python ${{ matrix.python-version }}
31
+ uses: actions/setup-python@v4
32
+ with:
33
+ python-version: ${{ matrix.python-version }}
34
+
35
+ # these libraries enable testing on Qt on linux
36
+ - uses: tlambert03/setup-qt-libs@v1
37
+
38
+ # strategy borrowed from vispy for installing opengl libs on windows
39
+ - name: Install Windows OpenGL
40
+ if: runner.os == 'Windows'
41
+ run: |
42
+ git clone --depth 1 https://github.com/pyvista/gl-ci-helpers.git
43
+ powershell gl-ci-helpers/appveyor/install_opengl.ps1
44
+
45
+ # note: if you need dependencies from conda, considering using
46
+ # setup-miniconda: https://github.com/conda-incubator/setup-miniconda
47
+ # and
48
+ # tox-conda: https://github.com/tox-dev/tox-conda
49
+ - name: Install dependencies
50
+ run: |
51
+ python -m pip install --upgrade pip
52
+ python -m pip install setuptools tox tox-gh-actions
53
+
54
+ # this runs the platform-specific tests declared in tox.ini
55
+ - name: Test with tox
56
+ uses: GabrielBB/xvfb-action@v1
57
+ with:
58
+ run: python -m tox
59
+ env:
60
+ PLATFORM: ${{ matrix.platform }}
61
+
62
+ - name: Coverage
63
+ uses: codecov/codecov-action@v2
64
+
65
+ deploy:
66
+ # this will run when you have tagged a commit, starting with "v*"
67
+ # and requires that you have put your twine API key in your
68
+ # github secrets (see readme for details)
69
+ needs: [test]
70
+ runs-on: ubuntu-latest
71
+ if: contains(github.ref, 'tags')
72
+ steps:
73
+ - uses: actions/checkout@v3
74
+ - name: Set up Python
75
+ uses: actions/setup-python@v4
76
+ with:
77
+ python-version: "3.x"
78
+ - name: Install dependencies
79
+ run: |
80
+ python -m pip install --upgrade pip
81
+ pip install -U setuptools setuptools_scm wheel twine build
82
+ - name: Build and publish
83
+ env:
84
+ TWINE_USERNAME: __token__
85
+ TWINE_PASSWORD: ${{ secrets.TWINE_API_KEY }}
86
+ run: |
87
+ git tag
88
+ python -m build .
89
+ twine upload dist/*
@@ -0,0 +1,87 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ env/
12
+ build/
13
+ develop-eggs/
14
+ dist/
15
+ downloads/
16
+ eggs/
17
+ .eggs/
18
+ lib/
19
+ lib64/
20
+ parts/
21
+ sdist/
22
+ var/
23
+ *.egg-info/
24
+ .installed.cfg
25
+ *.egg
26
+
27
+ # PyInstaller
28
+ # Usually these files are written by a python script from a template
29
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
30
+ *.manifest
31
+ *.spec
32
+
33
+ # Installer logs
34
+ pip-log.txt
35
+ pip-delete-this-directory.txt
36
+
37
+ # Unit test / coverage reports
38
+ htmlcov/
39
+ .tox/
40
+ .coverage
41
+ .coverage.*
42
+ .cache
43
+ nosetests.xml
44
+ coverage.xml
45
+ *,cover
46
+ .hypothesis/
47
+ .napari_cache
48
+
49
+ # Translations
50
+ *.mo
51
+ *.pot
52
+
53
+ # Django stuff:
54
+ *.log
55
+ local_settings.py
56
+
57
+ # Flask instance folder
58
+ instance/
59
+
60
+ # Sphinx documentation
61
+ docs/_build/
62
+
63
+ # MkDocs documentation
64
+ /site/
65
+
66
+ # PyBuilder
67
+ target/
68
+
69
+ # Pycharm and VSCode
70
+ .idea/
71
+ venv/
72
+ .vscode/
73
+
74
+ # IPython Notebook
75
+ .ipynb_checkpoints
76
+
77
+ # pyenv
78
+ .python-version
79
+
80
+ # OS
81
+ .DS_Store
82
+
83
+ # written by setuptools_scm
84
+ **/_version.py
85
+
86
+ src/napari_stitcher/_playground
87
+ doc_old
@@ -0,0 +1,35 @@
1
+ <!-- This file is a placeholder for customizing description of your plugin
2
+ on the napari hub if you wish. The readme file will be used by default if
3
+ you wish not to do any customization for the napari hub listing.
4
+
5
+ If you need some help writing a good description, check out our
6
+ [guide](https://github.com/chanzuckerberg/napari-hub/wiki/Writing-the-Perfect-Description-for-your-Plugin)
7
+ -->
8
+
9
+ # Description
10
+
11
+ This plugin stitches images (napari layers) in 2/3D+t. Images can either be (pre-)aligned manually or on a grid.
12
+
13
+ Here's it's [user guide](https://multiview-stitcher.github.io/napari-stitcher/) and [github repository](https://github.com/multiview-stitcher/napari-stitcher). napari-stitcher uses [`multiview-stitcher`](https://github.com/multiview-stitcher/multiview-stitcher) for registration and fusion.
14
+
15
+ ## Overview
16
+
17
+ ![](https://github.com/multiview-stitcher/napari-stitcher/raw/refs/heads/main/docs/images/napari-stitcher-loaded-mosaic-annotated.png)
18
+ <small>Image data by Arthur Michaut @ Jérôme Gros Lab @ Institut Pasteur.</small>
19
+
20
+ 1. Directly stitch napari layers: Use napari to load, visualize and [preposition](prearrangement.md) the tiles to be stitched.
21
+ 2. When working with multi-channel data, stick to the following [naming convention](naming_convention.md): `{tile} :: {channel}`.
22
+ 3. Load either all or just a subset of the layers into the plugin.
23
+ 4. Choose registration options: registration channel, binning and more.
24
+ 5. Stitching = registration (refining the positions, optional) + fusion (joining the tiles into a single image).
25
+ 6. The registration result is shown in the viewer and the fused channels are added as new layers.
26
+
27
+ ## Demo
28
+
29
+ [Link](https://github.com/user-attachments/assets/8773e49f-af18-4ff3-ab2f-2a5f1b1cadf2) to video demo.
30
+
31
+ <video controls>
32
+ <source src="https://github.com/multiview-stitcher/napari-stitcher/raw/refs/heads/main/docs/images/demo_3d.mp4" type="video/mp4">
33
+ </video>
34
+
35
+ <small>This demo uses the awesome [`napari-threedee`](https://github.com/napari-threedee/napari-threedee) for prepositioning the tiles. Image data: [BigStitcher](https://imagej.net/plugins/bigstitcher/).</small>
@@ -0,0 +1,18 @@
1
+ # You may use this file to customize how your plugin page appears
2
+ # on the napari hub: https://www.napari-hub.org/
3
+ # See their wiki for details https://github.com/chanzuckerberg/napari-hub/wiki
4
+
5
+ # Please note that this file should only be used IN ADDITION to entering
6
+ # metadata fields (such as summary, description, authors, and various URLS)
7
+ # in your standard python package metadata (e.g. setup.cfg, setup.py, or
8
+ # pyproject.toml), when you would like those fields to be displayed
9
+ # differently on the hub than in the napari application.
10
+
11
+ # Add labels the plugin from the EDAM Bioimaging ontology
12
+ labels:
13
+ ontology: EDAM-BIOIMAGING:alpha06
14
+ terms:
15
+ - Image registration
16
+ - Image reconstruction
17
+ - 2D image
18
+ - 3D image
@@ -0,0 +1,41 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v4.2.0
4
+ hooks:
5
+ - id: check-docstring-first
6
+ - id: end-of-file-fixer
7
+ - id: trailing-whitespace
8
+ exclude: ^\.napari-hub/.*
9
+ - repo: https://github.com/PyCQA/isort
10
+ rev: 5.10.1
11
+ hooks:
12
+ - id: isort
13
+ - repo: https://github.com/asottile/pyupgrade
14
+ rev: v2.32.1
15
+ hooks:
16
+ - id: pyupgrade
17
+ args: [--py38-plus, --keep-runtime-typing]
18
+ - repo: https://github.com/myint/autoflake
19
+ rev: v1.4
20
+ hooks:
21
+ - id: autoflake
22
+ args: ["--in-place", "--remove-all-unused-imports"]
23
+ - repo: https://github.com/psf/black
24
+ rev: 22.3.0
25
+ hooks:
26
+ - id: black
27
+ - repo: https://github.com/PyCQA/flake8
28
+ rev: 4.0.1
29
+ hooks:
30
+ - id: flake8
31
+ additional_dependencies: [flake8-typing-imports>=1.9.0]
32
+ - repo: https://github.com/tlambert03/napari-plugin-checks
33
+ rev: v0.2.0
34
+ hooks:
35
+ - id: napari-plugin-checks
36
+ # https://mypy.readthedocs.io/en/stable/introduction.html
37
+ # you may wish to add this as well!
38
+ # - repo: https://github.com/pre-commit/mirrors-mypy
39
+ # rev: v0.910-1
40
+ # hooks:
41
+ # - id: mypy
@@ -0,0 +1,28 @@
1
+
2
+ Copyright (c) 2022, Marvin Albert
3
+ All rights reserved.
4
+
5
+ Redistribution and use in source and binary forms, with or without
6
+ modification, are permitted provided that the following conditions are met:
7
+
8
+ * Redistributions of source code must retain the above copyright notice, this
9
+ list of conditions and the following disclaimer.
10
+
11
+ * Redistributions in binary form must reproduce the above copyright notice,
12
+ this list of conditions and the following disclaimer in the documentation
13
+ and/or other materials provided with the distribution.
14
+
15
+ * Neither the name of copyright holder nor the names of its
16
+ contributors may be used to endorse or promote products derived from
17
+ this software without specific prior written permission.
18
+
19
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
23
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,5 @@
1
+ include LICENSE
2
+ include README.md
3
+
4
+ recursive-exclude * __pycache__
5
+ recursive-exclude * *.py[co]
@@ -0,0 +1,102 @@
1
+ Metadata-Version: 2.1
2
+ Name: napari-stitcher
3
+ Version: 0.1.0
4
+ Summary: Stitch napari image layers in 2-3D+t
5
+ Author: Marvin Albert
6
+ Author-email: marvin.albert@gmail.com
7
+ License: BSD-3-Clause
8
+ Project-URL: Bug Tracker, https://github.com/multiview-stitcher/napari-stitcher/issues
9
+ Project-URL: Documentation, https://multiview-stitcher.github.io/napari-stitcher/
10
+ Project-URL: Source Code, https://github.com/multiview-stitcher/napari-stitcher
11
+ Project-URL: User Support, https://github.com/multiview-stitcher/napari-stitcher/issues
12
+ Classifier: Development Status :: 2 - Pre-Alpha
13
+ Classifier: Framework :: napari
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: OSI Approved :: BSD License
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3 :: Only
20
+ Classifier: Programming Language :: Python :: 3.9
21
+ Classifier: Programming Language :: Python :: 3.10
22
+ Classifier: Programming Language :: Python :: 3.11
23
+ Classifier: Topic :: Scientific/Engineering :: Image Processing
24
+ Requires-Python: >=3.9
25
+ Description-Content-Type: text/markdown
26
+ License-File: LICENSE
27
+ Requires-Dist: numpy>=1.18
28
+ Requires-Dist: magicgui
29
+ Requires-Dist: qtpy
30
+ Requires-Dist: tifffile>=2022.7.28
31
+ Requires-Dist: multiview-stitcher[aicsimageio]==0.1.14
32
+ Requires-Dist: spatial_image==0.3.0
33
+ Requires-Dist: multiscale_spatial_image==0.11.2
34
+ Provides-Extra: testing-no-gui
35
+ Requires-Dist: tox; extra == "testing-no-gui"
36
+ Requires-Dist: pytest; extra == "testing-no-gui"
37
+ Requires-Dist: pytest-cov; extra == "testing-no-gui"
38
+ Requires-Dist: pytest-qt; extra == "testing-no-gui"
39
+ Provides-Extra: testing
40
+ Requires-Dist: tox; extra == "testing"
41
+ Requires-Dist: pytest; extra == "testing"
42
+ Requires-Dist: pytest-cov; extra == "testing"
43
+ Requires-Dist: pytest-qt; extra == "testing"
44
+ Requires-Dist: napari; extra == "testing"
45
+ Requires-Dist: pyqt5; extra == "testing"
46
+
47
+ [![napari hub](https://img.shields.io/endpoint?url=https://api.napari-hub.org/shields/napari-stitcher)](https://napari-hub.org/plugins/napari-stitcher)
48
+ [![License {{cookiecutter.license}}](https://img.shields.io/pypi/l/napari-stitcher.svg?color=green)](https://github.com/multiview-stitcher/napari-stitcher/raw/main/LICENSE)
49
+ [![PyPI](https://img.shields.io/pypi/v/napari-stitcher.svg?color=green)](https://pypi.org/project/napari-stitcher)
50
+ [![Python Version](https://img.shields.io/pypi/pyversions/napari-stitcher.svg?color=green)](https://python.org)
51
+ [![tests](https://github.com/multiview-stitcher/napari-stitcher/actions/workflows/test_and_deploy.yml/badge.svg)](https://github.com/multiview-stitcher/napari-stitcher/actions)
52
+ [![codecov](https://codecov.io/gh/multiview-stitcher/napari-stitcher/branch/main/graph/badge.svg)](https://codecov.io/gh/multiview-stitcher/napari-stitcher)
53
+ [![DOI](https://zenodo.org/badge/697999800.svg)](https://zenodo.org/doi/10.5281/zenodo.13151252)
54
+
55
+
56
+ # napari-stitcher
57
+
58
+ A napari plugin for stitching large multi-positioning datasets in 2/3D+t using [`multiview-stitcher`](https://github.com/multiview-stitcher/multiview-stitcher).
59
+
60
+ ![](docs/images/napari-stitcher-loaded-mosaic-annotated.png)
61
+ <small>Image data by Arthur Michaut @ Jérôme Gros Lab @ Institut Pasteur.</small>
62
+
63
+ #### Quick guide:
64
+
65
+ 1. Directly stitch napari layers: Use napari to load, visualize and [preposition](prearrangement.md) the tiles to be stitched.
66
+ 2. When working with multi-channel data, stick to the following [naming convention](naming_convention.md): `{tile} :: {channel}`.
67
+ 3. Load either all or just a subset of the layers into the plugin.
68
+ 4. Choose registration options: registration channel, binning and more.
69
+ 5. Stitching = registration (refining the positions, optional) + fusion (joining the tiles into a single image).
70
+ 6. The registration result is shown in the viewer and the fused channels are added as new layers.
71
+
72
+ ## Demo
73
+
74
+ https://github.com/user-attachments/assets/8773e49f-af18-4ff3-ab2f-2a5f1b1cadf2
75
+
76
+ <small>This demo uses the awesome [`napari-threedee`](https://github.com/napari-threedee/napari-threedee) for prepositioning the tiles. Image data: [BigStitcher](https://imagej.net/plugins/bigstitcher/).</small>
77
+
78
+ ## Documentation
79
+
80
+ Head over to the [user guide](https://multiview-stitcher.github.io/napari-stitcher/main/) for more details.
81
+
82
+ ## Installation
83
+
84
+ You can install `napari-stitcher` via `pip`:
85
+
86
+ ```bash
87
+ pip install napari-stitcher
88
+ ```
89
+
90
+ For more installation options, see the [installation docs](https://multiview-stitcher.github.io/napari-stitcher/main/installation/).
91
+
92
+ ## Contributing
93
+
94
+ Contributions are very welcome. Tests can be run with `tox`.
95
+
96
+ ## License
97
+
98
+ Distributed under the terms of the [BSD-3] license, "napari-stitcher" is free and open source software
99
+
100
+ ## Issues
101
+
102
+ If you encounter any problems, please [file an issue](https://github.com/multiview-stitcher/napari-stitcher/issues) along with a detailed description.
@@ -0,0 +1,56 @@
1
+ [![napari hub](https://img.shields.io/endpoint?url=https://api.napari-hub.org/shields/napari-stitcher)](https://napari-hub.org/plugins/napari-stitcher)
2
+ [![License {{cookiecutter.license}}](https://img.shields.io/pypi/l/napari-stitcher.svg?color=green)](https://github.com/multiview-stitcher/napari-stitcher/raw/main/LICENSE)
3
+ [![PyPI](https://img.shields.io/pypi/v/napari-stitcher.svg?color=green)](https://pypi.org/project/napari-stitcher)
4
+ [![Python Version](https://img.shields.io/pypi/pyversions/napari-stitcher.svg?color=green)](https://python.org)
5
+ [![tests](https://github.com/multiview-stitcher/napari-stitcher/actions/workflows/test_and_deploy.yml/badge.svg)](https://github.com/multiview-stitcher/napari-stitcher/actions)
6
+ [![codecov](https://codecov.io/gh/multiview-stitcher/napari-stitcher/branch/main/graph/badge.svg)](https://codecov.io/gh/multiview-stitcher/napari-stitcher)
7
+ [![DOI](https://zenodo.org/badge/697999800.svg)](https://zenodo.org/doi/10.5281/zenodo.13151252)
8
+
9
+
10
+ # napari-stitcher
11
+
12
+ A napari plugin for stitching large multi-positioning datasets in 2/3D+t using [`multiview-stitcher`](https://github.com/multiview-stitcher/multiview-stitcher).
13
+
14
+ ![](docs/images/napari-stitcher-loaded-mosaic-annotated.png)
15
+ <small>Image data by Arthur Michaut @ Jérôme Gros Lab @ Institut Pasteur.</small>
16
+
17
+ #### Quick guide:
18
+
19
+ 1. Directly stitch napari layers: Use napari to load, visualize and [preposition](prearrangement.md) the tiles to be stitched.
20
+ 2. When working with multi-channel data, stick to the following [naming convention](naming_convention.md): `{tile} :: {channel}`.
21
+ 3. Load either all or just a subset of the layers into the plugin.
22
+ 4. Choose registration options: registration channel, binning and more.
23
+ 5. Stitching = registration (refining the positions, optional) + fusion (joining the tiles into a single image).
24
+ 6. The registration result is shown in the viewer and the fused channels are added as new layers.
25
+
26
+ ## Demo
27
+
28
+ https://github.com/user-attachments/assets/8773e49f-af18-4ff3-ab2f-2a5f1b1cadf2
29
+
30
+ <small>This demo uses the awesome [`napari-threedee`](https://github.com/napari-threedee/napari-threedee) for prepositioning the tiles. Image data: [BigStitcher](https://imagej.net/plugins/bigstitcher/).</small>
31
+
32
+ ## Documentation
33
+
34
+ Head over to the [user guide](https://multiview-stitcher.github.io/napari-stitcher/main/) for more details.
35
+
36
+ ## Installation
37
+
38
+ You can install `napari-stitcher` via `pip`:
39
+
40
+ ```bash
41
+ pip install napari-stitcher
42
+ ```
43
+
44
+ For more installation options, see the [installation docs](https://multiview-stitcher.github.io/napari-stitcher/main/installation/).
45
+
46
+ ## Contributing
47
+
48
+ Contributions are very welcome. Tests can be run with `tox`.
49
+
50
+ ## License
51
+
52
+ Distributed under the terms of the [BSD-3] license, "napari-stitcher" is free and open source software
53
+
54
+ ## Issues
55
+
56
+ If you encounter any problems, please [file an issue](https://github.com/multiview-stitcher/napari-stitcher/issues) along with a detailed description.
@@ -0,0 +1,3 @@
1
+ # Contributing
2
+
3
+ Contributions are very welcome.
@@ -0,0 +1,84 @@
1
+ appnope==0.1.4
2
+ asttokens==2.4.1
3
+ attrs==24.2.0
4
+ babel==2.16.0
5
+ backcall==0.2.0
6
+ beautifulsoup4==4.12.3
7
+ bleach==6.1.0
8
+ certifi==2024.8.30
9
+ charset-normalizer==3.4.0
10
+ click==8.1.7
11
+ colorama==0.4.6
12
+ decorator==5.1.1
13
+ defusedxml==0.7.1
14
+ docopt==0.6.2
15
+ EditorConfig==0.12.4
16
+ executing==2.1.0
17
+ fastjsonschema==2.20.0
18
+ ghp-import==2.1.0
19
+ griffe==1.4.1
20
+ idna==3.10
21
+ importlib_metadata==8.5.0
22
+ importlib_resources==6.4.5
23
+ ipython==8.12.3
24
+ jedi==0.19.1
25
+ Jinja2==3.1.4
26
+ jsbeautifier==1.15.1
27
+ jsonschema==4.23.0
28
+ jsonschema-specifications==2024.10.1
29
+ jupyter_client==8.6.3
30
+ jupyter_core==5.7.2
31
+ jupyterlab_pygments==0.3.0
32
+ Markdown==3.7
33
+ MarkupSafe==3.0.1
34
+ matplotlib-inline==0.1.7
35
+ mergedeep==1.3.4
36
+ mike==2.1.3
37
+ mistune==3.0.2
38
+ mkdocs==1.6.1
39
+ mkdocs-autorefs==1.2.0
40
+ mkdocs-get-deps==0.2.0
41
+ mkdocs-material==9.5.41
42
+ mkdocs-material-extensions==1.3.1
43
+ mkdocs-mermaid2-plugin==1.1.1
44
+ mkdocstrings==0.26.2
45
+ mkdocstrings-python==1.12.1
46
+ nbclient==0.10.0
47
+ nbconvert==7.16.4
48
+ nbformat==5.10.4
49
+ packaging==24.1
50
+ paginate==0.5.7
51
+ pandocfilters==1.5.1
52
+ parso==0.8.4
53
+ pathspec==0.12.1
54
+ pexpect==4.9.0
55
+ pickleshare==0.7.5
56
+ pipreqs==0.5.0
57
+ platformdirs==4.3.6
58
+ prompt_toolkit==3.0.48
59
+ ptyprocess==0.7.0
60
+ pure_eval==0.2.3
61
+ Pygments==2.18.0
62
+ pymdown-extensions==10.11.2
63
+ pyparsing==3.2.0
64
+ python-dateutil==2.9.0.post0
65
+ PyYAML==6.0.2
66
+ pyyaml_env_tag==0.1
67
+ pyzmq==26.2.0
68
+ referencing==0.35.1
69
+ regex==2024.9.11
70
+ requests==2.32.3
71
+ rpds-py==0.20.0
72
+ six==1.16.0
73
+ soupsieve==2.6
74
+ stack-data==0.6.3
75
+ tinycss2==1.3.0
76
+ tornado==6.4.1
77
+ traitlets==5.14.3
78
+ urllib3==2.2.3
79
+ verspec==0.1.0
80
+ watchdog==5.0.3
81
+ wcwidth==0.2.13
82
+ webencodings==0.5.1
83
+ yarg==0.1.9
84
+ zipp==3.20.2