Abstract
A fundamental task in single-cell RNA-seq (scRNA-seq) analysis is the identification of transcriptionally distinct groups of cells. Numerous methods have been proposed for this problem, with a recent focus on methods for the cluster analysis of ultra-large scRNA-seq data sets produced by droplet-based sequencing technologies. Most existing methods rely on a sampling step to bridge the gap between algorithm scalability and volume of the data. Ignoring large parts of the data, however, often yields inaccurate groupings of cells and risks overlooking rare cell types. We propose method Specter that adopts and extends recent algorithmic advances in (fast) spectral clustering. In contrast to methods that cluster a (random) subsample of the data, we adopt the idea of landmarks that are used to create a sparse representation of the full data from which a spectral embedding can then be computed in linear time. We exploit Specter’s speed in a cluster ensemble scheme that achieves a substantial improvement in accuracy over existing methods and that is sensitive to rare cell types. Its linear time complexity allows Specter to scale to millions of cells and leads to fast computation times in practice. Furthermore, on CITE-seq data that simultaneously measures gene and protein marker expression we demonstrate that Specter is able to utilize multimodal omics measurements to resolve subtle transcriptomic differences between subpopulations of cells. Specter is open source and available at https://github.com/canzarlab/Specter.
Competing Interest Statement
The authors have declared no competing interest.
Footnotes
In this revision the benchmark was extended by 5 real data sets with ground truth labels that are based on cell phenotypes defined independently of scRNA-seq and 24 simulated data sets with varying characteristics and degree of difficulty. Specter's performance was compared to 9 state-of-the-art scRNA-seq clustering methods using metrics ARI, NMI, and homogeneity score. Additional experiments assessing rare cell type sensitivity, the impact of Specter's core algorithmic components, the dependence of Specter's runtime on data set size and algorithm parameters, and peak memory usage were performed.