slide2vec 7.0.0__tar.gz → 7.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.
- {slide2vec-7.0.0 → slide2vec-7.1.0}/PKG-INFO +12 -7
- {slide2vec-7.0.0 → slide2vec-7.1.0}/README.md +9 -4
- {slide2vec-7.0.0 → slide2vec-7.1.0}/pyproject.toml +4 -4
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/__init__.py +9 -1
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/api.py +154 -228
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/configs/default.yaml +4 -3
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/__init__.py +5 -5
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/base.py +89 -35
- slide2vec-7.1.0/slide2vec/encoders/models/__init__.py +24 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/conch.py +2 -4
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/dinov2.py +1 -2
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/genbio.py +1 -2
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/gigapath.py +28 -16
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/gpfm.py +1 -2
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/hibou.py +2 -4
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/hoptimus.py +2 -4
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/lunit.py +1 -2
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/midnight.py +1 -2
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/moozy/__init__.py +2 -4
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/mstar.py +1 -2
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/phikon.py +2 -4
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/prism.py +1 -2
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/prost40m.py +1 -2
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/titan.py +1 -2
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/uni.py +2 -4
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/waiv.py +2 -4
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/registry.py +77 -6
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/inference.py +2 -2
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/cpu_budget.py +1 -1
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/embedding.py +1 -1
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/embedding_persist.py +3 -3
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/embedding_pipeline.py +3 -3
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/feature_identity.py +5 -3
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/hierarchical.py +3 -3
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/patient_pipeline.py +4 -3
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/process_list.py +3 -3
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/serialization.py +41 -23
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/slide_encode.py +15 -5
- slide2vec-7.1.0/slide2vec/runtime/tiling.py +78 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/tiling_pipeline.py +16 -52
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec.egg-info/PKG-INFO +12 -7
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec.egg-info/SOURCES.txt +1 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec.egg-info/requires.txt +2 -2
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_benchmark_tooling.py +14 -14
- slide2vec-7.1.0/tests/test_drop_in_encoders.py +374 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_encoder_capabilities.py +1 -2
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_encoder_input_contract.py +4 -12
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_encoder_plugins.py +1 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_encoder_preprocessing.py +16 -15
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_feature_identity.py +7 -11
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_gigapath.py +60 -3
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_hierarchical_encoding.py +4 -6
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_hs2p5_integration.py +52 -63
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_on_slide_persisted.py +2 -1
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_output_consistency.py +0 -1
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_patient_annotation_sampling.py +17 -11
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_patient_tiling_only.py +4 -17
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_pooled_encoder_input.py +2 -8
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_pooled_geometry.py +2 -6
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_pooled_identity_api.py +7 -7
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_progress.py +2 -1
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_regression_core.py +174 -484
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_regression_inference.py +59 -256
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_regression_models.py +13 -50
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_slide_coordinate_preparation.py +12 -48
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_slide_latents.py +6 -5
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_soma_migration.py +1 -5
- slide2vec-7.1.0/tests/test_tiling_pipeline.py +38 -0
- slide2vec-7.0.0/slide2vec/encoders/models/__init__.py +0 -58
- slide2vec-7.0.0/slide2vec/runtime/tiling.py +0 -119
- slide2vec-7.0.0/tests/test_tiling_pipeline.py +0 -25
- {slide2vec-7.0.0 → slide2vec-7.1.0}/LICENSE +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/setup.cfg +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/__main__.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/_cufile.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/artifacts.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/cli.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/configs/__init__.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/configs/resources.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/cufile.json +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/data/__init__.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/data/dataset.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/data/tile_reader.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/data/tile_store.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/distributed/__init__.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/distributed/dense_image_worker.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/distributed/dense_worker.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/distributed/direct_embed_worker.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/distributed/image_worker.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/distributed/pin_gpu.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/distributed/pipeline_worker.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/distributed/worker_entry.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/dinov3.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/isight.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/mettle.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/moozy/blocks.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/moozy/case.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/moozy/loading.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/moozy/slide.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/moozy/types.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/musk.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/prism2.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/rudolfv2.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/virchow.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/validation.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/progress.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/__init__.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/artifacts_collect.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/batching.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/dense_encode.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/dense_encoder_input.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/dense_image_reading.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/dense_image_recipe.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/dense_image_shard.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/dense_image_stage.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/dense_regions.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/dense_shard.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/dense_sliding.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/dense_stage.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/distributed.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/distributed_stage.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/effective_encoder_input.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/encoder_input_contract.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/image_shard.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/image_specs.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/image_stage.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/manifest.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/model_settings.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/persist_callbacks.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/persistence.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/pooled_encoder_input.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/preprocessing.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/progress_bridge.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/registry.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/sharding.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/types.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/worker_io.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/utils/__init__.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/utils/config.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/utils/coordinates.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/utils/log_utils.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/utils/tiling_io.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/utils/utils.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec.egg-info/dependency_links.txt +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec.egg-info/entry_points.txt +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec.egg-info/not-zip-safe +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec.egg-info/top_level.txt +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_attention_extraction.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_cli_noninteractive.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_cufile_compat_mode.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_dense_encode_kit.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_dense_encoder_input.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_dense_extraction.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_dense_image_reading.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_dense_image_resume.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_dense_image_shard.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_dense_image_stage.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_dense_regions.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_dense_shard.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_dense_sliding.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_dense_source_spacing.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_dense_stage.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_dense_worker.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_dinov2_natimage.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_dinov3_natimage.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_encoder_provider_failures.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_encoder_registry.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_gpfm_genbio_heavy.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_hs2p_package_cutover.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_image_shard.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_image_stage.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_inference_benchmark.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_isight.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_load_model_hf_auth.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_mascaret.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_mettle.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_patch_size_metadata.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_patient_manifest.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_phaet.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_prism.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_prism2.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_process_list_performance.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_rudolfv2.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_runtime_batching.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_sharding.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_tile_store.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_titan.py +0 -0
- {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_worker_gpu_pinning.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: slide2vec
|
|
3
|
-
Version: 7.
|
|
3
|
+
Version: 7.1.0
|
|
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,tifffile,vips]>=6.
|
|
18
|
+
Requires-Dist: hs2p[asap,cucim,openslide,sam2,tifffile,vips]>=6.1.0
|
|
19
19
|
Requires-Dist: omegaconf
|
|
20
20
|
Requires-Dist: matplotlib
|
|
21
21
|
Requires-Dist: numpy<2
|
|
@@ -75,7 +75,7 @@ Requires-Dist: numpy<2; extra == "fm"
|
|
|
75
75
|
Requires-Dist: pandas; extra == "fm"
|
|
76
76
|
Requires-Dist: pillow; extra == "fm"
|
|
77
77
|
Requires-Dist: rich; extra == "fm"
|
|
78
|
-
Requires-Dist: hs2p[asap,cucim,openslide,sam2,tifffile,vips]>=6.
|
|
78
|
+
Requires-Dist: hs2p[asap,cucim,openslide,sam2,tifffile,vips]>=6.1.0; extra == "fm"
|
|
79
79
|
Requires-Dist: wandb; extra == "fm"
|
|
80
80
|
Requires-Dist: torch<2.8,>=2.3; extra == "fm"
|
|
81
81
|
Requires-Dist: torchvision>=0.18.0; extra == "fm"
|
|
@@ -136,17 +136,22 @@ For gated models such as Virchow2, request access on the model's Hugging Face pa
|
|
|
136
136
|
## Embed a slide
|
|
137
137
|
|
|
138
138
|
```python
|
|
139
|
+
from hs2p import TilingConfig
|
|
139
140
|
from slide2vec import Model, PreprocessingConfig
|
|
140
141
|
|
|
141
142
|
model = Model.from_preset("virchow2")
|
|
142
|
-
preprocessing = PreprocessingConfig(
|
|
143
|
+
preprocessing = PreprocessingConfig(
|
|
144
|
+
tiling=TilingConfig(
|
|
145
|
+
requested_spacing_um=0.5, requested_tile_size_px=224, tolerance=0.05, overlap=0.0
|
|
146
|
+
),
|
|
147
|
+
)
|
|
143
148
|
embedded = model.embed_slide("/path/to/slide.svs", preprocessing=preprocessing)
|
|
144
149
|
|
|
145
150
|
tile_embeddings = embedded.tile_embeddings # (N, 2560)
|
|
146
151
|
x, y = embedded.x, embedded.y # level-0 tile coordinates
|
|
147
152
|
```
|
|
148
153
|
|
|
149
|
-
|
|
154
|
+
`tiling` is an hs2p `TilingConfig`. Leave it unset to take spacing and tile size from the preset; Virchow2 supports several scales, so it needs an explicit one. The preset also supplies precision. Use `list_models()` to list presets, or filter with `list_models("tile")`, `list_models("slide")`, or `list_models("patient")`.
|
|
150
155
|
|
|
151
156
|
See [getting started](https://clemsgrs.github.io/slide2vec/getting-started.html) for preprocessing and execution settings, and the [API guide](https://clemsgrs.github.io/slide2vec/api.html) for patient embeddings, image inputs, and dense grids.
|
|
152
157
|
|
|
@@ -163,11 +168,11 @@ slide-2,/data/slide-2.svs
|
|
|
163
168
|
Optional `mask_path` and `spacing_at_level_0` columns supply a mask or correct missing or incorrect level-0 spacing. Patient-level models also require `patient_id`; see the [manifest schema](https://clemsgrs.github.io/slide2vec/manifest.html).
|
|
164
169
|
|
|
165
170
|
```python
|
|
166
|
-
from slide2vec import ExecutionOptions, Model, Pipeline
|
|
171
|
+
from slide2vec import ExecutionOptions, Model, Pipeline
|
|
167
172
|
|
|
168
173
|
pipeline = Pipeline(
|
|
169
174
|
model=Model.from_preset("virchow2"),
|
|
170
|
-
preprocessing=
|
|
175
|
+
preprocessing=preprocessing, # from the example above
|
|
171
176
|
execution=ExecutionOptions(output_dir="outputs/run"),
|
|
172
177
|
)
|
|
173
178
|
result = pipeline.run(manifest_path="/path/to/slides.csv")
|
|
@@ -20,17 +20,22 @@ For gated models such as Virchow2, request access on the model's Hugging Face pa
|
|
|
20
20
|
## Embed a slide
|
|
21
21
|
|
|
22
22
|
```python
|
|
23
|
+
from hs2p import TilingConfig
|
|
23
24
|
from slide2vec import Model, PreprocessingConfig
|
|
24
25
|
|
|
25
26
|
model = Model.from_preset("virchow2")
|
|
26
|
-
preprocessing = PreprocessingConfig(
|
|
27
|
+
preprocessing = PreprocessingConfig(
|
|
28
|
+
tiling=TilingConfig(
|
|
29
|
+
requested_spacing_um=0.5, requested_tile_size_px=224, tolerance=0.05, overlap=0.0
|
|
30
|
+
),
|
|
31
|
+
)
|
|
27
32
|
embedded = model.embed_slide("/path/to/slide.svs", preprocessing=preprocessing)
|
|
28
33
|
|
|
29
34
|
tile_embeddings = embedded.tile_embeddings # (N, 2560)
|
|
30
35
|
x, y = embedded.x, embedded.y # level-0 tile coordinates
|
|
31
36
|
```
|
|
32
37
|
|
|
33
|
-
|
|
38
|
+
`tiling` is an hs2p `TilingConfig`. Leave it unset to take spacing and tile size from the preset; Virchow2 supports several scales, so it needs an explicit one. The preset also supplies precision. Use `list_models()` to list presets, or filter with `list_models("tile")`, `list_models("slide")`, or `list_models("patient")`.
|
|
34
39
|
|
|
35
40
|
See [getting started](https://clemsgrs.github.io/slide2vec/getting-started.html) for preprocessing and execution settings, and the [API guide](https://clemsgrs.github.io/slide2vec/api.html) for patient embeddings, image inputs, and dense grids.
|
|
36
41
|
|
|
@@ -47,11 +52,11 @@ slide-2,/data/slide-2.svs
|
|
|
47
52
|
Optional `mask_path` and `spacing_at_level_0` columns supply a mask or correct missing or incorrect level-0 spacing. Patient-level models also require `patient_id`; see the [manifest schema](https://clemsgrs.github.io/slide2vec/manifest.html).
|
|
48
53
|
|
|
49
54
|
```python
|
|
50
|
-
from slide2vec import ExecutionOptions, Model, Pipeline
|
|
55
|
+
from slide2vec import ExecutionOptions, Model, Pipeline
|
|
51
56
|
|
|
52
57
|
pipeline = Pipeline(
|
|
53
58
|
model=Model.from_preset("virchow2"),
|
|
54
|
-
preprocessing=
|
|
59
|
+
preprocessing=preprocessing, # from the example above
|
|
55
60
|
execution=ExecutionOptions(output_dir="outputs/run"),
|
|
56
61
|
)
|
|
57
62
|
result = pipeline.run(manifest_path="/path/to/slides.csv")
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "slide2vec"
|
|
7
|
-
version = "7.
|
|
7
|
+
version = "7.1.0"
|
|
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,tifffile,vips]>=6.
|
|
24
|
+
"hs2p[asap,cucim,openslide,sam2,tifffile,vips]>=6.1.0",
|
|
25
25
|
"omegaconf",
|
|
26
26
|
"matplotlib",
|
|
27
27
|
"numpy<2",
|
|
@@ -100,7 +100,7 @@ fm = [
|
|
|
100
100
|
"pandas",
|
|
101
101
|
"pillow",
|
|
102
102
|
"rich",
|
|
103
|
-
"hs2p[asap,cucim,openslide,sam2,tifffile,vips]>=6.
|
|
103
|
+
"hs2p[asap,cucim,openslide,sam2,tifffile,vips]>=6.1.0",
|
|
104
104
|
"wandb",
|
|
105
105
|
"torch>=2.3,<2.8",
|
|
106
106
|
"torchvision>=0.18.0",
|
|
@@ -180,7 +180,7 @@ no_implicit_reexport = true
|
|
|
180
180
|
max-line-length = 160
|
|
181
181
|
|
|
182
182
|
[tool.bumpver]
|
|
183
|
-
current_version = "7.
|
|
183
|
+
current_version = "7.1.0"
|
|
184
184
|
version_pattern = "MAJOR.MINOR.PATCH"
|
|
185
185
|
commit = false
|
|
186
186
|
tag = false
|
|
@@ -28,17 +28,25 @@ from slide2vec.runtime.dense_encode import DenseEncodeGeometry, DenseEncodeKit
|
|
|
28
28
|
from slide2vec.runtime.feature_identity import MISSING_FIELD
|
|
29
29
|
from slide2vec.encoders import (
|
|
30
30
|
EncoderProviderDiagnostic,
|
|
31
|
+
TileEncoder,
|
|
32
|
+
TimmTileEncoder,
|
|
33
|
+
TorchTileEncoder,
|
|
31
34
|
list_encoder_provider_diagnostics,
|
|
35
|
+
register_encoder,
|
|
32
36
|
)
|
|
33
37
|
|
|
34
38
|
|
|
35
|
-
__version__ = "7.
|
|
39
|
+
__version__ = "7.1.0"
|
|
36
40
|
|
|
37
41
|
__all__ = [
|
|
38
42
|
"Model",
|
|
39
43
|
"list_models",
|
|
40
44
|
"EncoderProviderDiagnostic",
|
|
41
45
|
"list_encoder_provider_diagnostics",
|
|
46
|
+
"register_encoder",
|
|
47
|
+
"TileEncoder",
|
|
48
|
+
"TimmTileEncoder",
|
|
49
|
+
"TorchTileEncoder",
|
|
42
50
|
"Pipeline",
|
|
43
51
|
"PreprocessingConfig",
|
|
44
52
|
"DenseOptions",
|