Chatomics Field GuideWhat They Don't Teach You

Glossary · Single-Cell and Spatial

Spatial transcriptomics

A tissue section isn't a bag of cells, and treating a Visium spot like a single cell will quietly wreck your cell-type calls.

By Ming "Tommy" Tang, Director of Bioinformatics in Big Pharma · Reviewed September 2026 · 3 min read

Also: spatial omics

Definition

Spatial transcriptomics is a family of methods that measure gene expression across a tissue section while recording each measurement's physical location, so expression is tied to spatial coordinates rather than a dissociated cell suspension. The resulting data has three parts: an expression matrix (genes by spots or cells), spatial coordinates (2D or 3D), and a tissue image used for segmentation and overlay. Two technology classes dominate: sequencing-based platforms like 10x Visium that bin transcripts into fixed-size spots via on-slide barcoding, and imaging-based platforms like Xenium that detect individual transcripts in situ and assign each one its own coordinate at single-cell to subcellular resolution.

You meet spatial transcriptomics the moment a question can't be answered by a dissociated cell suspension: where in the tumor is the immune infiltrate sitting, which cortical layer expresses this gene, what's touching what. scRNA-seq gives you cell identity and loses location the moment you pipette the tissue into single-cell slurry. Spatial transcriptomics keeps the coordinates, at the cost of a resolution tradeoff you need to understand before you pick a platform.

That platform choice is not cosmetic. It decides whether your unit of analysis is a "spot" that mixes several cells' transcripts together, or an individual segmented cell with its own transcript coordinates. Get this wrong and every downstream step, from clustering to deconvolution to niche analysis, inherits the mistake.

Why it matters

The consequence of ignoring resolution shows up directly in your cell-type calls. A standard Visium spot is 55 µm across, wide enough to cover several cells depending on tissue density, so its expression profile is an average, not a single cell's transcriptome. If you cluster spots and label each cluster a "cell type" the way you would in scRNA-seq, you're actually clustering mixtures, and a rare cell type embedded in a spot with two other cell types gets diluted into whatever profile dominates that spot.

This matters most exactly where spatial transcriptomics gets used: tumor margins and immune infiltration. A spot sitting at a tumor-stroma boundary can contain tumor cells, fibroblasts, and infiltrating T cells at once. Cluster it naively and you'll either miss the infiltration signal or invent a phantom "mixed" cell state that isn't biology, it's spot geometry. Deconvolution methods or a jump to single-cell-resolution platforms (Visium HD, Xenium) exist specifically to correct for this, and knowing which correction you need starts with knowing your platform's actual resolution.

Where people get it wrong

The most common mistake is assuming "spatial transcriptomics" automatically means single-cell resolution. It doesn't. Visium Standard spots are pseudo-cells: a fixed 55 µm capture area, not a segmented cell boundary, and one spot routinely covers more than one cell. Analysts coming from scRNA-seq carry over the habit of treating each row of the matrix as one cell, and that habit silently breaks the moment the platform is spot-based rather than transcript-based.

A second version of the same confusion: assuming Visium HD's 2×2 µm bins or Xenium's transcript coordinates give you cells for free. They don't either, both still need a segmentation step (nuclei or cell-boundary detection) to turn raw coordinates or fine bins into actual cell-level counts. "Higher resolution" is not the same as "already segmented into cells", check what unit your matrix's rows actually represent before you trust a marker gene plot.

A concrete example

A minimal Scanpy workflow on 10x Visium data follows the same shape as scRNA-seq clustering, with two additions: spatial coordinates carried in adata.obsm['spatial'] and a tissue image for overlay. The spatial plot at the end is the sanity check: if your Leiden clusters don't respect any tissue structure at all, something upstream (QC, normalization, or a swapped coordinate file) is broken.

python
import scanpy as sc

adata = sc.read_visium(path="visium_sample/")
adata.var_names_make_unique()

sc.pp.normalize_total(adata, target_sum=1e4)
sc.pp.log1p(adata)
sc.pp.highly_variable_genes(adata, flavor="seurat")
sc.tl.pca(adata)
sc.pp.neighbors(adata)
sc.tl.leiden(adata)

# overlay clusters on the tissue image
sc.pl.spatial(adata, color="leiden")

# cluster marker genes, same call as scRNA-seq
sc.tl.rank_genes_groups(adata, groupby="leiden")

Related terms

Questions people ask

What is spatial transcriptomics used for?

It's used to map gene expression onto tissue architecture, answering questions scRNA-seq can't: where the tumor margin sits relative to immune cells, which brain region expresses a gene, or which cell types form a neighborhood together. Common applications are tumor microenvironment mapping, neuroscience region annotation, and cellular niche discovery.

What's the difference between Visium and Xenium?

Visium is sequencing-based: it captures mRNA under fixed-size spots (55 µm standard, down to 2×2 µm bins in Visium HD) using on-slide spatial barcodes, so each spot's expression can be a mixture of several cells. Xenium is imaging-based: it detects individual transcripts in situ and assigns each one its own X-Y-Z coordinate at single-cell to subcellular resolution, reporting sub-0.09% false discovery rates in benchmark comparisons.

Is spatial transcriptomics single-cell resolution?

Only some platforms are. Standard Visium spots are not single cells; a 55 µm spot typically covers multiple cells and its expression profile is their average. Visium HD and imaging platforms like Xenium, MERSCOPE, and Molecular Cartography get you to single-cell or subcellular resolution, but each still requires a segmentation step to turn transcript coordinates into cells.

What tools do I use to analyze spatial transcriptomics data?

In Python, Scanpy handles the core clustering workflow and Squidpy adds spatial-aware analysis like Moran's I for spatially variable genes and neighborhood enrichment. In R, Seurat builds spatial objects via CreateSeuratObject(), CreateCentroids(), and CreateFOV(), and Bioconductor's SpatialExperiment and SpatialFeatureExperiment classes extend SingleCellExperiment to hold coordinates, images, and spatial graphs.

How do I choose between Visium and Xenium for my experiment?

Pick Visium (or Visium HD) when you want unbiased, whole-transcriptome coverage and can tolerate spot-level resolution or the extra compute of HD's fine bins. Pick Xenium when you need single-cell or subcellular resolution and are willing to work from a targeted gene panel instead of the whole transcriptome.

Related pages

Related reading on the blog

Sources

  1. Spatial Transcriptomics: Technical Aspects of Recent Developments and Their Applications in Neuroscience and Cancer Research — Definition: spatial transcriptomics maps gene expression while preserving positional context in intact tissue
  2. Resolving sensitivity, specificity and signal contamination in Xenium spatial transcriptomics — Xenium's transcript-level X-Y-Z coordinates, FDR under 0.09%, and sensitivity versus MERSCOPE/Molecular Cartography
  3. Squidpy: a scalable framework for spatial omics analysis — Squidpy's spatial-aware algorithms, neighborhood enrichment, and Moran's I for spatially variable genes
  4. Analysis and visualization of spatial transcriptomics data, scanpy — Scanpy Visium workflow: read_visium, normalize_total, log1p, PCA, clustering, sc.pl.spatial
  5. Bioconductor Orchestrating Spatial Transcriptomics Analysis — SpatialExperiment, SpatialFeatureExperiment, and MoleculeExperiment class structures
  6. 10x Genomics Visium Spatial Transcriptomics Platform — Visium Standard 55 µm spot size versus Visium HD 2×2 µm bins with 8×8 µm recommended starting size