之前在公粽号发布了几个问题,接下来我会依次给出我的想法,仅供参考。有不同意见的话,欢迎给我发邮件讨论:huangsiyuan1001@163.com
问题
❝怎么去doublet?挑选出某一大类做小类降维聚类的时候,有人仍然会检查一下各种大类marker的表达情况,这一步是否有必要?
❞
1
最有效的方法还是从上游入手,控制细胞数以及优化测序之前的流程。
2
不过分析数据的人只能从分析的角度来看了。 一般我会「先用软件预测」,可以参考我之前写的一篇帖子:单细胞分析实录(4): doublet检测。
这里引出一个问题,去doublet是在哪一步进行:
-
跑完cellranger得到矩阵,去doublet,基本QC(基因数、UMI数等等)... -
跑完cellranger得到矩阵,基本QC(基因数、UMI数等等),去doublet...
两种应该差别不大。我一般是第一种,考虑到基本QC可能会来回换几次阈值,所以基本QC这一步应该相对靠后,省得再跑doublet这一步
软件一般我会用多个,「两个」软件同时报告为doublet的cellular barcode,我会挑出来去掉。
3
除此之外,我还会用一些经典的marker来找doublet。(这种方法也能用来注释细胞)
celltype_marker=c(
"Epcam",#上皮细胞 epithelial
"Pecam1","Cdh5",#内皮细胞 endothelial
"Pdgfra","Col1a1","Col3a1",#成纤维细胞 fibroblasts
"Fcgr1","Cd163","Aif1","Cd68",#髓系细胞 myeloid
"Ms4a1",#B细胞
"Cd3g","Cd3e",#T细胞
"Ncr1",#NK细胞
"Ptprc"#免疫细胞
)
VlnPlot(allseu,features = celltype_marker,pt.size = 0,ncol = 2)
类似这样,如果某群cluster表达了不太可能同时出现的gene,则有可能是doublet。当然也要凭借一些「经验」,比如成纤维的marker可能在内皮细胞中有「一定程度」的表达,CD4(一个基因)可能在髓系细胞中有「一定程度」的表达,这是可能的。但T细胞高表达EPCAM,我是不相信的。
4
还有一个经验之谈:用marker鉴定doublet的时候,被鉴定出来的doublet(这是前提
),可能单独聚出来成为一个小团,也有可能看上去像是连接某两个亚群的桥梁。
5
另外,上述都是针对大类clustering的描述,做小类的reclustering的时候,我一般不考虑去小类之间的doublet,一是因为很难区分,二是小类之间的doublet形成概率比大类doublet形成概率低很多。
6
还有一种情况(比较少见),是样本之间的doublet。这时,利用SNP可以比较精确地区分出sample1, sample2, 以及doublet(sample1+sample2)。
目前已经有一些工具可以从scRNA-seq数据中获取少量SNP信息,并达到上述目的,比如Souporcell(原文https://www.nature.com/articles/s41592-020-0820-1),准确性还可以。
但多数情况还是一个样本一测,这种思路可行性不大。
回到第2个小问题
❝挑选出某一大类做小类降维聚类的时候,有人仍然会检查一下各种大类marker的表达情况,这一步是否有必要?
❞
很有必要。在做reclustering这一步的时候,检查大类marker的表达,我经常会看到其他大类细胞(或者是这类细胞与其他大类细胞组成的doublet)乱入。之前没做过这一步的朋友,可以试试,会有惊喜(吓)。
这时最严谨的做法是把乱入的其他大类细胞放回它应该去的地方,单细胞聚类注释就是一个“分分合合”的过程,也是最耗时最繁琐的过程。
如果数量不多,直接去掉,影响也不大。
如果是这类细胞与其他大类细胞组成的doublet,直接去掉。