单细胞分析常见问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单细胞分析常见问题相关的知识,希望对你有一定的参考价值。

参考技术A 前面写过一个单细胞聚类图形填充的脚本分享,发现小小技能并不能满足真实的绘图需求,在浏览过一个大神写的文章后,发现能实现的几个需求有好多。在这里以问题的形式来进行一一解答。

很多客户问到过这个问题,我们也在现场问过10X的技术人员。首先可以确定的是,不管是tsne还是umap,降维获得的细胞对于的cluster结果是一样的。所以两者均可选择。然后就是一个展示的问题了。umap在进行可视化时,采用的算法是达到局部最优,tsne达到的是整体最优。我做过的这些项目中,总结出一个规律,当细胞数目很多时,采用tsne,当细胞数目较少时,采用umap。因为图形是为了证明结论,哪种图最能展示我们的结论,该图是最佳的。

一般情况下,主成分对于细胞聚类的影响是有规律的,成分等级越高,越不容易进行细胞聚类。对于单细胞而言,不同类型的细胞marker基因的表达差别是比较明显的,因此为了较好地进行区分,我们一般选择拐点的主成分作为降维的依据。如下图所示,一般选择TOP10。

但不规律时,我们可以进行维度选择来进行聚类降维,脚本如下所示:

很多人做单细胞时,都会纠结于这个问题,分辨率太小,担心没有将细胞间的差异体现出来;分辨率太大,可能存在过度聚类的情况,而且对命名影响很大。官网上有推荐的根据细胞数来选择分辨率,将该参数设置在0.4-1.2之间,对于3K左右的单细胞数据集通常会得到良好的结果。对于较大的数据集,最佳分辨率通常会增加。针对具体的情况,判断标准可能偏主观一些。根据我的分析经历,可总结以下几点:
1)对于单个样本,主要看每个cluster的差异基因表达量热图。表现形式一般为每个cluster中其条线出来的差异基因在该cluster中表达量高,而在其他cluster中表达量低。不然,表示有些cluster还可以合并或者细分(如果出现污染或者其他情况另当别论)

2)对于有比较组的情况,除了看cluster的差异基因聚类热图外,还要关注样本之间的差异。样本之间的差别主要表现在同一个cluster中细胞数目的差别。根据比较组条件的设置,差别越大,同一个cluster的细胞数目差别也会比较大。另外差异小提琴图或者表达量气泡图也能说明问题。
可以同时设置不同的分辨率进行对比分析,脚本如下:

对于单细胞测序而言,有可能会出现测序时间、仪器或者加测的情况,形成不同的数据批次,实验误差也会反映到测序数据上,该现象就是我们常说的批次效应。该如何采用seurat进行批次效应的消除呢?

关于去除多组数据中的批次效应,有多种算法,如Seurat包的CCA(canonical correlation analysis)、LIGER的NMF(non-negative matrix factorization)、 Scran包的mnnCorrect 、Seurat包的sctransform。这里搜集了几个方法的链接,大家可以操作一下。
Seurat包的CCA: https://cloud.tencent.com/developer/article/1499846
Scran包的mnnCorrect: https://www.jianshu.com/p/b7f6a5efed85
Seurat包的sctransform: https://www.jianshu.com/p/e639cc257d51

有篇文献中有将大细胞去批次效应效果做了一个对比,设计到的方法如下图所示,测试了10个数据集,使用五个评估指标对14种方法进行对比评估,大家可以去了解一下。

参考链接:
https://zhuanlan.zhihu.com/p/122502250
https://www.jianshu.com/p/647cb81a77ac
https://www.jianshu.com/p/67d2decf5517

Seurat单细胞分析常见代码-02

参考技术A 默认是500 * 1024 ^ 2 = 500 Mb

future在seurat的具体应用详见: https://satijalab.org/seurat/archive/v3.0/future_vignette.html

CaseMatch()为seurat包内部函数, https://github.com/satijalab/seurat/blob/master/R/utilities.R

如果细胞太密,有重叠,可以设置透明度,我一般alpha.use设置0.8或者0.9

一般我常用的配色是:c("lightgrey", "red")或者c("lightgrey", "blue")

为了对比细胞间的基因表达差异,常使用不同的配色;
使用viridis调色板

可参考的配色有

我们常常用一些小的特征基因(3-5 个基因)使用 FeaturePlot() 来辅助celltype的鉴定,文献中也有此操作( https://www.nature.com/articles/s42003-020-0922-4/figures/1 )

AddModuleScore()的算法跟上面的计算基因集均值的方法不同,后面细究下源码。
AddModuleScore()为Seurat包中自带函数,需要先计算基因集中所有基因的平均值,再根据平均值把表达矩阵切割成若干份,然后从切割后的每一份中随机抽取对照基因(基因集外的基因)作为背景值。因此,在整合不同样本的情况下,即使使用相同基因集为相同细胞打分,也会产生不同的富集评分;

DotPlot的features为list时,list组间会有间隔,便于比较不同celltype的marker基因差异,可视化效果更好;

计算表达基因的细胞比例的函数,在 https://github.com/satijalab/seurat/issues/371 中有网友给出了一个自定义函数,如下:

同样,也可以计算在cluster的占比

以上是关于单细胞分析常见问题的主要内容,如果未能解决你的问题,请参考以下文章

玩转单细胞高级分析 单细胞富集分析篇

单细胞转录组测序分析--初探Seurat

monocle分析及结果解读

bulk-seq数据和单细胞数据的联合分析

单细胞ATAC亚群分析

单细胞CNV分析-copyKAT