systemPipeR测试盒框
用户希望在这里提供关于VAR-Seq项目设计的背景信息。
本报告描述了一个VAR-Seq项目的分析,该项目研究了几种菌株之间的遗传差异生物....
通常,用户希望在这里指定与VAR-Seq研究分析相关的所有信息。包括FASTQ文件的详细描述、实验设计、参考基因组、基因注释等。
systemPipeRdata包是一个生成的辅助包,完全填充systemPipeR在当前工作目录中的工作流环境中使用单个命令。中提供了生成预配置工作流模板的所有说明systemPipeRdata装饰图案.
systemPipeRdata::genWorkenvir(工作流= "varseq", mydirname = "varseq") setwd("varseq")
如果您已经拥有运行分析的环境,则可以跳过此步骤。如果没有,您可以运行它,它将创建目录结构并填充所有必要的参数和演示数据文件。
构建和加载后生成的工作流环境genWorkenvir
从systemPipeRdata
所有数据输入都存储在数据/
目录和所有的分析结果将被写入一个单独的结果/
目录,而systemPipeVARseq。限制型心肌病
脚本和目标
文件应该位于父目录中。R会话预计将从这个父目录运行。下存储其他参数文件参数/
.
要处理实际数据,用户希望以类似的方式组织自己的数据,并将所有测试数据替换为自己的数据。要在新数据上重新运行已建立的工作流,请使用初始目标
文件以及相应的FASTQ文件通常是用户需要提供的唯一输入。
此模板提供了一些常用步骤VARseq
工作流。上的操作可以添加、删除、修改工作流步骤SYSargsList
工作流对象。有关所有功能和实用程序的详细信息,请参阅主要装饰图案.
为了启动一个VARseq工作流,整个Rmarkdown文件将被导入SYSargsList
对象,通过使用importWF(“systemPipeVARseq.Rmd”)
命令。
在此模板中,代码块包含选项spr = TRUE'
将被添加到工作流中。其他没有此选项的R代码块将被忽略。的选项eval = FALSE
在导入和构建工作流对象时可以忽略。请注意这种可能性。
模板可以为每个步骤提供多个选择,例如不同的映射方法,这些方法将接收强制性的
或可选
国旗。一个人可以跑强制性的
步骤,所有
,或可选
运行工作流时的步骤。
此外,每个步骤都可以在计算集群上运行(计算
选项)或在当前会话上调用管理
会话。要演示此模板,请使用a管理
会话将被选择。
另一种方法是初始化工作流并将每个步骤附加到工作流对象中。
sal <- SPRproject()
systemPipeR
工作流可以通过一个命令从头到尾设计和构建,从R Markdown文件导入,或者从R控制台以交互模式逐步导入。本教程将演示如何以交互模式构建工作流,并附加每个步骤。工作流是通过连接每个步骤来构建的appendStep
方法。每一个SYSargsList
instance包含使用特定命令行或R软件处理一组输入文件所需的指令,以及由特定工具/步骤生成的相应输出文件的路径。
的systemPipeR
需要加载包(H Backman and Girke 2016).
测试数据集中的一些样本在# VARseq中不能很好地工作,并且VARseq工作流需要很长时间来处理#每个样本。为了更好地测试和加快测试#工作流程,样本集减少到前8个样本。#请删除您的真实分析猫的下两行(蜡笔::红色$bold(“目标中的一些样本被删除用于测试工作流。\n")) writeLines(readLines("targetsPE.txt")[1:13], "targetsPE.txt") ### pre-end appendStep(sal) <- LineWise(code = {library(systemPipeR)}, step_name = "load_SPR")
以下seeFastq
而且seeFastqPlot
函数为一组FASTQ文件生成并绘制一系列有用的质量统计数据,包括每个周期质量箱形图、基本比例、基本水平质量趋势、相对k-mer多样性、长度和读取的出现分布、超过质量截断点的读取数和平均质量分布。结果被写入一个名为fastqReport.png
.
这是预修fastq报告。另一个修剪后的fastq报告步骤不包括在默认值中。建议首先运行此步骤,以确定是否需要进行修剪。
请注意这里使用的是初始目标文件。在本例中,它已被添加到第一步,稍后,我们将使用该函数getColumn
提取一个命名向量。
appendStep(sal) <- LineWise(code = {targets <- read.delim(" targetspee .txt", comment. delm)char = "#") updateColumn(sal, step = "load_SPR", position = "targetsWF") <- targets fq_files <- getColumn(sal, "load_SPR", "targetsWF", column = 1) fqlist <- seeFastq(fastq = fq_files, batchsize = 10000, klength = 8) png("./results/fastqReport.png", height = 162, width = 288 * length(fqlist)) seeFastqPlot(fqlist) dev.off()}, step_name = "fastq_report_pre", dependency = "load_SPR")
接下来,我们需要填充工作流中第一步创建的对象。下面是一个示例,说明如何使用参数模板文件来执行此任务,以修剪FASTQ文件Trimmomatic软件(Bolger, Lohse, and Usadel 2014).对于这一步,SYSargsList
函数构建命令行并将其追加到萨尔
对象。有关所有功能和实用程序的详细信息,请参阅主要装饰图案.
如果GATK(默认)用于变量调用,任何类型的fastq修剪都将被强烈折旧。GATK内部有处理低质量岗位的职能。
appendStep(sal) <- SYSargsList(step_name = "trimmomatic", targets = " targetspee .txt", wf_file = "trimmomatic/trimmomatic-pe. txt")Cwl ", input_file = "trimmomatic/trimmomatic-pe。yml", dir_path = "param/cwl", inputvars = c(FileName1 = "_FASTQ_PATH1_", FileName2 = "_FASTQ_PATH2_", SampleName = "_SampleName_"), dependency = c("fastq_report_pre"), run_step = "optional")
preprocessReads
函数这个函数preprocessReads
允许应用预定义的或自定义的读预处理函数到文件中引用的所有FASTQ文件SYSargsList
容器,如质量过滤或适配器修剪例程。在内部,preprocessReads
使用FastqStreamer
函数从ShortRead
包以一种内存效率高的方式通过大型FASTQ文件。属性执行适配器修剪trimLRPatterns
函数从Biostrings
包中。
这里,我们将这一步附加到SYSargsList
之前创建的对象。对象上定义了所有参数preprocessReads / preprocessReads-pe.yml
文件。
appendStep(sal) <- SYSargsList(step_name = "预处理",targets = "targetsPE.txt", dir = TRUE, wf_file = "preprocessReads/preprocessReads-pe. txt"), input_file = "preprocessReads/preprocessReads-pe. cwl"。yml", dir_path = "param/cwl", inputvars = c(FileName1 = "_FASTQ_PATH1_", FileName2 = "_FASTQ_PATH2_", SampleName = "_SampleName_"), dependency = c("fastq_report_pre"), run_step = "optional")
修剪步骤完成后,将输出文件
文件可以用来生成新的目标文件,其中包含裁剪后的FASTQ文件的路径。新的目标信息可以用于下一个工作流步骤实例,如。用裁剪好的FASTQ文件运行NGS对齐。
下面的示例展示如何设计自定义读取“preprocessReads”方法提供的实用程序ShortRead
包,然后在批处理模式下使用“preprocessReads”函数。对于这里,可以替换上使用的函数预处理
步骤和修改萨尔
对象。因为它是一个自定义函数,所以必须将该部分保存在R对象中,并且在内部保存preprocessReads.doc.R
加载函数。如果R对象以不同的名称保存(这里“参数/ customFCT。RData”
),请将有关资料替换至preprocessReads.doc.R
.
请注意,此步骤没有添加到工作流中,这里只是为了演示。
首先,我们在工作流中定义了函数:
appendStep(sal) <- LineWise(code = {filterFct <- function(fq, cutoff = 20, Nexceptions = 0) {qcount <- rowsum (as(quality(fq), "matrix") <= cutoff, na。fq[qcount <= Nexceptions]} save(list = ls(), file = "param/ customcft . rdata ")}, step_name = "custom_preprocessing_function", dependency = "预处理")
之后,我们可以编辑输入参数:
yamlinput(sal, "预处理")$Fct yamlinput(sal, "预处理","Fct") <- "'filterFct(fq, cutoff=20, Nexceptions=0)'" yamlinput(sal, "预处理")$Fct ##检查新函数cmdlist(sal, "预处理",targets = 1) ##检查命令行是否更新成功
这是修整后的fastq质量报告。如果包含裁剪步骤,建议增加这一步,比较前后fastq的裁剪。
appendStep(sal) <- LineWise(code = {fq_files <- getColumn(sal, "preprocessing", "outfiles", column = 1) ## get outfiles path fqlist <- seeFastq(fastq = fq_files, batchsize = 10000, klength = 8) png("./results/fastqReport_pos.png", height = 18, width = 4 * length(fqlist)) seeFastqPlot(fqlist) dev.off()}, step_name = "fastq_report_pos", dependency = "trimmomatic", run_step = "optional")
BWA-MEM
本项目的NGS reads使用高变异耐受短读比对仪与参考基因组序列进行比对BWA-MEM
(李2013;Li和Durbin 2009).中定义了对准器的参数设置参数/ cwl gatk / bwa-pe.cwl
.
该测试代码使用未修剪的fastq文件,因为演示数据很少且有限。不过,最好是用它来测试FASTQ质量报告
函数首先验证您的真实数据。
构建要运行的BWA和GATK的索引和字典文件。
appendStep(sal) <- SYSargsList(step_name = "bwa_index", dir = FALSE, targets = NULL, wf_file = "gatk/workflow_bwa-index. index. "Cwl ", input_file = "gatk/gatk。, dir_path = "param/cwl", dependency = "load_SPR")
创建参考fasta
字典。
appendStep(sal) <- SYSargsList(step_name = "fasta_index", dir = FALSE, targets = NULL, wf_file = "gatk/workflow_fasta_dict. zip ")Cwl ", input_file = "gatk/gatk。Yaml ", dir_path = "param/cwl", dependency = "bwa_index")
创建字典索引。
appendStep(sal) <- SYSargsList(step_name = "faidx_index", dir = FALSE, targets = NULL, wf_file = "gatk/workflow_fasta_faidx. aspx ")Cwl ", input_file = "gatk/gatk。Yaml ", dir_path = "param/cwl", dependency = "fasta_index")
appendStep(sal) <- SYSargsList(step_name = "bwa_alignment", targets = "targetsPE.txt", wf_file = "gatk/workflow_bwa-pe. txt" . appstep (sal) <- SYSargsList(step_name = "bwa_align ", targets = "targetsPE.txt", wf_file = "gatk/workflow_bwa-pe. txt")Cwl ", input_file = "gatk/gatk。yaml", dir_path = "param/cwl", inputvars = c(FileName1 = "_FASTQ_PATH1_", FileName2 = "_FASTQ_PATH2_", SampleName = "_SampleName_"), dependency = c("faidx_index"))
下面概述了每个示例中的读取数以及其中有多少与引用对齐。
appendStep(sal) <- LineWise(code = {bampaths <- getColumn(sal, step = "bwa_alignment", "outfiles", column = "samtools_sort_bam") fqpaths <- getColumn(sal, step = "bwa_alignment", "targetsWF", column = "FileName1") read_statsDF <- alignStats(args = bampaths, fqpaths = fqpaths, pairEnd = TRUE) write。table(read_statsDF, "results/alignStats.xls", row.names = FALSE, quote = FALSE, sep = "\t")}, step_name = "align_stats", dependency = "bwa_alignment", run_step = "optional")
的symLink2bam
函数创建符号链接,以便在基因组浏览器(如IGV)中查看BAM对齐文件。对应的url被写入一个文件,并在下面指定路径urlfile
在结果
目录中。
appendStep(sal) <- LineWise(code = {bampaths <- getColumn(sal, step = "bwa_alignment", "outfiles", column = "samtools_sort_bam") symLink2bam(sysargs = bampaths, htmldir = c("~/.html/", "somedir/"), urlbase = "http://cluster.hpcc.ucr.edu/~tgirke/", urlfile = "./results/IGVurl.txt")}, step_name = "bam_urls", dependency = "bwa_alignment", run_step = "optional")
下面执行变量调用GATK
而且BCFtools
在一台机器上通过runWF
函数为每个样本依次。如果集群计算可用,在计算集群上以并行方式运行可以通过runWF
,使资源和选择可用Run_session = "compute"
.
并不是所有的用户都有一个集群系统,所以这里要演示一个变量调用工作流的例子,只显示单机命令。对于集群作业,请参考我们的主要装饰图案.
此外,用户在这里只选择一个变量调用者,而不是运行多个变量调用者。然而,工作流管理器允许为运行分析保留多个可用选项。
GATK
以下步骤是基于GATK 4.1.1.0
最佳实践.有10个独立的步骤,用户可以选择从哪里开始,从哪里跳过。所有脚本位于参数/ cwl / gatk
.BQSR
(基础质量评分重新校准)和VQSR
(变异质量评分重新校准)是非常特定于有限的物种,如人类,所以这个工作流程不支持这些步骤。
fastq
来ubam
转换fastq
文件bam
文件,为下一步做准备。这对特定的测序平台非常重要,默认是illumina公司
.用户需要更改参数/ cwl gatk / gatk_fastq2ubam.cwl
如果平台不同。在后面的步骤中,变体调用方需要平台信息来更正调用参数。
appendStep(sal) <- SYSargsList(step_name = "fastq2ubam", targets = " targetsspee .txt", wf_file = "gatk/workflow_gatk_fastq2ubam. txt")Cwl ", input_file = "gatk/gatk。yaml", dir_path = "param/cwl", inputvars = c(FileName1 = "_FASTQ_PATH1_", FileName2 = "_FASTQ_PATH2_", SampleName = "_SampleName_"), dependency = c("faidx_index"))
bam
而且ubam
此步骤合并bam
而且ubam
并创建了第三个bam
文件,其中包含对齐信息和已被对齐程序删除的剩余信息,如BWA
.被去除的信息对于变量统计计算是必不可少的。建议使用前面的步骤,但是没有这些步骤仍然可以执行变量调用。
appendStep(sal) <- SYSargsList(step_name = "merge_bam", targets = c("bwa_align ", "fastq2ubam"), wf_file = "gatk/workflow_gatk_mergebams. aspx "), SYSargsList(step_name = "merge_bam", targets = c("bwa_align ", "fastq2ubam"), wf_file = "gatk/workflow_gatk_mergebams. aspx ")Cwl ", input_file = "gatk/gatk。yaml", dir_path = "param/cwl", inputvars = c(bwa_men_sam = "_bwasam_", ubam = "_ubam_", SampleName = "_SampleName_"), rm_targets_col = c("preprocessReads_1", "preprocessReads_2"), dependency = c("bwa_align ", "fastq2ubam")))
bam
按基因组坐标排列的文件排序bam
文件的基因组坐标。
appendStep(sal) <- SYSargsList(step_name = "sort", targets = "merge_bam", wf_file = "gatk/workflow_gatk_sort. sh ")Cwl ", input_file = "gatk/gatk。yaml", dir_path = "param/cwl", inputvars = c(merge_bam = "_mergebam_", SampleName = " _samplename_fastq2ubam ", "Factor_fastq2ubam", "SampleName_fastq2ubam", "Experiment_fastq2ubam", "Date_fastq2ubam"), dependency = c("merge_bam"))
标记测序中的PCR伪影。一个duplicate_metrics
该步骤还将生成文件,但不会用于下一步。该文件仅供用户检查重复状态摘要。
appendStep(sal) <- SYSargsList(step_name = "mark_dup", targets = "sort", wf_file = "gatk/ workflow_gatk_markduplcopies . ks . ks ")Cwl ", input_file = "gatk/gatk。yaml", dir_path = "param/cwl", inputvars = c(sort_bam = "_sort_", SampleName = "_SampleName_"), rm_targets_col = c("merge_bam"), dependency = c("sort"))
gvcf
的HaplotypeCaller
正在运行gvcf此步骤中的Mode。G代表“基因组”。该文件既包含变异站点信息,也包含非变异站点信息;因此,在接下来的步骤中,队列调用者可以使用该信息来验证真正的变体。
appendStep(sal) <- SYSargsList(step_name = "hap_caller", targets = "fix_tag", wf_file = "gatk/workflow_gatk_haplotypecaller. sh ")Cwl ", input_file = "gatk/gatk。yaml", dir_path = "param/cwl", inputvars = c(fixtag_bam = "_fixed_", SampleName = "_SampleName_"), rm_targets_col = c("mark_bam"), dependency = c("fix_tag"))
gvcfs
建议导入allgvcfs到一个TileDB数据库快速队列变量调用在下面的步骤。注意:如果您使用的是非二倍体数据,请使用CombineGVCFs
函数GATK
然后改变gvcf_db_folder
参数参数/ cwl gatk / gatk.yaml
成为你的组合gvcf文件路径。
重要的:确保所有样品* .g.vcf.gz
文件在结果文件夹中,也是创伤性脑损伤指数
文件也应该在那里。
appendStep(sal) <- SYSargsList(step_name = "import", targets = NULL, dir = FALSE, wf_file = "gatk/workflow_gatk_genomicsDBImport. sh)Cwl ", input_file = "gatk/gatk。Yaml ", dir_path = "param/cwl", dependency = c("hap_caller"))
gvcf
通过所有信息评估变体gvcfs
.一个集体vcf
被称为samples.vcf.gz
由默认命名创建。
appendStep(sal) <- SYSargsList(step_name = " call_variables ", targets = NULL, dir = FALSE, wf_file = "gatk/ workflow_gatk_genotypegvcf . aspx ")Cwl ", input_file = "gatk/gatk。Yaml ", dir_path = "param/cwl", dependency = c("import"))
变体质量评分再校准(VQSR)不包括在此工作流程中。变体被硬过滤在一起。看到这个帖子用于硬过滤的参数。更改这些设置参数/ cwl gak / gatk_variantFiltration.sh
如果需要的话。VQSR需要大量的样本作为训练数据,然后才能进行过滤。读到这帖子获取更多信息。
appendStep(sal) <- SYSargsList(step_name = "filter", targets = NULL, dir = FALSE, wf_file = "gatk/ workflow_gatk_variantfiltering . filter")Cwl ", input_file = "gatk/gatk。Yaml ", dir_path = "param/cwl", dependency = c(" call_variables "))
经过队列调用、筛选,所有样本的所有变量都存储在一个大文件中。为每个样本提取变量并分别保存它们(只有通过过滤器的变量才会被存储)。
appendStep(sal) <- SYSargsList(step_name = "create_vcf", targets = "hap_caller", wf_file = "gatk/workflow_gatk_select_variant. sh ")Cwl ", input_file = "gatk/gatk。yaml", dir_path = "param/cwl", inputvars = c(SampleName = "_SampleName_"), dependency = c("hap_caller", "filter"))
BCFtools
备选方案为BCFtool
:
下面运行调用with的变量BCFtools
.这个工具需要BWA
对齐BAM
文件,分类,标记重复samtools
最后调用变量byBCFtools
.出于传统原因,我们保留了这个选项。
appendStep(sal) <- SYSargsList(step_name = "create_vcf_BCFtool", targets = "bwa_align ", dir = TRUE, wf_file = "workflow-bcftools/workflow_bcftools. sh ")Cwl ", input_file = "工作流-bcftools/bcftools. Cwl "。yml", dir_path = "param/cwl", inputvars = c(bwa_men_sam = "_bwasam_", SampleName = "_SampleName_"), rm_targets_col = c("preprocessReads_1", "preprocessReads_2"), dependency = "bwa_align ", run_step = "optional")
变量调用到此结束。下游分析从下一节开始。
下游分析脚本存储在参数/ cwl / varseq_downstream
.
可选:此步骤不包含在默认工作流中。在成功执行整个工作流后,用户可以将各个vcf文件加载到R中进行其他分析,如下所示。
可以将VCF文件导入R中readVcf
函数。这两个VCF
而且VRanges
对象提供了方便的数据结构来处理不同的数据(如。SNP质量过滤)。
这个步骤没有包含在默认的工作流步骤中,但是对于检查单个样本的原始变量是有用的。
library(VariantAnnotation) vcf_raw <- getColumn(sal, "create_vcf") vcf <- readVcf(vcf_raw[1], "A. thaliana") vcf vr <- as(vcf, "VRanges") vr
这个函数filterVars
根据用户可定义的质量参数过滤VCF文件。它依次将每个VCF文件导入到R中,对内部生成的VCF文件应用过滤VRanges
对象,然后将结果写入一个新的子VCF文件。筛选器参数作为字符串传递给相应的参数。该函数将此筛选器应用于内部生成的VRanges
对象,使用二维对象的标准子集语法,例如:虚拟现实(过滤)
.
GATK
下面的示例筛选支持的变量> = x
read和>=80%支持调用的变量。此外,所有的变体都需要通过> = x
的软过滤器记录在由GATK生成的VCF文件中。由于这个工作流使用的玩具数据非常少,所以所选择的设置不合理的宽松。下面一行给出了一个更合理的筛选器设置(此处已被注释掉)。
在GATK第10步中已经有一些队列过滤。这里提供了一些额外的硬过滤。这一步包含在这里,但是在实际的分析中,您可以跳过这一步。
对于真实样本,使用以下过滤器:filter <- "totalDepth(vr) >= 20 & (altDepth(vr) / totalDepth(vr) >= 0.8)"
appendStep(sal) <- LineWise(code = {vcf_raw <- getColumn(sal, "create_vcf") library(VariantAnnotation) filter <- "totalDepth(vr) >= 2 & (altDepth(vr) / totalDepth(vr) >= 0.8)" vcf_filter <- suppressWarnings(filterVars(vcf_raw, filter, organism = "A. thaliana", out_dir = "results/vcf_filter")) #将过滤后的路径变量转储到运行环境中,以便其他sysArg步骤可以获得其值updateColumn(sal, "create_vcf", "outfiles") <- data.frame(vcf_filter = vcf_filter)},Step_name = "filter_vcf", dependency = "create_vcf")
BCFtools
以过滤VCF文件为例BCFtools
使用类似于前面过滤GATK结果的参数设置。
appendStep (sal) < - LineWise(代码= {vcf_raw < - getColumn (sal,一步=“create_vcf_BCFtool”,位置=“输出文件”,列=“bcftools_call”)图书馆(VariantAnnotation)过滤器< -“rowSums (vr) > = 2 & (rowSums (vr [3:4]) / rowSums (vr[1:4]) > = 0.8)“vcf_filter_bcf < - suppressWarnings (filterVars (vcf_raw、过滤、生物=“a芥”,out_dir =“结果/ vcf_filter_BCFtools”,varcaller =“bcftools”))updateColumn (sal,“create_vcf”、“外部档案”)<——data.frame (vcf_filter_bcf = vcf_filter_bcf)},step_name = "filter_vcf_BCFtools", dependency = "create_vcf_BCFtool", run_step = "optional")
检查一个样本的过滤结果
这个小步骤可用于比较vcf
过滤前后的文件。这可以在工作流运行之后使用,并确保完成了“filter_vcf”,因为这是一个可选步骤。
copyEnvir(sal, "vcf_raw", globalenv()) copyEnvir(sal, "vcf_filter", globalenv()) length(as(readVcf(vcf_raw[1],基因组= "Ath"), "VRanges")[, 1]) length(as(readVcf(vcf_filter[1],基因组= "Ath"), "VRanges")[, 1])
这个函数variantReport
类提供的实用程序生成变量报告VariantAnnotation
包中。每个样本的报告都被写入一个包含基因组上下文注释的表格文件(如。编码或非编码snp,氨基酸变化,受影响基因id等)以及每个变体的置信度统计。CWL文件参数/ cwl varseq_downstream / annotate.cwl
类中存储的输入和输出文件的路径SYSargs2
实例。
此步骤可以在运行默认工作流(不包括在默认工作流中)之后运行。
与公共注释特性重叠的变体可以用locateVariants
.
library("GenomicFeatures") #注释下一行如果可选步骤'filter_vcf'是# included vcf_filter <- getColumn(sal, "create_vcf") #取消注释下一行如果可选步骤'filter_vcf'是# included copyEnvir(sal, 'vcf_filter', globalenv()) txdb <- loadDb("./data/ taair10 .sqlite") vcf <- readVcf(vcf_filter[1], "A. thaliana") locateVariants(vcf, txdb, CodingVariants())
编码序列的同义/非同义变体由predictCoding
与编码区域重叠的变量函数。
fa <- FaFile("data/ ta10 .fasta") predictCoding(vcf, txdb, seqSource = fa)
GATK
或BCFtools
要求
appendStep(sal) <- LineWise(code ={#从R运行环境中获取过滤后的vcf路径copyEnvir(sal, "vcf_filter", globalenv()) library("GenomicFeatures") txdb <- loadDb("./data/ taair10 .sqlite") fa <- FaFile("data/ taair10 .fasta") vcf_anno <- suppressMessages(variantReport(vcf_filter, txdb = txdb, fa = fa, organism = "A. thaliana", out_dir = "results/vcf_anno"))}, step_name = "annotate_vcf", dependency = "filter_vcf")
查看单个样本的注释结果
copyenvirr (sal, "vcf_anno", globalenv()) read.delim(vcf_anno[1])[38:40,]
为简化样本间的比较,采用了combineVarReports
函数中引用的所有变量注释报告SYSargs2
实例(这里arg游戏
).同时,该函数允许只考虑感兴趣的某些特性类型。例如,下面的设置filtercol = c(结果=“产生”)
将只包括表中列出的非同义方差结果
注释报表的列。要省略筛选,可以使用该设置filtercol = "所有"
.
要求
appendStep(sal) <- LineWise(code = {combineDF <- combineVarReports(vcf_anno, filtercol = c(Consequence = "nonsynonym "))写。表(combineDF”。/结果/ combineDF_nonsyn。tsv", quote = FALSE, row.names = FALSE, sep = "\t")}, step_name = "combine_var", dependency = "annotate_vcf")
的varSummary
函数计算注释报告中包含的每个特性类型的变体数量。
要求
appendStep(sal) <- LineWise(code = {write.table(varSummary(vcf_anno), "./results/variantStats. "tsv", quote = FALSE, col.names = NA, sep = "\t")}, step_name = "summary_var", dependency = "combine_var")
可选但包含在默认值中
类定义的维恩图实用程序systemPipeR
包可用于识别不同样本和/或变量调用者报告的常见和唯一变量。下面生成了一个3向维恩图,比较了两个变量调用者各自的3个样本。
appendStep(sal) <- LineWise(code = {## make一个前三个样本的列表varlist <- sapply(names(vcf_anno[1:3]), function(x) as.character(read.delim(vcf_anno[x])$VARID) vennset <- overLapper(varlist, type = "vennsets") png("./results/vennplot_var.png") vennPlot(list(vennset), mymain = "Venn前3个样本的Venn Plot ", mysub = "" ", colmode = 2, ccol = c("red", "blue")) dev.off()}, step_name = "venn_diagram", dependency = "annotate_vcf")
可选但在默认情况下
下面绘制一个选定的变量ggbio
.
在这个例子中,输入BAM
文件来自GATK
第五步,分析准备就绪。你可以使用其他对齐方式BAMs
同样,但要确保它们有索引。的VCF
文件是从检查VCF文件
Section或者你也可以加载你自己的vcf。
appendStep(sal) <- LineWise(code ={#从R运行环境中获取过滤后的vcf路径copyEnvir(sal, "vcf_filter", globalenv()) library(ggbio) library(VariantAnnotation) mychr <- "ChrM" mystart <- 19000 myend <- 21000 bams <- getColumn(sal, "fix_tag") vcf <- suppressWarnings(readVcf(vcf_filter["M6B"], "A. thaliana")) ga <- readGAlignments(bams["M6B"], use.names = TRUE, param = ScanBamParam(which = GRanges(mychr, IRanges(mystart, myend)))) p1 <- autoplot(ga,Geom = "rect") p2 <- autoplot(ga, Geom = "line", stat = "coverage") p3 <- autoplot(vcf[seqnames(vcf) == mychr], type = "fixed") + xlim(mystart, myend) + theme(图例。position = "none", axis.text.y = element_blank(), axis.ticks.y = element_blank()) p4 <- autoplot(loadDb("./data/ taair10 .sqlite"), which = GRanges(mychr, IRanges(mystart, myend)), names。expr = "gene_id") p1_4 <- tracks(Reads = p1, Coverage = p2, Variant = p3, Transcripts = p4, heights = c(0.3, 0.2, 0.1, 0.35)) + ylab("") ggbio::ggsave(p1_4, filename = "./results/plot_variant.png", units = "in")}, step_name = "plot_variant", dependency = "filter_vcf")
sessionInfo ()
## R版本4.2.1(2022-06-23)##平台:x86_64-pc-linux-gnu(64位)##运行在Ubuntu 20.04.5 LTS ## ##矩阵产品:默认## BLAS: /home/biocbuild/bbs-3.16-bioc/R/lib/libRblas。/home/biocbuild/bbs-3.16-bioc/R/lib/libRlapack。所以## ## locale: ## [1] LC_CTYPE=en_US。UTF-8 LC_NUMERIC= c# # [3] LC_TIME=en_GB LC_COLLATE= c# # [5] LC_MONETARY=en_US。utf - 8 LC_MESSAGES = en_US。UTF-8 ## [7] LC_PAPER=en_US。UTF-8 LC_NAME= c# # [9] LC_ADDRESS=C lc_phone = c# # [11] LC_MEASUREMENT=en_US。UTF-8 LC_IDENTIFICATION=C ## ##附加的基本包:## [1]stats4 stats graphics grDevices utils ##[6]数据集方法基础## ##其他附加包:# # # # [1] systemPipeRdata_2.2.0 systemPipeR_2.4.0 [3] ShortRead_1.56.0 GenomicAlignments_1.34.0 # # [5] SummarizedExperiment_1.28.0 Biobase_2.58.0 # # [7] MatrixGenerics_1.10.0 matrixStats_0.62.0 # # [9] BiocParallel_1.32.0 Rsamtools_2.14.0 # # [11] Biostrings_2.66.0 XVector_0.38.0 # # [13] GenomicRanges_1.50.0 GenomeInfoDb_1.34.0 # # [15] IRanges_2.32.0 S4Vectors_0.36.0 # # [17] BiocGenerics_0.44.0 BiocStyle_2.26.0 # # # #通过加载一个名称空间(而不是附加):## [5] BiocManager_1.30.19 latticeextr_0.6 -30 ## [9] yaml_2.3.6 pillar_1.8.1 ## [11] lattice_0.20-45 glue_1.6.2 ## [13] digest_0.6.30 RColorBrewer_1.1-3 ## [15] colorspace_2.0-3 htmltools_0.5.3 ## [17] Matrix_1.5-1 pkgconfig_2.0.3 ## [23] bookdown_0.29 zlibbioc_1.44.0 ## [21] scales_1.2.1 jpeg_0.1-9 ## [25] ggplot2_3.3.6 cachem_1.0.6 ## [27][37] string_4.1 interp_1.1-3 ## [39] munsell_0.5.0 DelayedArray_0.24.0 ## [41] compiler_4.2.1 jquerylib_0.1.4 ## [43] rlang_1.0.6 grid_4.2.1 ## [45] RCurl_1.98-1.9 htmlwidgets_1.5.4 ## [47] bitops_1.0-7 rmarkdown_2.17 ## [45] gtable_0.3.1 codetools_0.2-18 ## [51] DBI_1.1.3 R6_2.5.1 ## [55] ## [53] knitr_1. 1.40 dplyr_1.0.10 ## [55]fastmap_1.1.0 utf8_1.2.2 ## [57] stringi_1.7.8 parallel_4.2.1 ## [59] Rcpp_1.0.9 vctrs_0.5.0 ## [61] png_0.1-7 tidyselect_1.2.0 ## [63] xfun_0.34
为了运行工作流,runWF
函数将执行工作流容器中存储的所有步骤。执行将在一台机器上进行,而无需提交到计算机集群的队列系统。
sal <- runWF(sal)
另外,通过使用集群的多个计算节点并行处理许多文件,可以大大加快计算速度,其中调度/队列系统用于负载平衡。
的资源
对象下定义的独立并行集群进程的数目Njobs
元素。下面的示例将使用每个4个CPU内核并行运行18个进程。如果集群上的可用资源允许同时运行所有18个进程,那么所示的示例提交将总共使用72个CPU内核。
请注意,runWF
可以用于大多数排队系统,因为它是基于实用程序batchtools
包,它支持使用模板文件(* .tmpl
)用于定义不同调度器的运行参数。要运行下面的代码,需要同时拥有conffile
(见.batchtools.conf.R
样品在这里)和a模板
文件(见* .tmpl
样品在这里)用于系统上可用的排队。下面的示例使用了该示例conffile
而且模板
该包提供的Slurm调度器的文件。
可以在生成步骤时添加资源,也可以稍后添加这些资源,如下面的示例所示addresource
功能:
资源<- list(conffile=".batchtools.conf. conf. "R”、模板= " batchtools.slurm。tmpl", Njobs=18, walltime=120, ## minutes ntasks=1, ncpus=4, memory=1024, ## Mb partition = "short") sal <- addResources(sal, c("hisat2_mapping"), resources = resources) sal <- runWF(sal)
systemPipeR
方法可以可视化工作流实例plotWF
函数。
plotWF(sal, rstudio = TRUE)
要查看工作流的摘要,我们可以使用:
萨尔statusWF (sal)
systemPipeR
在一个中心位置编译所有工作流执行日志,使其更容易检查任何标准输出(stdout
)或标准错误(stderr
)用于工作流或R代码标准输出中使用的任何命令行工具。
sal <- renderLogs(sal)
这是用于呈现该报告的会话信息。的HTML报表可以访问工作流运行的会话信息renderLogs
.
sessionInfo ()
## R版本4.2.1(2022-06-23)##平台:x86_64-pc-linux-gnu(64位)##运行在Ubuntu 20.04.5 LTS ## ##矩阵产品:默认## BLAS: /home/biocbuild/bbs-3.16-bioc/R/lib/libRblas。/home/biocbuild/bbs-3.16-bioc/R/lib/libRlapack。所以## ## locale: ## [1] LC_CTYPE=en_US。UTF-8 LC_NUMERIC= c# # [3] LC_TIME=en_GB LC_COLLATE= c# # [5] LC_MONETARY=en_US。utf - 8 LC_MESSAGES = en_US。UTF-8 ## [7] LC_PAPER=en_US。UTF-8 LC_NAME= c# # [9] LC_ADDRESS=C lc_phone = c# # [11] LC_MEASUREMENT=en_US。UTF-8 LC_IDENTIFICATION=C ## ##附加的基本包:## [1]stats4 stats graphics grDevices utils ##[6]数据集方法基础## ##其他附加包:# # # # [1] systemPipeRdata_2.2.0 systemPipeR_2.4.0 [3] ShortRead_1.56.0 GenomicAlignments_1.34.0 # # [5] SummarizedExperiment_1.28.0 Biobase_2.58.0 # # [7] MatrixGenerics_1.10.0 matrixStats_0.62.0 # # [9] BiocParallel_1.32.0 Rsamtools_2.14.0 # # [11] Biostrings_2.66.0 XVector_0.38.0 # # [13] GenomicRanges_1.50.0 GenomeInfoDb_1.34.0 # # [15] IRanges_2.32.0 S4Vectors_0.36.0 # # [17] BiocGenerics_0.44.0 BiocStyle_2.26.0 # # # #通过加载一个名称空间(而不是附加):## [5] BiocManager_1.30.19 latticeextr_0.6 -30 ## [9] yaml_2.3.6 pillar_1.8.1 ## [11] lattice_0.20-45 glue_1.6.2 ## [13] digest_0.6.30 RColorBrewer_1.1-3 ## [15] colorspace_2.0-3 htmltools_0.5.3 ## [17] Matrix_1.5-1 pkgconfig_2.0.3 ## [23] bookdown_0.29 zlibbioc_1.44.0 ## [21] scales_1.2.1 jpeg_0.1-9 ## [25] ggplot2_3.3.6 cachem_1.0.6 ## [27][37] string_4.1 interp_1.1-3 ## [39] munsell_0.5.0 DelayedArray_0.24.0 ## [41] compiler_4.2.1 jquerylib_0.1.4 ## [43] rlang_1.0.6 grid_4.2.1 ## [45] RCurl_1.98-1.9 htmlwidgets_1.5.4 ## [47] bitops_1.0-7 rmarkdown_2.17 ## [45] gtable_0.3.1 codetools_0.2-18 ## [51] DBI_1.1.3 R6_2.5.1 ## [55] ## [53] knitr_1. 1.40 dplyr_1.0.10 ## [55]fastmap_1.1.0 utf8_1.2.2 ## [57] stringi_1.7.8 parallel_4.2.1 ## [59] Rcpp_1.0.9 vctrs_0.5.0 ## [61] png_0.1-7 tidyselect_1.2.0 ## [63] xfun_0.34
该项目由美国国立卫生研究院(NIH)和美国国家科学基金会(NSF)资助。
博尔杰,安东尼·M,马克·洛塞,比约恩·乌萨德尔,2014。Trimmomatic:用于Illumina序列数据的灵活修剪器生物信息学30(15): 2114-20。
H·贝克曼,泰勒·W,托马斯·格克,2016。“systemPipeR: NGS工作流和报告生成环境。”BMC生物信息学17(1): 388。https://doi.org/10.1186/s12859-016-1241-0.
李,H, R德宾,2009。“快速和准确的短读对齐与Burrows-Wheeler变换。”生物信息学25(14): 1754-60。https://doi.org/10.1093/bioinformatics/btp324.
李恒,2013。用BWA-MEM校准序列读取,克隆序列和组装ContigsarXiv [Q-bio。GN)3月。http://arxiv.org/abs/1303.3997.