napari-tmidas 0.3.0__py3-none-any.whl → 0.3.2__py3-none-any.whl
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_tmidas/_version.py +2 -2
- napari_tmidas/processing_functions/__init__.py +10 -2
- napari_tmidas/processing_functions/cellpose_env_manager.py +22 -0
- napari_tmidas/processing_functions/intensity_label_filter.py +12 -4
- {napari_tmidas-0.3.0.dist-info → napari_tmidas-0.3.2.dist-info}/METADATA +16 -19
- {napari_tmidas-0.3.0.dist-info → napari_tmidas-0.3.2.dist-info}/RECORD +10 -10
- {napari_tmidas-0.3.0.dist-info → napari_tmidas-0.3.2.dist-info}/WHEEL +0 -0
- {napari_tmidas-0.3.0.dist-info → napari_tmidas-0.3.2.dist-info}/entry_points.txt +0 -0
- {napari_tmidas-0.3.0.dist-info → napari_tmidas-0.3.2.dist-info}/licenses/LICENSE +0 -0
- {napari_tmidas-0.3.0.dist-info → napari_tmidas-0.3.2.dist-info}/top_level.txt +0 -0
napari_tmidas/_version.py
CHANGED
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '0.3.
|
|
32
|
-
__version_tuple__ = version_tuple = (0, 3,
|
|
31
|
+
__version__ = version = '0.3.2'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 3, 2)
|
|
33
33
|
|
|
34
34
|
__commit_id__ = commit_id = None
|
|
@@ -41,9 +41,17 @@ def discover_and_load_processing_functions(reload: bool = False) -> List[str]:
|
|
|
41
41
|
importlib.import_module(module_fullname)
|
|
42
42
|
|
|
43
43
|
print(f"Loaded processing function module: {module_name}")
|
|
44
|
-
except ImportError as e:
|
|
44
|
+
except (ImportError, ValueError) as e:
|
|
45
45
|
# Log the error but continue with other modules
|
|
46
|
-
|
|
46
|
+
# ValueError catches NumPy binary incompatibility issues
|
|
47
|
+
error_msg = str(e)
|
|
48
|
+
if "numpy.dtype size changed" in error_msg:
|
|
49
|
+
print(
|
|
50
|
+
f"Failed to import {module_name}: NumPy binary incompatibility. "
|
|
51
|
+
"Try: pip install --force-reinstall --no-cache-dir scikit-learn-extra"
|
|
52
|
+
)
|
|
53
|
+
else:
|
|
54
|
+
print(f"Failed to import {module_name}: {e}")
|
|
47
55
|
|
|
48
56
|
# Return the list of registered functions
|
|
49
57
|
return BatchProcessingRegistry.list_functions()
|
|
@@ -67,6 +67,28 @@ class CellposeEnvironmentManager(BaseEnvironmentManager):
|
|
|
67
67
|
"Installing Cellpose 4 (Cellpose-SAM) in the dedicated environment..."
|
|
68
68
|
)
|
|
69
69
|
|
|
70
|
+
# First, install PyTorch with CUDA 12.x support for sm_120 compatibility
|
|
71
|
+
# RTX PRO 4000 Blackwell has CUDA capability sm_120, which requires newer PyTorch
|
|
72
|
+
print("Installing PyTorch with CUDA 12.x support (for sm_120 compatibility)...")
|
|
73
|
+
try:
|
|
74
|
+
subprocess.check_call(
|
|
75
|
+
[
|
|
76
|
+
env_python,
|
|
77
|
+
"-m",
|
|
78
|
+
"pip",
|
|
79
|
+
"install",
|
|
80
|
+
"torch",
|
|
81
|
+
"torchvision",
|
|
82
|
+
"torchaudio",
|
|
83
|
+
"--index-url",
|
|
84
|
+
"https://download.pytorch.org/whl/cu124",
|
|
85
|
+
]
|
|
86
|
+
)
|
|
87
|
+
print("✓ PyTorch with CUDA 12.4 installed successfully")
|
|
88
|
+
except subprocess.CalledProcessError as e:
|
|
89
|
+
print(f"✗ Failed to install PyTorch: {e}")
|
|
90
|
+
raise
|
|
91
|
+
|
|
70
92
|
# Install packages one by one with error checking
|
|
71
93
|
packages = ["cellpose", "zarr", "tifffile"]
|
|
72
94
|
for package in packages:
|
|
@@ -52,10 +52,18 @@ except (ImportError, ValueError) as e:
|
|
|
52
52
|
# ValueError: binary incompatibility (e.g., numpy version mismatch)
|
|
53
53
|
KMedoids = None
|
|
54
54
|
_HAS_KMEDOIDS = False
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
55
|
+
error_msg = str(e)
|
|
56
|
+
if "numpy.dtype size changed" in error_msg:
|
|
57
|
+
print(
|
|
58
|
+
"scikit-learn-extra has a NumPy binary incompatibility. "
|
|
59
|
+
"This is typically resolved by reinstalling scikit-learn-extra. "
|
|
60
|
+
"Run: pip install --force-reinstall --no-cache-dir scikit-learn-extra"
|
|
61
|
+
)
|
|
62
|
+
else:
|
|
63
|
+
print(
|
|
64
|
+
f"scikit-learn-extra not available ({type(e).__name__}). "
|
|
65
|
+
"Install with: pip install scikit-learn-extra"
|
|
66
|
+
)
|
|
59
67
|
|
|
60
68
|
try:
|
|
61
69
|
import pandas as pd
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: napari-tmidas
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.2
|
|
4
4
|
Summary: A plugin for batch processing of confocal and whole-slide microscopy images of biological tissues
|
|
5
5
|
Author: Marco Meer
|
|
6
6
|
Author-email: marco.meer@pm.me
|
|
@@ -151,11 +151,11 @@ Then find napari-tmidas in the **Plugins** menu. [Watch video tutorials →](htt
|
|
|
151
151
|
|
|
152
152
|
### Core Workflows
|
|
153
153
|
|
|
154
|
-
- **[
|
|
154
|
+
- **[File Conversion](docs/file_conversion.md)** - Multi-format microscopy file conversion (LIF, ND2, CZI, NDPI, Acquifer)
|
|
155
155
|
- **[Batch Processing](docs/basic_processing.md)** - Label operations, filters, channel splitting
|
|
156
156
|
- **[Quality Control](docs/grid_view_overlay.md)** - Visual QC with grid overlay
|
|
157
157
|
- **[Quantification](docs/regionprops_analysis.md)** - Extract measurements from labels
|
|
158
|
-
- **[Colocalization](docs/advanced_processing.md#colocalization)** - Multi-channel ROI analysis
|
|
158
|
+
- **[Colocalization](docs/advanced_processing.md#colocalization-analysis)** - Multi-channel ROI analysis
|
|
159
159
|
|
|
160
160
|
### Advanced Features
|
|
161
161
|
|
|
@@ -163,28 +163,25 @@ Then find napari-tmidas in the **Plugins** menu. [Watch video tutorials →](htt
|
|
|
163
163
|
- [Advanced Filters](docs/advanced_processing.md) - SciPy/scikit-image filters
|
|
164
164
|
- [Batch Label Inspection](docs/basic_processing.md#label-inspection) - Manual correction workflow
|
|
165
165
|
|
|
166
|
-
## 💻 Installation
|
|
166
|
+
## 💻 Installation
|
|
167
167
|
|
|
168
|
-
|
|
169
|
-
```bash
|
|
170
|
-
pip install git+https://github.com/MercaderLabAnatomy/napari-tmidas.git
|
|
171
|
-
```
|
|
168
|
+
### Step 1: Install napari
|
|
172
169
|
|
|
173
|
-
**Stable release:**
|
|
174
170
|
```bash
|
|
175
|
-
|
|
171
|
+
mamba create -y -n napari-tmidas -c conda-forge python=3.11
|
|
172
|
+
mamba activate napari-tmidas
|
|
173
|
+
python -m pip install "napari[all]"
|
|
176
174
|
```
|
|
177
175
|
|
|
178
|
-
|
|
179
|
-
```bash
|
|
180
|
-
pip install 'napari-tmidas[deep-learning]' # Includes SAM2
|
|
181
|
-
pip install 'napari-tmidas[all]' # Everything
|
|
182
|
-
```
|
|
176
|
+
### Step 2: Install napari-tmidas
|
|
183
177
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
178
|
+
| Your Needs | Command |
|
|
179
|
+
|----------|---------|
|
|
180
|
+
| **Just process & convert images** | `pip install napari-tmidas` |
|
|
181
|
+
| **Need AI features** (SAM2, Cellpose, Spotiflow, etc.) | `pip install 'napari-tmidas[deep-learning]'` |
|
|
182
|
+
| **Want the latest dev features** | `pip install git+https://github.com/MercaderLabAnatomy/napari-tmidas.git` |
|
|
183
|
+
|
|
184
|
+
**Recommended for most users:** `pip install 'napari-tmidas[deep-learning]'`
|
|
188
185
|
|
|
189
186
|
## 🖼️ Screenshots
|
|
190
187
|
|
|
@@ -10,7 +10,7 @@ napari_tmidas/_registry.py,sha256=yunbEoDe1JZREMab4BeP7wka17IwK1toV5g1imju30c,21
|
|
|
10
10
|
napari_tmidas/_roi_colocalization.py,sha256=0ZSs7JlJKPhGibnETf6Rj746T3YV4AUgynWmZbmNjHw,92257
|
|
11
11
|
napari_tmidas/_sample_data.py,sha256=khuv1jemz_fCjqNwEKMFf83Ju0EN4S89IKydsUMmUxw,645
|
|
12
12
|
napari_tmidas/_ui_utils.py,sha256=wBmaR-3wdgizb234atsjUU2DElsM5-tf4TIsxGLaHzI,1499
|
|
13
|
-
napari_tmidas/_version.py,sha256=
|
|
13
|
+
napari_tmidas/_version.py,sha256=e8NqPtZ8fggRgk3GPrqZ_U_BDV8aSULw1u_Gn9NNbnk,704
|
|
14
14
|
napari_tmidas/_widget.py,sha256=Uab5WuJK2fgdlGga6iNnHsiZjRMUq2KM3u0N5JJW8DA,5495
|
|
15
15
|
napari_tmidas/_writer.py,sha256=wbVfHFjjHdybSg37VR4lVmL-kdCkDZsUPDJ66AVLaFQ,1941
|
|
16
16
|
napari_tmidas/napari.yaml,sha256=1Am1dA0-ZtCXk6veIT6jrMz3zwQ7dF8_p9tZTFx_vTg,2641
|
|
@@ -37,16 +37,16 @@ napari_tmidas/_tests/test_viscy_virtual_staining.py,sha256=iy7YnM65lQhn01UqEMsF6
|
|
|
37
37
|
napari_tmidas/_tests/test_widget.py,sha256=0qKDzyfqGnKKY6smqYiruZEWBQjW5fU98ZHeSE5Ei2Q,3263
|
|
38
38
|
napari_tmidas/_tests/test_windows_basic.py,sha256=nELpwQErf5m1mStIns5jZ4l5BD-_J9XG8IP_CrhSGWw,2311
|
|
39
39
|
napari_tmidas/_tests/test_writer.py,sha256=4_MlZM9a5So74J16_4tIOJc6pwTOw9R0-oAE_YioIx4,122
|
|
40
|
-
napari_tmidas/processing_functions/__init__.py,sha256=
|
|
40
|
+
napari_tmidas/processing_functions/__init__.py,sha256=wX0zNxzvlUVxfBUbgZmQ-6sNy88UntlwNT8RRIevHC8,2767
|
|
41
41
|
napari_tmidas/processing_functions/basic.py,sha256=3kA7GwCJDkkPyIRMZL5hFDSbz-8jjehMlWsQtjdOlro,44500
|
|
42
42
|
napari_tmidas/processing_functions/careamics_denoising.py,sha256=DFE_6lefeqckAvx-1EqwzJSU3iR3g3ujBGRnF_fnpoM,11638
|
|
43
43
|
napari_tmidas/processing_functions/careamics_env_manager.py,sha256=ca3e4a8s5mMZdgbYLtk21sXDyhIAulgvH1x5k__wDjw,10342
|
|
44
|
-
napari_tmidas/processing_functions/cellpose_env_manager.py,sha256=
|
|
44
|
+
napari_tmidas/processing_functions/cellpose_env_manager.py,sha256=vaS3JNMbPu8re68eWgCxs3Hcy1CsrUL7pWgoUtGfIl0,17585
|
|
45
45
|
napari_tmidas/processing_functions/cellpose_segmentation.py,sha256=qChVwyvGL5nqXjeS0pD0XOxgkyojdiHVXghvdMzdpWI,12280
|
|
46
46
|
napari_tmidas/processing_functions/colocalization.py,sha256=_QZu1rI_Mt4lnME0YhaAg0RP9Wjof0smpbJoqXoGXR8,25518
|
|
47
47
|
napari_tmidas/processing_functions/file_compression.py,sha256=mxR-yqBdc-T1XI3StIXpW8h5xGdCOtLQjt8uoRFpDSY,6859
|
|
48
48
|
napari_tmidas/processing_functions/grid_view_overlay.py,sha256=pZ-5CsHx2tvvW_3QCz5d1-UpleHPES9pj40ZhAf4rrQ,22991
|
|
49
|
-
napari_tmidas/processing_functions/intensity_label_filter.py,sha256=
|
|
49
|
+
napari_tmidas/processing_functions/intensity_label_filter.py,sha256=w2vfSIBa4fZSkL5eM2mSqljJYXguV4zyPQUV--6P_Dw,14240
|
|
50
50
|
napari_tmidas/processing_functions/regionprops_analysis.py,sha256=ySmzlY_F8uXWQIoSXJFge30jkWFg6G8HhjDVbk4v2rU,45828
|
|
51
51
|
napari_tmidas/processing_functions/sam2_env_manager.py,sha256=w-X493XdHWAE8UhyHhEEVJ3uvLi2VdS-UFU7yPqnagg,2569
|
|
52
52
|
napari_tmidas/processing_functions/sam2_mp4.py,sha256=lEdrqQP36_kw2g3soyu81CCRXCkI5DdSExfq5Bc5kig,11523
|
|
@@ -58,9 +58,9 @@ napari_tmidas/processing_functions/timepoint_merger.py,sha256=7pXyfcI2rXZz6_TP3v
|
|
|
58
58
|
napari_tmidas/processing_functions/trackastra_tracking.py,sha256=IkFk5HoEZmKdcu5jXri4WMhHN1KTADDMxSpeYfPgSbo,9976
|
|
59
59
|
napari_tmidas/processing_functions/viscy_env_manager.py,sha256=eJ9NsyrtypvxRAFVir9n9RtKaaj6GTpIrOFNLScoVDY,11999
|
|
60
60
|
napari_tmidas/processing_functions/viscy_virtual_staining.py,sha256=Aa__YweYzSFYUTkbneDZ2lxRBplozrQvXGSiMFzUhA4,12422
|
|
61
|
-
napari_tmidas-0.3.
|
|
62
|
-
napari_tmidas-0.3.
|
|
63
|
-
napari_tmidas-0.3.
|
|
64
|
-
napari_tmidas-0.3.
|
|
65
|
-
napari_tmidas-0.3.
|
|
66
|
-
napari_tmidas-0.3.
|
|
61
|
+
napari_tmidas-0.3.2.dist-info/licenses/LICENSE,sha256=tSjiOqj57exmEIfP2YVPCEeQf0cH49S6HheQR8IiY3g,1485
|
|
62
|
+
napari_tmidas-0.3.2.dist-info/METADATA,sha256=U2HAVkl-IhVxK4hiR5aNVUCurUJ1ASKxKWhd2d60Ebc,10348
|
|
63
|
+
napari_tmidas-0.3.2.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
64
|
+
napari_tmidas-0.3.2.dist-info/entry_points.txt,sha256=fbVjzbJTm4aDMIBtel1Lyqvq-CwXY7wmCOo_zJ-jtRY,60
|
|
65
|
+
napari_tmidas-0.3.2.dist-info/top_level.txt,sha256=63ybdxCZ4SeT13f_Ou4TsivGV_2Gtm_pJOXToAt30_E,14
|
|
66
|
+
napari_tmidas-0.3.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|