SummarizedBenchmark 2.16.0
演示使用SummarizedBenchmark比较软件,不是写的R,我们将比较的输出旗鱼,大马哈鱼和kallisto,三个alignment-free成绩单同种型量化的方法。由于运行时间、磁盘空间、内存问题,部分不运行期间包构建这个描述。相反,我们提供的预先计算包含最后一个对象SummarizedBenchmark对象。
我们开始通过下载fastq文件,我们将使用作为输入来量化亚型。我们将使用两个样本两个大脑从鼠标BodyMap复制(李et al . 2017年)。
图书馆(BiocParallel)dir.create(“fastq”,showWarnings =假)函数(sra_accessionexe_path =“fastq-dump”,args =“——split-3——gzip”,outdir =“fastq”,dry_run =假){sprintf(“% s % s——outdir % 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指数/索引/ kallistoIdx我参考。idx参考/生/ transcriptome.fa.gz”)系统(“鲑鱼指数- t /生/ transcriptome.fa参考。广州我参考/索引/ salmon_index”)系统(“gunzip - c /生/ transcriptome.fa参考。广州>参考/生/转录组。足总& &旗鱼指数- t /生/转录组的引用。fa - o参考/索引/ sailfish_index”)图书馆(Biostrings)的名字(readDNAStringSet(“参考/生/ transcriptome.fa.gz”))酸式焦磷酸钠(strsplit(dnSt”\ \| |\ \。”),“[[”,1)
如果我们想要使用BenchDesign基础设施比较工具,通过命令行运行,我们需要实现的功能R包含系统调用命令行。这些函数也必须收集的输出并将它们导入的方法R。开始,我们实现三个功能,使我们能够检索软件的版本,我们将运行。
图书馆(SummarizedBenchmark)函数(){suppressWarnings(系统(“kallisto”,实习生=真正的)[1])strsplit(更小,”“)[[1]][2]函数(){suppressWarnings(系统(“鲑鱼——版本2 > & 1”,实习生=真正的)[1])strsplit(更小,”“)[[1]][2]函数(){suppressWarnings(系统(“旗鱼,版本2 > & 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定量/索引/ kallistoIdx我参考。idx - o % s % s % s % s”,系统(cmd)需要(tximport)tximport(file.path(输出,“abundance.h5”),类型=“kallisto”,txOut =真正的)ab美元数量(,1]的名字(计数)< -酸式焦磷酸钠(strsplit(的名字(数量),”\ \| |\ \。”),“[[”,1)函数(样本,args =“- l - p 4”){sprintf(“fastq / % s_1.fastq.gz”、样品)gsub(“_1”,“_2”fastqFile1)sprintf(“鲑鱼/ % s.out”、样品)sprintf(“鲑鱼量化我参考/索引/ salmon_index % s - o % s -1% -2%年代”,系统(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(“回声\”旗鱼定量我参考指数/ 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 =”——偏见- 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,]})#保存(allSB、文件= " . . /数据/ quantSB.rda”,#压缩=“xz compression_level = 9)
由此产生的allSB
对象预先计算的,可以通过加载
注意,列表的每个元素包含一个SummarizedBenchmark对象的colData ()
包含软件版本和使用的参数。
# # DataFrame 5行4列# #参数。参数元。版本的样本组织# # <人物> <人物> <人物> <人物> # # kallisto-default - t 16“0.43.1 SRR5273705大脑# # kallisto-bias”——偏见- t 16“0.43.1 SRR5273705大脑# # salmon-default“- l IU - p 16“0.9.1 SRR5273705大脑# # salmon-gcBias“- l IU——gcBias - p 16“0.9.1 SRR5273705大脑# # sailfish-default“- l IU - p 16“0.10.0 SRR5273705大脑
上面的代码返回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(PC2 PC1颜色=标签)+geom_point()+coord_fixed()+ylab(sprintf(“PC2 (% 0.2 f % %)”,varExp [2)))+xlab(sprintf(“PC1 (% 0.2 f % %)”,varExp [1)))+主题(legend.pos =“顶级”)+指南(坳=guide_legend(nrow =5),形状=guide_legend(nrow =4))