scDblFinder 1.6.0
scDblFinder
单细胞中识别对比RNAseq通过创建人工紧身衣和看着他们的患病率(以及任何已知的紧身衣)附近的每一个细胞,以及其他一些协变量。粗糙的逻辑非常类似于其他方法(如。DoubletFinder,scds),有一些曲折,使其更有效率,更准确,并提供额外的功能。
如果(!requireNamespace (“BiocManager”,悄悄地= TRUE)) install.packages (“BiocManager”) BiocManager::安装(“scDblFinder”) #,或者获得最新进展:BiocManager:安装(“身为/ scDblFinder”)
的输入scDblFinder
是一个对象南加州爱迪生公司
类的SingleCellExperiment(空下降已经被移除)包含至少计数(化验“计数”)。如果归一化表达式(化验logcounts)和PCA (reducedDim PCA)也在场,这些将用于聚类步骤(除非集群。)
给定一个SCE对象:
set.seed(123)库(scDblFinder) #我们创建一个虚拟数据集;因为它是小我们设定一个更高的紧身上衣率sce < - mockDoubletSCE (dbl.rate = 0.1) #我们运行scDblFinder南加州爱迪生公司(提供通常紧身上衣率高)< - scDblFinder (sce、dbr = 0.1)
# #聚类细胞……
# # 4集群
# #创建~ 5000人工对比……
# #减少维
# #评估资讯……
# #培训模式……
# # iter = 0, 27个细胞排除在训练。
# #发现阈值:0.854
叫# # 24(4.6%)对比
对于10 x数据,通常是安全的离开dbr
空,它将自动估计。scDblFinder
将添加一个列数的colData吗南加州爱迪生公司
前缀“scDblFinder”,最重要的是:
sce scDblFinder.score美元
:最后的紧身上衣的分数sce scDblFinder.class美元
:分类(紧身上衣或单线态)表(真理美元= sce类型,调用= sce scDblFinder.class美元)
# #叫# #真理单线态双重# #单线态500 0 0 24 # #紧身上衣
如果您有多个样本(理解为不同的细胞捕获),那么最好找对比单独为每个样本(多路复用和样品细胞散列,这意味着每一批)。这可以通过简单地提供一个向量样本id的样品
scDblFinder或参数,如果这些都是存储在一个列colData
列的名称。在这种情况下,您也可能会考虑使用多线程BPPARAM
参数(假设你有足够的RAM !)。例如:
南加州爱迪生公司库(BiocParallel) < - scDblFinder (sce、样品=“sample_id”, BPPARAM = MulticoreParam(3))表(sce scDblFinder.class美元)
请注意,如果您正在运行多个样本,集群将sample-wise执行。虽然这不是双重身份的问题,这意味着集群标签(假定的起源的对比)之间的不匹配样本。如果你对这些感兴趣,最好第一集群(例如使用南加州爱迪生公司集群< - fastcluster美元(sce)
),然后提供集群scDblFinder
在样品,这将确保一致的标签。
值得注意的是,如果你有非常大的差异之间的细胞样本的分数将不会直接可比。我们正在改善,但与此同时它会比单独分层相似的样本和阈值集。
裹着的scDblFinder
函数是以下步骤:
对比只能出现在一个给定的样本或捕获,因此最好每个样本为寻求独立时,也加快了分析。如果样品
参数是已知的,scDblFinder
将使用它来将细胞分为样品/捕获,和并行处理他们每个人如果BPPARAM
参数给出。全球标识符将被训练,但是阈值将在样品的基础上进行了优化。如果你的样品多路复用,即不同样本混合在不同的批次,批次应该是你提供这个参数。
分析可以大大加快,几乎不用付出任何成本的准确性,通过减少数据集只表达基因(控制的顶部nfeatures
参数)。然后,如果集群
论点不提供,细胞将集群使用一个快速聚类过程在PCA空间(从PCA dimRed如果存在,否则生成的内部)。在这里,目的是有利于over-clustering以免崩溃对celltypes可以区分的对比。可以通过访问内部聚类过程fastcluster
功能,集群作业包含在输出中。
如果数据集不会包含不同的亚种群,而是连续的梯度,例如轨迹,那么它可能会建议使用一种不同的方法和设置集群
一个正整数(见下文)。
除了人工对比结合随机生成细胞的比例,很大一部分的句子生成的所有对异卵集群(这可以手动执行使用getArtificialDoublets
功能)。基本原理是同型的句子几乎不可能区分细胞没有条形码,所以,创建这样的对比是一个浪费计算资源。
如果数据集不会包含不同的亚种群,而是轨迹,可以使用一种不同的方法。第一个选项是随机生成人工对比,这可以通过使用propRandom = 1
论点。更好的方法是(除非你已经集群)设置集群
的观点scDblFinder
一个正整数(取决于细胞的数量和复杂性,例如。k = 12
对于较小的数据集),它将使用k - means聚类(细胞分裂k =集群
)。然后,有两种可能的策略。运行scDblFinder
否则默认设置将自动确定区分哪些集群的组合。另外,使用trajectoryMode = TRUE
有关集群之间的平均配置文件并生成更少的紧身衣非常邻近点的轨迹(他们会被浪费,这种对比近无特征的真正的细胞)。然而破坏这替代紧身衣向集群大小的比例,并可能因此降低细胞分布不均时精度。
上执行一个新的主成分分析的结合实际和人工细胞,生成一个资讯网络。使用此资讯,收集大量的参数为每个细胞,如对比的比例(即人工对比或通过提供已知的对比knownDoublets
参数,如果有)资讯,比最近的距离最近的紧身上衣和non-doublet,等等。这几个特性与“scDblFinder报告输出。的前缀,如:
distanceToNearest
:距离最近的细胞(真实或人工)nearestClass
:最近的细胞是否是一个紧身上衣或单线态比
对比:资讯的比例。(如果超过一个值k
期间,各种比率将使用分类和报告)加权
:资讯的紧身衣,比例加权的距离(用于孤立的细胞)除非分数
参数被设置为“加权”或“比率”(在这种情况下,上述比例直接用作紧身上衣的分数),scDblFinder
然后使用梯度增加树木训练kNN-derived性质以及一些额外的特性(如图书馆的大小、数量的非零特征和估计困难的细胞中检测人工对比社区,等等)来区分对比(或人工)从其他细胞,并在此基础上分配一个分数。如果use.cxds = TRUE
,cxds
分数从scds计划还将包括在预测。
该任务使用一个标识符的一个问题是,一些真正的细胞(实际对比)贴上单线态的标签,可以这么说。scDblFinder
因此迭代通过分类器,每次扣除从培训(真正的)细胞中称为对比前一步骤(步骤的数量被控制的iter
参数)。
的输出,这一点是可用的scDblFinder.score
colData列,可以解释为一个概率。如果数据多试样,一个模型训练样本。
而不是任意截断阈值的分数,scDblFinder
使用建立阈值的预期数量对比。除非是手动通过dbr
论点,首先估计预期紧身上衣使用实证的经验法则适用于10 x数据,即每1000个细胞捕获约1%(5000个细胞,(0.01 * 5)* 5000 = 250对比,和更多的细胞捕获创建一个偶极子)的机会越高。如果指定样本,如果dbr
执行自动计算阈值分别在样本。
阈值然后试图同时最小化:1)分类错误(在已知的紧身衣低于阈值的比例)和2)偏离预期数量的对比中真正的细胞(如总数的比例范围内由预期的对比dbr.sd
和调整为同型的对比),给每个同等重量。这意味着,如果你不知道的紧身上衣,设置dbr.sd = 1
将阈值完全依靠误分类率。
因为我们从集群生成人工对比,它通常可以调用最可能的起源(集群)的组合的一个给定的假定的真实的紧身上衣。这些信息是通过提供的scDblFinder.mostLikelyOrigin
列的输出(以及scDblFinder.originAmbiguous
列表示这个起源是否模糊或者清晰)。反过来,这使我们能够确定浓缩在期望为特定类型的对比。一些统计数据保存在集群的每个组合元数据(sce) scDblFinder.stats美元
,plotDoubletMap
函数可用于可视化充实。此外,两个框架提供了用于测试充实的意义:
clusterStickiness
功能测试是否每个集群形式比预期更紧身上衣鉴于其丰度,在默认情况下使用单一quasi-binomial模型安装在所有偶极子类型。doubletPairwiseEnrichment
函数分别测试是否每个特定的偶极子类型(集群)的组合比预期更丰富,在默认情况下使用泊松模型。scDblFinder
有相当多的参数管理预处理,一代的对比、分类等等。(看到了吗scDblFinder ?
)。在这里,我们描述的几个最重要的。
预期的比例对比没有影响人工对比的密度在附近,但是影响分类器的分数,尤其是截止将被放置的地方。它是通过指定dbr
参数和dbr.sd
参数(后者指定范围+ / -dbr
在偏离dbr
将被认为是零)。10 x数据,捕获的细胞越多越高机会创建一个紧身上衣,和铬的文档表明紧身上衣的每1000个细胞捕获约1%(5000个细胞,(0.01 * 5)* 5000 = 250对比),紧身上衣和默认的预期利率将被设置为这个值(默认的标准偏差为0.015)。但是要注意,不同的协议可能会产生更多的句子,这应该是相应更新。如果你有确定的紧身上衣,你可能会考虑增加dbr.sd
,据估计mostl /纯粹的误分类错误。
跨集群创建以来对比,重要的是,亚种群不歪曲属于相同的集群。出于这个原因,我们赞成over-clustering在这个阶段,如果你提供自己的集群,该决议不应过于粗——尽管过于精细的分辨率往往降低精度。scDblFinder
的默认的聚类方法的实现fastcluster
函数。
那么你很可能有一个错误的紧身上衣。如果你没有提供(dbr
参数),紧身上衣率将自动计算使用预期的双重利率从10 x,这意味着更多的细胞捕获,紧身上衣率越高。如果你有理由认为这并不适用于您的数据,设置dbr
手动。
意外的最常见的原因是如果你有一个大比例的对比多试样样本数据集,没有分裂。scDblFinder
会认为数据是一个捕捉大量的细胞,因此具有很高的紧身上衣。分裂的样本应该解决这个问题。
阈值转换法试图最小化预期数量的异常对比和错误分类(即人工对比),这意味着有效(即最终)双重利率将与给定的不同之处。scDblFinder
还考虑假阳性问题比假阴性。可以减少在某种程度上偏离输入双重利率设置dbr.sd = 0
。
如果你跑scDblFinder
多试样数据集和没有提供集群的标签,然后sample-specific标签(即标签' 1 '在一个样品可能会与在另一个标签' 1 '),和策划在tSNE看起来像他们没有意义。由于这个原因,当运行多个样品我们建议首先聚类样本在一起(例如使用南加州爱迪生公司集群< - fastcluster美元(sce)
),然后提供集群scDblFinder
。
你会得到这个错误如果你有一些细胞零(或非常接近于零)。后过滤掉这些细胞的错误就应该消失了。但是请注意,我们建议在运行scDblFinder之前没有太严格的过滤。
因为它依赖于人工对比的部分随机产生,运行scDblFinder多次在同一数据将产生不同的结果。你可以确保再现性使用set.seed ()
多线程时,然而这将是不够的。在这种情况下,使用下列程序:
英国石油(bp) < - MulticoreParam (3 RNGseed = 1234) bpstart南加州爱迪生公司(bp) < - scDblFinder (sce集群=“集群”,样品=“sample”, BPPARAM = bp) bpstop (bp)
如果输入SCE已经包含了logcounts
试验或reducedDim
槽命名的PCA, scDblFinder用于聚类步骤。此外,一个集群可以手动使用集群
的观点scDblFinder ()
。通过这种方式,修拉集群例如可以用来创建(见人工对比?修::as.SingleCellExperiment.Seurat
为转换SCE)。
代人工对比后,真正的和人工细胞的计数然后必须再加工(即标准化和PCA)在一起,这是表现在内部使用嘘。如果您希望执行这个步骤不同,你可以提供你自己的函数这样做(参见处理
论点scDblFinder ?
)。然而,我们注意到,这一步的变化的影响在双重检测远比它是温和的,说,集群:的确,不执行任何正常化例如减少双重识别的准确性,但很少。
是的,专门致力于峰值水平数据。由于单细胞ATAC-seq更稀疏的数据和事实scDblFinder
使用选择的特性,用它与标准参数将产生一个表现不佳。因此,我们推荐使用aggregateFeatures = TRUE
将聚合类似的特性(而不是选择功能)在正常scDblFinder
过程,产生优秀的结果。