napari-copick 1.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 (36) hide show
  1. napari_copick-1.1.0/.github/workflows/conventional-commits.yml +19 -0
  2. napari_copick-1.1.0/.github/workflows/py-formatting.yml +23 -0
  3. napari_copick-1.1.0/.github/workflows/release-please.yml +64 -0
  4. napari_copick-1.1.0/.github/workflows/test.yml +60 -0
  5. napari_copick-1.1.0/.gitignore +84 -0
  6. napari_copick-1.1.0/.napari-hub/DESCRIPTION.md +9 -0
  7. napari_copick-1.1.0/.pre-commit-config.yaml +29 -0
  8. napari_copick-1.1.0/.release-please.manifest.json +3 -0
  9. napari_copick-1.1.0/CHANGELOG.md +42 -0
  10. napari_copick-1.1.0/LICENSE +22 -0
  11. napari_copick-1.1.0/MANIFEST.in +5 -0
  12. napari_copick-1.1.0/PKG-INFO +187 -0
  13. napari_copick-1.1.0/README.md +105 -0
  14. napari_copick-1.1.0/SECURITY.md +3 -0
  15. napari_copick-1.1.0/docs/assets/interface.png +0 -0
  16. napari_copick-1.1.0/pyproject.toml +160 -0
  17. napari_copick-1.1.0/release-please.config.json +29 -0
  18. napari_copick-1.1.0/src/napari_copick/__init__.py +4 -0
  19. napari_copick-1.1.0/src/napari_copick/_tests/__init__.py +0 -0
  20. napari_copick-1.1.0/src/napari_copick/_tests/test_widget.py +5 -0
  21. napari_copick-1.1.0/src/napari_copick/async_loaders.py +313 -0
  22. napari_copick-1.1.0/src/napari_copick/cli/__init__.py +0 -0
  23. napari_copick-1.1.0/src/napari_copick/cli/run.py +77 -0
  24. napari_copick-1.1.0/src/napari_copick/config_manager.py +227 -0
  25. napari_copick-1.1.0/src/napari_copick/data_loader.py +361 -0
  26. napari_copick-1.1.0/src/napari_copick/dialogs.py +281 -0
  27. napari_copick-1.1.0/src/napari_copick/gallery_widget.py +182 -0
  28. napari_copick-1.1.0/src/napari_copick/info_widget.py +196 -0
  29. napari_copick-1.1.0/src/napari_copick/napari.yaml +12 -0
  30. napari_copick-1.1.0/src/napari_copick/save_manager.py +293 -0
  31. napari_copick-1.1.0/src/napari_copick/save_utils.py +264 -0
  32. napari_copick-1.1.0/src/napari_copick/tree_expansion_manager.py +130 -0
  33. napari_copick-1.1.0/src/napari_copick/tree_widget.py +431 -0
  34. napari_copick-1.1.0/src/napari_copick/widget.py +344 -0
  35. napari_copick-1.1.0/tox.ini +32 -0
  36. napari_copick-1.1.0/uv.lock +5873 -0
