admin管理员组

文章数量:1439998

使用scDotPlot包绘制单细胞超绝marker基因气泡图!

点击这里获取本教程的资料和示例数据

前言

单细胞RNA测序技术的快速发展为我们研究复杂生物系统提供了前所未有的机会。在海量的单细胞数据中,识别和可视化特征基因(marker genes)是理解细胞类型和功能的关键一步。气泡图(dot plot)作为一种直观且信息丰富的可视化方式,能同时展示基因表达水平和表达比例,是单细胞分析中的重要工具。本文将介绍如何使用scDotPlot包绘制精美的单细胞marker基因气泡图,帮助研究者更有效地展示和解读单细胞数据。

实战

R包安装

代码语言:r复制
#To install the development version directly from GitHub:
if(!requireNamespace("remotes",quietly=TRUE)){
  install.packages("remotes")
}

remotes::install_github("ben-laufer/scDotPlot")

`scDot适用于SingleCellExperiment 和 Seurat 对象以及数据框。

查看帮助文档

代码语言:r复制
?scDotPlot

SingleCellExperiment

加载数据集
代码语言:r复制
sce <- ZeiselBrainData()
sce <- sce |>
  logNormCounts() |>
  subset(x=_, , level2class != "(none)")

加载Zeisel脑组织单细胞数据集,对其进行对数归一化处理,然后筛选出所有具有明确细胞类型注释(level2class不为"none")的细胞。

获取特征基因
代码语言:r复制
library(scran)
library(purrr)
library(dplyr)
library(AnnotationDbi)

features <- sce |>
    scoreMarkers(sce$level1class) |>
    map(~ .x |>
            as.data.frame() |>
            arrange(desc(mean.AUC))|>
            dplyr::slice(1:6) |>
            rownames()) |>
    unlist2()
    
head(features)
# astrocytes_ependymal astrocytes_ependymal astrocytes_ependymal astrocytes_ependymal 
# "Clu"                "Mt1"                "Mt2"               "Gja1" 
# astrocytes_ependymal astrocytes_ependymal 
# "Aqp4"              "Prdx6" 
rowData(sce)$Marker <- features[match(rownames(sce), features)] |>
    names()
  1. 加载必要的R包
  2. 使用scoreMarkers函数为每种细胞类型(level1class)识别标记基因
  3. 通过map函数对每个细胞类型:
    • 将结果转换为数据框
    • 按照mean.AUC(曲线下面积)降序排列
    • 选取前6个最佳标记基因
    • 提取它们的行名(基因ID)
  4. 使用unlist2()合并所有标记基因
  5. 将这些标记基因添加到sce对象的rowData中,创建一个新的"Marker"列第二部分:绘制表达量点图
代码语言:r复制
library(scDotPlot)
library(ggsci)

sce |>
    scDotPlot(features = features,
              group = "level2class",
              groupAnno = "level1class",
              featureAnno = "Marker",
              groupLegends = FALSE,
              annoColors = list("level1class" = pal_d3()(7),
                                "Marker" = pal_d3()(7)),
              annoWidth = 0.02)
  1. 加载绘图相关的包
  2. 创建一个点图,其中:
    • features参数使用上面获取的标记基因
    • group参数使用level2class(细胞亚类型)作为x轴分组
    • groupAnno参数使用level1class(大类细胞类型)作为注释
    • featureAnno参数使用"Marker"列标记每个基因所属的细胞类型
    • 使用D3调色板为注释设置颜色
    • 设置注释宽度为0.02
Z分数标准化点图
代码语言:r复制
sce |>
    scDotPlot(scale = TRUE,     # 启用Z分数标准化
              features = features,   # 使用之前定义的标记基因
              group = "level2class",   # x轴按细胞亚类分组
              groupAnno = "level1class",   # 用细胞大类进行注释
              featureAnno = "Marker",   # 用标记基因所属类型注释
              groupLegends = FALSE,   # 不显示分组图例
              annoColors = list("level1class" = pal_d3()(7),   # 设置注释颜色
                                "Marker" = pal_d3()(7)),
              annoWidth = 0.02)   # 设置注释宽度
为什么使用Z分数标准化?

Z分数标准化(scale = TRUE)将每个基因的表达值转换为均值为0、标准差为1的标准分数。这有几个重要优势:

  1. 消除基因间的尺度差异:不同基因的表达量范围可能差异很大,标准化后可以在相同尺度上比较
  2. 突显相对变化:Z分数反映的是相对于平均水平的偏离程度,正值表示高于平均,负值表示低于平均
  3. 改善聚类效果:如代码注释所述,这种标准化能显著改善行(基因)的聚类结果,使相似表达模式的基因更容易被归为一组

Seurat

加载对象
代码语言:r复制
library(Seurat)
load("scRNA.Rdata")
绘制对象类似于SingleCellExperiment
代码语言:r复制
genes <- c("IL7R", "CD3G", "CD2", "ITM2A", "CD3D", 
           "LYZ", "AIF1", "RNASE1", "C1QB", "HLA-DRA", 
           "GNLY", "GZMB", "KLRD1", "KLRF1", "B3GNT7", 
           "MS4A1", "BANK1", "CD79A", "TNFRSF13C", "BCL11A", 
           "APOA2", "ALB", "APOA1", "AMBP", "APOH", "TTR", 
           "PECAM1", "CDH5", "SPARCL1", "STC1", "SPARC", "TM4SF1", "INSR", 
           "KRT18", "KRT19", "DEFB1", "CTSS", "EPCAM", "SOX4", 
           "JCHAIN", "TCF4", "TCL1A", 
           "IGLL1", "MZB1", "IGLL5", "SSR4", 
           "RGS5", "COL1A1", "ACTA2", "PDGFRB")
           
scDotPlot(scRNA,features = genes,
            group = "seurat_clusters", # 使用seurat分组作为x轴分组
            groupAnno = "celltype",    # 用细胞类型作为列注释
            scale = F,                  # 不使用Z分数标准化
            clusterColumns = T,         # 对列进行聚类
            clusterRows = F,           # 保持基因原有顺序,不聚类
            groupLegends = TRUE,           # 显示分组图例
            annoWidth = 0.05,              # 设置注释宽度
            fontSize = 10                  # 设置字体大小
          )
  
Zscore绘图
代码语言:r复制
  scDotPlot(scRNA,features = genes,
            group = "seurat_clusters",          
            groupAnno = "celltype",   
            scale = T,                  # 使用Z分数标准化
            clusterColumns = T,         # 对列进行聚类
            clusterRows = F,           # 保持基因原有顺序,不聚类
            groupLegends = TRUE,           # 显示分组图例
            annoWidth = 0.05,              # 设置注释宽度
            fontSize = 10                  # 设置字体大小
  )

结束语

通过本文的介绍,我们可以看到scDotPlot包为单细胞RNA测序数据可视化提供了强大而灵活的工具。相比传统可视化方法,它不仅能同时展示基因表达水平和检测比例,还支持层次聚类注释,让我们能更全面地理解不同细胞类型间的基因表达模式。希望这些方法和技巧能帮助各位研究者更好地展示自己的单细胞数据,发现生物学意义。如有任何问题或建议,欢迎在评论区交流讨论。

本文标签: 使用scDotPlot包绘制单细胞超绝marker基因气泡图!