Calculates the per-cell overlap of previously calculated marker genes.
marker_overlap(
markers1,
markers2,
clustering1,
clustering2,
n = 25,
overlap_type = "jsi",
rank_by = "-p_val",
use_sign = TRUE
)
The first data frame of marker genes, must contain columns called 'gene' and 'cluster'.
The second data frame of marker genes, must contain columns called 'gene' and 'cluster'.
The first vector of cluster assignments.
The second vector of cluster assignments.
The number of top n markers (ranked by rank_by) to use when calculating the overlap.
The type of overlap to calculated: must be one of 'jsi' for Jaccard similarity index and 'intersect' for intersect size.
A character string giving the name of the column to rank marker genes by. Note the sign here: to rank by lowest p-value, preface the column name with a minus sign; to rank by highest value, where higher value indicates more discriminative genes (for example power in the ROC test), no sign is needed.
A logical: should the sign of markers match for overlap calculations? So a gene must be a positive or a negative marker in both clusters being compared. If TRUE, markers1 and markers2 must have a 'avg_logFC' or 'avg_log2FC' column, from which the sign of the DE will be extracted.
A vector of the marker gene overlap per cell.
suppressWarnings({
set.seed(1234)
library(Seurat)
data('pbmc_small')
# cluster with Louvain algorithm
pbmc_small = FindClusters(pbmc_small, resolution=0.8, verbose=FALSE)
# cluster with k-means
pbmc.pca = Embeddings(pbmc_small, 'pca')
pbmc_small@meta.data$kmeans_clusters = kmeans(pbmc.pca, centers=3)$cluster
# compare the markers
Idents(pbmc_small) = pbmc_small@meta.data$seurat_clusters
louvain.markers = FindAllMarkers(pbmc_small,
logfc.threshold=1,
test.use='t',
verbose=FALSE)
Idents(pbmc_small) = pbmc_small@meta.data$kmeans_clusters
kmeans.markers = FindAllMarkers(pbmc_small,
logfc.threshold=1,
test.use='t',
verbose=FALSE)
pbmc_small@meta.data$jsi = marker_overlap(louvain.markers, kmeans.markers,
pbmc_small@meta.data$seurat_clusters, pbmc_small@meta.data$kmeans_clusters)
# which cells have the same markers, regardless of clustering?
FeaturePlot(pbmc_small, 'jsi')
})
#> Attaching SeuratObject
#> Attaching sp