Skip to main content

This is a preprint.

It has not yet been peer reviewed by a journal.

The National Library of Medicine is running a pilot to include preprints that result from research funded by NIH in PMC and PubMed.

bioRxiv logoLink to bioRxiv
[Preprint]. 2026 Jun 28:2026.06.23.733649. [Version 1] doi: 10.64898/2026.06.23.733649

Fault-tolerant 3D reconstruction from 2D spatial proteomics sections

Zhaojun Zhang 1,*, Yuqi Tan 2,3,*, Michael Snyder 4,†, Garry P Nolan 3,†, Zongming Ma 5,6,†
PMCID: PMC13320739  PMID: 42395438

Abstract

Reconstructing 3D molecular volumes from sparsely sampled 2D tissue sections is limited by per-section marker dropout and tissue loss. We present 3D-Omics-Flow, a generative pipeline that jointly repairs damaged sections and interpolates between them at single-cell resolution. Across datasets spanning health and disease, 3D-Omics-Flow expands 3D spatial proteomics to practical sampling regimes, enabling atlas construction and downstream analysis from imperfect 2D section stacks.

Keywords: 3D inference, Diffusion model, Generative AI, Multiplexed imaging, Spatial proteomics


Spatial proteomics measures protein abundance at single-cell resolution in intact tissue (1, 2), but tissue architecture extends in depth, and individual 2D sections capture only fragmented views of multicellular niches, vascular–immune interfaces, and invasive fronts. Dense serial sectioning or direct 3D spatial proteomics could recover this context, yet the cost and antibody-based nature of most platforms make routine 3D acquisition impractical (3). Reconstruction from sparsely sampled 2D sections is therefore an attractive alternative (4, 5), but in spatial proteomics, it is limited by two failure modes that are common in large-tissue workflows: section-specific biomarker dropout and tissue damage from tearing or folding. Existing methods fail to thoroughly address these practical challenges. SpatialZ (5) demonstrated sparse-3D reconstruction in spatial proteomics only at small scales and with undamaged 2D sections, and image-domain interpolation methods such as InterpolAI (6) are not designed for large z-axis gaps or high-plex marker panels. Here we present 3D-Omics-Flow, a generative pipeline that jointly repairs each observed 2D section by imputing dropped markers and restoring damaged tissue regions, and interpolates the restored stack at single-cell resolution, supporting downstream 3D analyses, including virtual sectioning, continuous-gradient profiling, 3D tissue microenvironment, and cell-cell interaction mapping (Fig. 1a).

Figure 1. 3D-Omics-Flow reconstructs a continuous 3D spatial-omics atlas from sparse, partially damaged 2D sections.

Figure 1.

a, Method overview. Top left: data format (sparse 2D sections with tissue damage, partial marker dropout, or both). Top right: prior-informed generative flow model. The model learns a velocity field over each cell’s spatial-molecular state and integrates it via rectified flow to infer intermediate cellular states between adjacent slices. Bottom: end-to-end workflow: (1) biomarker restoration; (2) tissue-loss detection; (3) tissue-loss restoration; (4) velocity-field encoding; (5) flow training; (6) post-flow calibration. b, Natural-damage benchmark on CRC proteomics. Three training inputs (slice25, z=125μm and slice54, z=270μm as intact anchors; slice39, z=195μm carrying a damaged tissue region and E-cadherin dropout) and two held-out validation slices (slice34, z=170μm; slice44, z=220μm). Below: 2D scatter of slice39 before (left) and after (right) 3D-Omics-Flow restoration with the gap filled by inferred cells, colored by major cell type. c, Inspection of per-slice reconstruction at the two held-out validation sections, slice34 (top row) and slice44 (bottom row), for the damaged E-cadherin channel: ground truth, 3D-Omics-Flow, SpatialZ, and linear interpolation baseline (from left to right). d,e, Spot-level metrics across bins on the held-out validation slices as a function of grid bin size 10–100 μm; higher is better for both metrics. d, cell-type-normalized L1 score; e, feature cosine similarity score. f, Per-marker MS-SSIM difference on the validation slices: Improvements by 3D-Omics-Flow over SpatialZ (purple) and over Linear (gray). Positive values indicate 3D-Omics-Flow reconstructs the marker more faithfully than the respective benchmarking method.

