Here's code to generate a dot plot of marker genes, given an identity_dataframe. Perhaps add this function to cellpypes package?
Tsubsets_seurat = data.frame(
Th = malt$seurat_clusters %in% c(2, 5, 7),
Ttox=malt$seurat_clusters == 3
)
# The difference in purity is invisible in dot plots:
genes = c("CD4", "CD8B", "CD8A")
dot_plot(FetchData(malt, genes, slot="counts"),
malt$nCount_RNA,
Tsubsets_seurat)
# stuff to develop the function:
# obj = malt %>% pype_from_seurat()
# identity_dataframe = data.frame(Bcell=malt$seurat_clusters==0,
# Tcell=malt$seurat_clusters==7)
# counts = FetchData(malt, c("CD3E", "CD79B"), slot = "counts")
# totalUMI = malt$nCount_RNA
dot_plot <- function(counts, totalUMI, identity_dataframe, return_data=FALSE){
res =data.frame(
celltype = NULL,
gene = NULL,
percent_expressing = NULL,
average_expression = NULL
)
for(celltype in colnames(identity_dataframe)) {
for(i in 1:ncol(counts)) {
umi = counts[, i]
relevant <-identity_dataframe[,celltype]
res = rbind(res,
data.frame(
celltype = celltype,
gene = colnames(counts)[i],
percent_expressing = 100 * mean(umi[relevant] > 0),
average_expression = 1e4*mean(umi[relevant]/totalUMI[relevant])
))
}
}
plot <- res %>%
ggplot(aes(celltype, gene, size=percent_expressing, col=average_expression)) +
geom_point() +
scale_size_continuous(name = "Percent Expressed") +
viridis::scale_color_viridis(name="Average Expression") +
cowplot::theme_cowplot()
if(return_data) return(res)
return(plot)
}`
Here's code to generate a dot plot of marker genes, given an identity_dataframe. Perhaps add this function to cellpypes package?
Usage example:
Function code: