Skip to contents

Overview

The clustermole R package was developed to assist with identifying candidate cell type labels for single-cell RNA-seq (scRNA-seq) clusters. The package includes three primary features:

All three functions return tables that can be easily filtered, summarized, and used in other workflows.

The reference meta-database combines and cleans cell type markers from multiple sources. See database details for an overview of the contents and the curation process. Sources differ in their studies, tissues, curation methods, and selection criteria. A marker may identify a broad cell class, a subtype, or a cell state. Comparing results across sources can reveal both recurring candidates and alternative labels worth investigating that a single source may miss.

For examples of applications across species, tissues, and technologies, see publications using clustermole.

Setup

clustermole is available from CRAN.

install.packages("clustermole")

Load clustermole.

Cell type markers

You can use clustermole as a simple database and get a data frame of all cell type markers. The species argument selects human or mouse gene symbols. It does not restrict signatures to the selected species.

markers <- clustermole_markers(species = "hs")
markers
#> # A tibble: 521,262 × 8
#>    celltype_full         db    species organ celltype gene_origi…¹ gene  n_genes
#>    <chr>                 <chr> <chr>   <chr> <chr>    <chr>        <chr>   <int>
#>  1 (Pro-) Subiculum | H… ScTy… ""      Hipp… (Pro-) … ADAMTS2      ADAM…      10
#>  2 (Pro-) Subiculum | H… ScTy… ""      Hipp… (Pro-) … FN1          FN1        10
#>  3 (Pro-) Subiculum | H… ScTy… ""      Hipp… (Pro-) … KLHL1        KLHL1      10
#>  4 (Pro-) Subiculum | H… ScTy… ""      Hipp… (Pro-) … LIPM         LIPM       10
#>  5 (Pro-) Subiculum | H… ScTy… ""      Hipp… (Pro-) … NPSR1        NPSR1      10
#>  6 (Pro-) Subiculum | H… ScTy… ""      Hipp… (Pro-) … NTS          NTS        10
#>  7 (Pro-) Subiculum | H… ScTy… ""      Hipp… (Pro-) … RAB38        RAB38      10
#>  8 (Pro-) Subiculum | H… ScTy… ""      Hipp… (Pro-) … RXFP1        RXFP1      10
#>  9 (Pro-) Subiculum | H… ScTy… ""      Hipp… (Pro-) … STAC         STAC       10
#> 10 (Pro-) Subiculum | H… ScTy… ""      Hipp… (Pro-) … TLE4         TLE4       10
#> # ℹ 521,252 more rows
#> # ℹ abbreviated name: ¹​gene_original

The output data frame is in an R-friendly tidy/long format with one gene-to-signature mapping per row. Each row contains a gene and a cell type associated with it. The gene column is the gene symbol and the celltype_full column contains the full cell type string (cell type, organ/tissue, species, and source). The species column contains the source species which can differ from the selected gene symbol species.

Many tools that work with gene sets require input as a list. You can use split() to convert the data frame to a list using gene as the value and celltype_full as the grouping variable.

markers <- dplyr::distinct(markers, celltype_full, gene)
markers_list <- split(x = markers$gene, f = markers$celltype_full)

Cell types based on marker genes

If you have a vector of genes, such as cluster markers, you can compare them to known cell type markers to see if they overlap any of the known cell type markers (over-representation analysis).

my_overlaps <- clustermole_overlaps(genes = my_genes, species = "hs")

Cell types based on an expression matrix

If you have expression values, such as average expression for each cluster, you can perform cell type enrichment based on the full gene expression matrix (log-transformed CPM/TPM/FPKM values). The underlying enrichment method can be changed using the method parameter.

my_enrichment <- clustermole_enrichment(expr_mat = my_expr_mat, species = "hs")

Bioconductor packages GSVA, GSEABase, and singscore need to be installed to use clustermole_enrichment().

BiocManager::install(c("GSVA", "GSEABase", "singscore"))

See the bone marrow tutorial for examples based on a scRNA-seq dataset.