We benchmarked 3D-Omics-Flow on a publicly available colorectal cancer (CRC) spatial proteomics cohort acquired by serial-section CyCIF (7) to simulate an experimental scenario exhibiting both structural damage and missing staining: out of the three training slices (#25, #39, and #54), one (#39) had a natural tissue damage (Fig. 1b, lower-left, dashed region) and a simulated E-cadherin marker dropout. After training 3D-Omics-Flow and 3D reconstruction based on the three training slices, we evaluated the predictions on two held-out validation slices (#34, #44) (Fig. 1b) which were shielded from the entire model fitting and inference procedure, including but not limited to preprocessing, normalization, feature engineering, clustering, label assignment, and parameter tuning. See Materials & Methods for details. 3D-Omics-Flow restored the tissue loss on slice #39 (Fig. 1b, lower-right), and reconstructed a 3D volume.

Qualitatively, when the reconstructed volume was sectioned at the z-coordinates of the two validation slices, the 3D-Omics-Flow output reproduced the ground-truth spatial organizations of E-cadherin, whereas SpatialZ (5) and naïve linear interpolation (Linear) failed to recover these patterns with comparable fidelity (Fig. 1c). See, for instance, the over-prediction around the middle-left region in both validation slices by SpatialZ. Quantitatively, 3D-Omics-Flow outperformed SpatialZ and Linear by a sizable margin in cell type annotation fidelity across spatial resolution levels: cell-type normalized-L1 similarity scores (Fig. 1d) based on 3D-Omics-Flow predictions were consistently higher (with ~12–19% relative improvements) across spot sizes from 10 to 100 μm. Moreover, 3D-Omics-Flow consistently outperformed SpatialZ and Linear in feature prediction accuracy across different spatial resolutions in both overall (Fig. 1e, measured in cosine similarity between spot-level predicted and true feature vectors across spot sizes between 10 and 100 μm) and per-feature (Fig. 1f, better than both in 25 out of the 30 measured biomarkers, measured in per-feature Multi-Scale Structural Similarity, i.e., MS-SSIM, scores) sense. Notably, the largest per-feature improvement over SpatialZ occurred exactly on E-cadherin (Fig. 1f), the dropout marker on the middle training slice. Finally, the computation time cost for 3D-Omics-Flow is significantly smaller and scales much better than that of SpatialZ (Supplementary Fig. S1). These improvements resulted from a carefully-designed workflow and computational strategy for dropout marker imputation and tissue loss restoration tailored to the present 3D volume prediction setting, which is not addressed by any state-of-the-art sparse-3D reconstruction method.

Across spatial proteomics (CyCIF (7), INSIHGT (8)) and spatial transcriptomics (OpenST (9)), 3D-Omics-Flow predictions matched ground-truth spatial structure on held-out validation slices (Supplementary Figs. S2 and S3), retained community-level geometry and depth-resolved abundance dynamics on the ground-truth volumetric mouse hypothalamus dataset (Supplementary Fig. S4), and preserved molecular fidelity at the level of pairwise biomarker–biomarker correlations and 3D ligand–receptor scores (Supplementary Fig. S5). The tissue loss restoration capacity of 3D-Omics-Flow on 2D spatial transcriptomics stacks was demonstrated on a lymph node OpenST dataset in Supplementary Fig. S3 and S6.

Building on these proof-of-concept results, we next applied 3D-Omics-Flow to a larger CRC stack (also from (7), but non-overlapping with that used in Fig. 1) with more extensive staining corruption and per-section damage generated by simulation. The stack comprised 11 training slices spanning ~460 μm along the z-axis, with three section types: intact, combined damage (tissue loss + feature dropout), and feature-dropout-only damage (Fig. 2a, green/red/orange sections, respectively). We simulated rectangular tissue loss regions to mimic the realistic scenario in which a researcher is aware of tissue loss within such a bounding box while pinning down the exact loss boundary is difficult. 3D-Omics-Flow assembled a continuous 3D atlas from these training slices alone. When evaluated on held-out validation sections (Fig. 2a, uncolored sections), 3D-Omics-Flow predicted molecular structures with high fidelity (Fig. 2b). It also uncovered the 3D cellular landscape (Fig. 2c), restoring cross-slice continuity of cell populations that appear fragmented when viewed in isolated 2D sections.

Figure 2. 3D-reconstructed CRC atlas reveals continuous tumor-immune architecture inaccessible from sparse 2D sections.

Figure 2.

a, Combined-damage design on the CRC proteomics cohort. 11 training slices spanning ~460 μm along the z-axis, with three section types: intact, combined damage (tissue loss + feature dropout), and feature-dropout-only damage, corresponding to green, red, and orange sections. Three uncolored sections were held-out validation sections and were shielded from the entire training and 3D reconstruction process. Below: examples of damaged input slices. b, Comparison of reconstructed 3D volume with ground truth at z-coordinates of held-out validation slices: side-by-side feature overlays, 3D-Omics-Flow vs. ground truth. c, Components of the 3D volume reconstructed by 3D-Omics-Flow colored by cell-group combinations: Tumor+Macrophage, Tumor+T, Tumor+Stroma, and Ki67+ vs. PD-L1+ tumor/epithelial subtypes. d, Tumor-immune invasive-margin zones (tumor core, tumor margin, immune at margin, margin stroma) defined by a signed-distance field over a dilated tumor voxel mask (25 μm 3D grid). Left: 3D oblique view; Right: top (XY) and side (XZ) projections. e-h, UMAP visualizations of observed and virtual cells in 3D-Omics-Flow-reconstructed volume colored by invasive-margin zone (e), coarse cell group (f), signed distance to the tumor surface in μm (g) and fine cell subtype (h). i,j, Zone composition: stacked-bar fractions per zone for fine cell subtype (i) and coarse cell group (j). k, Mean expression of canonical markers (rows) across invasive-margin zones (columns). See Supplementary Fig. S7 for further details, including differentially-expressed markers in core tumor vs. margin tumor zones. l, Distribution of nearest tumor→immune Euclidean distances for margin-tumor cells. m, Voxel-level (25 μm 3D grid) Pearson correlation between markers across the full 3D reconstruction. n, Tumor-immune contact z-scores within 60 μm of tumor boundary (tumor/epithelial cell subtypes vs. immune cell types) against a label-shuffled null (n = 200 permutations). o, Marker expression as a function of signed distance to the tumor surface (negative = inside tumor, positive = outside tumor).

Within the reconstructed volume, a signed-distance field from each cell to the tumor surface delineated four invasive-margin zones (tumor core, tumor margin, immune at margin, and margin stroma; Fig. 2d) and revealed a continuous phenotypic gradient from tumor core to margin stroma (Fig. 2e–h). Cell-type composition differed across zones, with peak diversity in the immune at margin and margin stroma (Fig. 2i,j). CD3+/CD4+ T-cells were largely confined to the margin and excluded from the tumor core, coincident with an α-SMA-high stroma at the interface, defining an immune-excluded phenotype (Fig. 2k). Marker gradients along the signed distance to the tumor surface revealed PD-L1 expression rising sharply at the interface and a ~100-μm-wide CD3+/CD4+ T-cell belt accumulating at the stromal boundary (Fig. 2o), consistent with combined stromal sequestration and PD-L1-associated exclusion of T-cells from the tumor core. We quantified tumor–immune spatial relationships in 3D via tumor-to-immune nearest-neighbor distances and voxel-level marker correlations (Fig. 2l,m). Neighborhood enrichment within 60 μm of interface tumor cells revealed subtype-specific immune niches: Ki67+ tumor cells were enriched for T-helper and macrophage contacts, PD-L1+ tumor cells for Treg and macrophage contacts, and bulk tumor/epithelial subtypes were depleted of B-cell contacts (Fig. 2n), indicating that proliferative and immune-evasive tumor states occupy distinct local microenvironments. Transferring these 3D-derived zone labels onto held-out validation slices uncovered statistically significant margin tumor vs. core tumor differences in proliferation and immune markers that the corresponding sparse 2D zonation failed to detect (Supplementary Fig. S7). Notably, the paradigm of 3D-reconstructionby-training-slices plus p-value-calculation-on-held-out-2D-validation-slices adopted here provides a generic way for testing differentially-expressed biomarkers in different 3D neighborhoods with statistical rigor, which can be further generalized to other downstream inference tasks.

In sum, 3D-Omics-Flow addresses a core practical limitation of 3D spatial-omics reconstruction: the combination of sparse z-axis sampling, biomarker dropout, and physical tissue damage that routinely arises in large-scale serial-section workflows. Unlike deep-learning approaches (e.g., (10, 11)) that depend on large modality-specific pretraining datasets, 3D-Omics-Flow is designed for data-scarce settings, making it well-suited to studies of rare tissues and to modalities for which dense 3D atlases remain prohibitively expensive. On a CRC CyCIF cohort, 3D-Omics-Flow recovered held-out 3D structure under combined biomarker dropout and tissue damage, whereas SpatialZ (5) did not. 3D-Omics-Flow generalized to clean dense 3D proteomics (INSIHGT mouse hypothalamus) and to spatial transcriptomics with (simulated) tissue damage (OpenST metastatic lymph node). The reconstructed CRC volume enabled 3D tumor-immune analyses inaccessible from standalone 2D planes: continuous molecular gradients across the invasive front, voxel-level marker correlations, and tumor-immune contact enrichment within a fixed spatial radius. Although 3D-Omics-Flow is designed for spatial proteomics, future iterations could more explicitly leverage multi-modal integration, broadening 3D spatial-omics analysis from a few well-resourced platforms to atlas-scale studies across diverse spatial modalities.

Materials & Methods

Preliminaries for 3D-Omics-Flow.

Notation.

Let k∈{1,…,K} index slices, with nk denoting the total number of cells on slice k and i∈1,…,nk indexing cells within slice k. The raw omics feature matrix for slice k is Y(k)∈Rnk×p* (where p* is the number of distinct features measured across all slices), and the total number of cells is n=∑k=1Knk. When marker dropout is present in slice k, each corresponding column in Y(k) is filled with zeros. After preprocessing and dropout feature restoration, the representation feature matrix for slice k is denoted by X(k)∈Rnk×p, where p is the representation feature dimension. The raw cell locations in slice k are stored in the coordinate matrix S(k),raw. After spatial alignment of slices detailed below, the post-alignment cell coordinates on slice k are denoted by S(k). In what follows, we let si(k) and xi(k) be the (post-alignment) coordinate vector and representation feature vector for cell i in slice k, respectively.

Spatial Alignment of Slices.

The raw coordinates of serial 2D sections are not directly comparable across slices. Thus, we co-register adjacent slice pairs through a rigid initialization followed by a non-rigid refinement. Given a pair of consecutive slices (e.g., slices k and k+1), we first rasterize each slice’s cell coordinates to a 2D density image and recover a rigid initialization between target slice k and source slice k+1 via a two-pass rotation grid search (coarse 10° step over [−180°, 180°), followed by a refined 1° step in a ±10° window around the coarse optimum). At each candidate rotation θ (applied to the source density), we select the translation (Δa,Δb) that maximizes the normalized cross-correlation between the target density H(k) and the rotated source density Hθ(k+1),

NCC(θ,Δa,Δb)=∑a,bHθ(k+1)(a-Δa,b-Δb)H(k)(a,b)Hθ(k+1)2H(k)2.

Using rasterized density images (rather than centroid matching) keeps the rigid initialization robust to missing tissue regions, since absent cells contribute zero to the density images and therefore do not bias the correlation peak. In the second stage, we pass this rigid initialization to STalign (12), which further refines the registration with a non-rigid deformation. The resulting deformation is applied to every cell of slice k+1, and the aligned coordinates S(k+1) replace S(k+1),raw for all subsequent preprocessing and modeling. This procedure is applied iteratively for k=1,...,K-1, with slice 1 serving as the anchor whose raw coordinates define the canonical frame: S(1)≡S(1),raw. At each iteration, slice k+1 is registered to the already-aligned S(k), and the resulting S(k+1) then becomes the target for registering slice k+2 at the next iteration.

Pipeline Overview.

3D-Omics-Flow reconstructs a continuous 3D omics volume from a stack of K 2D slices through five sequential steps that follow a “restore-first, generate-later” principle. The pipeline assumes that the top and bottom slices of the stack do not have tissue damage and that at any specific point in the shared coordinate system, only a minority of slices suffer tissue damage. Steps 3 and 4 share a common generator, the two-slice building block Eq. (1) (formalized in Interlude below), which produces a continuous interpolation between two complete slices that bracket an unseen interval. The first three steps restore each input slice to a complete structurally contiguous state: Step 1 (biomarker restoration and preprocessing) imputes all missing molecular features across slices by taking into account both spatial and feature-level dependence, then normalizes features, computes a CAST graph embedding, standardizes coordinates, and curates spatial-community and cell-type priors for downstream modeling; Step 2 (tissue loss detection) identifies, without manual annotation, which slices contain missing spatial regions, locates each such region, and assigns each damaged slice an intact anchor pair (the nearest slices without tissue loss above and below); Step 3 (tissue loss restoration) evaluates the building block between the assigned anchor pair to reconstruct cells in each detected missing region. The remaining two steps perform cross-slice 3D interpolation and post-flow calibration: Step 4 (pairwise generation and cross-interval assembly) applies the building block to each adjacent slice pair of the restored stack to obtain matched-region trajectories and unmatched-region samples, and stitches the per-interval predictions at the observed slice levels; and Step 5 (post-flow calibration) aligns the generated coordinates to any additional positional information. When the stack has K > 2 slices, Step 1 is applied per slice; Step 2 pools the stack to compute a cross-slice reference density before flagging per-slice damage masks; Step 3 is applied per damaged slice using its anchor pair from Step 2; Step 4 instantiates the building block pairwise on each adjacent interval of the restored stack; and Step 5 calibrates the assembled stack globally in one shot.

The 3D-Omics-Flow Algorithm.

Step 1: Biomarker Restoration.

For slice k, let ℱk be the column index set of measured biomarkers in Y(k), and ℱkc=1,…,p*\ℱk collect the indices of the dropout features. Define the set of shared features ℱ∩=⋂k=1Kℱk, which is observed across all slices and serves as the bridge for cross-slice information transfer. In addition, we require that ⋃k=1Kℱk=1,…,p*. The goal of Step 1 is to impute the missing columns of each Y(k) by leveraging both the shared features and the spatial tissue context.

Within-slice Spatial Graph Construction

Let κ be a positive integer (default κ=15). For each slice k, we construct a κ-nearest-neighbor graph on the spatial coordinates S(k). For an edge connecting cells i and j, the edge weight is

wij=exp-si(k)-sj(k)22ζk2,

where ζk is set to the median κ-nearest-neighbor distance within slice k. The edge weight matrix is then symmetrized by assigning the Gaussian weight to both directed edges whenever j is a κ-NN of i (so Wij=Wji if j∈κNN(i) or i∈κNN(j)) and row-sum-normalized to yield a row-stochastic adjacency matrix A(k). The slice-specific adjacency matrices are assembled into a block-diagonal matrix A=blkdiagA(1),…,A(K)∈Rn×n, which preserves slice isolation.

Spatial Context Augmentation

For each slice k, let Yℱ∩(k) be the nk-by-ℱ𝓃 matrix that only retains the columns corresponding to the biomarkers measured by all slices. Let Y[0]=Yℱ∩ be the n-by-ℱ∩ matrix obtained from stacking Yℱ∩(k):k=1,…,K in order. For h=1,…,H (default H=2), define the h-hop weighted neighborhood mean

Y[h]=AY[h-1],

which averages expressions over progressively larger spatial neighborhoods. In addition, define three spatial statistics.

(1). Neighborhood dispersion.

For each cell i and feature f,

dispi,f=AY[0]∘Y[0]if-AY[0]if2,

where ° denotes element-wise multiplication. This statistic captures local expression heterogeneity.

(2). Local cell density.

Within each slice k, for each cell i we compute the inverse mean distance to its κdens (default is 15) nearest spatial neighbors:

ρi=1d‾i+ε,

where d‾i=1κdens∑j∈κdensNN(i)si(k)-sj(k),ε=10-8.

(3). Spatial gradient.

We define directional derivatives along the canonical planar axes as ∂Y[0]/∂s1 and ∂Y[0]/∂s2, which are estimated via weighted graph differences and capture spatial trends in expression.

We define the augmented descriptor of each cell by concatenating the preceding statistics

ei=Y[0],i;Y[1],i;…;Y[H],i;dispi;ρi;∂Y[0],i/∂s1;∂Y[0],i/∂s2.
Z-Distance-Weighted Ridge Transfer

Consider a recipient slice krcv with missing-feature set ℱkrcvc; cells in all other slices serve as sources, weighted by z-proximity to krcv:

wreg,i=exp-s3krcv-s3,i22σz2,

where σz is the median inter-slice distance. We then fit a weighted ridge regression of the source-cell target features on the augmented descriptor:

γˆ=argminγ∑i∈sourcewreg,iyitgt-eiγ2+λreg‖γ‖2.

where yitgt is the target-feature vector of source cell i for the recipient slice’s missing features, and λreg is chosen by cross-validation on held-out shared features by maximizing mean per-feature Pearson correlation. Predicted values populate the missing columns of Ykrcv, leaving observed entries unchanged.

Preprocessing

The biomarker-restoration step above produces a complete Y(k)∈Rnk×p* with all dropout columns populated. We complete Step 1 by executing the following preprocessing sub-steps in order.

(1). Modality-specific feature normalization.

For transcriptomics data (e.g., OpenST Human Lymph Node dataset), we apply library-size normalization, a log1p(x→log(1+x)) transform, and per-feature scaling computed after pooling cells across slices. For proteomics data (e.g., CyCIF Human Colorectal Cancer and INSIHGT Mouse Hypothalamus datasets), we clip each feature to its pooled [0.005, 0.995] quantiles, linearly rescale to [0, 1], and then apply per-feature z-normalization.

(2). Representation feature matrix.

The processed feature matrices from all slices are passed to CAST (13) to obtain a graph embedding. For each slice k, the resulting embedding X(k)∈Rnk×p, the representation feature matrix introduced in the Notation paragraph, serves as the feature matrix in the rest of the 3D-Omics-Flow pipeline unless stated otherwise.

(3). Coordinate normalization.

The coordinate matrix S(k) is z-scored before downstream modeling, and generated coordinates are transformed back to the original scale.

(4). Spatial-community-cell-type priors.

We use cell-type and spatial-community annotations as prior information to guide flow model training. When such annotations are not provided by human experts, we apply Banksy (14) with λBanksy=0.8 across all slices, using both spatial coordinates and omics features, to identify mq spatial communities, and we apply Leiden clustering across all slices at the default resolution (1.0), based on similarity in omics features, to obtain mc cell-type clusters.

Step 2: Tissue Loss Detection.

Whereas Step 1 imputes missing entries in Y(k), Step 2 operates entirely on the post-alignment cell coordinates S(k) to produce three outputs that drive Step 3: a damage mask ℳk⊂R2 for each affected slice, a partition of the stack into damaged and healthy slices, and an anchor-pair map k↦k-,k+ for each damaged slice. The detection exploits the volumetric continuity of tissue across serial sections: a location that is empty on one slice but occupied on most of the others is flagged as missing.

Per-Slice Rasterization

We overlay all K slices on a common 2D grid in the post-alignment (s1,s2) plane, indexed by integer coordinates (a,b). The grid spans the union bounding box of all K post-aligned slices, tiled with square bins of edge length 1/100 of the longer-axis range. For each slice k we compute the cell count ν(k)(a,b) and a Gaussian-smoothed per-pixel density D(k)(a,b) (Gaussian bandwidth σKDE=1.0 pixels, applied via scipy.ndimage.gaussian_filter).

Cross-Slice Reference

For each grid cell (a,b) we define a reference density that summarizes what tissue should be there if a slice were intact:

Dref(a,b)=Q0.85D(ℓ)(a,b):1≤ℓ≤K,ν(ℓ)(a,b)>0,

where Qp(⋅) denotes the p-quantile of a finite collection of real values; equivalently, Dref(a,b) is the 85th percentile of D(ℓ)(a,b) across slices with tissue at (a,b). We restrict attention to grid cells where ν(ℓ)(a,b)>0 for at least two slices, which is reasonable under our assumption of complete tissues at the top and bottom of the stack.

Damage Mask Construction

A grid cell on slice k is a candidate for missing tissue if it contains no cells at all ν(k)(a,b)=0) yet the reference density there exceeds a threshold (Dref(a,b)>τρ) (default τρ=0.0375⋅maxa′,b′Drefa′,b′); requiring strict emptiness, rather than just low density, ensures we flag true holes and not merely sparse regions. Candidate pixels are grouped into connected components and cleaned with a light morphology pipeline: binary closing with disk radius 3 pixels (to bridge single-pixel gaps), no binary opening, and no aggressive erosion. Components smaller than 5 pixels or smaller than 0.1% of the tissue envelope area are discarded, and adjacent components whose centroids lie within 1% range of the tissue diameter are merged, yielding the damage mask ℳk⊂R2. A slice is labeled damaged when its total flagged area exceeds 1% of its footprint; the remaining slices are labeled healthy and serve as anchors for restoration in Step 3. For each damaged slice we record the nearest healthy slices above and below along s3 as its anchor pair; consecutive damaged slices that share the same pair are grouped together. Step 2 thus passes ℳk, the damaged/healthy partition, and the anchor-pair map k↦k-,k+ to Step 3.

