RNA Velocity Geometry¶
FlowMap starts from a simple geometric view of RNA velocity. Each cell has a position in high-dimensional gene expression space and a velocity vector that points toward its predicted future expression state. A low-dimensional cell state embedding should preserve both pieces: where the cells are, and how they move.
FlowMap learns a smooth relationship between a low-dimensional cell state space and the high-dimensional gene expression space, then projects velocity vectors through this local geometry.¶
Two Spaces¶
Let the low-dimensional embedding coordinate of a cell be \(z \in \mathbb{R}^d\), and its gene expression vector be \(x \in \mathbb{R}^p\), where usually \(d \ll p\).
FlowMap treats the embedding as a cell state space and learns a smooth map
In words, the map \(f\) tells us how a point on the embedding corresponds to a point on the gene expression manifold.
The Spline Bridge¶
FlowMap represents \(f\) with a smooth spline fitted from embedded cell coordinates back to gene expression space:
Here, the control points \(c_k\) define smooth local basis functions, the weights \(w_k\) reconstruct gene expression, and the affine term \(Az + b\) captures broad linear structure. This gives a smooth surface over the embedding instead of treating cells as isolated points.
Projecting Velocity¶
RNA velocity is observed in gene expression space as \(v = dx/dt\). To draw that velocity on the embedding, FlowMap asks: which embedded velocity \(u = dz/dt\) best explains the observed high-dimensional velocity?
The local linear approximation is given by the Jacobian of the spline:
So the embedded velocity is obtained by projecting \(v\) onto the tangent space of the spline surface:
For a two-dimensional embedding, this becomes:
This is the key geometric step: FlowMap does not simply attach arrows to an embedding. It learns the local shape of the expression manifold and uses that shape to translate high-dimensional RNA velocity into cell state motion.