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.
Files changed (188) hide show
  1. {slide2vec-7.0.0 → slide2vec-7.1.0}/PKG-INFO +12 -7
  2. {slide2vec-7.0.0 → slide2vec-7.1.0}/README.md +9 -4
  3. {slide2vec-7.0.0 → slide2vec-7.1.0}/pyproject.toml +4 -4
  4. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/__init__.py +9 -1
  5. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/api.py +154 -228
  6. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/configs/default.yaml +4 -3
  7. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/__init__.py +5 -5
  8. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/base.py +89 -35
  9. slide2vec-7.1.0/slide2vec/encoders/models/__init__.py +24 -0
  10. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/conch.py +2 -4
  11. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/dinov2.py +1 -2
  12. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/genbio.py +1 -2
  13. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/gigapath.py +28 -16
  14. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/gpfm.py +1 -2
  15. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/hibou.py +2 -4
  16. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/hoptimus.py +2 -4
  17. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/lunit.py +1 -2
  18. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/midnight.py +1 -2
  19. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/moozy/__init__.py +2 -4
  20. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/mstar.py +1 -2
  21. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/phikon.py +2 -4
  22. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/prism.py +1 -2
  23. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/prost40m.py +1 -2
  24. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/titan.py +1 -2
  25. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/uni.py +2 -4
  26. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/waiv.py +2 -4
  27. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/registry.py +77 -6
  28. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/inference.py +2 -2
  29. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/cpu_budget.py +1 -1
  30. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/embedding.py +1 -1
  31. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/embedding_persist.py +3 -3
  32. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/embedding_pipeline.py +3 -3
  33. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/feature_identity.py +5 -3
  34. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/hierarchical.py +3 -3
  35. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/patient_pipeline.py +4 -3
  36. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/process_list.py +3 -3
  37. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/serialization.py +41 -23
  38. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/slide_encode.py +15 -5
  39. slide2vec-7.1.0/slide2vec/runtime/tiling.py +78 -0
  40. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/tiling_pipeline.py +16 -52
  41. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec.egg-info/PKG-INFO +12 -7
  42. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec.egg-info/SOURCES.txt +1 -0
  43. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec.egg-info/requires.txt +2 -2
  44. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_benchmark_tooling.py +14 -14
  45. slide2vec-7.1.0/tests/test_drop_in_encoders.py +374 -0
  46. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_encoder_capabilities.py +1 -2
  47. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_encoder_input_contract.py +4 -12
  48. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_encoder_plugins.py +1 -0
  49. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_encoder_preprocessing.py +16 -15
  50. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_feature_identity.py +7 -11
  51. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_gigapath.py +60 -3
  52. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_hierarchical_encoding.py +4 -6
  53. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_hs2p5_integration.py +52 -63
  54. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_on_slide_persisted.py +2 -1
  55. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_output_consistency.py +0 -1
  56. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_patient_annotation_sampling.py +17 -11
  57. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_patient_tiling_only.py +4 -17
  58. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_pooled_encoder_input.py +2 -8
  59. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_pooled_geometry.py +2 -6
  60. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_pooled_identity_api.py +7 -7
  61. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_progress.py +2 -1
  62. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_regression_core.py +174 -484
  63. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_regression_inference.py +59 -256
  64. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_regression_models.py +13 -50
  65. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_slide_coordinate_preparation.py +12 -48
  66. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_slide_latents.py +6 -5
  67. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_soma_migration.py +1 -5
  68. slide2vec-7.1.0/tests/test_tiling_pipeline.py +38 -0
  69. slide2vec-7.0.0/slide2vec/encoders/models/__init__.py +0 -58
  70. slide2vec-7.0.0/slide2vec/runtime/tiling.py +0 -119
  71. slide2vec-7.0.0/tests/test_tiling_pipeline.py +0 -25
  72. {slide2vec-7.0.0 → slide2vec-7.1.0}/LICENSE +0 -0
  73. {slide2vec-7.0.0 → slide2vec-7.1.0}/setup.cfg +0 -0
  74. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/__main__.py +0 -0
  75. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/_cufile.py +0 -0
  76. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/artifacts.py +0 -0
  77. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/cli.py +0 -0
  78. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/configs/__init__.py +0 -0
  79. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/configs/resources.py +0 -0
  80. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/cufile.json +0 -0
  81. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/data/__init__.py +0 -0
  82. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/data/dataset.py +0 -0
  83. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/data/tile_reader.py +0 -0
  84. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/data/tile_store.py +0 -0
  85. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/distributed/__init__.py +0 -0
  86. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/distributed/dense_image_worker.py +0 -0
  87. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/distributed/dense_worker.py +0 -0
  88. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/distributed/direct_embed_worker.py +0 -0
  89. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/distributed/image_worker.py +0 -0
  90. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/distributed/pin_gpu.py +0 -0
  91. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/distributed/pipeline_worker.py +0 -0
  92. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/distributed/worker_entry.py +0 -0
  93. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/dinov3.py +0 -0
  94. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/isight.py +0 -0
  95. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/mettle.py +0 -0
  96. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/moozy/blocks.py +0 -0
  97. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/moozy/case.py +0 -0
  98. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/moozy/loading.py +0 -0
  99. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/moozy/slide.py +0 -0
  100. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/moozy/types.py +0 -0
  101. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/musk.py +0 -0
  102. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/prism2.py +0 -0
  103. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/rudolfv2.py +0 -0
  104. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/models/virchow.py +0 -0
  105. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/encoders/validation.py +0 -0
  106. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/progress.py +0 -0
  107. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/__init__.py +0 -0
  108. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/artifacts_collect.py +0 -0
  109. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/batching.py +0 -0
  110. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/dense_encode.py +0 -0
  111. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/dense_encoder_input.py +0 -0
  112. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/dense_image_reading.py +0 -0
  113. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/dense_image_recipe.py +0 -0
  114. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/dense_image_shard.py +0 -0
  115. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/dense_image_stage.py +0 -0
  116. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/dense_regions.py +0 -0
  117. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/dense_shard.py +0 -0
  118. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/dense_sliding.py +0 -0
  119. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/dense_stage.py +0 -0
  120. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/distributed.py +0 -0
  121. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/distributed_stage.py +0 -0
  122. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/effective_encoder_input.py +0 -0
  123. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/encoder_input_contract.py +0 -0
  124. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/image_shard.py +0 -0
  125. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/image_specs.py +0 -0
  126. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/image_stage.py +0 -0
  127. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/manifest.py +0 -0
  128. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/model_settings.py +0 -0
  129. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/persist_callbacks.py +0 -0
  130. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/persistence.py +0 -0
  131. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/pooled_encoder_input.py +0 -0
  132. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/preprocessing.py +0 -0
  133. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/progress_bridge.py +0 -0
  134. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/registry.py +0 -0
  135. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/sharding.py +0 -0
  136. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/types.py +0 -0
  137. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/runtime/worker_io.py +0 -0
  138. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/utils/__init__.py +0 -0
  139. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/utils/config.py +0 -0
  140. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/utils/coordinates.py +0 -0
  141. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/utils/log_utils.py +0 -0
  142. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/utils/tiling_io.py +0 -0
  143. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec/utils/utils.py +0 -0
  144. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec.egg-info/dependency_links.txt +0 -0
  145. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec.egg-info/entry_points.txt +0 -0
  146. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec.egg-info/not-zip-safe +0 -0
  147. {slide2vec-7.0.0 → slide2vec-7.1.0}/slide2vec.egg-info/top_level.txt +0 -0
  148. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_attention_extraction.py +0 -0
  149. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_cli_noninteractive.py +0 -0
  150. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_cufile_compat_mode.py +0 -0
  151. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_dense_encode_kit.py +0 -0
  152. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_dense_encoder_input.py +0 -0
  153. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_dense_extraction.py +0 -0
  154. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_dense_image_reading.py +0 -0
  155. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_dense_image_resume.py +0 -0
  156. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_dense_image_shard.py +0 -0
  157. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_dense_image_stage.py +0 -0
  158. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_dense_regions.py +0 -0
  159. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_dense_shard.py +0 -0
  160. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_dense_sliding.py +0 -0
  161. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_dense_source_spacing.py +0 -0
  162. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_dense_stage.py +0 -0
  163. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_dense_worker.py +0 -0
  164. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_dinov2_natimage.py +0 -0
  165. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_dinov3_natimage.py +0 -0
  166. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_encoder_provider_failures.py +0 -0
  167. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_encoder_registry.py +0 -0
  168. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_gpfm_genbio_heavy.py +0 -0
  169. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_hs2p_package_cutover.py +0 -0
  170. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_image_shard.py +0 -0
  171. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_image_stage.py +0 -0
  172. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_inference_benchmark.py +0 -0
  173. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_isight.py +0 -0
  174. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_load_model_hf_auth.py +0 -0
  175. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_mascaret.py +0 -0
  176. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_mettle.py +0 -0
  177. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_patch_size_metadata.py +0 -0
  178. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_patient_manifest.py +0 -0
  179. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_phaet.py +0 -0
  180. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_prism.py +0 -0
  181. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_prism2.py +0 -0
  182. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_process_list_performance.py +0 -0
  183. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_rudolfv2.py +0 -0
  184. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_runtime_batching.py +0 -0
  185. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_sharding.py +0 -0
  186. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_tile_store.py +0 -0
  187. {slide2vec-7.0.0 → slide2vec-7.1.0}/tests/test_titan.py +0 -0
  188. {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.0.0
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.0.0
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.0.0; extra == "fm"
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(requested_spacing_um=0.5)
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
- The preset supplies tile size and precision defaults. Declare spacing explicitly for models such as Virchow2 that support several scales. Use `list_models()` to list presets, or filter with `list_models("tile")`, `list_models("slide")`, or `list_models("patient")`.
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, PreprocessingConfig
171
+ from slide2vec import ExecutionOptions, Model, Pipeline
167
172
 
168
173
  pipeline = Pipeline(
169
174
  model=Model.from_preset("virchow2"),
170
- preprocessing=PreprocessingConfig(requested_spacing_um=0.5),
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(requested_spacing_um=0.5)
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
- The preset supplies tile size and precision defaults. Declare spacing explicitly for models such as Virchow2 that support several scales. Use `list_models()` to list presets, or filter with `list_models("tile")`, `list_models("slide")`, or `list_models("patient")`.
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, PreprocessingConfig
55
+ from slide2vec import ExecutionOptions, Model, Pipeline
51
56
 
52
57
  pipeline = Pipeline(
53
58
  model=Model.from_preset("virchow2"),
54
- preprocessing=PreprocessingConfig(requested_spacing_um=0.5),
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.0.0"
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.0.0",
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.0.0",
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.0.0"
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.0.0"
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",