Skip to content
Trajectory inference for single-cell RNA-seq
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
R fix rd Dec 7, 2019
data-raw reuse dynutils::calculate_distance and dyndimred::dimred_landmark_mds Apr 17, 2019
inst ti_scorpius is currently only located in the dynwrap branch Sep 11, 2019
man fix rd Dec 7, 2019
tests Use `lmds` instead of `dyndimred`. Sep 8, 2019
vignettes regenerate vignettes Sep 7, 2019
.Rbuildignore do include the, but not the README.Rmd Jun 20, 2019
.gitignore Renormalise the original ginhoux data using dynnormaliser and rerun a… Jul 23, 2018
DESCRIPTION update version number Dec 7, 2019
README.Rmd update for r 3.6 news md Aug 7, 2019
SCORPIUS.Rproj fixed documentation, bug in extract_modules Sep 13, 2017
appveyor.yml extend author information, add appveyor.yml, update Rbuildignore Jun 20, 2018 update readme and news Aug 5, 2019
library.bib fixed a small bug in the contour code; updated README and vignette Jan 12, 2016


Build Status AppVeyor Build Status CRAN_Status_Badge Coverage Status

SCORPIUS an unsupervised approach for inferring linear developmental chronologies from single-cell RNA sequencing data. In comparison to similar approaches, it has three main advantages:

  • It accurately reconstructs linear dynamic processes. The performance was evaluated using a quantitative evaluation pipeline and ten single-cell RNA sequencing datasets.

  • It automatically identifies marker genes, speeding up knowledge discovery.

  • It is fully unsupervised. Prior knowledge of the relevant marker genes or cellular states of individual cells is not required.


  • See news(package = "SCORPIUS") for a full list of changes to the package.

  • A preprint is available on bioRxiv. Run citation("SCORPIUS") to obtain the corresponding citation information.

  • Check out our review on Trajectory Inference methods!

Installing SCORPIUS

You can install:

  • the latest released version from CRAN with

  • the latest development version from GitHub with

    devtools::install_github("rcannood/SCORPIUS", build_vignettes = TRUE)

If you encounter a bug, please file a minimal reproducible example on the issues page.


To get started, read the introductory example below, or read one of the vignettes containing more elaborate examples:

Introductory example

This section describes the main workflow of SCORPIUS without going in depth in the R code. For a more detailed explanation, see the vignettes listed below.

To start using SCORPIUS, simply write:


The ginhoux dataset (See Schlitzer et al. 2015) contains 248 dendritic cell progenitors in one of three cellular cellular states: MDP, CDP or PreDC. Note that this is a reduced version of the dataset, for packaging reasons. See ?ginhoux for more info.

expression <- ginhoux$expression
group_name <- ginhoux$sample_info$group_name

With the following code, SCORPIUS reduces the dimensionality of the dataset and provides a visual overview of the dataset. In this plot, cells that are similar in terms of expression values will be placed closer together than cells with dissimilar expression values.

space <- reduce_dimensionality(expression, "spearman")
draw_trajectory_plot(space, group_name, contour = TRUE)

To infer and visualise a trajectory through these cells, run:

traj <- infer_trajectory(space)
draw_trajectory_plot(space, group_name, traj$path, contour = TRUE)

To identify candidate marker genes, run:

# warning: setting num_permutations to 10 requires a long time (~30min) to run!
# set it to 0 and define a manual cutoff for the genes (e.g. top 200) for a much shorter execution time.
gimp <- gene_importances(
  num_permutations = 10, 
  num_threads = 8, 
  ntree = 10000,
  ntree_perm = 1000

To select the most important genes and scale its expression, run:

gimp$qvalue <- p.adjust(gimp$pvalue, "BH", length(gimp$pvalue))
gene_sel <- gimp$gene[gimp$qvalue < .05]
expr_sel <- scale_quantile(expression[,gene_sel])

To visualise the expression of the selected genes, use the draw_trajectory_heatmap function.

draw_trajectory_heatmap(expr_sel, traj$time, group_name)

Finally, these genes can also be grouped into modules as follows:

modules <- extract_modules(scale_quantile(expr_sel), traj$time, verbose = F)
draw_trajectory_heatmap(expr_sel, traj$time, group_name, modules)

Latest changes

Check out news(package = "SCORPIUS") or for a full list of changes.

Recent changes in SCORPIUS 1.0.5

Major change

  • Added a ti_scorpius() wrapper to SCORPIUS.

Minor change

  • Use RANN::nn2() instead of own nearest neighbour functions.

  • Remove deprecated functions.

  • Use lmds instead of dyndimred.

Recent changes in SCORPIUS 1.0.4 (07-08-2019)

Minor changes

  • Added extra customisation parameters to draw_trajectory_plot() and draw_trajectory_heatmap().


  • Fixed internal function check_numeric_matrix() such that it does not run for ages when applied to a large sparse matrix.

  • Minor improvement in infer_initial_trajectory() when calculating the distance from points to along candidate segments.


Schlitzer, Andreas, V Sivakamasundari, Jinmiao Chen, Hermi Rizal Bin Sumatoh, Jaring Schreuder, Josephine Lum, Benoit Malleret, et al. 2015. “Identification of cDC1- and cDC2-committed DC progenitors reveals early lineage priming at the common DC progenitor stage in the bone marrow.” Nature Immunology 16 (7): 718–26.

You can’t perform that action at this time.