方法部分还是很有参考价值的
测序至获取细胞
10X测序技术
比对至GRCH38
R包dropletUtils的
emptyDrops()
函数将真实的细胞同背景RNA表达区分开
拿到细胞后质控
根据比对的UMIs,比对的基因数和比对到线粒体的基因比例进行QC
很有意思的是,以gene为例,过滤阈值为log10(中位文库大小)-3*绝对中位值
去除doublets
对于一个样本:
计算doublet评分
doubletCells()
基于全部基因的PCA,获得50个PC
建SNN图,10个近邻
buildSNNGraph()
Louvain聚类算法聚类,聚类时只使用HVGs
igraph::cluster_louvain()
聚类之后得到的clusters
在各个clusters中再聚类得到clusters’,将每个cluster中全部细胞的doublet score中位分值作为该cluster的doublet评分
median-centered MAD-variance normal distribution,doublet评分为该极分布的极端值(BH校正P值<0.1)标记为doublets,虽然这个知道这个分布是什么需要更深的统计学知识,但基本思想还是拟合统计分布和进行假设检验
10X标准化
counts除以size factor再log2转换,这里用到一个
computeSumFactors
函数,看来这个函数并没有简单地将每个细胞的文库大小看待成size factor,经过这一步之后,不同细胞间的基因表达便可比了
Smart-Seq2预处理和10X类似
少了丢弃背景噪音和doublets的步骤,确实也没有必要
质控和10X类似,不同的是使用10%线粒体基因比例作为过滤阈值
10X和SmartSeq-2的整合
整合数据第一步还是鉴定HVGs,使用的方法类似于vst,拟合平均值和方差的关系,除去平均值可以解释变异后,再在残差中计算biological variation(大致的原理,请专业人士指正)
HVGs用于PCA降维MultiBatchPCA()
再根据协变量整合(integrate)数据,这里的协变量包括患者和测序技术HarmonyMatrix()
得到的矩阵再使用scanpy包建SNN图
SNN图使用leiden聚类(leiden聚类在发现相连接的社群方面优于Louvain)