slide2vec 4.5.0__tar.gz → 4.5.1__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.
- {slide2vec-4.5.0 → slide2vec-4.5.1}/PKG-INFO +3 -3
- {slide2vec-4.5.0 → slide2vec-4.5.1}/pyproject.toml +4 -4
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/__init__.py +1 -1
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/progress.py +4 -1
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec.egg-info/PKG-INFO +3 -3
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec.egg-info/requires.txt +2 -2
- {slide2vec-4.5.0 → slide2vec-4.5.1}/tests/test_progress.py +9 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/LICENSE +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/README.md +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/setup.cfg +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/__main__.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/api.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/artifacts.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/cli.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/configs/__init__.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/configs/default.yaml +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/configs/resources.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/data/__init__.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/data/dataset.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/data/tile_reader.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/data/tile_store.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/distributed/__init__.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/distributed/direct_embed_worker.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/distributed/pipeline_worker.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/encoders/__init__.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/encoders/base.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/encoders/models/__init__.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/encoders/models/conch.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/encoders/models/gigapath.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/encoders/models/hibou.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/encoders/models/hoptimus.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/encoders/models/lunit.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/encoders/models/midnight.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/encoders/models/moozy/__init__.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/encoders/models/moozy/blocks.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/encoders/models/moozy/case.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/encoders/models/moozy/loading.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/encoders/models/moozy/slide.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/encoders/models/moozy/types.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/encoders/models/musk.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/encoders/models/phikon.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/encoders/models/prism.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/encoders/models/prost40m.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/encoders/models/titan.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/encoders/models/uni.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/encoders/models/virchow.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/encoders/registry.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/encoders/validation.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/inference.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/runtime/__init__.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/runtime/artifacts_collect.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/runtime/batching.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/runtime/cpu_budget.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/runtime/distributed.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/runtime/distributed_stage.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/runtime/embedding.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/runtime/embedding_persist.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/runtime/embedding_pipeline.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/runtime/hierarchical.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/runtime/manifest.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/runtime/model_settings.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/runtime/patient_pipeline.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/runtime/persist_callbacks.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/runtime/persistence.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/runtime/process_list.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/runtime/progress_bridge.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/runtime/registry.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/runtime/serialization.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/runtime/slide_encode.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/runtime/tiling.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/runtime/tiling_pipeline.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/runtime/types.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/runtime/worker_io.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/utils/__init__.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/utils/config.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/utils/coordinates.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/utils/log_utils.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/utils/tiling_io.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec/utils/utils.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec.egg-info/SOURCES.txt +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec.egg-info/dependency_links.txt +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec.egg-info/entry_points.txt +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec.egg-info/not-zip-safe +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/slide2vec.egg-info/top_level.txt +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/tests/test_architecture_runtime_split.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/tests/test_encoder_registry.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/tests/test_hs2p_package_cutover.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/tests/test_output_consistency.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/tests/test_regression_core.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/tests/test_regression_inference.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/tests/test_regression_models.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/tests/test_runtime_batching.py +0 -0
- {slide2vec-4.5.0 → slide2vec-4.5.1}/tests/test_tile_store.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: slide2vec
|
|
3
|
-
Version: 4.5.
|
|
3
|
+
Version: 4.5.1
|
|
4
4
|
Summary: Embedding of whole slide images with Foundation Models
|
|
5
5
|
Author-email: Clément Grisi <clement.grisi@radboudumc.nl>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -15,7 +15,7 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
15
15
|
Requires-Python: >=3.10
|
|
16
16
|
Description-Content-Type: text/markdown
|
|
17
17
|
License-File: LICENSE
|
|
18
|
-
Requires-Dist: hs2p[asap,cucim,openslide,sam2,vips]>=4.0.
|
|
18
|
+
Requires-Dist: hs2p[asap,cucim,openslide,sam2,vips]>=4.0.6
|
|
19
19
|
Requires-Dist: omegaconf
|
|
20
20
|
Requires-Dist: matplotlib
|
|
21
21
|
Requires-Dist: numpy<2
|
|
@@ -65,7 +65,7 @@ Requires-Dist: numpy<2; extra == "fm"
|
|
|
65
65
|
Requires-Dist: pandas; extra == "fm"
|
|
66
66
|
Requires-Dist: pillow; extra == "fm"
|
|
67
67
|
Requires-Dist: rich; extra == "fm"
|
|
68
|
-
Requires-Dist: hs2p[asap,cucim,openslide,sam2,vips]>=4.0.
|
|
68
|
+
Requires-Dist: hs2p[asap,cucim,openslide,sam2,vips]>=4.0.6; extra == "fm"
|
|
69
69
|
Requires-Dist: wandb; extra == "fm"
|
|
70
70
|
Requires-Dist: torch<2.8,>=2.3; extra == "fm"
|
|
71
71
|
Requires-Dist: torchvision>=0.18.0; extra == "fm"
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "slide2vec"
|
|
7
|
-
version = "4.5.
|
|
7
|
+
version = "4.5.1"
|
|
8
8
|
description = "Embedding of whole slide images with Foundation Models"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -21,7 +21,7 @@ classifiers = [
|
|
|
21
21
|
"Programming Language :: Python :: 3.13",
|
|
22
22
|
]
|
|
23
23
|
dependencies = [
|
|
24
|
-
"hs2p[asap,cucim,openslide,sam2,vips]>=4.0.
|
|
24
|
+
"hs2p[asap,cucim,openslide,sam2,vips]>=4.0.6",
|
|
25
25
|
"omegaconf",
|
|
26
26
|
"matplotlib",
|
|
27
27
|
"numpy<2",
|
|
@@ -88,7 +88,7 @@ fm = [
|
|
|
88
88
|
"pandas",
|
|
89
89
|
"pillow",
|
|
90
90
|
"rich",
|
|
91
|
-
"hs2p[asap,cucim,openslide,sam2,vips]>=4.0.
|
|
91
|
+
"hs2p[asap,cucim,openslide,sam2,vips]>=4.0.6",
|
|
92
92
|
"wandb",
|
|
93
93
|
"torch>=2.3,<2.8",
|
|
94
94
|
"torchvision>=0.18.0",
|
|
@@ -164,7 +164,7 @@ no_implicit_reexport = true
|
|
|
164
164
|
max-line-length = 160
|
|
165
165
|
|
|
166
166
|
[tool.bumpver]
|
|
167
|
-
current_version = "4.5.
|
|
167
|
+
current_version = "4.5.1"
|
|
168
168
|
version_pattern = "MAJOR.MINOR.PATCH"
|
|
169
169
|
commit = false # We do version bumping in CI, not as a commit
|
|
170
170
|
tag = false # Git tag already exists — we don't auto-tag
|
|
@@ -699,7 +699,10 @@ def read_tiling_progress_snapshot(process_list_path: str | Path, *, expected_tot
|
|
|
699
699
|
path = Path(process_list_path)
|
|
700
700
|
if not path.is_file():
|
|
701
701
|
return None
|
|
702
|
-
|
|
702
|
+
try:
|
|
703
|
+
df = pd.read_csv(path)
|
|
704
|
+
except (pd.errors.EmptyDataError, pd.errors.ParserError):
|
|
705
|
+
return None
|
|
703
706
|
if "tiling_status" not in df.columns:
|
|
704
707
|
return None
|
|
705
708
|
statuses = df["tiling_status"].fillna("tbp").astype(str)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: slide2vec
|
|
3
|
-
Version: 4.5.
|
|
3
|
+
Version: 4.5.1
|
|
4
4
|
Summary: Embedding of whole slide images with Foundation Models
|
|
5
5
|
Author-email: Clément Grisi <clement.grisi@radboudumc.nl>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -15,7 +15,7 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
15
15
|
Requires-Python: >=3.10
|
|
16
16
|
Description-Content-Type: text/markdown
|
|
17
17
|
License-File: LICENSE
|
|
18
|
-
Requires-Dist: hs2p[asap,cucim,openslide,sam2,vips]>=4.0.
|
|
18
|
+
Requires-Dist: hs2p[asap,cucim,openslide,sam2,vips]>=4.0.6
|
|
19
19
|
Requires-Dist: omegaconf
|
|
20
20
|
Requires-Dist: matplotlib
|
|
21
21
|
Requires-Dist: numpy<2
|
|
@@ -65,7 +65,7 @@ Requires-Dist: numpy<2; extra == "fm"
|
|
|
65
65
|
Requires-Dist: pandas; extra == "fm"
|
|
66
66
|
Requires-Dist: pillow; extra == "fm"
|
|
67
67
|
Requires-Dist: rich; extra == "fm"
|
|
68
|
-
Requires-Dist: hs2p[asap,cucim,openslide,sam2,vips]>=4.0.
|
|
68
|
+
Requires-Dist: hs2p[asap,cucim,openslide,sam2,vips]>=4.0.6; extra == "fm"
|
|
69
69
|
Requires-Dist: wandb; extra == "fm"
|
|
70
70
|
Requires-Dist: torch<2.8,>=2.3; extra == "fm"
|
|
71
71
|
Requires-Dist: torchvision>=0.18.0; extra == "fm"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
hs2p[asap,cucim,openslide,sam2,vips]>=4.0.
|
|
1
|
+
hs2p[asap,cucim,openslide,sam2,vips]>=4.0.6
|
|
2
2
|
omegaconf
|
|
3
3
|
matplotlib
|
|
4
4
|
numpy<2
|
|
@@ -27,7 +27,7 @@ numpy<2
|
|
|
27
27
|
pandas
|
|
28
28
|
pillow
|
|
29
29
|
rich
|
|
30
|
-
hs2p[asap,cucim,openslide,sam2,vips]>=4.0.
|
|
30
|
+
hs2p[asap,cucim,openslide,sam2,vips]>=4.0.6
|
|
31
31
|
wandb
|
|
32
32
|
torch<2.8,>=2.3
|
|
33
33
|
torchvision>=0.18.0
|
|
@@ -555,6 +555,15 @@ def test_read_tiling_progress_snapshot_summarizes_process_list(tmp_path: Path):
|
|
|
555
555
|
assert snapshot.discovered_tiles == 10
|
|
556
556
|
|
|
557
557
|
|
|
558
|
+
def test_read_tiling_progress_snapshot_ignores_transient_empty_process_list(tmp_path: Path):
|
|
559
|
+
import slide2vec.progress as progress
|
|
560
|
+
|
|
561
|
+
process_list_path = tmp_path / "process_list.csv"
|
|
562
|
+
process_list_path.write_text("", encoding="utf-8")
|
|
563
|
+
|
|
564
|
+
assert progress.read_tiling_progress_snapshot(process_list_path, expected_total=3) is None
|
|
565
|
+
|
|
566
|
+
|
|
558
567
|
def test_build_direct_embed_worker_request_payload_includes_progress_events_path(tmp_path: Path):
|
|
559
568
|
import slide2vec.inference as inference
|
|
560
569
|
|
|
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
|
|
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
|
|
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
|