简介
plot1cell
包提供了多种单细胞数据可视化的高级功能,可以基于Seurat分析结果对象直接进行可视化绘图,主要依赖于Seurat V4,circlize,ComplexHeatmap和simplifyEnrichment等R包。
R包安装
使用devtools包进行安装:
devtools::install_github("TheHumphreysLab/plot1cell")
## or the development version, devtools::install_github("HaojiaWu/plot1cell")
## You might need to install the dependencies below if they are not available in your R library.
bioc.packages <- c("biomaRt","GenomeInfoDb","EnsDb.Hsapiens.v86","GEOquery","simplifyEnrichment","ComplexHeatmap")
BiocManager::install(bioc.packages)
dev.packages <- c("chris-mcginnis-ucsf/DoubletFinder","Novartis/hdf5r","mojaveazure/loomR")
devtools::install_github(dev.packages)
## If you can't get the hdf5r package installed, please see the fix here:
## https://github.com/hhoeflin/hdf5r/issues/94
示例数据演示
plot1cell包可以基于Seurat的细胞聚类分群注释结果进行后续的可视化绘图,在本教程中,我们使用 Kirita et al, PNAS 2020文章中的Seurat结果对象进行可视化演示,该数据已上传至GEO (GSE139107)数据库中。
library(plot1cell)
iri.integrated <- Install.example()
# Please note that this Seurat object is just for demo purpose and
# is not exactly the same as the one we published on PNAS.
# It takes about 2 hours to run in a linux server with 500GB RAM and 32 CPU cores.
# You can skip this step and use your own Seurat object instead
1. 绘制细胞聚类分群和注释信息的圈图
在plot1cell包中,我们可以使用plot_circlize
函数绘制细胞聚类分群的圈图,使用add_track
函数添加不同细胞注释信息。
###Check and see the meta data info on your Seurat object
colnames(iri.integrated@meta.data)
###Prepare data for ploting 准备圈图数据
circ_data <- prepare_circlize_data(iri.integrated, scale = 0.8 )
set.seed(1234)
# 设置细胞分群信息的颜色
cluster_colors<-rand_color(length(levels(iri.integrated)))
group_colors<-rand_color(length(names(table(iri.integrated$Group))))
rep_colors<-rand_color(length(names(table(iri.integrated$orig.ident))))
###plot and save figures
# 绘制细胞分群圈图
png(filename = 'circlize_plot.png', width = 6, height = 6,units = 'in', res = 300)
plot_circlize(circ_data,do.label = T, pt.size = 0.01, col.use = cluster_colors ,bg.color = 'white', kde2d.n = 200, repel = T, label.cex = 0.6)
# 添加细胞群注释信息
add_track(circ_data, group = "Group", colors = group_colors, track_num = 2) ## can change it to one of the columns in the meta data of your seurat object
add_track(circ_data, group = "orig.ident",colors = rep_colors, track_num = 3) ## can change it to one of the columns in the meta data of your seurat object
dev.off()
image.png
2. 绘制基因表达气泡图
使用complex_dotplot_single
函数绘制单个基因在不同细胞分组中的基因表达气泡图。
png(filename = 'dotplot_single.png', width = 4, height = 6,units = 'in', res = 100)
complex_dotplot_single(seu_obj = iri.integrated, feature = "Havcr1",groups = "Group")
dev.off()
image.png
设置groups
和splitby
参数对多个分组信息进行分割绘图。
iri.integrated@meta.data$Phase<-plyr::mapvalues(iri.integrated@meta.data$Group, from = levels(iri.integrated@meta.data$Group), to = c("Healthy",rep("Injury",3), rep("Recovery",2)))
iri.integrated@meta.data$Phase<-as.character(iri.integrated@meta.data$Phase)
png(filename = 'dotplot_single_split.png', width = 4, height = 6,units = 'in', res = 100)
complex_dotplot_single(iri.integrated, feature = "Havcr1",groups = "Group",splitby = "Phase")
dev.off()
image.png
png(filename = 'dotplot_more_groups.png', width = 8, height = 6,units = 'in', res = 100)
complex_dotplot_single(seu_obj = iri.integrated, feature = "Havcr1",groups= c("Group","Replicates"))
dev.off()
image.png
iri.integrated@meta.data$ReplicateID<-plyr::mapvalues(iri.integrated@meta.data$Replicates, from = names(table((iri.integrated@meta.data$Replicates))), to = c(rep("Rep1",3),rep("Rep2",3), rep("Rep3",1)))
iri.integrated@meta.data$ReplicateID<-as.character(iri.integrated@meta.data$ReplicateID)
png(filename = 'dotplot_more_groups_split.png', width = 9, height = 6,units = 'in', res = 200)
complex_dotplot_single(seu_obj = iri.integrated, feature = "Havcr1",groups= c("Group","Replicates"), splitby = c("Phase","ReplicateID"))
dev.off()
### In this example, "Phase" is a splitby factor for "Group" and "ReplicateID" is a splitby factor for "Replicates".
image.png
使用complex_dotplot_multiple
函数绘制多个基因的表达气泡图。
png(filename = 'dotplot_multiple.png', width = 10, height = 4,units = 'in', res = 300)
complex_dotplot_multiple(seu_obj = iri.integrated, features = c("Slc34a1","Slc7a13","Havcr1","Krt20","Vcam1"),group = "Group", celltypes = c("PTS1" , "PTS2" , "PTS3" , "NewPT1" , "NewPT2"))
dev.off()
image.png
3. 绘制基因表达小提琴图
使用complex_vlnplot_single
函数绘单个基因在不同细胞分组中的基因表达小提琴图。
png(filename = 'vlnplot_single.png', width = 4, height = 6,units = 'in', res = 100)
complex_vlnplot_single(iri.integrated, feature = "Havcr1", groups = "Group",celltypes = c("PTS1" , "PTS2" , "PTS3" , "NewPT1" , "NewPT2"))
dev.off()
image.png
类似的,我们同样可以设置groups
和splitby
参数对多个分组信息进行分割绘图。
png(filename = 'vlnplot_single_split.png', width = 4, height = 6,units = 'in', res = 100)
complex_vlnplot_single(iri.integrated, feature = "Havcr1", groups = "Group",celltypes = c("PTS1" , "PTS2" , "PTS3" , "NewPT1" , "NewPT2"), splitby = "Phase")
dev.off()
image.png
png(filename = 'vlnplot_multiple.png', width = 6, height = 6,units = 'in', res = 100)
complex_vlnplot_single(iri.integrated, feature = "Havcr1", groups = c("Group","Replicates"),celltypes = c("PTS1" , "PTS2" , "PTS3" , "NewPT1" , "NewPT2"), font.size = 10)
dev.off()
image.png
png(filename = 'vlnplot_multiple_split.png', width = 7, height = 5,units = 'in', res = 200)
complex_vlnplot_single(iri.integrated, feature = "Havcr1", groups = c("Group","Replicates"),
celltypes = c("PTS1" , "PTS2" , "PTS3" , "NewPT1" , "NewPT2"),
font.size = 10, splitby = c("Phase","ReplicateID"), pt.size=0.05)
dev.off()
image.png
使用complex_vlnplot_multiple
函数绘制多个基因的表达小提琴图。
png(filename = 'vlnplot_multiple_genes.png', width = 6, height = 6,units = 'in', res = 300)
complex_vlnplot_multiple(iri.integrated, features = c("Havcr1", "Slc34a1", "Vcam1", "Krt20" , "Slc7a13", "Slc5a12"), celltypes = c("PTS1" , "PTS2" , "PTS3" , "NewPT1" , "NewPT2"), group = "Group", add.dot=T, pt.size=0.01, alpha=0.01, font.size = 10)
dev.off()
image.png
4. 绘制基因表达feature plot
使用complex_featureplot
函数绘制不同基因在不同细胞分组中的基因表达feature plot。
png(filename = 'data/geneplot_umap.png', width = 8, height = 6,units = 'in', res = 100)
complex_featureplot(iri.integrated, features = c("Havcr1", "Slc34a1", "Vcam1", "Krt20" , "Slc7a13"), group = "Group", select = c("Control","12hours","6weeks"), order = F)
dev.off()
image.png
5. 绘制差异基因表达热图
plot1cell包可以直接鉴定不同条件下细胞类型的差异表达基因,并基于ComplexHeatmap包绘制差异基因的表达热图。
iri.integrated$Group2<-plyr::mapvalues(iri.integrated$Group, from = c("Control", "4hours", "12hours", "2days", "14days" , "6weeks" ),
to = c("Ctrl","Hr4","Hr12","Day2", "Day14","Wk6"))
iri.integrated$Group2<-factor(iri.integrated$Group2, levels = c("Ctrl","Hr4","Hr12","Day2", "Day14","Wk6"))
png(filename = 'heatmap_group.png', width = 4, height = 8,units = 'in', res = 100)
complex_heatmap_unique(seu_obj = iri.integrated, celltype = "NewPT2", group = "Group2",gene_highlight = c("Slc22a28","Vcam1","Krt20","Havcr1"))
dev.off()
image.png
6. 绘制差异基因overlap的集合图
我们可以使用complex_upset_plot
函数绘制不同组细胞群间差异表达基因overlap的集合图。
png(filename = 'upset_plot.png', width = 8, height = 4,units = 'in', res = 300)
complex_upset_plot(iri.integrated, celltype = "NewPT2", group = "Group", min_size = 10, logfc=0.5)
dev.off()
image.png
7. 绘制细胞比例分布柱状图
我们可以使用plot_cell_fraction
函数绘制不同组细胞比例分布的柱状图。
png(filename = 'cell_fraction.png', width = 8, height = 4,units = 'in', res = 300)
plot_cell_fraction(iri.integrated, celltypes = c("PTS1" , "PTS2" , "PTS3" , "NewPT1" , "NewPT2"), groupby = "Group", show_replicate = T, rep_colname = "orig.ident")
dev.off()
image.png
8. 其他绘图功能
使用help()函数查看该包的其他高级绘图功能。
help(package = plot1cell)
引用
Please consider citing our paper if you find plot1cell
useful.
https://www.cell.com/cell-metabolism/fulltext/S1550-4131(22)00192-9
Cell Metab. 2022 Jul 5;34(7):1064-1078.e6.
Wu H, Gonzalez Villalobos R, Yao X, Reilly D, Chen T, Rankin M, Myshkin E, Breyer MD, Humphreys BD.
Mapping the single-cell transcriptomic response of murine diabetic kidney disease to therapies.
网友评论