Interlude: The Two-Slice Building Block.

Before describing Step 3, we introduce the two-slice building block, a generator that produces a continuous interpolation between two complete slices that bracket an unseen interval. The building block is invoked in two contexts in 3D-Omics-Flow: (i) by Step 3 (described next), applied between two anchor slices to populate the missing region of a damaged slice at its depth between the anchors; and (ii) by Step 4 (described later), instantiated pairwise across all adjacent slice pairs of the restored stack to generate the 3D volume.

Suppose we are given two complete slices 𝒟1 and 𝒟2 that bracket an unseen interval, with no missing channels and no missing regions. We use a depth parameter t∈[0,1] to index the relative position between the two slices (t=0 corresponds to slice 1 and t=1 to slice 2). We rely on the two observed omics slices to obtain two different types of prior information on the unseen 3D volume between them: spatial communities and cell-type prototypes. As described in Step 1’s Preprocessing, community annotations are obtained by applying Banksy (14). Cell-type prototypes are obtained as the per-cluster average expression of Leiden clusters of the omics features.

We then train a community-specific, cluster-guided flow model that learns joint state trajectories (spatial coordinates, cell features, and neighborhood-feature context) between the matched regions of two slices. The velocity of the flow model is parameterized by a graph convolutional network (GCN). Together, these components enable controlled generation of cellular state trajectories conditioned on the prior information while preserving smooth interpolation between matched regions.

Concretely, the building block defines a procedure

BB:𝒟1,𝒟2⟼𝒟*(t):t∈(0,1), (1)

where, for k∈{1,2}, 𝒟k comprises the post-preprocessing feature matrix X(k), the post-alignment coordinates S(k), and the spatial-community and cell-type annotations from preprocessing; each output virtual slice 𝒟*(t) comprises a feature matrix X*(t) and coordinates S*(t), formed as the union of the matched-region trajectories generated by the flow model and the unmatched-region samples generated by the bin-level birth-death process.

Implementation details (initial matching and partitioning, cell state encoding, flow training, generative sampling, and the bin-level birth-death process for unmatched regions) are deferred to the later subsection titled “The Two-Slice Building Block: Components and Training”.

Step 3: Tissue Loss Restoration.

For each damaged slice k with damage mask ℳk and anchor pair k-,k+from Step 2 where s3k-<s3(k)<s3k+, not necessarily immediate neighbors), we restore the cells inside ℳk by evaluating the building block Eq. (1) between the two anchors. The building block here is trained on the anchor pair (𝒟k-,𝒟k+), separately from the adjacent-interval instances used in Step 4.

Flow-Based Virtual Cell Generation

Concretely, we evaluate BB𝒟k-,𝒟k+ at the proportional depth

t*=s3(k)-s3k-s3k+-s3k-,

and set 𝒟k*:=𝒟*t*; cells of 𝒟k* inside ℳk are the restoration candidates. The restored slice k then comprises the observed cells outside ℳk together with these restoration candidates. The candidate z-coordinates are rescaled to slice k’s level s3(k) via the interval-specific rescale formula of Step 4 applied to the anchor interval (k-,k+).

By resolving all damaged slices, i.e., first restoring missing features (Step 1), then detecting (Step 2) and reconstructing (Step 3) missing spatial regions, we obtain a sequence of complete, structurally contiguous slices on which the cross-slice 3D-Omics-Flow interpolation (Step 4) can operate without topological distortion.

