# CellRank - Probabilistic Fate Mapping using RNA Velocity¶

**CellRank** is a toolkit to uncover cellular dynamics based on scRNA-seq data with RNA velocity annotation,
see [Manno18] and [Bergen20]. In short, CellRank models cellular dynamics as a
Markov chain, where transition probabilities are computed based on **RNA velocity and transcriptomic similarity**,
taking into account **uncertainty in the velocities** and the stochastic nature of cell fate decisions.
The Markov chain is coarse-grained into a set of macrostates which represent initial and terminal states,
as well as transient intermediate states using Generalized Perron Cluster Cluster Analysis (G-PCCA) [GPCCA18],
implemented in the novel pyGPCCA package. For each transient cell, i.e. for each cell that’s not assigned to a
terminal state, we then compute its fate probability of it reaching any of the terminal states.
We show an example of such a fate map in the figure above, which has been computed using the data
of [Panc19].

CellRank scales to large cell numbers, is fully compatible with scanpy and `scvelo`_ and is easy to use. To get started, see our tutorial.

## Latest additions¶

### 1.2.0 2021-02-02¶

This release includes:

Bugfixes

Fix a bug when computing the Schur decomposition for reducible Markov chains (

*Schur vectors appear to not be D-orthogonal*). GPCCA requires the leading Schur vectors to be orthogonal w.r.t. a symmetric, positive definite matrix \(D\) PR 453.Fix not falling back to

`mode='monte_carlo'`

if no`jax`

is found when using`mode='stochastic'`

in`cellrank.tl.kernels.VelocityKernel.compute_transition_matrix()`

PR 472.Fix

`pandas`

`v1.0.1`

indexing error in`cellrank.tl.lineage_drivers()`

PR 475.Fix not correctly propagating colors during aggregation in

`cellrank.tl.Lineage`

PR 482.

Additions

Completely

**refactored the underlying code base of GPCCA**and set it up as it’s own package called pyGPCCA with documentation and an example. Going forwards, this will ensure that one of the “engines” of CellRank is also easy to maintain to extend. Further, this will make CellRank’s installation more convenient by not needing to vendorize additional dependencies PR 472.Add

`cellrank.pl.circular_projection()`

visualizing computed fate probabilities as done in [Velten17], see Plot circular embedding. PR 459.Allow legends not to be plotted by passing

`legend_loc="none"`

, as done in scVelo PR 470.

## CellRank’s key applications¶

compute initial & terminal as well as intermediate macrostates of your biological system

infer fate probabilities towards the terminal states for each individual cell

visualize gene expression trends along specific linegeages while accounting for the continuous nature of fate determination

identify potential driver genes for each identified cellular trajectory

## Why is it called “CellRank”?¶

CellRank **does not** rank cells, we gave the package this name because just like Google’s original PageRank
algorithm, it works with Markov chains to aggregate relationships between individual objects (cells vs. websites)
to learn about more global properties of the underlying dynamics (initial & terminal states and fate probabilities vs.
website relevance).