Rank Constrained Similarity Learning (RCSL)

RCSL is an R toolkit for single-cell clustering and trajectory analysis using single-cell RNA-seq data.


This package can be installed through devtools in R:

$ R
> library("devtools")
> devtools::install_github("QinglinMei/RCSL")

Now RCSL can be loaded in R:

> library(RCSL)


The input of RCSL is a normalized data matrix with columns being cells and rows being genes in log(CPM+1), log(RPKM+1), log(TPM+1) or log(FPKM+1) format; or a data file in RDS format.


We provide an example script to run RCSL in demo_RCSL.R.

The nine functions of RCSL can also be run independently.

Function | Description -----------|---------- GenesFilter | Perform genes filtering. SimS | Calculate the initial similarity matrix S. NeigRepresent | Calculate the neighbor representation of cells. EstClusters | Estimate the optimal number of clusters C. BDSM | Learn the block-diagonal matrix B. PlotMST | Construct MST based on clustering results from RCSL. PlotPseudoTime | Infer the pseudo-temporal ordering of cells. getLineage | Infer the lineage based on the clustering results and the starting cell. PlotTrajectory | Plot the developmental trajectory based on the clustering results and the starting cell.


Load packages:

> library(RCSL)
> library(SingleCellExperiment)
> library(ggplot2)
> library(igraph)

Load Yan dataset:

> origData <- yan
> data <- logcounts(origData+1)
> label <- origData$cell_type1
> DataName <- "Yan"

Generating clustering result:

> res_RCSL <- RCSL(data)

Calculating Adjusted Rand Index:

> ARI_RCSL <- igraph::compare(res_RCSL$y, label, method = "adjusted.rand")

Trajectory analysis:

> label <- origData$cell_type1
> res_TrajecAnalysis <- TrajectoryAnalysis(res_RCSL$gfData, res_RCSL$drData, res_RCSL$S,
                                         clustRes = res_RCSL$y, TrueLabel = label, startPoint = 1,
                                         dataName = DataName)

Display the plot of constructed MST:

> res_TrajecAnalysis$MSTPlot

Display the plot of the pseudo-temporal ordering

> res_TrajecAnalysis$PseudoTimePlot

Display the plot of the inferred developmental trajectory

> res_TrajecAnalysis$TrajectoryPlot

A vignette in R Notebook format is available here

Required annotations for RCSL

1) The RCSL package requires three extra packages: namely the SingleCellExperiment package (see to read the SingleCellExperiment object, the igraph package (see to find the strongest connected components and the ggplot2 package (see to plot the developmental trajectory and MST. 2) The data for the demonstration purpose in the directory Data was from This data is stored in both RDS and text formats.


Please feel free to contact us if you have problems running our tool at

Try the RCSL package in your browser

Any scripts or data that you put into this service are public.

RCSL documentation built on April 19, 2021, 9:06 a.m.