单细胞RNA测序技术的快速发展为我们研究复杂生物系统提供了前所未有的机会。在海量的单细胞数据中,识别和可视化特征基因(marker genes)是理解细胞类型和功能的关键一步。气泡图(dot plot)作为一种直观且信息丰富的可视化方式,能同时展示基因表达水平和表达比例,是单细胞分析中的重要工具。本文将介绍如何使用scDotPlot包绘制精美的单细胞marker基因气泡图,帮助研究者更有效地展示和解读单细胞数据。
#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 对象以及数据框。
?scDotPlot
sce <- ZeiselBrainData()
sce <- sce |>
logNormCounts() |>
subset(x=_, , level2class != "(none)")
加载Zeisel脑组织单细胞数据集,对其进行对数归一化处理,然后筛选出所有具有明确细胞类型注释(level2class不为"none")的细胞。
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()
scoreMarkers
函数为每种细胞类型(level1class)识别标记基因map
函数对每个细胞类型:unlist2()
合并所有标记基因sce
对象的rowData
中,创建一个新的"Marker"列第二部分:绘制表达量点图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)
features
参数使用上面获取的标记基因group
参数使用level2class(细胞亚类型)作为x轴分组groupAnno
参数使用level1class(大类细胞类型)作为注释featureAnno
参数使用"Marker"列标记每个基因所属的细胞类型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分数标准化(scale = TRUE
)将每个基因的表达值转换为均值为0、标准差为1的标准分数。这有几个重要优势:
library(Seurat)
load("scRNA.Rdata")
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 # 设置字体大小
)
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测序数据可视化提供了强大而灵活的工具。相比传统可视化方法,它不仅能同时展示基因表达水平和检测比例,还支持层次聚类注释,让我们能更全面地理解不同细胞类型间的基因表达模式。希望这些方法和技巧能帮助各位研究者更好地展示自己的单细胞数据,发现生物学意义。如有任何问题或建议,欢迎在评论区交流讨论。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。