Skip to main content

Spatial transcriptomics benchmarking and annotation toolkit.

Project description

REVISE

REVISE (REconstruction via Vision-integrated Spatial Estimation) is a unified framework for reconstructing Spatially-inferred Virtual Cells (SVCs) by integrating spatial transcriptomics (ST) data, histological imaging, and matched single-cell RNA-seq references.

Visit our documentation for installation, tutorials, examples and more. Download Sim2Real benchmark, generated results and Real application data in Zenodo. Put them into raw_data dir if you want to reproduce our results.

You can also check out our podcast and watch our intro videos for a quick overview.

Motivation

Current ST technologies are limited by six key confounding factors (CFs) that hinder the reconstruction of biologically coherent single-cell units:

ST limitations

Current ST limitations

  • Spatially heterogeneous CFs: image segmentation artifacts, bin-to-cell assignment errors
  • Spatially homogeneous CFs: spot size, batch effects, gene panel limitations, gene dropout

REVISE addresses these limitations through a topology-aware hierarchical optimal transport (OT) framework, generating two complementary types of virtual cells:

  • sp-SVC: leverages spatial priors to correct spatially heterogeneous CFs and preserve local tissue architecture
  • sc-SVC: integrates scRNA-seq references to restore transcriptome-wide coverage and correct dropout

REVISE Overview

Overview of the REVISE framework

Highlights

  • Unified Framework: Handles six CFs across three ST platforms (sST, iST, hST)
  • Dual SVC Modes: sp-SVC for spatial refinement, sc-SVC for molecular completeness
  • Benchmark Module: Reproducible evaluation pipelines for simulated or public datasets
  • Application Module: Annotation, reconstruction, and downstream analyses for real ST data

SVC Applications

sp-SVC Applications

  • Recovers spatially resolved gene and pathway signals from Visium HD data
  • Identifies localized transcriptional programs (e.g., EMT at tumor leading edge)
  • Enhances spatial autocorrelation and clustering coherence

sc-SVC Applications

  • Reconstructs whole-transcriptome profiles for Xenium data
  • Defines fine-grained immune subtypes (T cells, TAMs, CAFs)
  • Reveals spatially organized cell-cell communication and clinical associations

SVC Applications

Biological insights enabled by SVC reconstruction

Quick Start

Install the Python package via pip:

pip install revise-svc

If you want to use REVISE for a real ST application, please import these class:

# sp-SVC, usually for hST platforms (e.g., Visium HD)
from revise.application import SpSVC

# sc-SVC, usually for iST platforms (e.g., Xenium) and sST platforms (e.g., Visium)
from revise.application import ScSVC

If you want to use REVISE for benchmark (such as in our Sim2Real-ST benchmark setting), please import these class:

# For two spa-hetero CFs: segmentation error and bin2cell
from revise.benchmark import SpSVC

# For two spa-homo CFs: spot size and batch effect
from revise.benchmark import ScSVCSr

# For two spa-homo CFs: gene panel limitation and dropout
from revise.benchmark import ScSVCImpute

Example

Run benchmark settings (sp-SVC)

Please make sure that you have downloaded Sim2Real-ST benchmark datasets from Zenodo.

import scanpy as sc
import revise.benchmark as benchmark
from revise.benchmark import SpSVC
from revise.conf import BenchmarkSegConf

# Initialize the config class for sp-SVC, check the detailed API at https://revise-svc.readthedocs.io/en/latest/source/api/generated/revise.conf.application_sp_conf.ApplicationSpConf.html
config = BenchmarkSegConf(
    sample_name=YOUR_OWN_SAMPLE_NAME,
    annotate_mode="pot",
    raw_data_path=YOUR_OWN_DATA_PATH,
    result_root_path=YOUR_OWN_RESULT_PATH,
    cell_type_col="Level1",
    confidence_col="Confidence",
    unknown_key="Unknown",
    st_file=YOUR_OWN_ST_FILE,
    gt_svc_file=YOUR_OWN_GT_SVC_FILE,
    sc_ref_file=YOUR_OWN_SC_REF_FILE,
    seg_method="seg_1",
)
adata_st = sc.read_h5ad(config.st_file_path)
adata_gt_svc = sc.read_h5ad(config.gt_svc_file_path)
adata_sc_ref = sc.read_h5ad(config.sc_ref_file_path)
svc = SpSVC(adata_st, adata_sc_ref, config, adata_gt_svc, None)
benchmark.main(svc)

