title: “Multiple.featuresplot” author: “Upasna Srivastava” date:
“2023-06-30” output: html_document —
library(Seurat)
library(ggplot2)
library(cowplot)
# set up list of canonical cell type markers
canonical_markers <- list(
'Astrocyte' = c('GFAP', 'AQP4', 'SLC1A2'),
'Pan-neuronal' = c('SNAP25', 'SYT1'),
'Excitatory Neuron' = c('SLC17A7', 'SATB2'),
'Inhibitory Neuron' = c('GAD1', 'GAD2'),
'Microglia' = c('CSF1R', 'CD74', 'P2RY12'),
'Oligodendrocyte' = c('MOBP', 'MBP', 'MOG'),
'Olig. Progenitor' = c('PDGFRA', 'CSPG4')
)
# plot heatmap:
library(viridis)
png('figures/basic_canonical_marker_heatmap.png', width=10, height=10, units='in', res=200)
DoHeatmap(seurat_obj, group.by ="seurat_clusters", features=as.character(unlist(canonical_markers))) # + scale_fill_gradientn(colors=viridis(256))
dev.off()
# create feature plots, cutoff expression values for the 98th and 99th percentile
plot_list <- FeaturePlot(
seurat_obj,
features=unlist(canonical_markers),
combine=FALSE, cols=viridis(256),
max.cutoff='q98'
)
# apply theme to each feature plot
for(i in 1:length(plot_list)){
plot_list[[i]] <- plot_list[[i]] + umap_theme + NoLegend()
}
png('figures/basic_canonical_marker_featurePlot.png', width=10, height=10, units='in', res=200)
CombinePlots(plot_list)
dev.off()
for(celltype in names(canonical_markers)){
print(celltype)
cur_features <- canonical_markers[[celltype]]
# plot distributions for marker genes:
p <- VlnPlot(
seurat_obj,
group.by='seurat_clusters',
features=cur_features,
pt.size = 0, ncol=1
)
png(paste0('figures/basic_canonical_marker_',celltype,'_vlnPlot.png'), width=10, height=3*length(cur_features), units='in', res=200)
print(p)
dev.off()
}
LS0tCm91dHB1dDoKICBodG1sX25vdGVib29rOiBkZWZhdWx0CiAgaHRtbF9kb2N1bWVudDogZGVmYXVsdAotLS0KCnRpdGxlOiAiTXVsdGlwbGUuZmVhdHVyZXNwbG90IgphdXRob3I6ICJVcGFzbmEgU3JpdmFzdGF2YSIKZGF0ZTogImByIFN5cy5EYXRlKClgIgpvdXRwdXQ6IGh0bWxfZG9jdW1lbnQKLS0tCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQpgYGAKCmBgYHtyfQpsaWJyYXJ5KFNldXJhdCkKbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KGNvd3Bsb3QpCiMgc2V0IHVwIGxpc3Qgb2YgY2Fub25pY2FsIGNlbGwgdHlwZSBtYXJrZXJzCmNhbm9uaWNhbF9tYXJrZXJzIDwtIGxpc3QoCiAgJ0FzdHJvY3l0ZScgPSBjKCdHRkFQJywgJ0FRUDQnLCAnU0xDMUEyJyksCiAgJ1Bhbi1uZXVyb25hbCcgPSBjKCdTTkFQMjUnLCAnU1lUMScpLAogICdFeGNpdGF0b3J5IE5ldXJvbicgPSBjKCdTTEMxN0E3JywgJ1NBVEIyJyksCiAgJ0luaGliaXRvcnkgTmV1cm9uJyA9IGMoJ0dBRDEnLCAnR0FEMicpLAogICdNaWNyb2dsaWEnID0gYygnQ1NGMVInLCAnQ0Q3NCcsICdQMlJZMTInKSwKICAnT2xpZ29kZW5kcm9jeXRlJyA9IGMoJ01PQlAnLCAnTUJQJywgJ01PRycpLAogICdPbGlnLiBQcm9nZW5pdG9yJyA9IGMoJ1BER0ZSQScsICdDU1BHNCcpCikKYGBgCgpgYGB7cn0KIyBwbG90IGhlYXRtYXA6CmxpYnJhcnkodmlyaWRpcykKcG5nKCdmaWd1cmVzL2Jhc2ljX2Nhbm9uaWNhbF9tYXJrZXJfaGVhdG1hcC5wbmcnLCB3aWR0aD0xMCwgaGVpZ2h0PTEwLCB1bml0cz0naW4nLCByZXM9MjAwKQpEb0hlYXRtYXAoc2V1cmF0X29iaiwgZ3JvdXAuYnkgPSJzZXVyYXRfY2x1c3RlcnMiLCBmZWF0dXJlcz1hcy5jaGFyYWN0ZXIodW5saXN0KGNhbm9uaWNhbF9tYXJrZXJzKSkpICMgKyBzY2FsZV9maWxsX2dyYWRpZW50bihjb2xvcnM9dmlyaWRpcygyNTYpKQpkZXYub2ZmKCkKCiMgY3JlYXRlIGZlYXR1cmUgcGxvdHMsIGN1dG9mZiBleHByZXNzaW9uIHZhbHVlcyBmb3IgdGhlIDk4dGggYW5kIDk5dGggcGVyY2VudGlsZQpwbG90X2xpc3QgPC0gRmVhdHVyZVBsb3QoCiAgc2V1cmF0X29iaiwKICBmZWF0dXJlcz11bmxpc3QoY2Fub25pY2FsX21hcmtlcnMpLAogIGNvbWJpbmU9RkFMU0UsIGNvbHM9dmlyaWRpcygyNTYpLAogIG1heC5jdXRvZmY9J3E5OCcKKQoKYGBgCgpgYGB7cn0KIyBhcHBseSB0aGVtZSB0byBlYWNoIGZlYXR1cmUgcGxvdApmb3IoaSBpbiAxOmxlbmd0aChwbG90X2xpc3QpKXsKICBwbG90X2xpc3RbW2ldXSA8LSBwbG90X2xpc3RbW2ldXSArIHVtYXBfdGhlbWUgKyBOb0xlZ2VuZCgpCn0KCnBuZygnZmlndXJlcy9iYXNpY19jYW5vbmljYWxfbWFya2VyX2ZlYXR1cmVQbG90LnBuZycsIHdpZHRoPTEwLCBoZWlnaHQ9MTAsIHVuaXRzPSdpbicsIHJlcz0yMDApCkNvbWJpbmVQbG90cyhwbG90X2xpc3QpCmRldi5vZmYoKQpmb3IoY2VsbHR5cGUgaW4gbmFtZXMoY2Fub25pY2FsX21hcmtlcnMpKXsKCiAgcHJpbnQoY2VsbHR5cGUpCiAgY3VyX2ZlYXR1cmVzIDwtIGNhbm9uaWNhbF9tYXJrZXJzW1tjZWxsdHlwZV1dCgogICMgcGxvdCBkaXN0cmlidXRpb25zIGZvciBtYXJrZXIgZ2VuZXM6CiAgcCA8LSBWbG5QbG90KAogICAgc2V1cmF0X29iaiwKICAgIGdyb3VwLmJ5PSdzZXVyYXRfY2x1c3RlcnMnLAogICAgZmVhdHVyZXM9Y3VyX2ZlYXR1cmVzLAogICAgcHQuc2l6ZSA9IDAsIG5jb2w9MQogICkKICBwbmcocGFzdGUwKCdmaWd1cmVzL2Jhc2ljX2Nhbm9uaWNhbF9tYXJrZXJfJyxjZWxsdHlwZSwnX3ZsblBsb3QucG5nJyksIHdpZHRoPTEwLCBoZWlnaHQ9MypsZW5ndGgoY3VyX2ZlYXR1cmVzKSwgdW5pdHM9J2luJywgcmVzPTIwMCkKICBwcmludChwKQogIGRldi5vZmYoKQoKfQpgYGAKCgo=