cellfinder 1.4.0a0__tar.gz → 1.5.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.
Potentially problematic release.
This version of cellfinder might be problematic. Click here for more details.
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/.github/workflows/test_and_deploy.yml +29 -5
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/PKG-INFO +4 -3
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/classify/classify.py +2 -1
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/detect/filters/volume/ball_filter.py +4 -5
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/napari/curation.py +2 -2
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/napari/detect/detect.py +1 -1
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder.egg-info/PKG-INFO +4 -3
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder.egg-info/requires.txt +2 -1
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/pyproject.toml +2 -1
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/.github/workflows/test_include_guard.yaml +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/.gitignore +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/.napari/config.yml +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/CITATION.cff +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/LICENSE +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/MANIFEST.in +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/README.md +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/__init__.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/cli_migration_warning.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/__init__.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/classify/__init__.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/classify/augment.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/classify/cube_generator.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/classify/resnet.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/classify/tools.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/config/__init__.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/config/cellfinder.conf +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/detect/__init__.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/detect/detect.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/detect/filters/__init__.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/detect/filters/plane/__init__.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/detect/filters/plane/classical_filter.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/detect/filters/plane/plane_filter.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/detect/filters/plane/tile_walker.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/detect/filters/setup_filters.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/detect/filters/volume/__init__.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/detect/filters/volume/structure_detection.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/detect/filters/volume/structure_splitting.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/detect/filters/volume/volume_filter.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/download/__init__.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/download/cli.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/download/download.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/main.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/tools/IO.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/tools/__init__.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/tools/array_operations.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/tools/geometry.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/tools/image_processing.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/tools/prep.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/tools/source_files.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/tools/system.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/tools/threading.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/tools/tiff.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/tools/tools.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/train/__init__.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/train/train_yml.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/types.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/napari/__init__.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/napari/detect/__init__.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/napari/detect/detect_containers.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/napari/detect/thread_worker.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/napari/input_container.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/napari/napari.yaml +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/napari/sample_data.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/napari/train/__init__.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/napari/train/train.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/napari/train/train_containers.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/napari/utils.py +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder.egg-info/SOURCES.txt +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder.egg-info/dependency_links.txt +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder.egg-info/entry_points.txt +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder.egg-info/top_level.txt +0 -0
- {cellfinder-1.4.0a0 → cellfinder-1.5.0}/setup.cfg +0 -0
|
@@ -78,7 +78,7 @@ jobs:
|
|
|
78
78
|
- name: Setup qtpy libraries
|
|
79
79
|
uses: tlambert03/setup-qt-libs@v1
|
|
80
80
|
# Setup VTK with headless display
|
|
81
|
-
- uses: pyvista/setup-headless-display-action@
|
|
81
|
+
- uses: pyvista/setup-headless-display-action@v3
|
|
82
82
|
# Run all tests
|
|
83
83
|
- uses: neuroinformatics-unit/actions/test@v2
|
|
84
84
|
with:
|
|
@@ -86,6 +86,15 @@ jobs:
|
|
|
86
86
|
secret-codecov-token: ${{ secrets.CODECOV_TOKEN }}
|
|
87
87
|
use-xvfb: true
|
|
88
88
|
|
|
89
|
+
- name: Notify slack on scheduled failure
|
|
90
|
+
if: failure() && github.event_name == 'schedule'
|
|
91
|
+
uses: ravsamhq/notify-slack-action@v2
|
|
92
|
+
with:
|
|
93
|
+
status: ${{ job.status }} # required
|
|
94
|
+
notify_when: 'failure'
|
|
95
|
+
env:
|
|
96
|
+
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_NOTIFYBOT_WEBHOOK_URL }} # required
|
|
97
|
+
|
|
89
98
|
test_numba_disabled:
|
|
90
99
|
needs: [linting, manifest]
|
|
91
100
|
name: Run tests with numba disabled
|
|
@@ -117,7 +126,7 @@ jobs:
|
|
|
117
126
|
- name: Setup qtpy libraries
|
|
118
127
|
uses: tlambert03/setup-qt-libs@v1
|
|
119
128
|
# Setup VTK with headless display
|
|
120
|
-
- uses: pyvista/setup-headless-display-action@
|
|
129
|
+
- uses: pyvista/setup-headless-display-action@v3
|
|
121
130
|
# Run test suite with numba disabled
|
|
122
131
|
- uses: neuroinformatics-unit/actions/test@v2
|
|
123
132
|
with:
|
|
@@ -125,6 +134,15 @@ jobs:
|
|
|
125
134
|
secret-codecov-token: ${{ secrets.CODECOV_TOKEN }}
|
|
126
135
|
codecov-flags: "numba"
|
|
127
136
|
|
|
137
|
+
- name: Notify slack on scheduled failure
|
|
138
|
+
if: failure() && github.event_name == 'schedule'
|
|
139
|
+
uses: ravsamhq/notify-slack-action@v2
|
|
140
|
+
with:
|
|
141
|
+
status: ${{ job.status }} # required
|
|
142
|
+
notify_when: 'failure'
|
|
143
|
+
env:
|
|
144
|
+
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_NOTIFYBOT_WEBHOOK_URL }} # required
|
|
145
|
+
|
|
128
146
|
# Run brainglobe-workflows brainmapper-CLI tests to check for
|
|
129
147
|
# breakages
|
|
130
148
|
test_brainmapper_cli:
|
|
@@ -166,8 +184,9 @@ jobs:
|
|
|
166
184
|
run: |
|
|
167
185
|
python -m pytest --color=yes -v tests/brainmapper
|
|
168
186
|
|
|
187
|
+
|
|
169
188
|
build_sdist_wheel:
|
|
170
|
-
name: Build source distribution
|
|
189
|
+
name: Build source distribution
|
|
171
190
|
needs: [test, test_numba_disabled]
|
|
172
191
|
if: github.event_name == 'push' && github.ref_type == 'tag'
|
|
173
192
|
runs-on: ubuntu-latest
|
|
@@ -180,6 +199,11 @@ jobs:
|
|
|
180
199
|
if: github.event_name == 'push' && github.ref_type == 'tag'
|
|
181
200
|
runs-on: ubuntu-latest
|
|
182
201
|
steps:
|
|
183
|
-
- uses:
|
|
202
|
+
- uses: actions/download-artifact@v4
|
|
203
|
+
with:
|
|
204
|
+
name: artifact
|
|
205
|
+
path: dist
|
|
206
|
+
- uses: pypa/gh-action-pypi-publish@release/v1
|
|
184
207
|
with:
|
|
185
|
-
|
|
208
|
+
user: __token__
|
|
209
|
+
password: ${{ secrets.TWINE_API_KEY }}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
2
|
Name: cellfinder
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.5.0
|
|
4
4
|
Summary: Automated 3D cell detection in large microscopy images
|
|
5
5
|
Author-email: "Adam Tyson, Christian Niedworok, Charly Rousseau" <code@adamltyson.com>
|
|
6
6
|
License: BSD-3-Clause
|
|
@@ -32,7 +32,7 @@ Requires-Dist: numba
|
|
|
32
32
|
Requires-Dist: numpy
|
|
33
33
|
Requires-Dist: scikit-image
|
|
34
34
|
Requires-Dist: scikit-learn
|
|
35
|
-
Requires-Dist: keras
|
|
35
|
+
Requires-Dist: keras>=3.7.0
|
|
36
36
|
Requires-Dist: torch!=2.4,>=2.1.0
|
|
37
37
|
Requires-Dist: tifffile
|
|
38
38
|
Requires-Dist: tqdm
|
|
@@ -47,6 +47,7 @@ Requires-Dist: pytest-timeout; extra == "dev"
|
|
|
47
47
|
Requires-Dist: pytest; extra == "dev"
|
|
48
48
|
Requires-Dist: tox; extra == "dev"
|
|
49
49
|
Requires-Dist: pooch>=1; extra == "dev"
|
|
50
|
+
Requires-Dist: qt-niu; extra == "dev"
|
|
50
51
|
Provides-Extra: napari
|
|
51
52
|
Requires-Dist: brainglobe-napari-io; extra == "napari"
|
|
52
53
|
Requires-Dist: magicgui; extra == "napari"
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import os
|
|
2
2
|
from datetime import datetime
|
|
3
|
+
from pathlib import Path
|
|
3
4
|
from typing import Any, Callable, Dict, List, Optional, Tuple
|
|
4
5
|
|
|
5
6
|
import keras
|
|
@@ -68,7 +69,7 @@ def main(
|
|
|
68
69
|
workers=workers,
|
|
69
70
|
)
|
|
70
71
|
|
|
71
|
-
if trained_model and trained_model.suffix == ".h5":
|
|
72
|
+
if trained_model and Path(trained_model).suffix == ".h5":
|
|
72
73
|
print(
|
|
73
74
|
"Weights provided in place of the model, "
|
|
74
75
|
"loading weights into default model."
|
{cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/detect/filters/volume/ball_filter.py
RENAMED
|
@@ -266,22 +266,21 @@ class BallFilter:
|
|
|
266
266
|
"""
|
|
267
267
|
if self.volume.shape[0]:
|
|
268
268
|
if self.volume.shape[0] < self.kernel_z_size:
|
|
269
|
-
num_remaining_with_padding = 0
|
|
269
|
+
num_remaining_with_padding = self.volume.shape[0]
|
|
270
270
|
else:
|
|
271
271
|
num_remaining = self.kernel_z_size - (self.middle_z_idx + 1)
|
|
272
272
|
num_remaining_with_padding = num_remaining + self.middle_z_idx
|
|
273
|
+
remaining_start = self.volume.shape[0] - num_remaining_with_padding
|
|
273
274
|
|
|
274
275
|
self.volume = torch.cat(
|
|
275
|
-
[self.volume[
|
|
276
|
+
[self.volume[remaining_start:, :, :], planes],
|
|
276
277
|
dim=0,
|
|
277
278
|
)
|
|
278
279
|
|
|
279
280
|
if self.inside_brain_tiles is not None:
|
|
280
281
|
self.inside_brain_tiles = torch.cat(
|
|
281
282
|
[
|
|
282
|
-
self.inside_brain_tiles[
|
|
283
|
-
-num_remaining_with_padding:, :, :
|
|
284
|
-
],
|
|
283
|
+
self.inside_brain_tiles[remaining_start:, :, :],
|
|
285
284
|
masks,
|
|
286
285
|
],
|
|
287
286
|
dim=0,
|
|
@@ -8,11 +8,11 @@ from brainglobe_napari_io.cellfinder.utils import convert_layer_to_cells
|
|
|
8
8
|
from brainglobe_utils.cells.cells import Cell
|
|
9
9
|
from brainglobe_utils.general.system import delete_directory_contents
|
|
10
10
|
from brainglobe_utils.IO.yaml import save_yaml
|
|
11
|
-
from brainglobe_utils.qtpy.dialog import display_warning
|
|
12
|
-
from brainglobe_utils.qtpy.interaction import add_button, add_combobox
|
|
13
11
|
from magicgui.widgets import ProgressBar
|
|
14
12
|
from napari.qt.threading import thread_worker
|
|
15
13
|
from napari.utils.notifications import show_info
|
|
14
|
+
from qt_niu.dialog import display_warning
|
|
15
|
+
from qt_niu.interaction import add_button, add_combobox
|
|
16
16
|
from qtpy import QtCore
|
|
17
17
|
from qtpy.QtWidgets import (
|
|
18
18
|
QComboBox,
|
|
@@ -38,7 +38,7 @@ MIN_PLANES_ANALYSE = 0
|
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
def get_heavy_widgets(
|
|
41
|
-
options: Dict[str, Any]
|
|
41
|
+
options: Dict[str, Any],
|
|
42
42
|
) -> Tuple[Callable, Callable, Callable]:
|
|
43
43
|
# signal and other input are separated out from the main magicgui
|
|
44
44
|
# parameter selections and are inserted as widget children in their own
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
2
|
Name: cellfinder
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.5.0
|
|
4
4
|
Summary: Automated 3D cell detection in large microscopy images
|
|
5
5
|
Author-email: "Adam Tyson, Christian Niedworok, Charly Rousseau" <code@adamltyson.com>
|
|
6
6
|
License: BSD-3-Clause
|
|
@@ -32,7 +32,7 @@ Requires-Dist: numba
|
|
|
32
32
|
Requires-Dist: numpy
|
|
33
33
|
Requires-Dist: scikit-image
|
|
34
34
|
Requires-Dist: scikit-learn
|
|
35
|
-
Requires-Dist: keras
|
|
35
|
+
Requires-Dist: keras>=3.7.0
|
|
36
36
|
Requires-Dist: torch!=2.4,>=2.1.0
|
|
37
37
|
Requires-Dist: tifffile
|
|
38
38
|
Requires-Dist: tqdm
|
|
@@ -47,6 +47,7 @@ Requires-Dist: pytest-timeout; extra == "dev"
|
|
|
47
47
|
Requires-Dist: pytest; extra == "dev"
|
|
48
48
|
Requires-Dist: tox; extra == "dev"
|
|
49
49
|
Requires-Dist: pooch>=1; extra == "dev"
|
|
50
|
+
Requires-Dist: qt-niu; extra == "dev"
|
|
50
51
|
Provides-Extra: napari
|
|
51
52
|
Requires-Dist: brainglobe-napari-io; extra == "napari"
|
|
52
53
|
Requires-Dist: magicgui; extra == "napari"
|
|
@@ -30,7 +30,7 @@ dependencies = [
|
|
|
30
30
|
"numpy",
|
|
31
31
|
"scikit-image",
|
|
32
32
|
"scikit-learn",
|
|
33
|
-
"keras
|
|
33
|
+
"keras>=3.7.0",
|
|
34
34
|
"torch>=2.1.0,!=2.4",
|
|
35
35
|
"tifffile",
|
|
36
36
|
"tqdm",
|
|
@@ -52,6 +52,7 @@ dev = [
|
|
|
52
52
|
"pytest",
|
|
53
53
|
"tox",
|
|
54
54
|
"pooch >= 1",
|
|
55
|
+
"qt-niu"
|
|
55
56
|
]
|
|
56
57
|
napari = [
|
|
57
58
|
"brainglobe-napari-io",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/detect/filters/plane/classical_filter.py
RENAMED
|
File without changes
|
{cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/detect/filters/plane/plane_filter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/detect/filters/volume/structure_detection.py
RENAMED
|
File without changes
|
{cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/detect/filters/volume/structure_splitting.py
RENAMED
|
File without changes
|
{cellfinder-1.4.0a0 → cellfinder-1.5.0}/cellfinder/core/detect/filters/volume/volume_filter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|