Step 4: Pairwise Generation and Cross-Interval Assembly.

Step 4 instantiates the building block Eq. (1) on each adjacent slice pair, fitting the matched-region flow model and the unmatched-region birth–death process to generate intermediate cell states; predictions from adjacent intervals are then stitched together at the observed slice levels to form a single 3D volume. See the later subsection titled “The Two-Slice Building Block: Components and Training” for full details. The in-plane coordinates (s1,s2) are returned to their original scale by inverting the standardization used in pre-processing.

Generalization to Multiple Slices

For K ordered slices 𝒟1,…,𝒟K stacked along the vertical direction so that s3(1)<⋯<s3(K), the building block Eq. (1) is applied pairwise on each adjacent interval [k-1,k] with its own depth parameter t∈(0,1) anchored at the two endpoint slices, and a step count Tk proportional to the estimated number of cell layers in the interval. The interval-specific vertical rescale

s3k-1,k(t)=ts3k-s3k-1+s3k-1,t∈[0,1],

maps the depth parameter to physical z-coordinates. Predictions from different intervals meet at the observed slices {s3(k)}k=2K-1; at these vertical levels we retain the observed cells and discard any generated ones to avoid duplication. The post-flow calibration of Step 5 is then applied once globally to the assembled stack.

Step 5: Post-Flow Calibration.

We calibrate the 3D coordinates produced by the building block Eq. (1) (assembled in Step 4) by aligning them to all observed cell locations (both on the observed omics slices and in an auxiliary form described below) with a 3D cubic B-spline free-form deformation (FFD), yielding calibrated coordinates for downstream visualization and analysis. The auxiliary cell-location information takes one of two forms: (i) additional 2D sections with in-plane locations obtained, e.g., from H&E segmentation, each assigned a vertical coordinate s3 from its relative position to the observed omics slices; or (ii) a 3D volume of cell locations spanning the region between adjacent observed omics slices. The FFD is fitted once globally on the assembled stack.

Coordinate Rescale

For the FFD description below, we use s=s1,s2,s3 to denote the 3D coordinates of cells, where the in-plane (s1,s2) rescaling and the depth-parameter mapping t↦s3 are as described in Step 4 above (when K=2, the depth-parameter mapping reduces to linear interpolation between s3(1) and s3(2)).

Free-Form Deformation Using Cubic B-Splines

A regular 3D control lattice P with M control points per axis covers the assembled stack, with grid spacings

ξ1=d1M-1,ξ2=d2M-1,ξ3=d3M-1,

where dl=sl,max-sl,min are the axiswise ranges. The lattice is padded by three control points at each end of each axis to support cubic interpolation at boundaries. Each point s is mapped to fractional offsets u1,u2,u3∈[0,1)3 and lattice indices (β1,β2,β3) via

β1=s1-s1,minξ1,u1=s1-s1,minξ1-β1

(analogously for β2,u2 and β3,u3).

With cubic basis functions

B0(u)=(1-u)36,B1(u)=3u3-6u2+46,
B2(u)=-3u3+3u2+3u+16,B3(u)=u36,

for each source point si, the deformed position is

si′=∑l1=03∑l2=03∑l3=03Bl1ui,1Bl2ui,2Bl3ui,3×Pβi,1+l1,βi,2+l2,βi,3+l3+Δβi,1+l1,βi,2+l2,βi,3+l3,

where Δ is the array of learnable control-point displacements.

Training Objective

We optimize the FFD by minimizing a boundary-weighted Chamfer loss over the control-point displacements Δ. Let si′i=1Nsrc and sj*j=1Ntgt denote the transformed and target coordinates, respectively. The loss is

ℒ=1Nsrc∑i=1Nsrcwiminjsi′-sj*2+1Ntgt∑j=1Ntgtwj*minisj*-si′2,

where wi and wj* are boundary-proximity weights that assign higher importance to cells near the tissue boundary. Each cell’s weight is computed from its distance d to the nearest tissue boundary via an inverse power law on distance, then min-max rescaled to 1,κw:

w=1+κw-1wraw-wminwmax-wmin,wraw=1d+εwαw,

where κw>0 controls the maximum up-weighting of boundary cells relative to interior cells (default κw=10),εw>0 prevents singularity at the boundary (default εw=1, in the original spatial units), and αw>0 governs the decay rate (default αw=1). The formula is applied separately to source and target weights, with wmin and wmax being the minimum and maximum of wraw within each side. Both source and target weights are normalized so that ∑iwi=Nsrc and ∑jwj*=Ntgt, ensuring that the two Chamfer terms remain on comparable scales. For 2D-section input, the segmented cells on each section provide the targets sj* at their measured s1,s2 and the section’s assigned s3, and in addition to the boundary weighting, we up-weight wi for source points near each section’s s3 level; for 3D-volume input, all observed positions are used uniformly as targets. We use Adam with learning rate 0.05 for 100 iterations on a control lattice with M=5 control points per axis.

The Two-Slice Building Block: Components and Training.

Throughout this subsection, si(k)∈R2 refers to the post-alignment, z-scored coordinates from Step 1’s Preprocessing; the inverse standardization is applied at the end of the assembly step (Step 4). We use local slice indices k∈{1,2} for the two input slices of a single building-block invocation Eq. (1). These correspond to the anchor pair k-,k+in Step 3 and to an adjacent pair (k-1,k) in Step 4. The slice tuples 𝒟1,𝒟2 and the building-block input/output are as introduced in the Interlude of the previous subsection.

Initial Matching and Partitioning

We start by identifying matched cell pairs across two spatial omics slices via an existing matching method (e.g., SLAT (15)). This approach pairs cells across the two slices by jointly leveraging their expression profiles and spatial coordinates. Taking SLAT as a concrete example, in addition to yielding matched cell pairs, it outputs embedding vectors of cells (distinct from the CAST graph embedding X(k) used as the cell features in the flow model below). Hence, we can compute similarity scores among cells within and between slices based on their embeddings.

Formally, let dij=si(1)-sj(2) denote the Euclidean distance between the spatial locations of a candidate pair (i,j), with i on slice 1 and j on slice 2, and let cosij denote the corresponding cosine similarity of their SLAT embeddings. The matched pairs are filtered based on two thresholds: dij≤τd and cosij≥τs, where thresholds τd and τs correspond respectively to the 0.95-quantile of spatial distances and the 0.05-quantile of embedding similarities among all matched pairs outputted by SLAT. Cells that cannot be paired across the two slices, or paired cells that fail filtering, are classified as “unmatched cells”, while cells in matched pairs that pass filtering are classified as “matched cells”. After labeling all cells, we partition the cells of 𝒟1 and 𝒟2 into matched and unmatched subsets: for k=1,2,

𝒟kmat=X(k,mat),S(k,mat),
𝒟kunmat=X(k,unmat),S(k,unmat).

The community and cluster annotations from Step 1 travel with each cell when 𝒟k is partitioned; we suppress them in the tuple notation for brevity. Within the matched subsets, we further re-index cells so that the i-th matched cell on slice 1 is paired with the i-th matched cell on slice 2.

The interpolation between the matched subsets 𝒟1mat and 𝒟2mat is modeled using the prior-informed flow model, whose representation, training, and prediction we describe next. The interpolation between the unmatched subsets 𝒟1unmat and 𝒟2unmat is modeled using the bin-level birth–death process described later in this subsection.

Cell State Encoding

The training data for the flow model are cells in the matched regions of the two slices, with si(k,mat)∈R2 and xi(k,mat)∈Rp denoting the coordinate and feature vectors for cell i in slice k. In the rest of the description, we drop “mat” in the superscript for notational simplicity. For cell i from slice k in the training set, we identify its 20 spatial nearest neighbors from the same slice and define the neighborhood feature as the mean of their features (excluding the cell itself), x˜i(k)∈Rp. We then define its cell state as

zi(k)=si(k);xi(k);x˜i(k)∈R2+2p.

More generally, at depth t∈[0,1], we define the state vector analogously,

z(t)=[s(t);x(t);x˜(t)]∈R2+2p,

where s(t)∈R2,x(t)∈Rp, and x˜(t)∈Rp denote, respectively, spatial coordinates, cell features, and neighborhood features at depth t.

Conceptually, the trajectory zi(t) tracks the transition of matched pair i across t∈[0,1], with zi(0)=zi(1) and zi(1)=zi(2). At any intermediate t∈(0,1), zi(t)=si(t);xi(t);x˜i(t) describes a hypothetical cell at depth t, with spatial location si(t), feature vector xi(t), and neighborhood feature x˜i(t). Ideally, all cells along the trajectory should be biologically related, and transitions between consecutive states should respect the structure of the underlying tissue and its biological condition. These principles guide the trajectory modeling that follows.

Flow Modeling of Cell State Transition Trajectories

We adapt Rectified Flow (16) and Guided Flow (17) to model smooth state transitions along t∈[0,1] between the two end slices. We model these transitions by the following ordinary differential equation (ODE) with boundary conditions:

dz(t)dt=vz(t),t,cz(2), (2)
z(0)=z(1),z(1)=z(2). (3)

Here, z(1) and z(2) are the observed states at t=0 and t=1, respectively, defining the boundary conditions of the ODE. In addition, cz(2) is the Leiden cluster label of the slice-2 endpoint cell, providing a soft target for where the transition process ends. Throughout, c is the cell’s cluster label: a Leiden cluster from Step 1’s Preprocessing by default, or expert cell-type annotation when provided. The cluster centroids used later inherit the same convention. Although the boundary condition z(1)=z(2) fully specifies the endpoint, conditioning on c regularizes the intermediate trajectory by encouraging it to follow a velocity field consistent with the target cluster, yielding smoother and more biologically plausible interpolations at t∈(0,1). The velocity dz(t)dt decomposes into three components:

