Skip to main content

Spatial transcriptomics foundation model

Project description

TERRA logo

PyPI Documentation License: BSD-3-Clause

TERRA is a self-supervised foundation model for spatial transcriptomics. It serializes each cell together with its spatial neighbors into a sequence of gene tokens, then trains with a Joint-Embedding Predictive Architecture (JEPA): some tokens are masked and the model predicts their representations in latent space — rather than reconstructing raw expression — to infer the molecular and spatial context of the neighboring cells. This yields hierarchical embeddings at the gene, cell, and neighborhood scales, capturing both a cell's own expression and its tissue microenvironment.

Pretrained on HST-Corpus-112M (>100M cells at single-cell resolution spanning human spatial-transcriptomics datasets), TERRA produces cell- and neighborhood-level embeddings that transfer to downstream tasks such as niche and cell-type identification, batch-integrated atlasing, spatial gene-pair scoring, and in-silico perturbation — without task-specific retraining.

Key features

  • Spatially-aware embeddings — cell and neighborhood representations learned in latent space via JEPA.
  • Pretrained and ready to use — download a model from the Hugging Face Hub and embed your own AnnData in a few lines.
  • Self-contained model bundles — each release ships the checkpoint, tokenizer, and gene-reference files needed to reproduce its training-time harmonization.
  • Downstream analyses — niche/cell-type clustering, gene-pair spatial scoring, EMD-based spatial structure, and perturbation.

Installation

TERRA is published on PyPI as terra-st (the import name is terra) and requires an NVIDIA GPU. Install PyTorch first (so it matches your GPU), then TERRA — we recommend uv.

1. Install PyTorch for your hardware. Run nvidia-smi, read the "CUDA Version" in the top-right, and install the matching CUDA build (see the PyTorch install guide), e.g.:

uv pip install torch --index-url https://download.pytorch.org/whl/cu124

2. Install TERRA.

uv pip install terra-st

Plain pip install terra-st works too. For a development install from a clone of this repository (after step 1): uv pip install -e ".[dev,test,doc]".

Verify the install:

python -c "import torch; print(torch.__version__, torch.version.cuda, torch.cuda.is_available())"

Quickstart

Download a pretrained model and embed your own spatial AnnData with the end-to-end pipeline. Each downloaded bundle contains the gene-reference files needed for harmonization, so no external paths are required:

import anndata as ad
from terra import download_pretrained, harmonize_tokenize_embed_pipeline

adata = ad.read_h5ad("my_spatial_data.h5ad")   # raw counts in adata.X

model_dir = download_pretrained("Lotfollahi-lab/TERRA-96M")

adata = harmonize_tokenize_embed_pipeline(
    adata=adata,
    sample_key="sample",            # column in adata.obs identifying samples
    batch_key="batch",              # column to store the batch identifier
    model_folder_path=model_dir,
    cache_directory_path="./terra_cache",
)

# Cell- and neighborhood-level embeddings are now in adata.obsm.

See the documentation for the step-by-step pipeline, downstream analyses (niche identification, gene-pair scoring, perturbation), and the full tutorial.

Citation

If you use TERRA in your research, please cite the manuscript (in preparation). A BibTeX entry and DOI will be added here on publication.

License

The TERRA code is released under the BSD 3-Clause License. Pretrained model weights distributed on the Hugging Face Hub are released under CC-BY-NC-4.0 (non-commercial use).

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

terra_st-0.1.6.tar.gz (1.5 MB view details)

Uploaded Source

Built Distribution

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

terra_st-0.1.6-py3-none-any.whl (249.3 kB view details)

Uploaded Python 3

File details

Details for the file terra_st-0.1.6.tar.gz.

File metadata

  • Download URL: terra_st-0.1.6.tar.gz
  • Upload date:
  • Size: 1.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for terra_st-0.1.6.tar.gz
Algorithm Hash digest
SHA256 8206ef3b1ea47d3da3311b0182eb6cfcb797228d601fd631f80fbb71a826fd48
MD5 2435c3e65c104c27617492e494417358
BLAKE2b-256 1949046a9e9fd2e2b7e2582573f31f0ba885325b502cae8b63c25384eb5d86d6

See more details on using hashes here.

Provenance

The following attestation bundles were made for terra_st-0.1.6.tar.gz:

Publisher: release.yaml on Lotfollahi-lab/terra

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file terra_st-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: terra_st-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 249.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for terra_st-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 35e4261d939051e0a5a9d0844c9ba843b5e3a1dd6284f553a8fb755887bf1ff5
MD5 e2eaec08f2524f48f6fba4b28273f8ce
BLAKE2b-256 a0950a4529ed8862c75ce6604da811183f11098d99ffe5ccb21bd17b76cd6777

See more details on using hashes here.

Provenance

The following attestation bundles were made for terra_st-0.1.6-py3-none-any.whl:

Publisher: release.yaml on Lotfollahi-lab/terra

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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