SummarizedBenchmark 2.16.0
演示…的用法SummarizedBenchmark比较非编写的软件R,我们将比较的输出旗鱼,大马哈鱼而且kallisto,三种无需校准的转录本亚型定量方法。由于运行时间、磁盘空间和内存问题,这个小插图的某些部分在包构建期间不会运行。相反,我们提供了包含final的预计算对象SummarizedBenchmark对象。
我们首先下载fastq文件,我们将使用这些文件作为输入来量化异构体。我们将使用小鼠体图的两个大脑副本中的两个样本(Li et al. 2017).
图书馆(BiocParallel)dir.create(“fastq”,showWarnings =假)函数(sra_accessionexe_path =“fastq-dump”,args =“——split-3——gzip”,outdir =“fastq”,dry_run =假) {sprintf('%s %s——超出目录%s %s',如果(dry_run) {消息(将在命令行中运行:\ n"cmdline)其他的{返回(系统(cmdline))c(“SRR5273705”,“SRR5273689”,“SRR5273699”,“SRR5273683”)bplapply(样品、extractSRABPPARAM =MulticoreParam(4))data.frame(样本,组织=c(“大脑”,“大脑”,“心”,“心”))
三种方法中的每一种(大马哈鱼,旗鱼而且kallisto)需要参考转录组的索引步骤。我们将使用Gencode项目中的鼠标注释。下面的代码下载小鼠参考转录组。
dir.create(“参考/生”,递归=真正的,showWarnings =假)download.file(“ftp://ftp.sanger.ac.uk/pub/gencode/Gencode_mouse/release_M16/gencode.vM16.transcripts.fa.gz”,destfile =“参考/生/ transcriptome.fa.gz”)
最后,我们使用下面的代码构建三种不同方法的转录组指数。
dir.create(“参考/索引”,showWarnings =假)系统("kallisto index -i reference/index/ kallstoidx . "idx参考/生/ transcriptome.fa.gz”)系统(三文鱼索引-t reference/raw/transcriptome.fa.gz -i reference/index/salmon_index)系统("gunzip -c reference/raw/transcriptome.fa.gz > reference/raw/transcriptome. gz "Fa &&旗鱼指数-t参考/生/转录组。Fa -o reference/index/sailfish_index")图书馆(Biostrings)的名字(readDNAStringSet(“参考/生/ transcriptome.fa.gz”))酸式焦磷酸钠(strsplit(dnSt"\ \||\ \."),“[[”,1)
如果我们想用BenchDesign基础设施来比较通过命令行运行的工具,我们需要在R包含对命令行的系统调用。这些函数还必须收集方法的输出并将它们导入R.首先,我们实现三个函数,它们使我们能够检索将要运行的软件版本。
图书馆(SummarizedBenchmark)函数() {suppressWarnings(系统(“kallisto”,实习生=真正的)[1])strsplit(更小,”“) [[1]] [2]函数() {suppressWarnings(系统(三文鱼——第二版>&1,实习生=真正的)[1])strsplit(更小,”“) [[1]] [2]函数() {suppressWarnings(系统(旗鱼——第二版>&1,实习生=真正的)[1])strsplit(更小,”“) [[1]] [3.]tximport包)。
dir.create(“/ kallisto”,showWarnings =假)dir.create(“/鲑鱼”,showWarnings =假)dir.create(“/旗鱼”,showWarnings =假)函数(样本,args ="") {sprintf(“fastq / % s_1.fastq.gz”、样品)gsub(“_1”,“_2”fastqFile1)sprintf(“kallisto / % s.out”、样品)sprintf("kallisto quant -i reference/index/kallistoIdx. "Idx -o %s %s %s",系统(cmd)需要(tximport)tximport(file.path(输出,“abundance.h5”),类型=“kallisto”,txOut =真正的)ab$数量(,1]的名字(计数)< -酸式焦磷酸钠(strsplit(的名字(数量),"\ \||\ \."),“[[”,1)函数(样本,args ="-l A -p 4") {sprintf(“fastq / % s_1.fastq.gz”、样品)gsub(“_1”,“_2”fastqFile1)sprintf(“鲑鱼/ % s.out”、样品)sprintf("salmon quant -i reference/index/salmon_index %s -o %s -1 %s -2 %s",系统(cmd)需要(tximport)tximport(file.path(输出,“quant.sf”),类型=“鲑鱼”,txOut =真正的)$数量(,1]的名字(计数)< -酸式焦磷酸钠(strsplit(的名字(数量),"\ \||\ \."),“[[”,1)函数(样本,args =“- l IU”) {sprintf(“fastq / % s_1.fastq.gz”、样品)gsub(“_1”,“_2”fastqFile1)sprintf(”旗鱼/ % s.out”、样品)sprintf(“回声\”旗鱼量化-i reference/index/sailfish_index %s -o %s -1 <(zcat %s) -2 <(zcat %s)\”| bash”,猫(cmd)系统(cmd)tximport(file.path(输出,“quant.sf”),类型=“旗鱼”,txOut =真正的)$数量(,1]的名字(计数)< -酸式焦磷酸钠(strsplit(的名字(数量),"\ \||\ \."),“[[”,1)
图书馆(SummarizedBenchmark)图书馆(tximport)BenchDesign()% > %调用addMethod(标签=“kallisto-default”,func =runKallisto,params =rlang::、动荡频仍的(示例=样本,args =“- t 16”),元=列表(pkg_vers =rlang::现状(getKallistoVersion()))% > %调用addMethod(标签=“kallisto-bias”,func =runKallisto,params =rlang::、动荡频仍的(示例=样本,args =——bias -t 16"),元=列表(pkg_vers =rlang::现状(getKallistoVersion()))% > %调用addMethod(标签=“salmon-default”,func =runSalmon,params =rlang::、动荡频仍的(示例=样本,args ="-l IU -p 16"),元=列表(pkg_vers =rlang::现状(getSalmonVersion()))% > %调用addMethod(标签=“salmon-gcBias”,func =runSalmon,params =rlang::、动荡频仍的(示例=样本,args =-l IU—gcBias -p 16"),元=列表(pkg_vers =rlang::现状(getSalmonVersion()))% > %调用addMethod(标签=“sailfish-default”,func =runSailfish,params =rlang::、动荡频仍的(示例=样本,args ="-l IU -p 16"),元=列表(pkg_vers =rlang::现状(getSailfishVersion()))printMethods(b)
现在,下一步是运行基准试验。因为我们正在为两个样本运行基准测试,所以我们使用拉普兰人()
要循环遍历示例名称,请为每个示例名称运行基准测试,并使用组合它们cbind ()
.
列表(txIDs =dnSt)拉普兰人(样本,函数(样本){“样本”]] < -样本buildBench(b),data =dat,sortIDs =“txIDs”,catchErrors =假,平行=真正的,BPPARAM =SerialParam())colData(某人)$示例< -样本colData(某人)$组织< -as.character(注释$组织[注释$样本= =样本)
酸式焦磷酸钠(allSB函数(x) {rowSums(is.na(分析(x)))})rowSums(keepRows)= =0拉普兰人(allSB函数(x) {x[keepRows,]})set.seed(12)样本(seq_len(nrow(allSB [[1]])),50000)拉普兰人(allSB函数(x) {x[keepRows,]})#save(allSB, file = "../data/quantSB.rda",#压缩= "xz", compression_level = 9)
由此产生的allSB
对象已预先计算,并可通过
注意,列表的每个元素都包含SummarizedBenchmark对象,其中colData ()
包含软件版本和使用参数。
## 5行4列的数据帧参数元。版本样本组织## <字符> <字符> <字符> <字符> ## kalliso -default "-t 16" 0.43.1 SRR5273705 brain ##鲑鱼-default "-l IU -p 16" 0.9.1 SRR5273705 brain ##鲑鱼-gcBias "-l IU -gcBias -p 16" 0.9.1 SRR5273705 brain ##旗鱼-default "-l IU -p 16" 0.10.0 SRR5273705 brain ##旗鱼-default "-l IU -p 16" 0.10.0 SRR5273705 brain ##
上面的代码返回一个SummarizedBenchmark对象包含两个样本的转录异构体定量结果。然而,在这个比较中,我们并没有一个基本的事实。然而,所有的结果在一个单一SummarizedBenchmark容器促进了对这些结果的探索。例如,使用几行代码,我们就可以使用标准降维技术(PCA)来探索这三种方法的相似性。
!rowSums(is.na(化验(allSB [[1[[]])“默认”]])>0prcomp(log10(t(化验(allSB [[1[[]])“默认”]] [,])+1) )轮(One hundred.*(pcaRes$标准偏差/总和(pcaRes$标准偏差)),2)data.frame(PC1 =pcaRes$x (,“PC1”],PC2 =pcaRes$x (,“PC2”],示例=colData(allSB [[1]])$样本,标签=gsub("\ \d + $”,"",rownames(colData(allSB [[1]]))))tidyData% > %dplyr::变异(方法=gsub(“- * $”。,"",标签))% > %ggplot(aes(pc1, pc2,颜色=标签))+geom_point()+coord_fixed()+ylab(sprintf("PC2 (%0.2f %% %)", varExp [2)))+xlab(sprintf("PC1 (%0.2f %% %)", varExp [1)))+主题(legend.pos =“顶级”)+指南(坳=guide_legend(nrow =5),形状=guide_legend(nrow =4))
对于更详尽的基准异构体量化结果,我们建议读者通过(Teng et al. 2016),描述了评估异构体定量管道性能的几个指标。这些指标是在rnaseqcomp.方法中的步骤如下所示rnaseqcomp包来创建rnaseqcomp对象。我们建议读者遵循的小插图rnaseqcomp一揽子详尽的基准异构体定量方法。
图书馆(rnaseqcomp)图书馆(biomaRt)数据(simdata)simdata$元$基因(simdata$元$房子)gsub("\ \.\ \d +”,"", houseHuman)useMart(“运用”,“mmusculus_gene_ensembl”)getBM(c(“ensembl_transcript_id”,“hsapiens_homolog_ensembl_gene”,“hsapiens_homolog_orthology_type”),集市=集市)geneMap [geneMap$`hsapiens_homolog_orthology_type`= =“ortholog_one2one”,)geneMap$ensembl_transcript_id [geneMap$hsapiens_homolog_ensembl_gene%, %houseHuman]do.call(cbind, allSB)colData(所有sb)$标签< -gsub("\ \d + $”,"",rownames(colData(allSB))colData(allSB)[colData(所有sb)$标签= =“kallisto-default”,“组织”]condInfo代表(真正的,长度。了=nrow(allSB))rownames(allSB)%, %houseMouse1拉普兰人(分裂(seq_along(colnames(所有sb),colData(所有sb)$标签),函数(x) {分析(allSB)[,x]})signalCalibrate(因素(condInfo),因素(replicateInfo),calibrationFeature2 =calibrationFeature)
参考文献
李斌,清涛,朱金航,文卓,余颖,福村龙太郎,郑元廷,冈藤洋一,史乐明。2017。“通过Rna-Seq获得跨越17个组织的全面小鼠转录组体图。”科学报告7(1)。https://doi.org/10.1038/s41598-017-04520-z.
滕明祥,Michael I. Love, Carrie A. Davis, Sarah Djebali, Alexander Dobin, Brenton R. Graveley,李胜等。2016。" Rna-Seq定量管道的基准"基因组生物学17(1)。https://doi.org/10.1186/s13059-016-0940-1.