dz(t)dt=ds(t)dt;dx(t)dt;dx˜(t)dt=vs;vx;vx˜.

We regard equations Eq. (2)–Eq. (3) as an overarching model for all such trajectories. To learn the velocity function from data, we need to (i) parametrize it in a way that respects tissue structure and cell-type differences, and (ii) identify pairs of endpoints zi(0),zi(1) of realized trajectories.

We regularize velocity estimation to respect tissue structure and cell-type differences in two ways. First, by regarding different spatial communities as surrogates for different tissue structures, we require all realized trajectories between matched regions to stay within the same spatial community for all t∈[0,1]. Second, we let the velocity function vary across spatial communities and across distinct cell types within each community. Below, we describe how we identify trajectory endpoints and parameterize the velocity function.

Within-Spatial-Community Training Pair Curation

We refer to the observed cell states at the endpoints of a trajectory as a training pair. As we require all trajectories between the matched regions to stay within the same spatial community, each pair of endpoints must share a spatial community label. To identify training pairs, we first fix a spatial community q∈1,…,mq and perform linear-sum assignment between the matched cells of community q on slices 1 and 2, using the following squared distance. For cell i on slice 1 and cell j on slice 2, the squared distance is

dcombined,ij2=wfdfeature,ij2+wdddensity,ij2+1-wf-wddspatial,ij2.

(with default weights wf=0.01 and wd=0.01) where

dfeature,ij2=xi(1)-xj(2)2,
ddensity,ij2=di(1)-dj(2)2,
dspatial,ij2=si(1)-sj(2)2,

and di(k)∈Rmc stacks per-cluster cell counts within a fixed spatial radius of si(k), where the radius is set to one tenth of the smaller of the two per-axis coordinate standard deviations on slice k. If cell type annotations are not available, we use Leiden cluster labels of the omics features instead.

In practice, the two observed slices may not contain the same number of cells in a given spatial community in the matched regions. To address this, we apply the following augmentation to balance cell counts. Let nk,q denote the number of cells in the matched region of slice k that belong to spatial community q. Suppose n1,q>n2,q. We then sample n1,q-n2,q cells with replacement from the n2,q cells on slice 2. For each randomly selected cell, we apply an independent spatial coordinate perturbation by an εaug sampled from a bivariate 𝓃0,σnoise2I2 distribution. Here, σnoise≈σloc/10 and σloc is the per-axis standard deviation of spatial coordinates of the matched subsets. If n2,q>n1,q, we apply the foregoing procedure with the roles of the two slices switched. After augmentation, we have n1,q=n2,q=nq, and linear-sum assignment on the augmented data outputs nq training pairs.

A Spatial-Community-Specific Graph Convolutional Network Parametrization of Velocity

To allow the velocity function to differ across spatial communities, we adopt spatial-community-specific parameterization. Within each community, we parametrize a community-specific velocity function vq via a graph convolutional network (GCN) shared across all trajectories whose endpoints are curated training pairs. Fix a spatial community q and obtain the graph structure 𝒢q=𝒱q,ℰq from all matched cells in community q on slice 1 as follows. Each cell forms a node in 𝒢q and there is an edge between two different cells if and only if they are mutual neighbors within a spatial radius (set to the median distance to the 30th nearest neighbor) and mutual κf-nearest neighbors in feature space, with κf=30 by default (distinct from Step 1’s κ, which sets the within-slice spatial graph). At each node, the input is (z,t,c), where c∈1,…,mc is the Leiden cluster label (mc= total number of Leiden clusters), encoded as a one-hot vector in Rmc for input to the GCN. Note that the endpoint cluster label c stays unchanged along each trajectory. The input has four components: spatial coordinates s concatenated with t, cell features x, neighborhood features x˜, and cluster label c. Each is first mapped through a separate fully-connected encoder to a 256-dimensional hidden representation. The four representations are concatenated and passed through a fully-connected layer with output dimension 256, then two graph convolution layers (256→256→2p+2), all with hyperbolic tangent activation. We write the foregoing parametrization as

vqzi(t),t,ci:i∈nq=GCN𝒢q,zi(t),t,cii∈nq;θq.

Here, nq is the number of training pairs curated for spatial community q, and θq collects the weight matrices used at different layers of the GCN; θq alone constitutes the spatial-community-specific trainable velocity parameters.

Prior-Informed Training Objective

Within a spatial community q, we train the GCN-based flow model by minimizing a composite loss function ℒflow:

ℒflow=ℒOLS+αℒvelo, (4)

where α is a hyperparameter weighting the two terms (default α=1.0).

The ordinary least squares (OLS) loss is:

ℒOLS=∫01Ez(1),z(2),cΔz-vqzt,t,c2dt,

where Δz=z(2)-z(1), and zt=(1-t)z(1)+tz(2) denotes the linear interpolation between the two boundary states (distinct from the ODE trajectory z(t)). Here, the expectation is over curated training pairs in community q. This OLS loss corresponds to the standard rectified flow objective, which encourages straight-line interpolation paths between boundary states, so that the learned ODE produces approximately linear trajectories between slices.

The velocity regularization loss ℒvelo encourages feature velocities to align with cell-type transition directions. Specifically, we perform a new Leiden clustering of cell features on all cells spatial community q on the two slices. Let the centroids of the resulting Leiden clusters be x¯1,…,x¯mcq∈Rp. We define the following set of canonical cell feature transition directions:

𝒫=δhh=1mcqmcq-1=x¯h1-x¯h2∣h1≠h2∈1,…,mcq.

This set provides a reference for plausible velocity directions, and we define ℒvelo as:

ℒvelo=-∫01Ez(1),z(2),cϕvx,qzt,t,cdt.

where vx,q∈Rp denotes the feature-velocity component of vq, and

ϕvx,q:=maxδ∈𝒫vx,q,δvx,q‖δ‖,

where for any vectors a and b,⟨a,b⟩ denotes their inner product.

Other Training Details

During training, we apply condition dropout by randomly replacing c with a null symbol ∅ in each training pair with probability pdrop, as a regularizer that prevents over-reliance on the cluster label:

c˜∼cwithprobability1-pdrop,∅withprobabilitypdrop.

where ∅ is an all-zero vector in Rmc. By default, pdrop=0.1 for all communities. This dropout is applied only during training; at inference, we use c directly. We use the Adam optimizer to minimize ℒflow in Eq. (4), with learning rate 5 × 10−3 and 1000 training iterations per community; each iteration performs one Adam step on the gradient computed over all curated training pairs in the community.

Generative Sampling Algorithm

After training, we have learned a velocity function vq for each spatial community q. Within each spatial community q, given the cell state of the endpoint of each training pair on slice 1 and the cluster label of the paired endpoint on slice 2, we can now generate the unobserved trajectories for all curated training pairs by numerically integrating the velocity vq.

We adopt the Euler method to generate each trajectory iteratively:

z(t+Δt)=z(t)+vq(z(t),t,c)Δt,

where Δt=1/T, and T is the estimated number of cell layers between the two observed end slices, assuming each cell layer is approximately 10 μm thick. We denote each generated trajectory by zfwd(t):t∈(0,1). As t goes from 0 to 1, this trajectory moves from slice 1 to slice 2.

To place the two observed slices on equal footing, we swap the roles of z(1) and z(2) in model building and training and obtain another generated trajectory zbwd(t):t∈(0,1) that evolves in the backward direction; as t goes from 0 to 1, the backward trajectory moves from slice 2 to slice 1. The symmetric combination of both trajectories yields the final generated trajectory between each curated training pair:

zcombined(t)=zfwd(t)+zbwd(1-t)2.

To respect the original cell counts within each spatial community q, we apply the following thinning procedure to the combined trajectories. Let n1,q and n2,q denote the number of matched cells in community q on slices 1 and 2, respectively. At each generated time step t, the target count is nq(t)=(1-t)n1,q+tn2,q (rounded to the nearest integer). If n1,q≥n2,q (shrinking community), we group the combined trajectories by their endpoint on slice 2; among trajectories sharing the same endpoint, each is independently terminated with probability 1-nq(t)/nq(t-Δt) at step t, so that the expected surviving count matches nq(t). If n1,q<n2,q (expanding community), we reverse direction: group by endpoints on slice 1 and apply the analogous thinning from t=1 backward.

Repeating the foregoing generation across all mq spatial communities in the matched regions of the two observed slices, we have now predicted the unseen volume sandwiched between the matched regions.

Bin-Level Birth–Death Process for Unmatched Regions

For the unmatched subsets 𝒟1unmat and 𝒟2unmat on the two observed slices, we model the spatially varying cell population dynamics via a stochastic birth–death process with spatially smoothed, per-cluster rates inferred from observed cell count changes between the two slices.

Setup and Bin-Level Counts

We partition the spatial domain into bins of side length 50 μm, indexed by r. Let c index the Leiden cluster labels obtained from Step 1’s Preprocessing. For slice k∈{1,2}, define the bin–cluster count

Nr,c(k)=#{cellsinbinrwithclusterlabelconslicek}.

Let N(k)=[Nr,c(k)] denote the resulting matrix for slice k where each row corresponds to a bin and each column to a Leiden cluster label.

Birth–Death Rate Estimation

For each (r,c) we estimate per-capita birth and death rates (λr,cfwd,μr,cfwd) from N(1) to N(2) under a no-immigration constraint (i.e., neither rate can create cells in bins where Nr,c(1)=0). With a small εbd>0,

