Skip to main content

slide2vec

PyPI version Docs

slide2vec is a Python package for efficient encoding of whole-slide images using publicly available foundation models. It builds on hs2p for fast preprocessing and exposes a focused surface around Model, Pipeline, and ExecutionOptions.

Documentation site: https://clemsgrs.github.io/slide2vec/

Installation

pip install slide2vec
pip install "slide2vec[fm]"

slide2vec keeps the base install focused on the core package surface. Use slide2vec[fm] when you want the PyPI-hosted FM dependencies.

Some model backends still rely on upstream Git repositories that PyPI will not accept as package metadata. Install those separately when needed:

pip install git+https://github.com/lilab-stanford/MUSK.git
pip install git+https://github.com/Mahmoodlab/CONCH.git
pip install git+https://github.com/prov-gigapath/prov-gigapath.git

AtlasPatch-backed tissue segmentation is available through hs2p's sam2 path in the bundled install.

Waiv encoders use a separately tested Transformers 5 runtime. Install them in their own environment with pip install "slide2vec[waiv]"; the waiv extra is incompatible with the existing fm, prism, and titan dependency pins.

Python API

from slide2vec import Model
from slide2vec.utils.config import hf_login

hf_login()

model = Model.from_preset("virchow2")
embedded = model.embed_slide("/path/to/slide.svs")

tile_embeddings = embedded.tile_embeddings
x = embedded.x
y = embedded.y

Use list_models() when you want to inspect the shipped presets programmatically:

from slide2vec import list_models

all_models = list_models()
tile_models = list_models("tile")
slide_models = list_models("slide")
patient_models = list_models("patient")

Use Pipeline(...) for manifest-driven batch processing when you want artifacts written to disk instead of only in-memory outputs:

from slide2vec import ExecutionOptions, Pipeline, PreprocessingConfig

pipeline = Pipeline(
    model=model,
    preprocessing=PreprocessingConfig(
        requested_spacing_um=0.5,
        requested_tile_size_px=224,
        masks={"min_coverage": {"tissue": 0.1}},
    ),
    execution=ExecutionOptions(output_dir="outputs/demo"),
)
result = pipeline.run(manifest_path="/path/to/slides.csv")

By default, ExecutionOptions() uses all available GPUs. Set ExecutionOptions(num_gpus=4) when you want to cap the sharding explicitly.

Hierarchical Feature Extraction

Tile embeddings can be spatially grouped into regions for downstream models that consume region-level structure. Enable it by setting region_tile_multiple on PreprocessingConfig:

preprocessing = PreprocessingConfig(
    requested_spacing_um=0.5,
    requested_tile_size_px=224,
    region_tile_multiple=6,  # 6x6 tiles per region
)
embedded = model.embed_slide("/path/to/slide.svs", preprocessing=preprocessing)

Hierarchical outputs have shape (num_regions, tiles_per_region, feature_dim) and are written to hierarchical_embeddings/ when persisted.

See the hierarchical features guide for details.

Input Manifest

Manifest-driven runs use the schema below. mask_path and spacing_at_level_0 are optional.

sample_id,image_path,mask_path,spacing_at_level_0
slide-1,/path/to/slide-1.svs,/path/to/mask-1.png,0.25
slide-2,/path/to/slide-2.svs,,
...

Use spacing_at_level_0 when the slide file reports a missing or incorrect level-0 spacing and you want to override it.

Outputs

The package writes explicit artifact directories:

  • tile_embeddings/<sample_id>.pt or .npz
  • tile_embeddings/<sample_id>.meta.json
  • hierarchical_embeddings/<sample_id>.pt or .npz (when region_tile_multiple is set)
  • hierarchical_embeddings/<sample_id>.meta.json
  • slide_embeddings/<sample_id>.pt or .npz
  • slide_embeddings/<sample_id>.meta.json
  • optional slide_latents/<sample_id>.pt or .npz

.pt remains the default format. .npz is available through ExecutionOptions(output_format="npz").

Supported Models

slide2vec currently ships presets for 28 tile-level models, 4 slide-level models, and 1 patient-level model. For the full catalog and preset names, see the model zoo.

CLI

The CLI is a thin wrapper over the package API.
Bundled configs live under slide2vec/configs/preprocessing/ and slide2vec/configs/models/.

slide2vec /path/to/config.yaml

By default, manifest-driven CLI runs use all available GPUs. Set speed.num_gpus=4 when you want to cap the sharding explicitly.

New to the CLI or doing batch runs to disk? Start with the CLI guide for the config-driven workflow and common run patterns.

Docker

Docker Version

Docker remains available when you prefer a containerized runtime:

docker pull waticlems/slide2vec:latest
docker run --rm -it \
    -v /path/to/your/data:/data \
    -e HF_TOKEN=<your-huggingface-api-token> \
    waticlems/slide2vec:latest

Documentation

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

slide2vec-5.9.2.tar.gz (372.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

slide2vec-5.9.2-py3-none-any.whl (254.6 kB view details)

Uploaded Python 3

File details

Details for the file slide2vec-5.9.2.tar.gz.

File metadata

  • Download URL: slide2vec-5.9.2.tar.gz
  • Upload date:
  • Size: 372.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.16

File hashes

Hashes for slide2vec-5.9.2.tar.gz
Algorithm Hash digest
SHA256 c066e57a0a1a5192445f88bcd1e3e0d0a97b92cba4ec30794f6efbeb4d151d41
MD5 52623a662e6d56a89fc796afb70ef89f
BLAKE2b-256 9e58543dc7585a6f608119960dcce6f3260f10648cb08bece215268de109417b

See more details on using hashes here.

File details

Details for the file slide2vec-5.9.2-py3-none-any.whl.

File metadata

  • Download URL: slide2vec-5.9.2-py3-none-any.whl
  • Upload date:
  • Size: 254.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.16

File hashes

Hashes for slide2vec-5.9.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ae5fda4582deb515dd0ee7c4f15d197fed9e1b827f7d39dab9e8e50261d073c5
MD5 94d5fb29d33253d52fa35a9d7077f4a2
BLAKE2b-256 c9566f07757da84aacc9ca9f85326f0545868fe60d7fa7752de51b51ed7bef2f

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

5.9.2 This release

2 files

5.9.1

2 files

5.9.0

2 files

5.8.2

2 files

5.8.1

2 files

5.8.0

2 files

5.7.0

2 files

5.6.0

2 files

5.5.0

2 files

5.4.0

2 files

5.3.0

2 files

5.2.0

2 files

5.1.1

2 files

5.1.0

2 files

5.0.1

2 files

5.0.0

2 files

4.8.0

2 files

4.7.0

2 files

4.6.4

2 files

4.6.3

2 files

4.6.2

2 files

4.6.1

2 files

4.6.0

2 files

4.5.3

2 files

4.5.2

2 files

4.5.1

2 files

4.5.0

2 files

4.4.0

2 files

4.3.0

2 files

4.2.0

2 files

4.1.1

2 files

4.1.0

2 files

4.0.4

2 files

4.0.3

2 files

4.0.2

2 files

4.0.1

2 files

3.2.1

2 files

3.2.0

2 files

3.1.0

2 files

3.0.1

2 files

3.0.0

2 files

2.0.2

2 files

2.0.1

2 files

2.0.0

2 files

1.4.0

2 files

1.3.0

2 files

1.2.3

2 files

1.2.2

2 files

1.2.1

2 files

1.2.0

2 files

1.1.2

2 files

1.1.1

2 files

1.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page