DropletUtils 1.18.1
RNA Droplet-based单细胞测序(scRNA-seq)技术允许研究人员获得transcriptome-wide对成千上万的细胞表达谱。简单地说,每一个细胞都封装在一个在油水乳液液滴,连同一个珠包含反转录引物和一个独一无二的条形码序列。反转录后在液滴内部,每个细胞的cDNA标签与条码(称为“细胞条形码”)。液滴破裂收益率的cDNA图书馆准备和测序。Debarcoding执行的序列可以获得每个细胞的表达谱。
这个方案实现了一些基本工具来处理这些数据经过量化的表达。特别是,我们专注于10倍基因组平台,提供负载的函数矩阵独特的分子标识符(UMI)计数以及原始的分子信息。函数也可用于将采样UMI数矩阵或原始读取;为区分细胞空滴,基于UMI计数;和消除的影响条形码交换Illumina公司4000测序仪。
的CellRanger管道从10 x基因组学将处理的原始测序数据并生成一个矩阵UMI计数。这个矩阵的每一行对应一个基因,而每一列对应一个条形码。这是保存在一个为每个样本目录,通常命名基因组<输出> /细节/ filtered_gene_bc_matrices / < >
1如果你使用“过滤”矩阵,每一列对应一个假定的细胞。如果你使用“原始”矩阵,装载所有的条形码,没有区别是由细胞和空的水滴。。我们模拟了使用模拟数据目录下面一个例子:
#生成文件。示例(write10xCounts回声= FALSE) dir.name < - tmpdir list.files (dir.name)
# #[1]“条形码。tsv”基因。tsv matrix.mtx”
的matrix.mtx
文件包含UMI计数,而其他两个文件包含细胞条形码和基因注释。我们可以使用的这个加载到内存中read10xCounts
函数,它返回一个SingleCellExperiment
对象包含了所有的相关信息。这包括条形码序列为每个细胞(列),以及每个基因的标识符和符号(行)。
南加州爱迪生公司< - read10xCounts南加州爱迪生公司(dir.name)
# #类:SingleCellExperiment # #暗淡:100 10 # #元数据(1):# #样品化验(1):计数# # rownames (100): ENSG00001 ENSG00002……构成了rowData名字ENSG000099 ENSG0000100 # #(2):标识符号# # colnames:零# # colData名称(2):样本条形码# # reducedDimNames (0): # # mainExpName:零# # altExpNames (0):
加载项本身作为一个稀疏矩阵,明确dgCMatrix
从矩阵包中。这样可以减少内存使用量只存储非零项,用于稀疏scRNA-seq数据大量的辍学生。
类(计数(sce))
# # [1]“dgCMatrix”# # attr(“包”)# #[1]“矩阵”
用户还可以一次加载多个样本,通过提供一个特征向量read10xCounts
。这将返回一个单一的SingleCellExperiment
所有个人矩阵结合的列。显然,这才有意义使用同一组基因在样品。
CellRanger还将产生一个分子信息文件(molecule_info.h5
),其中包含…嗯,记录的信息分子。这包括UMI序列2读者不熟悉umi,他们允许读取不同的PCR扩增子明确分配给相同的原始的分子。,细胞条形码序列,指定的基因,然后读取的分子的数量。出于演示的目的,我们创建一个示例分子信息文件如下:
set.seed (1000) mol.info.file < - DropletUtils::: simBasicMolInfo (tempfile ()) mol.info.file
# # [1]“/ tmp / RtmpnHoWD7 / file1236793f1a284e”
我们可以随后这些信息加载到R会话使用read10xMolInfo
功能:
mol.info < - read10xMolInfo mol.info (mol.info.file)
# # # #元数据DataFrame 9532行5列# #细胞umi gem_group基因读# # <人物> <整数> <整数> <整数> <整数> # # 80506 TGTT 18 8 # # 2 CAAT 722585 1 233634 6 # # 3 AGGG 1 4 6 # # 4完成516870 1 887407 9 # # 5 ATAG 1 6 12 # #………………# # 9528机智1043995 1 9 12 # # 9529 GCTG 907401 1 20 13 # # 9530阿塔255710 1 672962年10 # # 9531 GCAC 13日20 11 # # 9532 TGAA基因1 1 6 # # # # 482852 # # [1]“ENSG1”“ENSG2”“ENSG3”“ENSG4”“ENSG5”“ENSG6”“ENSG7”“ENSG8”# # [9]“ENSG9”“ENSG10”“ENSG11”“ENSG12”“ENSG13”“ENSG14”“ENSG15”“ENSG16”# # [17]“ENSG17”“ENSG18”“ENSG19”“ENSG20”
此信息可以用于质量控制的目的,尤其是当底层读计数是必需的,例如,调查测序饱和。注意,函数将自动猜条形码序列的长度,这不是正式定义的分子信息文件。对于大多数实验中,猜测是正确的,但用户可以强制函数使用一个已知的条码的长度barcode.length
论点。
给非常不同的测序深度的多个批次,它可以有利于downsample最深最浅的批次的批次与覆盖。这避免了噪声技术的差异,可以通过批量驱动集群。的天窗包提供了一些实用程序downsample数矩阵,但是,从技术角度讲,将采样在读取更合适,因为它概括每细胞不同的测序深度的影响。这可以通过应用downsampleReads
函数包含读计数的分子信息文件:
set.seed (100)。抽样< - downsampleReads (mol.info.file,道具= 1)之和(no.sampling)
# # 9532年[1]
与。抽样< - downsampleReads (mol.info.file,道具= 0.5)和(with.sampling)
# # 9457年[1]
上面的代码将downsample读取50%的原始森林覆盖整个实验。然而,函数将返回一个矩阵UMI计数,所以最后总数实际上可能不会降低如果库测序饱和!用户应该使用downsampleMatrix ()
相反,如果他们想要保证类似将采样后的总数。
有用的诊断droplet-based数据条码等级图,显示了(日志)UMI总数为每个条码在轴和轴上的(日志)排名。这实际上是一个转置经验累积与对数转换轴密度图。是有用的,因为它允许用户在条形码检验总数的分布,关注那些最大的计数。为了演示,让我们模拟了一个计算矩阵:
set.seed(0)我的。计数< - DropletUtils::: simCounts ()
我们计算统计使用barcodeRanks
函数,然后创建如下所示的图。
br。< - barcodeRanks (my.counts) #做一个阴谋。情节(br。美元的地位,br。总美元,日志=“xy”, xlab =“排名”,ylab =“总”)o < -订单(br.out排名美元)行(br。美元地位[o], br。安装[o],美元=“红色”)abline上校(h =元数据(br.out) $膝盖,坳=“dodgerblue”, lty = 2) abline (h =元数据(br.out) $拐点,坳=“forestgreen”, lty = 2)传说(“bottomleft lty = 2,坳= c (“dodgerblue”、“forestgreen”),传说= c(“膝盖”,“拐点”))
曲线上的膝盖和拐点的两个组件之间的过渡总计数分布。这是假定为代表的区别空滴小RNA和cell-containing滴更RNA,尽管更严格的方法来区分这两个可能性是下面要讨论的。
空的水滴从环境解决方案通常包含RNA,导致debarcoding后非零项。的emptyDrops
函数是用来区分空液滴和细胞。它是通过测试每一个条形码的表达谱显著偏离环境概要文件。给定一个矩阵my.counts
包含UMI计数所有条形码,我们称之为:
set.seed (100) e。<——emptyDrops e.out (my.counts)
# # DataFrame 11100行5列# #总LogProb PValue有限罗斯福# # <整数> <数字> <数字> <逻辑> <数字> # # 1 2缺缺缺缺# # 2 9缺缺缺缺# # 3 20缺缺缺缺20缺缺缺缺# # # # 4 5 1缺缺缺缺# #………………# # 11096 215 -246.428 - 9.999 e-05真的0.00013799 # # 11097 201 -250.234 - 9.999 e-05真的0.00013799 # # 11098 247 -275.905 - 9.999 e-05真的0.00013799 # # 11099 191 -228.763 - 9.999 e-05真的0.00013799 # # 11100 198 -233.043 0.00013799 9.999 e-05如此
有重大偏离的液滴检测到环境概要文件在指定的罗斯福阈值,例如,罗斯福
低于1%。这些可以被认为是cell-containing滴,假阳性(即频率。空滴),指定的罗斯福。此外,水滴和非常大的数量会自动保留通过设置他们的p值为零。这避免了丢弃液滴含有细胞非常相似环境概要文件。
是多少。细胞< - e。罗斯福< = 0.01美元(求和。细胞,na.rm = TRUE)
# # 943年[1]
的p值计算了排列测试,因此需要设置一个种子。的有限的
指出是否较低的假定值可以通过增加获得的数量排列。如果有任何条目罗斯福
以上所需的阈值= = TRUE有限
,这表明《不扩散核武器条约》
应该增加的吗emptyDrops
调用。
表(有限= e。有限,美元重要= is.cell)
# #重要# #有限假真# #假357 843 # #真正的0 100
我们建议做一些诊断情节如总菌数与负对数概率。液滴检测细胞应该出现大- log-probabilities或非常大的总数量(基于曲线拐点的报道barcodeRanks
)。注意,下面的例子是基于模拟数据和很夸张。
情节(e。总美元,- e。美元LogProb坳= ifelse (。细胞,“红色”,“黑”),xlab =“UMI总数”,ylab =“日志概率”)
细胞实验可以去复用使用哈希算法hashedDrops ()
函数的集合cell-containing条码库。为了演示,我们将模拟了一些散列标签低聚糖(HTO)计数与细胞从每个人口10个样本。我们还将添加一些紧身衣和空滴一些味道:
set.seed(10000) #模拟空滴:nbarcodes < 10 - 1000 nhto < - y <——矩阵(rpois (nbarcodes * nhto, 20), nrow = nhto) #模拟细胞:ncell < - 100真的。< -样品(ncell, nhto取代= TRUE) y [cbind(真实的。样本,seq_len (ncell))) < - 1000 #模拟对比:ndoub < - ncell / 10下。示例< -(真实的。样本(1:ndoub) + 1) % % nrow (y) next.sample[下一个。样= = 0]< - nrow (y) y [cbind(下一个。样本,seq_len (ndoub))) < - 500
我们的第一个任务是识别条形码,实际上包含细胞。如果我们已经调用emptyDrops ()
,我们可以重用这些调用;否则我们可以获得电话直接从HTO数矩阵,尽管这需要一些摆弄低=
匹配的测序深度HTO图书馆。
hto。调用< - emptyDrops (y,低= 500)。细胞< - hto。调用罗斯福< = 0.001美元的总结(has.cell)
真正的NA的# # # #模式逻辑100 900
每个cell-containing条形码图书馆只是分配给示例基于最丰富的HTO原产地。信心的任务是量化log-fold顶部和第二丰富的HTOs之间变化。函数将自动调整为每个HTO环境水平的差异基于环境概要文件;如果没有提供,这是大概估计的环境概要文件提供数矩阵。
多路分配器< - hashedDrops (y [(has.cell)],环境=元数据(hto.calls)环境美元)多路分配器
7 # # DataFrame 100行和列# #总最好的第二LogFC LogFC2紧身上衣自信# # <数字> <整数> <整数> <数字> <数字> <逻辑> <逻辑> # # 1 1657 4 5 0.999462 - 4.60496真假# # 2 1635 1669 9 0.999492 - 4.84165真假# # 3 6 7 0.999473 - 4.45073真的假的# # 4 1674 6 7 0.999491 - 4.49983真的假的# # 5 1645 3 4 1.000292 4.74602真的假# #……………………# # 96 1167 3 1 5.31708 0.427468假真# # 97 1158 3 1 5.26081 0.526363假真# # 98 1179 4 9 5.00121 - 0.604380假真# # 99 1187 2 5.37410 - 0.196833假真# # 100 1177 5 8 5.15739 - 0.464633假真的
然后一个简单的问题来确定样本的起源细胞。我们提供自信
调用表明该细胞是自信的汗衫,根据是否(我)不是紧身衣和(2)没有小log-fold顶部和第二HTO之间变化。“小”的定义是相对的,可以改变的nmad =
论点。
表(最好多路分配器$(多路分配器自信美元))
# # # # 1 2 3 4 5 6 7 8 9 10 # # 15 9 7 12 8 6 6 10 6
我们还确定对比基于log-fold第二HTO丰度之间的变化和环境污染。大型log-fold变化表明,第二HTO超过污染,符合的紧身上衣。
颜色< - ifelse(多路分配器$自信,“黑色”,ifelse(多路分配器紧身上衣,“红色”,“灰色”))情节(多路分配器LogFC美元,多路分配器LogFC2美元,坳=颜色,xlab =最好的第二HTO”之间的“Log-fold变化,ylab =第二HTO和环境之间的“Log-fold变化”)