美文网首页单细胞测序技术scRNA单细胞转录组
plot1cell:优雅的可视化你的单细胞数据

plot1cell:优雅的可视化你的单细胞数据

作者: Davey1220 | 来源:发表于2022-10-29 22:14 被阅读0次

    简介

    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

    设置groupssplitby参数对多个分组信息进行分割绘图。

    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

    类似的,我们同样可以设置groupssplitby参数对多个分组信息进行分割绘图。

    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.

    image.png

    相关文章

      网友评论

        本文标题:plot1cell:优雅的可视化你的单细胞数据

        本文链接:https://www.haomeiwen.com/subject/dttktdtx.html