(λr,cfwd,μr,cfwd)={(logNr,c(2)+εbdNr,c(1)+εbd,0)(i)(0,logNr,c(1)+εbdNr,c(2)+εbd)(ii)(0,0)(iii)

with default εbd=10-5, where the three cases are

  1. Nr,c(1)>0,Nr,c(2)>Nr,c(1),

  2. Nr,c(1)>0,Nr,c(2)<Nr,c(1),

  3. otherwise (including Nr,c(1)=0).

Backward per-capita birth and death rates λr,cbwd,μr,cbwd are obtained by exchanging the roles of slice 1 and slice 2:

(λr,cbwd,μr,cbwd)={(logNr,c(1)+εbdNr,c(2)+εbd,0)(i')(0,logNr,c(2)+εbdNr,c(1)+εbd)(ii')(0,0)(iii')

where the three cases are

  1. (’) Nr,c(2)>0,Nr,c(1)>Nr,c(2),

  2. (’) Nr,c(2)>0,Nr,c(1)<Nr,c(2),

  3. (’) otherwise (including Nr,c(2)=0).

Spatial Smoothing of Rates

To stabilize rate estimates across neighboring spatial bins, we smooth both forward and backward per-capita rates over a bin-level κbin-nearest-neighbor graph. Let s¯rr=1R⊂R2 denote the bin centers (computed as the mean of cell coordinates within each bin). Construct a binary adjacency matrix W∈{0,1}R×R with Wrr′=1 if r′ is among the κbin nearest neighbors of r (excluding r) and Wrr′=0 otherwise (default κbin=4). Define the row-normalized adjacency matrix W~=D-1W with Drr=∑r′Wrr′. For a smoothing strength η∈[0,1] (default η=0.2) and each cluster label c, update the forward and backward birth-death rates by

λ⋅,cfwd←(1-η)λ⋅,cfwd+ηW~λ⋅,cfwd,
μ⋅,cfwd←(1-η)μ⋅,cfwd+ηW~μ⋅,cfwd,
λ⋅,cbwd←(1-η)λ⋅,cbwd+ηW~λ⋅,cbwd,
μ⋅,cbwd←(1-η)μ⋅,cbwd+ηW~μ⋅,cbwd.

This update is applied once.

For notational simplicity, unless otherwise stated, we use (λ,μ) to denote the smoothed birth and death rates hereafter.

Interpolation of Cell Counts within Bins

Given the smoothed birth–death rates (λr,c,μr,c), we first sample Nr,c(t), the bin-level cell count for cluster c in bin r at an intermediate time t. We discretize the time interval [0, 1] into T equal steps of length ∆t=1/T, where T is estimated from the number of cell layers between the two observed end slices. At each time step, we sample birth–death events as follows:

ΔBr,c∼Poissonλr,cNr,ctΔt,
ΔDr,c∼Poissonμr,cNr,ctΔt,

The population count is then updated at each step according to:

Nr,c(t+Δt)=maxNr,c(t)+ΔBr,c-ΔDr,c,0.

A single Poisson realization is drawn per direction at each step. Symmetry is restored by averaging the forward and backward trajectories defined below. For t∈[0,1], let Nfwd(t) be the evolution of N(1) to time t under forward rates as defined above. By switching the roles of the two slices and using backward rates, we define Nbwd(t) analogously. We form the final cell count interpolation as

Ncombined(t)=12Nfwd(t)+Nbwd(1-t),

with overrides in the following special cases: if Nr,c(1)=0 and Nr,c(2)>0, set Ncombined,r,c(t)=Nbwd,r,c(1-t); if Nr,c(2)=0 and Nr,c(1)>0, set Ncombined,r,c(t)=Nfwd,r,c(t).

Sampling Cell Coordinates and Features

For each t, given Ncombined(t) we sample cells from a reference pool 𝒟1unmat∪𝒟2unmat stratified by (r,c) with replacement. Specifically, we first partition the reference cells by bin r and cluster label c. Then, for each stratum (r,c), we draw exactly Nr,c(t) cell indices uniformly at random from that stratum, allowing repeats when Nr,c(t) exceeds the number of available reference cells in (r,c) (if a stratum is empty, no cells are drawn for it). For sampled cells we: (i) take feature vectors from the embedding X(k) used elsewhere in the pipeline and add small Gaussian noise (default standard deviation 10−3); (ii) perturb spatial coordinates by isotropic Gaussian noise of per-axis standard deviation σloc⋅t/10, where σloc is the smaller of the two per-axis coordinate standard deviations within the bin and t∈[0,1] is the depth parameter (so the noise grows linearly with depth). Combining the matched-region trajectories zcombined(t) with the unmatched-region samples at each t yields the virtual slice 𝒟*(t), comprising its feature matrix X*(t) and coordinates S*(t), which together realize the building-block mapping in Eq. (1).

Benchmark Design and Evaluation.

Train–Validation Split and Leakage Control

For each benchmarking experiment, the input slice stack is partitioned into training slices (used for matching, flow-model fitting, and bin-level rate estimation) and held-out validation slices (used only for evaluation). Per-dataset splits:

  • Fig. 1 (CyCIF Human Colorectal Cancer, natural damage). Three training slices: slice25 (z = 125 μm, intact anchor), slice39 (z = 195 μm, carrying natural tissue damage and a simulated E-cadherin dropout), and slice54 (z = 270μm, intact anchor). Two held-out validation slices: slice34 (z = 170 μm) and slice44 (z = 220 μm).

  • Fig. 2 (CyCIF Human Colorectal Cancer, combined damage). Eleven training slices spanning ~460 μm along z: slice14, slice20, slice25, slice34, slice44, slice54, slice64, slice74, slice84, slice97, slice106 at z = 70, 100, 125, 170, 220, 270, 320, 370, 420, 485, 530 μm, respectively. Three held-out validation slices: slice59 (z = 295 μm), slice78 (z = 390 μm), slice102 (z = 510 μm).

  • OpenST Human Lymph Node (Supplementary Fig. S5–S6). Five training slices: slice 2 (z = 58 μm, intact), slice 9 (z = 261 μm, damaged), slice 17 (z = 493 μm, damaged), slice 26 (z = 754 μm, intact), and slice 34 (z = 986 μm, intact); damage on slice 9 and slice 17 is spatial only (no feature dropout). Four held-out validation slices: slice 5 (z =145 μm), slice 11 (z =319 μm), slice 23 (z = 667 μm), and slice 28 (z = 812 μm).

  • INSIHGT Mouse Hypothalamus (Supplementary Fig. S2–S4). Ten evenly spaced training slices (slice1, slice9, slice17, slice25, slice33, slice41, slice49, slice57, slice65, slice73) spanning z = 12–732 μm, and nine midpoint validation slices (slice5, slice13, slice21, slice29, slice37, slice45, slice53, slice61, slice69). No damage is applied; the dataset is used to assess clean-input fidelity.

Validation cells are excluded from every stage of model fitting (alignment, matching, training). Competitor parity is enforced by construction: SpatialZ and the linear interpolation baseline are fitted on exactly the same training slices with identical preprocessing, and only then are predictions extracted at each validation z.

Synthetic Damage Simulation

Synthetic Damages are constructed by overlaying two perturbations onto training slices: marker dropout (setting one or more feature columns to NaN) and tissue loss (removing all cells inside a 2D mask). For Fig. 1 the tissue loss is not simulated — the validation target slice carries pre-existing natural damage, and only the marker dropout is synthetic.

(a). Marker dropout.

For Fig. 1, E-cadherin is set to NaN on slice39. For Fig. 2, Ki67 and α-SMA are jointly set to NaN on slice20, slice34, slice54, and slice74; E-cadherin is set to NaN on slice25, slice44, slice64, and slice84. OpenST Human Lymph Node and INSIHGT Mouse Hypothalamus receive no feature dropout. In every experiment dropout is applied to Y(k) before spatial alignment, biomarker restoration, and embedding.

(b). Tissue-loss masks.

On each damaged slice, cells whose (x,y) fall inside a fixed coordinate region are removed from Y(k) and S(k),raw. Tissue loss masks in Fig. 2 are: Group A = slice20 with x∈[5000,10000], y∈[10000,20000]; Group B = slice34 and slice44 with x spanning the full slice extent and y∈[16000,20000]; Group C = slice74 and slice84 with x∈[15000,25000], y∈[15000,20000]. Eleven training slices fall into three categories: intact (slice14, slice97, slice106), feature-dropout only (slice25, slice54, slice64), and combined damage carrying both spatial removal and feature dropout (slice20, slice34, slice44, slice74, slice84). For OpenST Human Lymph Node, x∈[2000,10000], y∈[4000,6000] is removed on slices 9 and 17. Damage simulation involves no random sampling, the damaged inputs are deterministic.

Benchmarking Methods: SpatialZ and Linear Interpolation Baseline.

We compare 3D-Omics-Flow with two competitors: the published method SpatialZ (5) and an in-house linear interpolation baseline. All methods are fit using the same training slices and evaluated at the same held-out validation z depths. Neither baseline includes tissue-loss detection or restoration.

(a). SpatialZ baseline.

Because SpatialZ does not accept missing features, marker dropout is first imputed using the corresponding feature mean computed across the training slices. We run SpatialZ’s Generate_multiple_slices routine using the training slices ordered by their z coordinates. SpatialZ generates virtual slices between each consecutive pair of anchor slices; the number of intermediate slices per pair is set to the estimated number of cell layers between the two anchors, computed using the same procedure as in 3D-Omics-Flow (the cell-layer count T defined in “Interpolation of Cell Counts within Bins”). Each virtual slice is assigned a linearly interpolated z coordinate between its two parent anchors. For each validation depth, we take the SpatialZ-generated slice whose interpolated z coordinate matches the target depth as the prediction.

(b). Linear interpolation baseline.

For each validation depth ztarget, we identify the two flanking training slices k and k+1, where zk<ztarget<zk+1, and compute

t=ztarget-zkzk+1-zk∈[0,1].

Cells across the two anchor slices are matched by spatial proximity, and each matched pair is linearly interpolated in both spatial coordinates and biomarker expression. Specifically, each matched pair (i,j) yields a virtual cell

s*=1-tsik+tsjk+1,
y*=1-tyik+tyjk+1,

where s denotes spatial location and y denotes the raw biomarker feature vector. As with SpatialZ, missing feature values caused by simulated marker dropout are mean-imputed from the training data, and no tissue-loss restoration is performed.

Reconstruction Quality Metrics (Fig. 1, CyCIF Human Colorectal Cancer small stack)

Quality of the validation-slice reconstruction is reported with three metrics, all computed on the in-plane (s1,s2) at the validation z depth and compared against the ground-truth slice.

(1). Cell-type-normalized L1 similarity (Fig. 1e).

At grid bin size b∈10,20,...,100μm, the validation slice is partitioned into square bins indexed by r. For each bin and cell type c∈{1,...,C}, let pˆr,c and pr,c* be the cell-type composition vectors in the reconstruction and ground truth, normalized so that ∑cpˆr,c=1 and ∑cpr,c*=1 within each nonempty bin (per-bin normalization across cell types). Let ℛ(b) denote the union of bins that are non-empty in either the reconstruction or the ground truth at bin size b (bins empty in both are dropped). The reported similarity is

S(b)=1-12ℛb∑r∈ℛb∑cpˆr,c-pr,c*∈[0,1],

which is higher when reconstruction and ground-truth compositions agree more closely. Fig. 1e plots S(b) averaged across the two validation slices.

(2). Feature cosine similarity (Fig. 1f).

Features are the raw biomarker columns shared between the reconstruction and the ground truth. Each marker is robust-scaled to [0, 1] across cells, after which the per-bin mean feature vector x¯r∈Rp is the column-wise mean of the scaled markers over cells in bin r. For each bin r∈ℛ(b) we compute the cosine similarity cos(xˆr,x¯r*), and report the bin-level mean

FC(b)=1|ℛ(b)|∑r∈ℛ(b)cosx¯ˆr,x¯r*.
(3). Per-marker MS-SSIM (Fig. 1g).

Each marker channel of the validation slice is rasterized to an n×n image whose pixel grid spans the joint (x,y) bounding box of the reconstruction and the ground truth, with per-pixel value equal to the mean expression of cells falling in that pixel; the default reported resolution is n=1024. Each rasterized marker is robust-scaled to [0, 1] (0.5%–99.5% percentile clip), lightly pre-smoothed with scipy.ndimage.gaussian_filter (σ=0.2pixels), and min–max normalized to [0, 1]. The score between reconstruction and ground truth is then computed with skimage.metrics.structural_similarity. Per-marker scores are averaged across the two validation slices; Fig. 1g reports the per-marker difference (3D-Omics-Flow) – (SpatialZ) in purple and (3D-Omics-Flow) – (Linear) in gray.

Tumor–Immune Invasive Margin Zone Analysis (Fig. 2, CyCIF Human Colorectal Cancer large stack).

To quantitatively interrogate the volumetric tumor microenvironment recovered by 3D-Omics-Flow on the CyCIF Human Colorectal Cancer dataset, we label the reconstructed volume into five biologically meaningful zones and profile cellular composition, marker expression, and tissue morphometry within each zone.

Zone Definition via Signed Distance Field

Tumor cells (Tumor/Epi., Ki67+, PDL1+) are voxelized at 25 μm to form a binary tumor mask, which is dilated by a 3 × 3 × 3 structuring element to close pixel-scale gaps. The signed distance field (SDF), computed by Euclidean distance transform on the dilated mask, satisfies SDF(s) < 0 inside the tumor and > 0 outside, in microns. Each cell is mapped to its enclosing voxel and assigned a zone label by its SDF and immune status:

  • Core tumor: SDF<-din (deep inside the tumor mass).

  • Margin tumor: -din≤SDF<0 (tumor cells at the invasive front).

  • Immune at margin: immune-lineage cells with -din≤SDF<dout.

  • Margin stroma: non-immune cells with 0≤SDF<dout.

  • Distal: all remaining cells.

Default thresholds are din=50μm and dout=100μm.

3D Spatial Architecture Metrics

Panels k–o of Fig. 2 quantify the recovered 3D tumor microenvironment using the invasive-margin zones and signed distance field defined in “Tumor–Immune Invasive Margin Zone Analysis” above.

(1). Mean zone expression (Fig. 2k).

Each marker is z-scored across all cells of the 3D-Omics-Flow 3D reconstruction; for each (zone, marker) pair, the mean z-score over cells in that zone is reported. Four invasive-margin zones (core tumor, margin tumor, immune at margin, margin stroma) are shown.

(2). Nearest tumor→immune distance (Fig. 2l).

A margin-tumor cell is a cell with margin_zone = margin_tumor, and a margin-immune cell is a cell with margin_zone = immune_at_margin. For each margin-tumor cell we record the 3D Euclidean distance (in μm) to its nearest margin-immune cell, and pool the distances across all margin-tumor cells to form the reported distribution.

(3). Voxel-level marker correlation (Fig. 2m).

The 3D-Omics-Flow reconstruction is voxelized on the same 25 μm 3D grid used for zone definition (spacing 25 μm in x,y,z). For each occupied voxel and each marker, the per-voxel value is the mean expression over the cells whose (x,y,z) falls in that voxel; voxels with zero cells are dropped (not zero-filled). For every pair of markers we compute the Pearson correlation across the common set of occupied voxels.

(4). Tumor–immune contact z-score (Fig. 2n).

The analysis is restricted to interface cells (margin_zone ∈ {margin_tumor, immune_at_margin}). For each tumor subtype T and immune subtype I, the observed contact value is the mean number of interface immune cells of subtype I within 60 μm of an interface tumor cell of subtype T,

NT,Iobs=meant∈T#i∈I:st-si≤60μm.

A null distribution is generated by shuffling immune-subtype labels among interface immune cells while holding all other quantities fixed; nperm=200 permutations are drawn, and the reported score is

zT,I=NT,Iobs-ENT,Inull/sdNT,Inull.
(5). Marker-vs-distance gradient (Fig. 2o).

To recover continuous variation along the tumor-normal direction (which discrete zone means collapse), we use the signed distance field as a signed micron coordinate assigning each cell a unique position relative to the tumor boundary (negative inside, positive outside). The SDF axis is partitioned into uniform 10 μm bins spanning [−100, +200] μm, covering the dense tumor core, the invasive margin, and the proximal stroma; we plot the bin-averaged expression of every marker against this axis, with SDF = 0 marking the tumor boundary.

2D vs. 3D Margin-vs-Core Analysis (Supplementary Fig. S7)

To assess whether 3D reconstruction improves the recovery of biological signal, we first label zones of two reference, 2D sparse training stack before reconstruction and 3D-Omics-Flow reconstruction dense bulk. In both settings, zone labels were then transferred to held-out validation slices (slice59, slice78, and slice102) by nearest-neighbor lookup. Specifically, for each validation cell, we identified the closest labeled reference cell in Euclidean space using only spatial coordinates and assigned the corresponding zone label. This procedure uses only reference coordinates, reference labels, and validation coordinates; validation biomarker measurements are not used and therefore cannot leak into the zone assignment. For downstream analysis, we compared core_tumor and margin_tumor cells in the validation slices. For each marker in the panel {Ki67, α-SMA, Ecadherin, PD1, PDL1, CD3, CD20, CD68, Keratin, CDX2, PCNA, NaKATPase, LaminABC}, we applied Welch’s two-sided t-test using scipy.stats.ttest_ind followed by the Holm–Bonferroni adjustment for multiple testing using statsmodels.stats.multitest.multipletests. We also computed the log2 fold change of the group means, log2x‾margin/x‾core. The resulting test significance and effect size define the volcano plot in Supplementary Fig. S7b, with the dashed reference line indicating padjusted=0.05.

3D Cell–Cell Communication and Marker Domain Analysis (Supplementary Fig. S4, INSIHGT Mouse Hypothalamus).

On the INSIHGT Mouse Hypothalamus dataset, we assess two aspects of biological fidelity that per-slice 2D metrics cannot evaluate: preservation of spatially co-localized ligand–receptor signaling and preservation of spatially coherent multi-marker domains. Both analyses operate on the full 3D-Omics-Flow-reconstructed 3D volume and compare against the ground-truth 3D dataset.

Cell–Cell Communication Score

To probe whether ligand–receptor co-localization is preserved in 3D, we curate twelve biologically motivated marker pairs spanning GABAergic, cholinergic, catecholaminergic, neuropeptidergic, glial, and neuronal-structural axes (e.g., GABA–GABRG2, TH–DBH, SST–NPY, GFAP–AIF1, TUBB3–MAP2, Orexin A–HTR3A); scoring each pair in both directions yields 24 directed ligand–receptor tests. For each cell i we build a 3D radius-neighbor graph at r=60μm on cell coordinates, rownormalize its adjacency matrix, and compute the per-cell interaction score

CCCi(L,R)=Li⋅R‾neighbors(i),

the product of the cell’s own ligand expression and the mean receptor expression among its 3D neighbors — a juxtacrine/paracrine co-expression signal that depends on true 3D adjacency rather than within-slice 2D proximity. Per-cell scores are computed independently for ground-truth and 3D-Omics-Flow reconstructions and compared as overlaid histograms.

Marker Domain Analysis

To test whether spatially coherent 3D domains of marker co-expression are preserved, the 25 markers are grouped into six biologically curated functional sets: GABAergic (GABA, GABRG2, PVALB, CALB1, CALB2, SST, VIP, NPY), cholinergic (CHAT), catecholaminergic (TH, DBH), glial (GFAP, CNP1, AIF1), neuronal-structural (TUBB3, MAP2, RBFOX3, RBFOX2), and neuropeptide (Orexin A, Galanin, GLP1, HTR3A). Within each dataset every marker is z-score standardized; for each cell and group we then take the per-cell domain score to be the mean z-score across that group, a composite that captures coordinated activity of a functional axis while suppressing single-marker noise. Per-cell domain score distributions are compared group by group between ground-truth and 3D-Omics-Flow reconstructions, reading out whether the reconstruction preserves prevalence and dynamic range for each functional program in 3D.

Supplementary Material

Supplement 1
media-1.pdf (41.4MB, pdf)

ACKNOWLEDGEMENTS

We thank Dr. HeiMing Lai for providing us with 3D volumetric images before they became available. The work is supported by the Parker Institute for Cancer Immunotherapy (G.P.N.), and the Rachford and Carlota A. Harris Endowed Professorship (G.P.N.), the NIH HuBMAP consortium grant U54HG012723 (Y.T., M.S., and G.P.N), PROMISE PROJECT- 2025–27 SCI-W grant (Y.T., G.P.N.), the NIH HTAN grant U01CA294514 (Z.M.), and the NSF grant DMS-2245575 (Z.Z. and Z.M.). This article reflects the authors’ views and should not be construed as representing the views or policies of the NIH or other institutions that provided funding.

Footnotes

CONFLICT OF INTERESTS

M.S. is a cofounder and scientific advisor of Xthera, Exposomics, Filtricine, Fodsel, iollo, InVu Health, January AI, Marble Therapeutics, Mirvie, Next Thought AI, Orange Street Ventures, Personalis, Qbio, RTHM, SensOmics. M.S. is a scientific advisor of Abbratech, Applied Cognition, Enovone, Jupiter Therapeutics, M3 Helium, Mitrix, Neuvivo, Onza, Sigil Biosciences, Captify Inc, WndrHLTH, Yuvan Research, Ovul, Erudio and Lyten. M.S. is an investor and scientific advisor of R42 and Swaza. M.S. is an investor in Repair Biotechnologies.

Code and data availability

3D-Omics-Flow and related tutorials are freely available to the public at GitHub: https://github.com/MaBLD/3DOmicsFlow/. Data and Code to regenerate the main and supplementary figures are also deposited to GitHub.

Reference

  • 1.Almagro Jorge, Messal Hendrik A, Elosegui-Artola Alberto, Jacco van Rheenen, and Axel Behrens. Tissue architecture in tumor initiation and progression. Trends in cancer, 8(6):494–505, jun 2022. doi: 10.1016/j.trecan.2022.02.007. [DOI] [PubMed] [Google Scholar]
  • 2.Yapp Clarence, Nirmal Ajit J, Zhou Felix, Wong Alex Y H, Tefft Juliann B, Lu Yi Daniel, Shang Zhiguo, Maliga Zoltan, Llopis Paula Montero, Murphy George F, Lian Christine G, Danuser Gaudenz, Santagata Sandro, and Sorger Peter K. Highly multiplexed 3D profiling of cell states and immune niches in human tumors. Nature Methods, 22(10):2180–2193, oct 2025. doi: 10.1038/s41592-025-02824-x. [DOI] [PMC free article] [PubMed] [Google Scholar]
  • 3.Bressan Dario, Battistoni Giorgia, and Hannon Gregory J. The dawn of spatial omics. Science, 381(6657):eabq4964, aug 2023. ISSN 0036–8075. doi: 10.1126/science.abq4964. [DOI] [PMC free article] [PubMed] [Google Scholar]
  • 4.Qin Ritian, Ma Jiacheng, He Fuchu, et al. In-depth and high-throughput spatial proteomics for whole-tissue slice profiling by deep learning-facilitated sparse sampling strategy. Cell Discovery, 11:21, 2025. doi: 10.1038/s41421-024-00764-y. [DOI] [PMC free article] [PubMed] [Google Scholar]
  • 5.Lin Senlin, Wang Zhikang, Cui Yan, et al. Bridging the dimensional gap from planar spatial transcriptomics to 3d cell atlases. Nature Methods, 2025. doi: 10.1038/s41592-025-02969-9. [DOI] [PubMed] [Google Scholar]
  • 6.Joshi Saurabh, Forjaz André, Kyu Sang Han Yu Shen, Queiroga Vasco, Florin A Selaru Marie Gérard, Xenes Daniel, Matelsky Jordan, Wester Brock, Barrutia Arrate Muñoz, Kiemen Ashley L, Wu Pei-Hsun, and Wirtz Denis. InterpolAI: deep learning-based optical flow interpolation and restoration of biomedical images for improved 3D tissue mapping. Nature Methods, may 2025. doi: 10.1038/s41592-025-02712-4. [DOI] [PMC free article] [PubMed] [Google Scholar]
  • 7.Lin Jia-Ren, Wang Shu, Coy Shannon, Chen Yu-An, Yapp Clarence, Tyler Madison, Nariya Maulik K, Heiser Cody N, Lau Ken S, Santagata Sandro, and Sorger Peter K. Multiplexed 3D atlas of state transitions and immune interaction in colorectal cancer. Cell, 186(2):363–381.e19, jan 2023. ISSN 00928674. doi: 10.1016/j.cell.2022.12.028. [DOI] [PMC free article] [PubMed] [Google Scholar]
  • 8.Yau Chun Ngo, Hung Jacky Tin Shing, Campbell Robert A A, Wong Thomas Chun Yip, Huang Bei, Wong Ben Tin Yan, Chow Nick King Ngai, Zhang Lichun, Tsoi Eldric Pui Lam, Tan Yuqi, Li Joshua Jing Xi, Wing Yun Kwok, and Lai Hei Ming. INSIHGT: an accessible multi-scale, multi-modal 3D spatial biology platform. Nature Communications, 15(1):10888, dec 2024. doi: 10.1038/s41467-024-55248-0. [DOI] [PMC free article] [PubMed] [Google Scholar]
  • 9.Schott Marie, León-Periñán Daniel, Splendiani Elena, Strenger Leon, Licha Jan Robin, Pentimalli Tancredi Massimo, Schallenberg Simon, Alles Jonathan, Tagliaferro Sarah Samut, Boltengagen Anastasiya, Ehrig Sebastian, Abbiati Stefano, Dommerich Steffen, Pagani Massimiliano, Ferretti Elisabetta, Macino Giuseppe, Karaiskos Nikos, and Rajewsky Nikolaus. Open-ST: High-resolution spatial transcriptomics in 3D. Cell, 187(15):3953–3972.e26, jul 2024. doi: 10.1016/j.cell.2024.05.055. [DOI] [PubMed] [Google Scholar]
  • 10.[2502.17761] AI-driven 3D spatial transcriptomics. [Google Scholar]
  • 11.Túrós Demeter, Gladiseva Lollija, Botos Marius, He Chang, Barut G. Tuba, Veiga Inês Berenguer, Ebert Nadine, Bonnin Anne, Chanfon Astrid, Grau-Roma Llorenç, Valdeolivas Alberto, Rottenberg Sven, Thiel Volker, and Moreira Etori Aguiar. Deep learning-based 3D spatial transcriptomics with x-pression. BioRxiv, mar 2025. doi: 10.1101/2025.03.21.644627. [DOI] [Google Scholar]
  • 12.Clifton Kalen, Anant Manjari, Aihara Gohta, Atta Lyla, Aimiuwu Osagie K, Kebschull Justus M, Miller Michael I, Tward Daniel, and Fan Jean. STalign: Alignment of spatial transcriptomics data using diffeomorphic metric mapping. Nature Communications, 14(1):8123, dec 2023. doi: 10.1038/s41467-023-43915-7. [DOI] [PMC free article] [PubMed] [Google Scholar]
  • 13.Tang Zefang, Luo Shuchen, Zeng Hu, Huang Jiahao, Sui Xin, Wu Morgan, and Wang Xiao. Search and match across spatial omics samples at single-cell resolution. Nature Methods, 21(10):1818–1829, 2024. [DOI] [PMC free article] [PubMed] [Google Scholar]
  • 14.Singhal Vipul, Chou Nigel, Lee Joseph, Yue Yifei, Liu Jinyue, Chock Wan Kee, Lin Li, Chang YunChing, Teo Erica Mei Ling, Aow Jonathan, et al. Banksy unifies cell typing and tissue domain segmentation for scalable spatial omics data analysis. Nature genetics, 56 (3):431–441, 2024. [DOI] [PMC free article] [PubMed] [Google Scholar]
  • 15.Xia Chen-Rui, Cao Zhi-Jie, Tu Xin-Ming, and Gao Ge. Spatial-linked alignment tool (slat) for aligning heterogenous slices. Nature Communications, 14(1):7236, 2023. [DOI] [PMC free article] [PubMed] [Google Scholar]
  • 16.Liu Xingchao, Gong Chengyue, and Liu Qiang. Flow straight and fast: Learning to generate and transfer data with rectified flow. arXiv, 2022. doi: 10.48550/arxiv.2209.03003. [DOI] [Google Scholar]
  • 17.Zheng Qinqing, Le Matt, Shaul Neta, Lipman Yaron, Grover Aditya, and Chen Ricky TQ. Guided flows for generative modeling and decision making. arXiv preprint arXiv:2311.13443, 2023. [Google Scholar]

Associated Data

This section collects any data citations, data availability statements, or supplementary materials included in this article.

Supplementary Materials

Supplement 1
media-1.pdf (41.4MB, pdf)

Data Availability Statement

3D-Omics-Flow and related tutorials are freely available to the public at GitHub: https://github.com/MaBLD/3DOmicsFlow/. Data and Code to regenerate the main and supplementary figures are also deposited to GitHub.


Articles from bioRxiv are provided here courtesy of Cold Spring Harbor Laboratory Preprints

RESOURCES