@@ -0,0 +1,19 @@
1
+ # Validates PR title follows conventional commits
2
+ name: conventional-commits
3
+ on:
4
+ pull_request:
5
+ branches: [main]
6
+ types:
7
+ - edited
8
+ - opened
9
+ - synchronize
10
+ - reopened
11
+
12
+ concurrency:
13
+ group: ${{ github.workflow }}-${{ github.ref }}
14
+ cancel-in-progress: true
15
+ jobs:
16
+ conventional_commit_title:
17
+ runs-on: ubuntu-latest
18
+ steps:
19
+ - uses: chanzuckerberg/github-actions/.github/actions/conventional-commits@v6.4.0
@@ -0,0 +1,23 @@
1
+ name: Python Linting
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ branches: [main]
7
+
8
+ jobs:
9
+ pre_commit_checks:
10
+ name: pre-commit checks
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: actions/checkout@v3
14
+ - uses: actions/setup-python@v4
15
+ with:
16
+ python-version: "3.12.5"
17
+ - name: Install action-validator with asdf
18
+ uses: asdf-vm/actions/install@v3
19
+ with:
20
+ tool_versions: |
21
+ action-validator 0.6.0
22
+ - name: check linting
23
+ uses: pre-commit/action@v3.0.1
@@ -0,0 +1,64 @@
1
+ name: Create Release PRs
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ push:
6
+ branches:
7
+ - main
8
+
9
+ permissions:
10
+ contents: write
11
+ issues: write
12
+ pull-requests: write
13
+
14
+ jobs:
15
+ release-please:
16
+ concurrency:
17
+ group: ${{ github.workflow }}-${{ github.ref }}
18
+ cancel-in-progress: true
19
+
20
+ runs-on: ubuntu-latest
21
+ steps:
22
+ - name: release please
23
+ uses: googleapis/release-please-action@v4
24
+ id: release
25
+ with:
26
+ manifest-file: ".release-please.manifest.json"
27
+ config-file: "release-please.config.json"
28
+ target-branch: "main"
29
+ token: ${{ secrets.GITHUB_TOKEN }}
30
+
31
+ outputs:
32
+ paths_released: ${{ steps.release.outputs.paths_released }}
33
+
34
+ publish-pypi-package:
35
+ name: Build and publish Python package to PyPI
36
+ runs-on: ubuntu-latest
37
+ needs: release-please
38
+ if: contains(needs.release-please.outputs.paths_released, '.')
39
+ environment:
40
+ name: pypi
41
+ url: https://pypi.org/p/napari-copick
42
+ permissions:
43
+ id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
44
+ steps:
45
+ - name: Checkout ref branch
46
+ uses: actions/checkout@v4
47
+ with:
48
+ ref: ${{ github.ref }}
49
+ fetch-depth: 0
50
+
51
+ - name: Install uv
52
+ uses: astral-sh/setup-uv@v6
53
+ with:
54
+ version: "0.7.13"
55
+ python-version: "3.12"
56
+
57
+ - name: build
58
+ run: |
59
+ uv build
60
+
61
+ - name: Publish distribution 📦 to PyPI
62
+ uses: pypa/gh-action-pypi-publish@release/v1
63
+ with:
64
+ packages-dir: dist
@@ -0,0 +1,60 @@
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: tests
5
+
6
+ on:
7
+ push:
8
+ branches:
9
+ - main
10
+ - npe2
11
+ tags:
12
+ - "v*" # Push events to matching v*, i.e. v1.0, v20.15.10
13
+ pull_request:
14
+ branches:
15
+ - main
16
+ - npe2
17
+ workflow_dispatch:
18
+
19
+ jobs:
20
+ test:
21
+ name: ${{ matrix.platform }} py${{ matrix.python-version }}
22
+ runs-on: ${{ matrix.platform }}
23
+ timeout-minutes: 30
24
+ strategy:
25
+ matrix:
26
+ platform: [ubuntu-latest, windows-latest, macos-latest]
27
+ python-version: ['3.9', '3.10']
28
+
29
+ steps:
30
+ - uses: actions/checkout@v4
31
+
32
+ - name: Install uv
33
+ uses: astral-sh/setup-uv@v6
34
+ with:
35
+ version: "0.7.13"
36
+ python-version: ${{ matrix.python-version }}
37
+
38
+ # these libraries enable testing on Qt on linux
39
+ - uses: tlambert03/setup-qt-libs@v1
40
+
41
+ # strategy borrowed from vispy for installing opengl libs on windows
42
+ - name: Install Windows OpenGL
43
+ if: runner.os == 'Windows'
44
+ run: |
45
+ git clone --depth 1 https://github.com/pyvista/gl-ci-helpers.git
46
+ powershell gl-ci-helpers/appveyor/install_opengl.ps1
47
+
48
+ - name: Install napari-copick
49
+ run: uv sync --locked --extra testing --extra dev
50
+
51
+ # this runs the platform-specific tests declared in tox.ini
52
+ - name: Test with tox
53
+ uses: aganders3/headless-gui@v1
54
+ with:
55
+ run: uv run tox
56
+ env:
57
+ PLATFORM: ${{ matrix.platform }}
58
+
59
+ - name: Coverage
60
+ uses: codecov/codecov-action@v3
@@ -0,0 +1,84 @@
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
@@ -0,0 +1,9 @@
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
+ The developer has not yet provided a napari-hub specific description.
@@ -0,0 +1,29 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v4.5.0
4
+ hooks:
5
+ - id: check-docstring-first
6
+ - id: end-of-file-fixer
7
+ - id: trailing-whitespace
8
+ exclude: ^\.napari-hub/.*
9
+ - id: check-yaml # checks for correct yaml syntax for github actions ex.
10
+ - repo: https://github.com/astral-sh/ruff-pre-commit
11
+ rev: v0.3.4
12
+ hooks:
13
+ - id: ruff
14
+ args:
15
+ - --fix
16
+ - repo: https://github.com/psf/black
17
+ rev: 24.3.0
18
+ hooks:
19
+ - id: black
20
+ - repo: https://github.com/tlambert03/napari-plugin-checks
21
+ rev: v0.3.0
22
+ hooks:
23
+ - id: napari-plugin-checks
24
+ # https://mypy.readthedocs.io/en/stable/
25
+ # you may wish to add this as well!
26
+ # - repo: https://github.com/pre-commit/mirrors-mypy
27
+ # rev: v1.9.0
28
+ # hooks:
29
+ # - id: mypy
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "1.1.0"
3
+ }
@@ -0,0 +1,42 @@
1
+ # Changelog
2
+
3
+ ## [1.1.0](https://github.com/copick/napari-copick/compare/napari-copick-v1.0.1...napari-copick-v1.1.0) (2025-11-07)
4
+
5
+
6
+ ### ✨ Features
7
+
8
+ * Add segmentation storage options ([#16](https://github.com/copick/napari-copick/issues/16)) ([df34dec](https://github.com/copick/napari-copick/commit/df34dec4451dfd2924ab2f7ed4ea41ea5269460e))
9
+
10
+
11
+ ### 🐞 Bug Fixes
12
+
13
+ * Save copick config after updating objects in UI. ([#17](https://github.com/copick/napari-copick/issues/17)) ([f0b4690](https://github.com/copick/napari-copick/commit/f0b4690e787ea707b622870a1f64c3cf64d517a1))
14
+
15
+ ## [1.0.1](https://github.com/copick/napari-copick/compare/napari-copick-v1.0.0...napari-copick-v1.0.1) (2025-07-27)
16
+
17
+
18
+ ### 🐞 Bug Fixes
19
+
20
+ * fix screenshot link for pypi ([cadb6fb](https://github.com/copick/napari-copick/commit/cadb6fba40e3b904e3a52508a15283beff158aa9))
21
+
22
+ ## [1.0.0](https://github.com/copick/napari-copick/compare/napari-copick-v0.0.1...napari-copick-v1.0.0) (2025-07-27)
23
+
24
+
25
+ ### ⚠ BREAKING CHANGES
26
+
27
+ * Add shared components to the napari-copick UI ([#11](https://github.com/copick/napari-copick/issues/11))
28
+ * Separate the widget code from the execution code. ([#7](https://github.com/copick/napari-copick/issues/7))
29
+
30
+ ### ✨ Features
31
+
32
+ * Add shared components to the napari-copick UI ([#11](https://github.com/copick/napari-copick/issues/11)) ([c5d4c4c](https://github.com/copick/napari-copick/commit/c5d4c4cf63febb937214234303397d74792742d7))
33
+ * Load Tree contents and images async ([#10](https://github.com/copick/napari-copick/issues/10)) ([3905d15](https://github.com/copick/napari-copick/commit/3905d159be1db15942649df423c64724421ac591))
34
+ * Save buttons, Make Tree more human-readable, Refactor widget code for readability ([#12](https://github.com/copick/napari-copick/issues/12)) ([5d0f684](https://github.com/copick/napari-copick/commit/5d0f6842102e5213c8799a52dace70e42b620011))
35
+ * Separate the widget code from the execution code. ([#7](https://github.com/copick/napari-copick/issues/7)) ([f2244fc](https://github.com/copick/napari-copick/commit/f2244fc6db5bd52e7c391fd04b6c5d09cb3ef1cc))
36
+
37
+
38
+ ### 🧹 Miscellaneous Chores
39
+
40
+ * FInal fixes before 1.0.0 ([#14](https://github.com/copick/napari-copick/issues/14)) ([b0efbeb](https://github.com/copick/napari-copick/commit/b0efbeb2efb68ccdf290c5395f98a780e69b4477))
41
+ * Fix test workflow by switching to uv ([#8](https://github.com/copick/napari-copick/issues/8)) ([3493276](https://github.com/copick/napari-copick/commit/3493276a86b6c91259f267a91477bbec338739a0))
42
+ * Set up CI for napari-copick ([#6](https://github.com/copick/napari-copick/issues/6)) ([b97f55b](https://github.com/copick/napari-copick/commit/b97f55b6c0e316bd57c5f8fb54a807a5512fc868))
@@ -0,0 +1,22 @@
1
+
2
+ The MIT License (MIT)
3
+
4
+ Copyright (c) 2024 Kyle Harrington
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the "Software"), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in
14
+ all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
+ THE SOFTWARE.
@@ -0,0 +1,5 @@
1
+ include LICENSE
2
+ include README.md
3
+
4
+ recursive-exclude * __pycache__
5
+ recursive-exclude * *.py[co]
@@ -0,0 +1,187 @@
1
+ Metadata-Version: 2.4
2
+ Name: napari-copick
3
+ Version: 1.1.0
4
+ Summary: A plugin for collaborative annotation in cryoET using copick
5
+ Project-URL: Repository, https://github.com/kephale/napari-copick
6
+ Project-URL: Issues, https://github.com/kephale/napari-copick/issues
7
+ Project-URL: Documentation, https://github.com/kephale/napari-copick#README.md
8
+ Project-URL: Bug Tracker, https://github.com/kephale/napari-copick/issues
9
+ Project-URL: Source Code, https://github.com/kephale/napari-copick
10
+ Project-URL: User Support, https://github.com/kephale/napari-copick/issues
11
+ Author-email: Kyle Harrington <czi@kyleharrington.com>, "Utz H. Ermel" <utz.ermel@czii.org>
12
+ License:
13
+ The MIT License (MIT)
14
+
15
+ Copyright (c) 2024 Kyle Harrington
16
+
17
+ Permission is hereby granted, free of charge, to any person obtaining a copy
18
+ of this software and associated documentation files (the "Software"), to deal
19
+ in the Software without restriction, including without limitation the rights
20
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
21
+ copies of the Software, and to permit persons to whom the Software is
22
+ furnished to do so, subject to the following conditions:
23
+
24
+ The above copyright notice and this permission notice shall be included in
25
+ all copies or substantial portions of the Software.
26
+
27
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
28
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
29
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
30
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
31
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
32
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
33
+ THE SOFTWARE.
34
+ License-File: LICENSE
35
+ Keywords: annotation,copick,cryo-et,cryoet,napari,plugin,tomography
36
+ Classifier: Development Status :: 2 - Pre-Alpha
37
+ Classifier: Framework :: napari
38
+ Classifier: Intended Audience :: Developers
39
+ Classifier: License :: OSI Approved :: MIT License
40
+ Classifier: Operating System :: OS Independent
41
+ Classifier: Programming Language :: Python
42
+ Classifier: Programming Language :: Python :: 3
43
+ Classifier: Programming Language :: Python :: 3 :: Only
44
+ Classifier: Programming Language :: Python :: 3.9
45
+ Classifier: Programming Language :: Python :: 3.10
46
+ Classifier: Programming Language :: Python :: 3.11
47
+ Classifier: Programming Language :: Python :: 3.12
48
+ Classifier: Programming Language :: Python :: 3.13
49
+ Classifier: Programming Language :: Python :: Implementation :: CPython
50
+ Classifier: Programming Language :: Python :: Implementation :: PyPy
51
+ Classifier: Topic :: Scientific/Engineering :: Image Processing
52
+ Requires-Python: >=3.9
53
+ Requires-Dist: click
54
+ Requires-Dist: copick-shared-ui==0.2.0
55
+ Requires-Dist: copick>=1.6.0
56
+ Requires-Dist: fsspec
57
+ Requires-Dist: magicgui
58
+ Requires-Dist: napari
59
+ Requires-Dist: napari-ome-zarr
60
+ Requires-Dist: numpy
61
+ Requires-Dist: pydantic>=2
62
+ Requires-Dist: qtpy
63
+ Requires-Dist: scikit-image
64
+ Requires-Dist: trimesh
65
+ Requires-Dist: zarr
66
+ Provides-Extra: dev
67
+ Requires-Dist: black>=25.1.0; extra == 'dev'
68
+ Requires-Dist: hatch-vcs>=0.4.0; extra == 'dev'
69
+ Requires-Dist: hatchling>=1.25.0; extra == 'dev'
70
+ Requires-Dist: pre-commit>=4.2.0; extra == 'dev'
71
+ Requires-Dist: ruff>=0.12.0; extra == 'dev'
72
+ Provides-Extra: testing
73
+ Requires-Dist: napari; extra == 'testing'
74
+ Requires-Dist: pyqt6; extra == 'testing'
75
+ Requires-Dist: pytest; extra == 'testing'
76
+ Requires-Dist: pytest-cov; extra == 'testing'
77
+ Requires-Dist: pytest-qt; extra == 'testing'
78
+ Requires-Dist: tox; extra == 'testing'
79
+ Requires-Dist: tox-gh-actions; extra == 'testing'
80
+ Requires-Dist: tox-uv; extra == 'testing'
81
+ Description-Content-Type: text/markdown
82
+
83
+ # napari-copick
84
+
85
+ [![License MIT](https://img.shields.io/pypi/l/napari-copick.svg?color=green)](https://github.com/kephale/napari-copick/raw/main/LICENSE)
86
+ [![PyPI](https://img.shields.io/pypi/v/napari-copick.svg?color=green)](https://pypi.org/project/napari-copick)
87
+ [![Python Version](https://img.shields.io/pypi/pyversions/napari-copick.svg?color=green)](https://python.org)
88
+ [![tests](https://github.com/kephale/napari-copick/workflows/tests/badge.svg)](https://github.com/kephale/napari-copick/actions)
89
+ [![codecov](https://codecov.io/gh/kephale/napari-copick/branch/main/graph/badge.svg)](https://codecov.io/gh/kephale/napari-copick)
90
+ [![napari hub](https://img.shields.io/endpoint?url=https://api.napari-hub.org/shields/napari-copick)](https://napari-hub.org/plugins/napari-copick)
91
+
92
+ A plugin for collaborative annotation in cryoET using copick
93
+
94
+ ![interface.png](https://github.com/copick/napari-copick/raw/main/docs/assets/interface.png)
95
+
96
+ ----------------------------------
97
+
98
+ This [napari] plugin was generated with [Cookiecutter] using [@napari]'s [cookiecutter-napari-plugin] template.
99
+
100
+ <!--
101
+ Don't miss the full getting started guide to set up your new package:
102
+ https://github.com/napari/cookiecutter-napari-plugin#getting-started
103
+
104
+ and review the napari docs for plugin developers:
105
+ https://napari.org/stable/plugins/index.html
106
+ -->
107
+
108
+ ## Installation
109
+
110
+ You can install `napari-copick` via [pip]:
111
+
112
+ pip install napari-copick
113
+
114
+ To install latest development version:
115
+
116
+ pip install git+https://github.com/copick/napari-copick.git
117
+
118
+ ## Usage
119
+
120
+ ### Using a copick config file
121
+
122
+ ```bash
123
+ napari-copick run --config path/to/copick_config.json
124
+ ```
125
+
126
+ ### Using dataset IDs from CZ cryoET Data Portal
127
+
128
+ ```bash
129
+ napari-copick run --dataset-ids 10440 10441 --overlay-root /path/to/overlay_root
130
+ ```
131
+
132
+ You can specify multiple dataset IDs separated by spaces.
133
+
134
+ ### GUI Usage
135
+
136
+ The plugin provides an intuitive interface with two loading options:
137
+
138
+ 1. **Load Config File**: Opens a file dialog to select a copick configuration JSON file
139
+ 2. **Load from Dataset IDs**: Opens a dialog to enter CZ cryoET Data Portal dataset IDs and overlay root path
140
+
141
+ After loading, you'll see a hierarchical tree of the project structure that you can navigate to access tomograms, segmentations, and picks.
142
+
143
+ ### Tomogram Handling
144
+
145
+ napari-copick now handles multiscale zarr arrays directly:
146
+
147
+ - Automatically detects and loads all available resolution levels
148
+ - Creates a proper multiscale image stack using napari's native multiscale API
149
+ - Uses dask for efficient lazy loading of large tomogram data
150
+ - Applies appropriate scaling factors based on the voxel size metadata
151
+
152
+ This direct zarr handling provides better performance and more flexibility compared to relying on external plugins.
153
+
154
+ ## Contributing
155
+
156
+ Contributions are very welcome. Tests can be run with [tox], please ensure
157
+ the coverage at least stays the same before you submit a pull request.
158
+
159
+ ## License
160
+
161
+ Distributed under the terms of the [MIT] license,
162
+ "napari-copick" is free and open source software
163
+
164
+ ## Issues
165
+
166
+ If you encounter any problems, please [file an issue] along with a detailed description.
167
+
168
+ [napari]: https://github.com/napari/napari
169
+ [Cookiecutter]: https://github.com/audreyr/cookiecutter
170
+ [@napari]: https://github.com/napari
171
+ [MIT]: http://opensource.org/licenses/MIT
172
+ [cookiecutter-napari-plugin]: https://github.com/napari/cookiecutter-napari-plugin
173
+
174
+ [file an issue]: https://github.com/kephale/napari-copick/issues
175
+
176
+ [napari]: https://github.com/napari/napari
177
+ [tox]: https://tox.readthedocs.io/en/latest/
178
+ [pip]: https://pypi.org/project/pip/
179
+ [PyPI]: https://pypi.org/
180
+
181
+ ## Code of Conduct
182
+
183
+ This project adheres to the Contributor Covenant [code of conduct](https://github.com/chanzuckerberg/.github/blob/main/CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to [opensource@chanzuckerberg.com](mailto:opensource@chanzuckerberg.com).
184
+
185
+ ## Reporting Security Issues
186
+
187
+ If you believe you have found a security issue, please responsibly disclose by contacting us at [security@chanzuckerberg.com](mailto:security@chanzuckerberg.com).
@@ -0,0 +1,105 @@
1
+ # napari-copick
2
+
3
+ [![License MIT](https://img.shields.io/pypi/l/napari-copick.svg?color=green)](https://github.com/kephale/napari-copick/raw/main/LICENSE)
4
+ [![PyPI](https://img.shields.io/pypi/v/napari-copick.svg?color=green)](https://pypi.org/project/napari-copick)
5
+ [![Python Version](https://img.shields.io/pypi/pyversions/napari-copick.svg?color=green)](https://python.org)
6
+ [![tests](https://github.com/kephale/napari-copick/workflows/tests/badge.svg)](https://github.com/kephale/napari-copick/actions)
7
+ [![codecov](https://codecov.io/gh/kephale/napari-copick/branch/main/graph/badge.svg)](https://codecov.io/gh/kephale/napari-copick)
8
+ [![napari hub](https://img.shields.io/endpoint?url=https://api.napari-hub.org/shields/napari-copick)](https://napari-hub.org/plugins/napari-copick)
9
+
10
+ A plugin for collaborative annotation in cryoET using copick
11
+
12
+ ![interface.png](https://github.com/copick/napari-copick/raw/main/docs/assets/interface.png)
13
+
14
+ ----------------------------------
15
+
16
+ This [napari] plugin was generated with [Cookiecutter] using [@napari]'s [cookiecutter-napari-plugin] template.
17
+
18
+ <!--
19
+ Don't miss the full getting started guide to set up your new package:
20
+ https://github.com/napari/cookiecutter-napari-plugin#getting-started
21
+
22
+ and review the napari docs for plugin developers:
23
+ https://napari.org/stable/plugins/index.html
24
+ -->
25
+
26
+ ## Installation
27
+
28
+ You can install `napari-copick` via [pip]:
29
+
30
+ pip install napari-copick
31
+
32
+ To install latest development version:
33
+
34
+ pip install git+https://github.com/copick/napari-copick.git
35
+
36
+ ## Usage
37
+
38
+ ### Using a copick config file
39
+
40
+ ```bash
41
+ napari-copick run --config path/to/copick_config.json
42
+ ```
43
+
44
+ ### Using dataset IDs from CZ cryoET Data Portal
45
+
46
+ ```bash
47
+ napari-copick run --dataset-ids 10440 10441 --overlay-root /path/to/overlay_root
48
+ ```
49
+
50
+ You can specify multiple dataset IDs separated by spaces.
51
+
52
+ ### GUI Usage
53
+
54
+ The plugin provides an intuitive interface with two loading options:
55
+
56
+ 1. **Load Config File**: Opens a file dialog to select a copick configuration JSON file
57
+ 2. **Load from Dataset IDs**: Opens a dialog to enter CZ cryoET Data Portal dataset IDs and overlay root path
58
+
59
+ After loading, you'll see a hierarchical tree of the project structure that you can navigate to access tomograms, segmentations, and picks.
60
+
61
+ ### Tomogram Handling
62
+
63
+ napari-copick now handles multiscale zarr arrays directly:
64
+
65
+ - Automatically detects and loads all available resolution levels
66
+ - Creates a proper multiscale image stack using napari's native multiscale API
67
+ - Uses dask for efficient lazy loading of large tomogram data
68
+ - Applies appropriate scaling factors based on the voxel size metadata
69
+
70
+ This direct zarr handling provides better performance and more flexibility compared to relying on external plugins.
71
+
72
+ ## Contributing
73
+
74
+ Contributions are very welcome. Tests can be run with [tox], please ensure
75
+ the coverage at least stays the same before you submit a pull request.
76
+
77
+ ## License
78
+
79
+ Distributed under the terms of the [MIT] license,
80
+ "napari-copick" is free and open source software
81
+
82
+ ## Issues
83
+
84
+ If you encounter any problems, please [file an issue] along with a detailed description.
85
+
86
+ [napari]: https://github.com/napari/napari
87
+ [Cookiecutter]: https://github.com/audreyr/cookiecutter
88
+ [@napari]: https://github.com/napari
89
+ [MIT]: http://opensource.org/licenses/MIT
90
+ [cookiecutter-napari-plugin]: https://github.com/napari/cookiecutter-napari-plugin
91
+
92
+ [file an issue]: https://github.com/kephale/napari-copick/issues
93
+
94
+ [napari]: https://github.com/napari/napari
95
+ [tox]: https://tox.readthedocs.io/en/latest/
96
+ [pip]: https://pypi.org/project/pip/
97
+ [PyPI]: https://pypi.org/
98
+
99
+ ## Code of Conduct
100
+
101
+ This project adheres to the Contributor Covenant [code of conduct](https://github.com/chanzuckerberg/.github/blob/main/CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to [opensource@chanzuckerberg.com](mailto:opensource@chanzuckerberg.com).
102
+
103
+ ## Reporting Security Issues
104
+
105
+ If you believe you have found a security issue, please responsibly disclose by contacting us at [security@chanzuckerberg.com](mailto:security@chanzuckerberg.com).
@@ -0,0 +1,3 @@
1
+ ## Reporting Security Issues
2
+
3
+ If you believe you have found a security issue, please responsibly disclose by contacting us at [security@chanzuckerberg.com](mailto:security@chanzuckerberg.com).