napari-colocalization 0.1.3__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.
- napari_colocalization-0.1.3/.copier-answers.yml +18 -0
- napari_colocalization-0.1.3/.github/ISSUE_TEMPLATE/bug_report.yml +87 -0
- napari_colocalization-0.1.3/.github/ISSUE_TEMPLATE/documentation.md +11 -0
- napari_colocalization-0.1.3/.github/ISSUE_TEMPLATE/feature_request.md +27 -0
- napari_colocalization-0.1.3/.github/ISSUE_TEMPLATE/task.md +11 -0
- napari_colocalization-0.1.3/.github/PULL_REQUEST_TEMPLATE.md +12 -0
- napari_colocalization-0.1.3/.github/workflows/docs.yml +47 -0
- napari_colocalization-0.1.3/.github/workflows/test_and_deploy.yml +86 -0
- napari_colocalization-0.1.3/.gitignore +84 -0
- napari_colocalization-0.1.3/.pre-commit-config.yaml +17 -0
- napari_colocalization-0.1.3/LICENSE +22 -0
- napari_colocalization-0.1.3/PKG-INFO +179 -0
- napari_colocalization-0.1.3/README.md +143 -0
- napari_colocalization-0.1.3/docs/api.md +111 -0
- napari_colocalization-0.1.3/docs/img/logo.png +0 -0
- napari_colocalization-0.1.3/docs/img/quickstart_run.png +0 -0
- napari_colocalization-0.1.3/docs/img/quickstart_sample.png +0 -0
- napari_colocalization-0.1.3/docs/img/usage_widget_initial.png +0 -0
- napari_colocalization-0.1.3/docs/img/widget_overview.png +0 -0
- napari_colocalization-0.1.3/docs/img/widget_shapes.png +0 -0
- napari_colocalization-0.1.3/docs/index.md +70 -0
- napari_colocalization-0.1.3/docs/metrics.md +153 -0
- napari_colocalization-0.1.3/docs/usage.md +175 -0
- napari_colocalization-0.1.3/mkdocs.yml +68 -0
- napari_colocalization-0.1.3/pyproject.toml +122 -0
- napari_colocalization-0.1.3/setup.cfg +4 -0
- napari_colocalization-0.1.3/src/napari_colocalization/__init__.py +13 -0
- napari_colocalization-0.1.3/src/napari_colocalization/_analysis.py +243 -0
- napari_colocalization-0.1.3/src/napari_colocalization/_masking.py +107 -0
- napari_colocalization-0.1.3/src/napari_colocalization/_metrics.py +246 -0
- napari_colocalization-0.1.3/src/napari_colocalization/_plot.py +120 -0
- napari_colocalization-0.1.3/src/napari_colocalization/_sample_data.py +106 -0
- napari_colocalization-0.1.3/src/napari_colocalization/_version.py +24 -0
- napari_colocalization-0.1.3/src/napari_colocalization/_widget.py +754 -0
- napari_colocalization-0.1.3/src/napari_colocalization/napari.yaml +24 -0
- napari_colocalization-0.1.3/src/napari_colocalization.egg-info/PKG-INFO +179 -0
- napari_colocalization-0.1.3/src/napari_colocalization.egg-info/SOURCES.txt +46 -0
- napari_colocalization-0.1.3/src/napari_colocalization.egg-info/dependency_links.txt +1 -0
- napari_colocalization-0.1.3/src/napari_colocalization.egg-info/entry_points.txt +2 -0
- napari_colocalization-0.1.3/src/napari_colocalization.egg-info/requires.txt +9 -0
- napari_colocalization-0.1.3/src/napari_colocalization.egg-info/top_level.txt +1 -0
- napari_colocalization-0.1.3/tests/__init__.py +0 -0
- napari_colocalization-0.1.3/tests/test_analysis.py +196 -0
- napari_colocalization-0.1.3/tests/test_masking.py +83 -0
- napari_colocalization-0.1.3/tests/test_metrics.py +179 -0
- napari_colocalization-0.1.3/tests/test_sample_data.py +58 -0
- napari_colocalization-0.1.3/tests/test_widget.py +263 -0
- napari_colocalization-0.1.3/tox.ini +33 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Changes here will be overwritten by Copier; NEVER EDIT MANUALLY
|
|
2
|
+
_commit: v2.1.1
|
|
3
|
+
_src_path: https://github.com/napari/napari-plugin-template
|
|
4
|
+
display_name: Colocalization
|
|
5
|
+
email: ''
|
|
6
|
+
full_name: Jesko Wagner
|
|
7
|
+
github_repository_url: https://github.com/jeskowagner/napari-colocalization
|
|
8
|
+
github_username_or_organization: jeskowagner
|
|
9
|
+
include_reader_plugin: false
|
|
10
|
+
include_sample_data_plugin: true
|
|
11
|
+
include_widget_plugin: true
|
|
12
|
+
include_writer_plugin: false
|
|
13
|
+
install_dependabot: false
|
|
14
|
+
install_precommit: true
|
|
15
|
+
license: MIT
|
|
16
|
+
module_name: napari_colocalization
|
|
17
|
+
plugin_name: napari-colocalization
|
|
18
|
+
short_description: Colocalization analysis of multi-channel images
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
name: "\U0001F41B Bug Report"
|
|
2
|
+
description: Report a bug encountered while using napari-colocalization
|
|
3
|
+
labels:
|
|
4
|
+
- "bug"
|
|
5
|
+
|
|
6
|
+
body:
|
|
7
|
+
- type: markdown
|
|
8
|
+
attributes:
|
|
9
|
+
value: |
|
|
10
|
+
Thanks for taking the time to report this issue! 🙏🏼
|
|
11
|
+
|
|
12
|
+
Please fill out the sections below to help us reproduce the problem.
|
|
13
|
+
|
|
14
|
+
- type: textarea
|
|
15
|
+
id: bug-report
|
|
16
|
+
attributes:
|
|
17
|
+
label: "\U0001F41B Bug Report"
|
|
18
|
+
description: "Please provide a clear and concise description of the bug."
|
|
19
|
+
placeholder: "What went wrong? What did you expect to happen?"
|
|
20
|
+
validations:
|
|
21
|
+
required: true
|
|
22
|
+
|
|
23
|
+
- type: textarea
|
|
24
|
+
id: steps-to-reproduce
|
|
25
|
+
attributes:
|
|
26
|
+
label: "\U0001F4A1 Steps to Reproduce"
|
|
27
|
+
description: "Please provide a minimal code snippet or list of steps to reproduce the bug."
|
|
28
|
+
placeholder: |
|
|
29
|
+
1. Go to '...'
|
|
30
|
+
2. Click on '....'
|
|
31
|
+
3. Scroll down to '....'
|
|
32
|
+
4. See error
|
|
33
|
+
validations:
|
|
34
|
+
required: true
|
|
35
|
+
|
|
36
|
+
- type: textarea
|
|
37
|
+
id: expected-behavior
|
|
38
|
+
attributes:
|
|
39
|
+
label: "\U0001F4A1 Expected Behavior"
|
|
40
|
+
description: "Please provide a clear and concise description of what you expected to happen."
|
|
41
|
+
placeholder: "What did you expect to happen?"
|
|
42
|
+
|
|
43
|
+
- type: textarea
|
|
44
|
+
id: environment
|
|
45
|
+
attributes:
|
|
46
|
+
label: "\U0001F30E Environment"
|
|
47
|
+
description: |
|
|
48
|
+
Please provide detailed information regarding your environment. Please paste the output of `napari --info` here or copy the information from the "napari info" dialog in the napari Help menu.
|
|
49
|
+
|
|
50
|
+
Otherwise, please provide information regarding your operating system (OS), Python version, napari version, Qt backend and version, Qt platform, method of installation, and any other relevant information related to your environment.
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
placeholder: |
|
|
54
|
+
napari: 0.5.0
|
|
55
|
+
Platform: macOS-13.2.1-arm64-arm-64bit
|
|
56
|
+
System: MacOS 13.2.1
|
|
57
|
+
Python: 3.11.4 (main, Aug 7 2023, 20:34:01) [Clang 14.0.3 (clang-1403.0.22.14.1)]
|
|
58
|
+
Qt: 5.15.10
|
|
59
|
+
PyQt5: 5.15.10
|
|
60
|
+
NumPy: 1.25.1
|
|
61
|
+
SciPy: 1.11.1
|
|
62
|
+
Dask: 2023.7.1
|
|
63
|
+
VisPy: 0.13.0
|
|
64
|
+
magicgui: 0.7.2
|
|
65
|
+
superqt: 0.5.4
|
|
66
|
+
in-n-out: 0.1.8
|
|
67
|
+
app-model: 0.2.0
|
|
68
|
+
npe2: 0.7.2
|
|
69
|
+
|
|
70
|
+
OpenGL:
|
|
71
|
+
- GL version: 2.1 Metal - 83
|
|
72
|
+
- MAX_TEXTURE_SIZE: 16384
|
|
73
|
+
|
|
74
|
+
Screens:
|
|
75
|
+
- screen 1: resolution 1512x982, scale 2.0
|
|
76
|
+
|
|
77
|
+
Settings path:
|
|
78
|
+
- /Users/.../napari/napari_5c6993c40c104085444cfc0c77fa392cb5cb8f56/settings.yaml
|
|
79
|
+
validations:
|
|
80
|
+
required: true
|
|
81
|
+
|
|
82
|
+
- type: textarea
|
|
83
|
+
id: additional-context
|
|
84
|
+
attributes:
|
|
85
|
+
label: "\U0001F4A1 Additional Context"
|
|
86
|
+
description: "Please provide any additional information or context regarding the problem here."
|
|
87
|
+
placeholder: "Add any other context about the problem here."
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "\U0001F4DA Documentation"
|
|
3
|
+
about: Report an issue with napari-colocalization documentation
|
|
4
|
+
title: ''
|
|
5
|
+
labels: documentation
|
|
6
|
+
assignees: ''
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 📚 Documentation
|
|
11
|
+
<!-- A clear and concise description of the documentation that needs to be created/updated -->
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "\U0001F680 Feature Request"
|
|
3
|
+
about: Submit a proposal/request for a new napari-colocalization feature
|
|
4
|
+
title: ''
|
|
5
|
+
labels: feature
|
|
6
|
+
assignees: ''
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 🚀 Feature
|
|
11
|
+
<!-- A clear and concise description of the feature proposal -->
|
|
12
|
+
|
|
13
|
+
## Motivation
|
|
14
|
+
|
|
15
|
+
<!-- Please outline the motivation for the proposal. Is your feature request related to a problem? e.g., I'm always frustrated when [...]. If this is related to another GitHub issue, please link here too -->
|
|
16
|
+
|
|
17
|
+
## Pitch
|
|
18
|
+
|
|
19
|
+
<!-- A clear and concise description of what you want to happen. -->
|
|
20
|
+
|
|
21
|
+
## Alternatives
|
|
22
|
+
|
|
23
|
+
<!-- A clear and concise description of any alternative solutions or features you've considered, if any. -->
|
|
24
|
+
|
|
25
|
+
## Additional context
|
|
26
|
+
|
|
27
|
+
<!-- Add any other context or screenshots about the feature request here. -->
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# References and relevant issues
|
|
2
|
+
<!-- What relevant resources were used in the creation of this PR?
|
|
3
|
+
If this PR addresses an existing issue on the repo,
|
|
4
|
+
please link to that issue here as "Closes #(issue-number)"
|
|
5
|
+
If this PR depends on another PR/issue (even in another repo),
|
|
6
|
+
please link to it with "Depends on #PR-number" or "Depends on org/repo#PR-number"
|
|
7
|
+
-->
|
|
8
|
+
|
|
9
|
+
# Description
|
|
10
|
+
<!-- What does this pull request (PR) do? Is it a new feature, a bug fix,
|
|
11
|
+
an improvement, or something else? Why is it necessary? If relevant, please add
|
|
12
|
+
a screenshot or a screen capture: "An image is worth a thousand words!" -->
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
name: docs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
paths:
|
|
7
|
+
- 'docs/**'
|
|
8
|
+
- 'mkdocs.yml'
|
|
9
|
+
- 'src/napari_colocalization/**'
|
|
10
|
+
- 'README.md'
|
|
11
|
+
- '.github/workflows/docs.yml'
|
|
12
|
+
workflow_dispatch:
|
|
13
|
+
|
|
14
|
+
permissions:
|
|
15
|
+
contents: write # mkdocs gh-deploy pushes to gh-pages
|
|
16
|
+
|
|
17
|
+
concurrency:
|
|
18
|
+
group: docs-${{ github.ref }}
|
|
19
|
+
cancel-in-progress: true
|
|
20
|
+
|
|
21
|
+
jobs:
|
|
22
|
+
build-and-deploy:
|
|
23
|
+
runs-on: ubuntu-latest
|
|
24
|
+
steps:
|
|
25
|
+
- uses: actions/checkout@v4
|
|
26
|
+
with:
|
|
27
|
+
fetch-depth: 0 # mkdocs gh-deploy needs full history
|
|
28
|
+
|
|
29
|
+
- uses: actions/setup-python@v5
|
|
30
|
+
with:
|
|
31
|
+
python-version: '3.12'
|
|
32
|
+
cache: pip
|
|
33
|
+
|
|
34
|
+
- name: Install package and docs dependencies
|
|
35
|
+
run: |
|
|
36
|
+
python -m pip install --upgrade pip
|
|
37
|
+
# Install the package itself so mkdocstrings can import
|
|
38
|
+
# napari_colocalization and read its docstrings.
|
|
39
|
+
python -m pip install . --group docs
|
|
40
|
+
|
|
41
|
+
- name: Configure Git for gh-deploy
|
|
42
|
+
run: |
|
|
43
|
+
git config --global user.name 'github-actions[bot]'
|
|
44
|
+
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
|
|
45
|
+
|
|
46
|
+
- name: Build and deploy to gh-pages
|
|
47
|
+
run: mkdocs gh-deploy --force --clean --verbose
|
|
@@ -0,0 +1,86 @@
|
|
|
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
|
+
name: tests
|
|
4
|
+
|
|
5
|
+
on:
|
|
6
|
+
push:
|
|
7
|
+
branches:
|
|
8
|
+
- main
|
|
9
|
+
- npe2
|
|
10
|
+
tags:
|
|
11
|
+
- "v*" # Push events to matching v*, i.e. v1.0, v20.15.10
|
|
12
|
+
pull_request:
|
|
13
|
+
branches:
|
|
14
|
+
- main
|
|
15
|
+
- npe2
|
|
16
|
+
workflow_dispatch:
|
|
17
|
+
|
|
18
|
+
concurrency:
|
|
19
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
20
|
+
cancel-in-progress: true
|
|
21
|
+
|
|
22
|
+
jobs:
|
|
23
|
+
test:
|
|
24
|
+
name: ${{ matrix.platform }} py${{ matrix.python-version }}
|
|
25
|
+
runs-on: ${{ matrix.platform }}
|
|
26
|
+
timeout-minutes: 30
|
|
27
|
+
permissions:
|
|
28
|
+
id-token: write # needed for codecov OIDC authentication
|
|
29
|
+
strategy:
|
|
30
|
+
fail-fast: false
|
|
31
|
+
matrix:
|
|
32
|
+
platform: [ubuntu-latest, windows-latest, macos-latest]
|
|
33
|
+
python-version: ["3.10", "3.11", "3.12", "3.13"]
|
|
34
|
+
|
|
35
|
+
steps:
|
|
36
|
+
- uses: actions/checkout@v6
|
|
37
|
+
|
|
38
|
+
- name: Setup python
|
|
39
|
+
uses: astral-sh/setup-uv@v7
|
|
40
|
+
with:
|
|
41
|
+
python-version: ${{ matrix.python-version }}
|
|
42
|
+
activate-environment: "true"
|
|
43
|
+
- name: Install Windows OpenGL
|
|
44
|
+
uses: pyvista/setup-headless-display-action@v4.3
|
|
45
|
+
with:
|
|
46
|
+
qt: true
|
|
47
|
+
wm: herbstluftwm
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
# note: if you need dependencies from conda, considering using
|
|
51
|
+
# setup-miniconda: https://github.com/conda-incubator/setup-miniconda
|
|
52
|
+
# and
|
|
53
|
+
# tox-conda: https://github.com/tox-dev/tox-conda
|
|
54
|
+
# this runs the platform-specific tests declared in tox.ini
|
|
55
|
+
- name: Test with tox
|
|
56
|
+
run: uvx --with tox-gh-actions tox
|
|
57
|
+
env:
|
|
58
|
+
PLATFORM: ${{ matrix.platform }}
|
|
59
|
+
|
|
60
|
+
- name: Coverage
|
|
61
|
+
uses: codecov/codecov-action@v6
|
|
62
|
+
with:
|
|
63
|
+
use_oidc: true # reliable tokenless codecov uploads
|
|
64
|
+
|
|
65
|
+
build-and-inspect-package:
|
|
66
|
+
name: Build & inspect package.
|
|
67
|
+
runs-on: ubuntu-latest
|
|
68
|
+
|
|
69
|
+
steps:
|
|
70
|
+
- uses: actions/checkout@v6
|
|
71
|
+
- uses: hynek/build-and-inspect-python-package@v2
|
|
72
|
+
|
|
73
|
+
deploy:
|
|
74
|
+
needs: [test, build-and-inspect-package]
|
|
75
|
+
runs-on: ubuntu-latest
|
|
76
|
+
if: contains(github.ref, 'tags')
|
|
77
|
+
permissions:
|
|
78
|
+
id-token: write
|
|
79
|
+
steps:
|
|
80
|
+
- name: Download built artifact to dist/
|
|
81
|
+
uses: actions/download-artifact@v8
|
|
82
|
+
with:
|
|
83
|
+
name: Packages
|
|
84
|
+
path: dist
|
|
85
|
+
- name: Publish to PyPI
|
|
86
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -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,17 @@
|
|
|
1
|
+
repos:
|
|
2
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
3
|
+
rev: v6.0.0
|
|
4
|
+
hooks:
|
|
5
|
+
- id: check-docstring-first
|
|
6
|
+
- id: end-of-file-fixer
|
|
7
|
+
- id: trailing-whitespace
|
|
8
|
+
- id: check-yaml # checks for correct yaml syntax for github actions ex.
|
|
9
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
10
|
+
rev: v0.14.6
|
|
11
|
+
hooks:
|
|
12
|
+
- id: ruff-check
|
|
13
|
+
- id: ruff-format
|
|
14
|
+
- repo: https://github.com/napari/napari-plugin-checks
|
|
15
|
+
rev: v0.3.0
|
|
16
|
+
hooks:
|
|
17
|
+
- id: napari-plugin-checks
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
|
|
2
|
+
The MIT License (MIT)
|
|
3
|
+
|
|
4
|
+
Copyright (c) 2026 Jesko Wagner
|
|
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,179 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: napari-colocalization
|
|
3
|
+
Version: 0.1.3
|
|
4
|
+
Summary: Colocalization analysis of multi-channel images
|
|
5
|
+
Author: Jesko Wagner
|
|
6
|
+
Author-email: 35219306+jeskowagner@users.noreply.github.com
|
|
7
|
+
License-Expression: MIT
|
|
8
|
+
Project-URL: Bug Tracker, https://github.com/jeskowagner/napari-colocalization/issues
|
|
9
|
+
Project-URL: Documentation, https://github.com/jeskowagner/napari-colocalization#README.md
|
|
10
|
+
Project-URL: Source Code, https://github.com/jeskowagner/napari-colocalization
|
|
11
|
+
Project-URL: User Support, https://github.com/jeskowagner/napari-colocalization/issues
|
|
12
|
+
Classifier: Development Status :: 2 - Pre-Alpha
|
|
13
|
+
Classifier: Framework :: napari
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Classifier: Programming Language :: Python
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
23
|
+
Classifier: Topic :: Scientific/Engineering :: Image Processing
|
|
24
|
+
Requires-Python: >=3.10
|
|
25
|
+
Description-Content-Type: text/markdown
|
|
26
|
+
License-File: LICENSE
|
|
27
|
+
Requires-Dist: numpy
|
|
28
|
+
Requires-Dist: magicgui
|
|
29
|
+
Requires-Dist: qtpy
|
|
30
|
+
Requires-Dist: scikit-image
|
|
31
|
+
Requires-Dist: scipy
|
|
32
|
+
Requires-Dist: matplotlib
|
|
33
|
+
Provides-Extra: all
|
|
34
|
+
Requires-Dist: napari[all]; extra == "all"
|
|
35
|
+
Dynamic: license-file
|
|
36
|
+
|
|
37
|
+
<p align="center">
|
|
38
|
+
<!-- TODO: replace with final logo -->
|
|
39
|
+
<img src="https://raw.githubusercontent.com/DBI-INFRA/napari-colocalization/main/docs/img/logo.png" alt="napari-colocalization logo" width="160"/>
|
|
40
|
+
</p>
|
|
41
|
+
|
|
42
|
+
# napari-colocalization
|
|
43
|
+
|
|
44
|
+
[](https://github.com/DBI-INFRA/napari-colocalization/raw/main/LICENSE)
|
|
45
|
+
[](https://pypi.org/project/napari-colocalization)
|
|
46
|
+
[](https://python.org)
|
|
47
|
+
[](https://github.com/DBI-INFRA/napari-colocalization/actions)
|
|
48
|
+
[](https://codecov.io/gh/DBI-INFRA/napari-colocalization)
|
|
49
|
+
[](https://napari-hub.org/plugins/napari-colocalization)
|
|
50
|
+
[](https://napari.org/stable/plugins/index.html)
|
|
51
|
+
|
|
52
|
+
> ⚠️ **Under construction — pre-alpha.** APIs, UI, and outputs may change
|
|
53
|
+
> without notice. Not recommended for production analysis yet; use at your
|
|
54
|
+
> own risk and please report rough edges via the
|
|
55
|
+
> [issue tracker](https://github.com/DBI-INFRA/napari-colocalization/issues).
|
|
56
|
+
|
|
57
|
+
Interactive intensity-colocalization analysis for [napari](https://napari.org).
|
|
58
|
+
Pick two channels (or one multi-channel image), optionally restrict the
|
|
59
|
+
analysis to a region drawn as shapes or labels, choose your metric, and get a
|
|
60
|
+
results table plus an intensity-vs-intensity scatter plot — all without leaving
|
|
61
|
+
napari.
|
|
62
|
+
|
|
63
|
+
<p align="center">
|
|
64
|
+
<img src="https://raw.githubusercontent.com/DBI-INFRA/napari-colocalization/main/docs/img/widget_overview.png" alt="napari-colocalization widget" width="780"/>
|
|
65
|
+
</p>
|
|
66
|
+
|
|
67
|
+
## Features
|
|
68
|
+
|
|
69
|
+
- **Three correlation metrics**: Pearson (PCC), Spearman rank (SRCC), and
|
|
70
|
+
Manders' coefficients M1/M2 (MCC).
|
|
71
|
+
- **Pairwise or all-to-all** mode: analyse two grayscale layers, or every
|
|
72
|
+
channel pair within a single multi-channel layer.
|
|
73
|
+
- **2D and 3D** support natively (no time-series for now).
|
|
74
|
+
- **Region-restricted analysis** via a Shapes or Labels layer — each non-zero
|
|
75
|
+
region is reported on its own row.
|
|
76
|
+
- **Manders thresholds**: choose **Costes auto** (iterative regression-based)
|
|
77
|
+
or **Manual**.
|
|
78
|
+
- **Interactive results**: in-widget table, scatter plot of the selected row,
|
|
79
|
+
multi-row selection that highlights all matching shapes/labels in the viewer.
|
|
80
|
+
- **CSV export** of the current table.
|
|
81
|
+
|
|
82
|
+
## Installation
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
pip install napari-colocalization
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
If napari isn't already installed, install both at once:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
pip install "napari-colocalization[all]"
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
For the latest development version:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
pip install git+https://github.com/DBI-INFRA/napari-colocalization.git
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Quick start
|
|
101
|
+
|
|
102
|
+
1. Launch napari.
|
|
103
|
+
2. Load sample data: **File → Open Sample → napari-colocalization →
|
|
104
|
+
Colocalization sample (2D)** (a 3D sample is also provided).
|
|
105
|
+
|
|
106
|
+
<p align="center">
|
|
107
|
+
<img src="https://raw.githubusercontent.com/DBI-INFRA/napari-colocalization/main/docs/img/quickstart_sample.png" alt="Open Sample menu" width="520"/>
|
|
108
|
+
</p>
|
|
109
|
+
|
|
110
|
+
3. Open the widget: **Plugins → Colocalization Analysis**. Two image layers
|
|
111
|
+
`channel_a` and `channel_b` are auto-selected for pairwise mode.
|
|
112
|
+
|
|
113
|
+
4. Click **Run**. The results table populates with a single row (the whole
|
|
114
|
+
image), and the scatter plot below shows the intensity pairs with the
|
|
115
|
+
metric values overlaid.
|
|
116
|
+
|
|
117
|
+
<p align="center">
|
|
118
|
+
<img src="https://raw.githubusercontent.com/DBI-INFRA/napari-colocalization/main/docs/img/quickstart_run.png" alt="Run result" width="780"/>
|
|
119
|
+
</p>
|
|
120
|
+
|
|
121
|
+
<p align="center">
|
|
122
|
+
<img src="https://raw.githubusercontent.com/DBI-INFRA/napari-colocalization/main/docs/img/widget_overview.png" alt="napari-colocalization widget" width="780"/>
|
|
123
|
+
</p>
|
|
124
|
+
|
|
125
|
+
5. *(Optional)* Add a Shapes layer, draw a few rectangles or polygons, set
|
|
126
|
+
**Region** to *Shapes* and pick the layer. Re-run — the table now has one
|
|
127
|
+
row per shape, and clicking a row highlights the matching shape in the
|
|
128
|
+
viewer.
|
|
129
|
+
|
|
130
|
+
<p align="center">
|
|
131
|
+
<img src="https://raw.githubusercontent.com/DBI-INFRA/napari-colocalization/main/docs/img/widget_shapes.png" alt="napari-colocalization widget" width="780"/>
|
|
132
|
+
</p>
|
|
133
|
+
|
|
134
|
+
See [docs/usage.md](docs/usage.md) for the full walkthrough.
|
|
135
|
+
|
|
136
|
+
## Documentation
|
|
137
|
+
|
|
138
|
+
- **[Usage guide](docs/usage.md)** — every control in the widget, in order.
|
|
139
|
+
- **[Metrics](docs/metrics.md)** — what PCC, SRCC and MCC mean, when to use
|
|
140
|
+
which, and how the Costes auto-threshold works.
|
|
141
|
+
- **[Python API](docs/api.md)** — calling the pure-compute layer
|
|
142
|
+
(`pearson`, `spearman`, `manders`, `costes_threshold`,
|
|
143
|
+
`analyse_pairwise`, `analyse_all_to_all`) from scripts or notebooks.
|
|
144
|
+
|
|
145
|
+
## Related projects
|
|
146
|
+
|
|
147
|
+
- [Coloc 2](https://imagej.net/plugins/coloc-2) — the reference ImageJ
|
|
148
|
+
colocalization plugin; this plugin follows it in spirit.
|
|
149
|
+
- [scikit-image colocalization metrics](https://scikit-image.org/docs/stable/auto_examples/applications/plot_colocalization_metrics.html)
|
|
150
|
+
— the underlying implementations of PCC and Manders.
|
|
151
|
+
|
|
152
|
+
## Contributing
|
|
153
|
+
|
|
154
|
+
Contributions are welcome. Run the test suite with:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
pip install -e . --group dev
|
|
158
|
+
python -m pytest tests/ -v
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Pre-commit hooks (ruff lint + format, napari-plugin-checks) ship with the
|
|
162
|
+
repo:
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
pre-commit install
|
|
166
|
+
pre-commit run --all-files
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Please keep test coverage at or above the current level when submitting a PR.
|
|
170
|
+
|
|
171
|
+
## License
|
|
172
|
+
|
|
173
|
+
Distributed under the terms of the [MIT](http://opensource.org/licenses/MIT)
|
|
174
|
+
licence; `napari-colocalization` is free and open-source software.
|
|
175
|
+
|
|
176
|
+
## Issues
|
|
177
|
+
|
|
178
|
+
Found a bug or have a feature request? Please
|
|
179
|
+
[open an issue](https://github.com/DBI-INFRA/napari-colocalization/issues).
|