专栏名称: 生信百科
依托高校科研平台,面向生物信息科研工作者。生物信息学习资料;常见数据分析技巧、流程;公共数据库分享;科研思路分享;
目录
相关文章推荐
丁香园  ·  刚刚!暂停向中国市场供应 HPV 疫苗 ·  17 小时前  
Clinic門诊新视野  ·  赛禾医疗亮相Arab Health ... ·  21 小时前  
蒲公英Ouryao  ·  2024年FDA批准的50个“创新药”(下载 ... ·  3 天前  
医学界  ·  在“双非”医学院,他本硕7年发了12篇SCI ·  5 天前  
51好读  ›  专栏  ›  生信百科

重测序分析流程及分析经验介绍

生信百科  · 公众号  · 医学  · 2017-08-24 06:32

正文

前几期的博文中我们已经介绍了质量检查和质量控制的基本内容,本期我们来看一下重测序/外显子测序分析的经典流程——BWA MEM + GATK,本期的内容包含分析代码,分析过程中可能会遇到的问题以及我个人的一些经验。如果大家喜欢,欢迎分享到朋友圈。

RAW reads QC

Trimmomatic=/your/path/to/trimmomatic-0.36.jar adapter=/your/path/to/adapters java -jar "$Trimmomatic" PE -phred33 ${name}_1.fq.gz ${name}_2.trim.fq.gz ${name}_R1.clean.fq.gz ${name}_R1.unpaired.fq.gz ${name}_R2.clean.fq.gz ${name}_R2.unpaired.fq.gz ILLUMINACLIP:"$adapter"/Exome.fa:2:30:10:1:TRUE LEADING:20 TRAILING:20 SLIDINGWINDOW:4:15 -threads 2 MINLEN:36

关于本期博文所用软件的安装方法请见文末链接;

上一期的博文已经包含了对 Trimmomatic 的介绍,这里就不在赘述了。

Prepare reference genome

samtools faidx ref.fa bwa index -a bwtsw ref.fa Picard=/your/path/to/picard.jar java -jar $Picard CreateSequenceDictionary REFERENCE=ena.fasta OUTPUT=ref.dict

  1. 运行 samtools faidx ref.fasta 将得到一个 ref.fa.fai 的文件,这个文件会被 BWA 和 GATK 调用,如果文件不存在软件会报错。文件中的每一行为一个 contig 的记录,包含:contig name, size, location, basesPerLine, bytesPerLine,如下图所示:


  2. 运行 bwa index -a bwtsw ref.fa 将得到 ref.fa.amb,ref.fa.ann,ref.fa.bwt,ref.fa.pac,ref.fa.sa 5个文件,这些文件是 BWA mapping 时所必须的。

    对于比较大的基因组,比如火炬松基因组有 22G ,运行时间会超过 10 个小时 (同时也取决于 CPU 的计算能力)。

  3. 运行Picard 的 CreateSequenceDictionary 将得到 ref.dict,其描述参考基因组的内容,如下图所示:


    对于比较大或者比较碎的基因组,比如火炬松 22G 基因组,会出现 java 运行错误,提示 java 虚拟机内存不足。这时,即使改变 java 运行参数 (比如设置 Xmx 等) 也不能正常运行千万不要耗费时间这里!

    由于 .dict 文件只是 GATK 必须的,如果你的基因组很大不能建立 .dict, 可以考虑换成 BWA + Samtools + Bcftoos 流程,或者自己写代码生成 .dict 文件。

Mapping

ref=/your/path/to/ref.faecho "Job  started "`date`" "bwa mem -M ${ref} ${name}_1.fq.gz ${name}_2.fq.gz -R "@RG\tID:${name}\tPL:Illumina\tSM:${name}\tLB:WGS" -t 12 | samtools view -Shb ${ref}.fai - > ${name}.PE.bam bwa mem -aM ${ref} ${name}_R1.unpaired.fq.gz -R "@RG\tID:${name}\tPL:Illumina\tSM:${name}\tLB:WGS" -t 12 | samtools view -Shb "$ref".fai - > ${name}.R1.bam bwa mem -aM ${ref} ${name}_R1.unpaired.fq.gz -R "@RG\tID:${name}\tPL:Illumina\tSM:${name}\tLB:WGS" -t 12 | samtools view -Shb "$ref".fai - > ${name}.R2.bam samtools merge ${name}.merge.bam ${name}.PE.bam ${name}.R1.bam ${name}.R2.bamecho "Job  ended "`date`" "

这里需要注意的有几点:

  1. 我们可以直接用 samtools 把 mapping 结果转成 bam 格式,不需要额外的运行步骤!

  2. 在 mapping 的时候可以直接用 -R 参数加 header,后面的分析就能正常进行了,可省略用 Picard 加 header 的步骤!

  3. 运行 BWA 的时候一定要申请足够的内存,并检查生成 bam 文件的大小。我遇到过 "运行内存不足不报错直接生成一个很小的 bam (几十M)" 的情况,正常的大小应该为几百兆!

  4. 我没有给运行时间的测试,因为大家研究的物种不同,参考基因组大小、测序深度也不一样,运行时间会有很大差异;而且不同的集群计算能力差异非常大,不同的集群运行速度可能会相差几倍!

Sort,Fix Mate Information and mark duplicates

Picard=/your/path/to/picard.jar java -jar $Picard SortSam INPUT=${name}.merge.bam OUTPUT=${name}.sorted.bam SORT_ORDER=coordinate VALIDATION_STRINGENCY=SILENT java -jar $Picard FixMateInformation INPUT=${name}.sorted.bam SO=coordinate java -jar $Picard MarkDuplicates INPUT=${name}.sorted.bam OUTPUT=${name}.dedup.bam METRICS_FILE=metrics.txt VALIDATION_STRINGENCY=SILENT java -jar $Picard BuildBamIndex INPUT="$sample".dedup.bam VALIDATION_STRINGENCY=SILENT rm ${name}.PE.bam ${name}.R1.bam ${name}.R2.bam ${name}.merge.bam ${name}.sorted.bam

这里需要注意的是:

  1. 如果 Picard 总抱怨文件格式不对而不能运行,可以尝试加上 VALIDATION_STRINGENCY=SILENT 参数。

  2. GATK 可以处理 Picard 标记为重复的 reads,因此可以仅做标记不删除。







    请到「今天看啥」查看全文