More than 100 human and mouse kidney spatial datasets were generated from 5 different platforms. To make these datasets comparable, we need to unify them into a single framework. The unification process involves several steps, each with its own considerations and trade-offs. Now let’s go through the unification process to see “how variable” the raw data looks like and “how it is unified”.

How much the platforms share

Gene-set overlap across tiers (n overlap, Jaccard).
gene_set_a gene_set_b n_overlap n_union jaccard
2 cosmx visium 969 48313 0.0201
3 cosmx xenium 0 1781 0.0000
4 cosmx visium_hd 920 17429 0.0528
5 cosmx geomx 944 18781 0.0503
7 visium xenium 719 48354 0.0149
8 visium visium_hd 17080 48561 0.3517
9 visium geomx 18067 48950 0.3691
11 xenium visium_hd 2 18138 0.0001
12 xenium geomx 2 19514 0.0001
14 visium_hd geomx 16224 19860 0.8169

This table is worth reading carefully. Gene coverage differs 60-fold: 300 to 19,000 genes. No normalization, imputation, or harmonization can recover the genes one platform simply never measured. This single number dictates the entire design of the analysis:

Cross-platform comparison happens at the module level, never gene-by-gene.

A “module” is a curated biological program, such as “podocyte,” “proximal-tubule S3,” or “injury,” scored as a summary across its member genes. Any platform that measures at least a few of the program’s genes can be scored for the program. A panel cannot describe everything a podocyte does, but it can indicate, with confidence, that a cell is a podocyte. This is the language used across this analysis.

In practice, each program is a curated list of three to five marker genes, maintained separately in human and mouse spelling, and every unit is scored for all eighteen programs with a standard gene-set scoring step on its log-normalized expression. The score is what makes a 300-gene panel and a 19,000-gene transcriptome comparable: both can be asked how strongly they express the podocyte program, and the answers sit on the same scale.

The resolution ladder

I organize the platforms into resolution tiers: GeoMx region → Visium spot (~55 µm) → Visium HD bin (8 µm) → Xenium/CosMx cell. Each tier is a different answer to the same question, “what is the kidney made of, and where?”, at a different granularity, and each tier trades resolution against coverage. The ladder is the conceptual spine of this analysis: every subsequent chapter climbs or descends it.

What unification required

Making 128 samples comparable took four deliberate, documented steps, each of which leaves its trace in the data:

  1. A canonical schema. Every sample was normalized to one AnnData structure: raw counts in X, metadata and QC in obs, spatial coordinates in obsm['spatial'], and a resolution tier tag. A GeoMx ROI and a CosMx cell now live in the same file format, clearly labeled.

  2. A common coordinate frame, where the data allow it. Visium pixel coordinates were converted to microns using each sample’s embedded spot-diameter scale factor (px per 55 µm spot). Xenium and CosMx coordinates are already in microns. Visium HD pixels were treated as ≈1 µm/pixel, an approximation. The HD scale factor is not a reliable micron proxy, so HD spatial distances are approximate, and any cross-platform distance comparison involving HD is accordingly qualified.

  3. A resolution tier per sample. GeoMx has no coordinates at all; it is ROI-level by construction. No amount of effort adds a spatial graph to a region profile.

  4. A per-species pipeline. Mouse and human gene naming and biology differ; the two species were analyzed separately and meet only through module-level comparison.

The list above is the design, with which I utilized the AnnData and Scanpy stack to read every native format in the cohort (Space Ranger, Xenium, CosMx, GeoMx) and write it into the one schema.

What comparability costs

Every design decision has a price, and this one is no different. I want to state the costs explicitly, because they bound what the rest of this analysis can claim:

The upshot is that unification buys the ability to ask biological questions across every platform at once, the goal of a systems-level analysis, at the price of confining gene-level discovery to the platforms that measured the genes. I consider this a favorable trade, and the rest of this analysis is the evidence for why it pays off.