Run application settings

import scanpy as sc
from revise.application import SpSVC
from revise.conf import ApplicationSpConf

config = ApplicationSpConf(
    sample_name=YOUR_OWN_SAMPLE_NAME,
    annotate_mode="pot",
    raw_data_path=YOUR_OWN_DATA_PATH,
    result_root_path=YOUR_OWN_RESULT_PATH,
    cell_type_col="Level1",
    confidence_col="Confidence",
    unknown_key="Unknown",
    st_file=YOUR_OWN_ST_FILE,
    sc_ref_file=YOUR_OWN_SC_REF_FILE,
)

adata_st = sc.read_h5ad(config.st_file_path)
adata_sc_ref = sc.read_h5ad(config.sc_ref_file_path)
svc = SpSVC(adata_st, adata_sc_ref, config=config, logger=None)
svc.global_anchoring()
svc.local_refinement()

Reproducibility

If you want to reproduce our results based on the Sim2Real-ST benchmark setting, you can run single bash script as following:

# for bin2cell
bash ./reproduce/benchmark/benchmark_bin2cell.sh

# for batch effect 
bash ./reproduce/benchmark/benchmark_batch_effect.sh

...

Or you can use our merged benchmark_main.sh script as following:

bash benchmark_main.sh

Repository Layout

  • revise/application: SVC workflows for real datasets.
  • revise/benchmark: SVC variants for benchmarking studies.
  • revise/methods: Algorithm implementations and model components.
  • revise/tools: Distance metrics, logging helpers, and general utilities.
  • conf: Example configurations and experiment parameters.

revise-svc exposes SVC interfaces with matching conf files: every SVC derives from BaseSVC, which defines initialization plus the abstract global_anchoring and local_refinement methods. BaseSVCAnchor extends BaseSVC and provides the shared global_anchoring used by all SVCs. SVCs are grouped into application and benchmark: application implements SpSVC and ScSVC; benchmark implements SpSVC, ScSVCImpute, and ScSVCSr. SpSVC targets segmentation and bin2cell confounding factors; ScSVCImpute targets gene panel and gene dropout; ScSVCSr targets batch effect and spot size. Conf implementations mirror the SVCs one-to-one, with parameters available on the website.

REVISE Workflow

License

REVISE is released under the MIT License.

Project details


Download files

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

Source Distribution

revise_svc-0.0.29.tar.gz (52.6 kB view details)

Uploaded Source

Built Distribution

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

revise_svc-0.0.29-py3-none-any.whl (71.6 kB view details)

Uploaded Python 3

File details

Details for the file revise_svc-0.0.29.tar.gz.

File metadata

  • Download URL: revise_svc-0.0.29.tar.gz
  • Upload date:
  • Size: 52.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.15

File hashes

Hashes for revise_svc-0.0.29.tar.gz
Algorithm Hash digest
SHA256 4f38f14c8adc32c50d80284b54644f29f02bfcc43114992a72a141ab51e7facc
MD5 0cf2050c45a0e8b4d4127e55131a4dff
BLAKE2b-256 bdd60a20f5fade2b526e5b55ea35cc83d409aee6d7f59c39eacd57a80d95a80d

See more details on using hashes here.

File details

Details for the file revise_svc-0.0.29-py3-none-any.whl.

File metadata

  • Download URL: revise_svc-0.0.29-py3-none-any.whl
  • Upload date:
  • Size: 71.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.15

File hashes

Hashes for revise_svc-0.0.29-py3-none-any.whl
Algorithm Hash digest
SHA256 803c02e7ff064ad784e06f3f6f4932af8540399a00187e62111951f77999934a
MD5 14c532e35b64472b9262c79ff2cdc3b3
BLAKE2b-256 bff14de38c2e3de75fef59e9acf8c10c0f6b5579a0a5f302029017ab670670c8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page