单细胞分析踩坑实录:DotPlot()之'RNA' assay还是 'integrated' assay?

前段时间在生信技能树单细胞学习小分队分享单细胞文章复现,一不小心就踩了一个坑……记录在这儿和大家一起分享。
背景

主要是想复现2020年发表在 PNAS 上的一篇题为 Single-nucleus transcriptome analysis reveals dysregulation of angiogenic endothelial cells and neuroprotective glia in Alzheimer’s disease 的阿尔兹海默症单细胞研究文章。


这篇文章提供的数据包括12个阿尔兹海默症患者和9个正常人的脑组织单细胞数据,已经全部上传到GEO数据库中,大家可以自行“食用”。
因为原始数据有接近 170,000 个细胞,数据量太大,所以我每个样本随机抽取了1000个细胞进行了我的分析(总共 21,000 个细胞)。

从创建SeuratObject到降维聚类

这部分不赘述了,直接贴我的代码:

library(Seurat)
library(clustree)
library(dplyr)
library(tidyverse)

dir.create(path = 'Figure')
sample = list.files("../sample")
sample
path = "../sample"

sce_list <- lapply(sample, function(sub_sample){
  folder = file.path(path, sub_sample)
  print(Sys.time())
  print(folder)
  sce <- CreateSeuratObject(counts = Read10X(folder), project = sub_sample)
  return(sce)
})

names(sce_list) = sample

#save as sce_list.rds
saveRDS(sce_list, file = 'sce_list.rds')
#sce_list <- readRDS("~/Single_cell/SCS_learning/biotrain_01/biotrain/sce_list.rds")


#randomly sample some cells
set.seed(1234)
sce = lapply(sce_list, function(x){
  sub = x[ ,sample(ncol(x), 1000)]
  return(sub)
})


#calculate the percentage of mt genes
for (i in 1:length(sample)){
  sce[[i]][['percent.mt']] <- PercentageFeatureSet(object = sce[[i]], pattern = "^MT-")
}

plotfeatures <- c('nFeature_RNA', 'nCount_RNA', 'percent.mt')
group = "orig.ident"


#quality control (save as sce_qc)
sce_qc <- lapply(sce, function(sce_sample){
  sub = subset(sce_sample, subset = nFeature_RNA>200 & nCount_RNA<20000 & percent.mt<20)
  return(sub)
})

#check final results after quality control
num_cells_after = 0
for (i in 1:length(sample)){
  num_cells_after = num_cells_after + ncol(sce_qc[[i]])
}
num_cells_after
#18950 cells

#integrate sample (batch effect) with CCA+MNN 
sce_obj <- lapply(sce_qc, function(x){
  x = NormalizeData(x)
  x = FindVariableFeatures(x, selection.method = "vst", nfeatures = 1000)
})
features <- SelectIntegrationFeatures(object.list = sce_obj)
anchors <- FindIntegrationAnchors(object.list = sce_obj, anchor.features = features, dims = 1:20)
sce_combine <- IntegrateData(anchorset = anchors, dims = 1:20)


#Run the standard workflow for visualization and clustering
DefaultAssay(sce_combine) <- 'integrated'

sce_combine <- sce_combine %>% 
  ScaleData() %>% 
  RunPCA(npcs = 50)

#evaluate pcs to use
sce_combine <- JackStraw(sce_combine, reduction = 'pca', dims = 30) %>% 
  ScoreJackStraw(dims = 1:30)
JackStrawPlot(sce_combine, dims = 1:30, reduction = 'pca')

sce_combine <- FindNeighbors(sce_combine, dims = 1:20)
for (res in seq(0.1, 1.2, by = 0.1)){
  sce_combine <- FindClusters(sce_combine, resolution = res)
}
sce_combine <- RunUMAP(sce_combine, dims = 1:20)

DimPlot(sce_combine, reduction = 'umap', group.by = "integrated_snn_res.0.6")

clustree(sce_combine@meta.data, prefix = 'integrated_snn_res.')

#resolution=0.6
sel_res = 'integrated_snn_res.0.6'
sce_combine_res0.6 = SetIdent(sce_combine, value = sel_res)

这里的质控标准等参数都和原文保持一致。

细胞类型注释

根据原文的细胞基因marker,我想利用 气泡图 来可视化不同的 cluster 中不同基因marker的表达情况,这是我第一次的代码:

#cell type annotation
genes_to_check = c('AQP4', 'ADGRV1', 'GPC5', 'RYR3', #astrocytes
                   'CLDN5', 'ABCB1', 'EBF1', #endothelial 
                   'CAMK2A', 'CBLN2', 'LDB2', #excitatory
                   'GAD1', 'LHFPL3', 'PCDH15', #inhibitory
                   'C3', 'LRMDA', 'DOCK8', #microglia
                   'MBP', 'PLP1', 'ST18' #oligodendrocytes
                   )
DotPlot(sce_combine_res0.6, 
        features = genes_to_check, 
        assay = 'integrated', 
        cols = c('lightgrey', 'red')) + 
  theme(axis.text.x = element_text(angle = 45, hjust = 0.5, vjust = 0.5))

出图:


这个图……就有种一言难尽的感觉,给人第一感觉就是很脏,有的cluster你很难给出一个确切的答案它到底高表达哪种细胞的marker。
好了,问题出在哪儿呢?注意我在 DotPlot() 中用的 assay'integrated' ,使用的是整合后的数据来绘制的气泡图,经过Jimmy老师指点,再用没有整合的数据来画这个图是什么效果呢?

DotPlot(sce_combine_res0.6, 
        features = genes_to_check, 
        assay = 'RNA', #注意,差别在这儿
        cols = c('lightgrey', 'red')) + 
  theme(axis.text.x = element_text(angle = 45, hjust = 0.5, vjust = 0.5))


嗯?这不是干净多了?哪些细胞高表达哪些基因marker一目了然!那问题来了,该信哪个,为什么会有不同?

其实对于这个问题,Seurat 已经给出了答案,链接为:https://github.com/satijalab/seurat/issues/1717,总结起来就是:

当我们在利用marker基因对细胞类型进行探索性注释的时候,用 'RNA' assay,也就是没有经过整合的数据。
当我们在进行除细胞类型鉴定以外的其它操作,诸如聚类和聚类结果细胞的可视化等,就使用'integrated' assay。

感觉就是,和基因有关的操作都建议在 'RNA' assay 上完成(可能有点激进~~),如果你想具体了解一下怎么做,可以看看这个链接:https://satijalab.org/seurat/archive/v3.0/immune_alignment.html,毕竟 satijalab 将其描述为:Our best example!!!

最后,为了让种种原因不能上GitHub的小伙伴了也看到 satijalab 对于这个问题的解答,这里也贴上截图(可下载原图查看哦)~

satijalab..jpg

当然最后也贴上我聚类注释出来的结果和原文的比较啦:


我做的

文章做的

感觉效果还可以哈?感谢 Jimmy 老师和大家的指点咯~~~

快过年了,就祝大家新年快乐吧~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容