Vision-integrated spatial transcriptomics SVC reconstruction and Sim2Real-ST benchmarking.
Project description
REVISE
REVISE (REconstruction via Vision-integrated Spatial Estimation) reconstructs Spatially-inferred Virtual Cells (SVCs) from spatial transcriptomics data by integrating ST measurements, histological images, and matched single-cell RNA-seq references.
The current codebase is organized around one configuration-driven engine,
REVISEPipeline, and two user-facing modes:
| Mode | Goal | Main entry points | Primary outputs |
|---|---|---|---|
benchmark |
Reproduce Sim2Real-ST evaluations across six confounding factors | benchmark_main.py, benchmark_main.sh, reproduce/benchmark/*.ipynb |
metrics_normalized.csv with PCC, SSIM, MSE, and NRMSE |
application |
Reconstruct SVCs and run downstream real-data analysis | application_sp_SVC_recon.py, application_sc_SVC_recon.py, reproduce/case/*.ipynb |
sp_SVC.h5ad, sc_SVC_expr.h5ad, sc_SVC_spatial.h5ad, notebook figures |
Documentation: https://revise-svc.readthedocs.io/en/latest/
Dataset and reproduced results: https://zenodo.org/records/17705737
What REVISE Covers
Sim2Real-ST benchmarks six confounding factors across three spatial transcriptomics platform types:
- Spatially heterogeneous factors: image segmentation artifacts and bin-to-cell assignment errors.
- Spatially homogeneous factors: spot size, batch effect, gene panel limitation, and gene dropout.
REVISE reconstructs two complementary SVC types:
sp-SVC: spatial refinement for hST platforms such as Visium HD.sc-SVC: molecular completion and cell-state refinement for iST/sST platforms such as Xenium and Visium.
Architecture
Modern runs flow through:
revise.framework.REVISEPipelinerevise/revise.yamlprofiles and runtime/io overridesrevise.recon.pipeline.UnifiedReconstructionPipeline- backend strategy and plugin registries in
revise/backend/
UnifiedReconstructionPipeline owns the fixed lifecycle: input validation,
global anchoring, local unit preparation, graph construction, OT problem
construction, OT solving, expression update, SVC finalization, and optional
benchmark evaluation.
Legacy-style runner classes are kept under revise/backend/runners/ for
notebook compatibility and parity checks. New code should prefer
REVISEPipeline or the root wrapper scripts.
Installation
Install the package from PyPI:
pip install revise-svc
Optional annotation support:
pip install "revise-svc[annotation]"
Development install:
git clone https://github.com/wuys13/REVISE.git
cd REVISE
pip install -e ".[dev]"
Download Sim2Real-ST benchmark data and real application data from
Zenodo, then place them under
raw_data/ if you want to reproduce the paper results.
Quick Start
Benchmark Mode
benchmark_main.py runs Sim2Real-ST cases and writes per-gene benchmark metrics.
The paper-facing metrics are PCC, SSIM, and MSE; NRMSE is also retained in the
CSV for legacy compatibility.
python benchmark_main.py \
--cf segmentation \
--raw_data_path raw_data/Sim2Real-ST \
--sample_name P2CRC/cut_part1 \
--task segmentation \
--save_path output/benchmark
Supported --cf values:
segmentationbin2cellbatch_effectspot_sizegene_panelgene_dropout
Use the merged launcher for multi-case reproduction:
bash benchmark_main.sh
Application Mode
Application scripts default to output/ subdirectories so notebook analysis can
load the reconstructed SVC files directly.
For hST / Visium HD style sp-SVC reconstruction:
python application_sp_SVC_recon.py \
--raw_data_path raw_data/Real_application \
--sample_name P1CRC \
--st_file HD.h5ad \
--sc_ref_file adata_sc_all_reanno.h5ad
Default published notebook output:
output/sp_SVC_case/<sample_name>/sp_SVC.h5ad
For iST / Xenium style sc-SVC reconstruction:
python application_sc_SVC_recon.py \
--sample_name P2CRC \
--data_type Xenium \
--raw_data_path raw_data/Real_application \
--sc_ref_file adata_sc_all_reanno.h5ad \
--select_ct T
Default published notebook outputs:
output/sc_SVC_case/<sample_name>_<data_type>/<select_ct>/sc_SVC_expr.h5ad
output/sc_SVC_case/<sample_name>_<data_type>/<select_ct>/sc_SVC_spatial.h5ad
Python API
from revise.framework import REVISEPipeline
pipeline = REVISEPipeline(config_path="revise/revise.yaml")
svc = pipeline.run(
profile="application_sc",
runtime_overrides={"platform": "iST", "confounding": "segmentation"},
io_overrides={
"data_root": "raw_data/Real_application",
"output_root": "output/sc_SVC_case",
"sample_name": "P2CRC",
"st_file": "Xenium.h5ad",
"sc_ref_file": "adata_sc_all_reanno.h5ad",
"patient_key": "Patient",
},
set_overrides=["sc.select_ct=T"],
)
Notebooks
| Area | Files | Purpose |
|---|---|---|
| Benchmark | reproduce/benchmark/seg_benchmark.ipynb, spot_benchmark.ipynb, batch_benchmark.ipynb, imputation_benchmark.ipynb |
Inspect Sim2Real-ST benchmark outputs and PCC/SSIM/MSE trends |
| Application reconstruction | reproduce/case/*_recon.ipynb, reproduce/case/sp_SVC_case.ipynb |
Rebuild paper application cases from raw inputs |
| Application analysis | reproduce/case/*_analysis.ipynb, application_sc_SVC_analysis_case.ipynb |
Analyze SVC outputs, cell states, pathways, spatial patterns, and downstream figures |
| SMI case | SMI/CosMx-SMI-REVISE_spSVC.ipynb |
CosMx SMI sp-SVC application example |
ReadTheDocs links the maintained benchmark and case notebooks through
docs/benchmark/ and docs/case/.
Repository Layout
revise/framework.py: publicREVISEPipelineentry point.revise/revise.yaml: routing profiles and default configuration.revise/recon/: unified pipeline context and lifecycle orchestration.revise/backend/: strategies, platform adapters, plugin registries, kernels, and lower-level operations.revise/config/: config loader and internal runner configuration contracts.revise/analysis/: benchmark metric and downstream analysis helpers.reproduce/benchmark/: benchmark launchers and analysis notebooks.reproduce/case/: real application reconstruction and analysis notebooks.docs/: ReadTheDocs / Sphinx source.
License
REVISE is released under the MIT License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file revise_svc-0.0.30.tar.gz.
File metadata
- Download URL: revise_svc-0.0.30.tar.gz
- Upload date:
- Size: 92.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
731302069d928524fed4d23ce0dc1157f8c03b30ba366dab42a32f81e79ec25a
|
|
| MD5 |
66c0a0e111b8bdeb4ea854cdaae185b4
|
|
| BLAKE2b-256 |
ae63a1195f28829889c13d5d70cf718fc08c1d1b233dcaf36b3a9364ab6f7a71
|
File details
Details for the file revise_svc-0.0.30-py3-none-any.whl.
File metadata
- Download URL: revise_svc-0.0.30-py3-none-any.whl
- Upload date:
- Size: 115.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
227f73c3ef9a360bf5bf6732188accec83b773e110b00291ab25a02fd8a8587f
|
|
| MD5 |
0fa837380827debaf308508bec9d15e0
|
|
| BLAKE2b-256 |
8998e8262ca01ec89b9714ebaa7690a776b04e56db71cfd65aaf1ce0e11024e1
|