当前位置: 首页 > news >正文

生信软件39 - GATK最佳实践流程重构,提高17倍分析速度的LUSH流程

1. LUSH流程简介

基因组测序通常用于分子诊断、分期和预后,而大量测序数据在分析时间方面提出了挑战。

对于从FASTQ到VCF的整个流程,LUSH流程在非GVCF和GVCF模式下都大大降低了运行时间,30 X WGS数据耗时不到2 h,从BAM到VCF约需12分钟,比GATK流程快约17倍,比GATK-Spark流程快4.5倍;在准确性方面,LUSH和GATK的结果同样准确且高度一致。这对于儿科重症监护室(PICU)和新生儿重症监护室(NICU)中的婴儿等急性病患者至关重要。

LUSH可以有效地加速所有类型的DNAseq数据(如WGS,WES,PANEL等)的分析。由LUSH生成的BAM文件(遵循原始的BWA算法)也可用于随后的结构变异(SV)和拷贝数变异(CNV)的检测,用作常见SV调用者如Manta、Delly 和Lumpy 等软件的输入。

论文: Fast and accurate DNASeq variant calling workflow composed of LUSH toolkit

https://humgenomics.biomedcentral.com/articles/10.1186/s40246-024-00666-w

github: https://github.com/Bgi-LUSH/LUSH-DNASeq-pipeline

2. LUSH DNASeq工作流程

LUSH DNASeq工作流程是基于GATK最佳实践的优化管道,由LUSH_AlignerLUSH_BQSRLUSH_HCLUSH_GenotypeGVCF组成。

工作流程

LUSH_Aligner集成了多个功能模块,如SOAPnuke,Bwa MEM,Samtools sort和GATK-MarkDuplicates(Picard),同时基于原始算法进行了完全重新开发。

2.1 LUSH_Aligner

LUSH_Aligner由三个主要功能模块组成:“FqFilterAlignent”、“bwaMEM Alignent”和“SortDuplicateAlignent”,分别进行fastq过滤、比对齐以及BAM排序和标记重复任务。

2.2 LUSH_BQSR

测序仪产生的碱基质量分数受到各种系统性技术误差的影响,导致获得的质量分数过高或过低。碱基质量分数矫正(Base Quality Score Recalibration, BQSR)是使用机器学习方法对这些错误进行经验建模,并调整质量分数,主要包括2个步骤:Base Recalibration and applying BQSR

LUSH_BQSR实现了生产者-消费者并行计算结构,以优化并行任务并提高CPU利用率,减少了冗余IO消耗,最终提高了处理速度。

2.3 LUSH_HC和LUSH_GenotypeGVCF

HaplotypeCaller采用区域内的局部从头组装方法,用于准确检测单核苷酸多态性(SNP)和小的插入缺失(Indels),主要包括4个连续的步骤:识别区域、区域内局部组装推断单倍型、估计可能值和利用隐马尔可夫模型(HMM)在贝叶斯推理的基础上确定基因型。LUSH_GenotypeGVCF(0.21小时)比GATK-GenotypeGVCF(1.13小时)快5倍。

LUSH_HC采用了进一步的任务细分策略,结合资源动态分配,以实现负载平衡并优化资源分配。

当以12个线程运行时,流程在约4.89小时内完成,当以56个线程运行时,流程在约1.6小时内完成,这表明LUSH流水线具有很大的线程可扩展性

3. LUSH管道与GATK和GATK-Spark管道的准确性

LUSH的底层算法与GATK或GATK-Spark大致相同,因此它们预计会产生相同的结果。

LUSH和GATK管道的非GVCF模式和GVCF模式的结果比较表明,前者表现出更高的准确率和略低的召回率。F1分数显示非GVCF模式在两个流水线的准确性方面表现出更好的性能,与两个家系WGS数据完全一致。

4. 使用方法

# 克隆github项目
git clone https://github.com/Bgi-LUSH/LUSH-DNASeq-pipeline

4.1 lush_aligner构建参考基因组索引

# 构建hg19参考基因组序列索引
./bin/LUSH_toolkit-Aligner/lush_aligner index /path/hg19.fa

4.2 lush_aligner执行fastq过滤+比对+排序+标记重复

# 创建结果目录
mkdir -p ./outdir/clean_data./bin/LUSH_toolkit-Aligner/lush_aligner filter4mem \-6 ./outdir/ \-n 0.1 -J 0.5 -l 12 -g 2 -b 2 -t 20 -M \-r /path/hg19.fa \# 输出排序+标记重复bam-o ./outdir/NA12878.sort.dup.bam \-Z ./outdir/clean_data \# fastq路径及-R参数配置文件-i ./example_data/lush.config

./example_data/lush.config内容:

./example_data/NA12878_l01_1.fq.gz  NA12878_l01_1       @RG\tID:NA12878.1\tLB:LibA\tSM:NA12878\tPL:COMPLETE\tCN:BGI
./example_data/NA12878_l01_2.fq.gz  NA12878_l01_2
./example_data/NA12878_l02_1.fq.gz  NA12878_l02_1       @RG\tID:NA12878.2\tLB:LibA\tSM:NA12878\tPL:COMPLETE\tCN:BGI
./example_data/NA12878_l02_2.fq.gz  NA12878_l02_2

4.3 lush_bqsr执行碱基质量矫正和ApplyBQSR

export LD_LIBRARY_PATH=./bin/LUSH_toolkit-BQSR:$LD_LIBRARY_PATH./bin/LUSH_toolkit-BQSR/lush_bqsr \--bam_path /INPUT_PATH/NA12878.sort.dup.bam \--out_dir ./outdir/LUSH_BQSR  \--plugin_path ./bin/LUSH_toolkit-BQSR/libbqsr.so \--producer_number 2 \--worker_number 21 \--fasta /path/hg19.fa \# 金标准indels vcf文件--known_site Mills_and_1000G_gold_standard.indels.hg19.vcf \--writer_thread 5 \--pr_one_bam 1

4.4 lush_hc执行GenotypeGVCFs变异检测

export LD_LIBRARY_PATH=./bin/LUSH_toolkit-HC:$LD_LIBRARY_PATH./bin/LUSH_toolkit-HC/lush_hc HaplotypeCaller \--pcr-indel-model NONE \-I /INPUT_PATH/NA12878.sort.dup.bam \-R hg19.fa \-O ./outdir/NA12878.vcf.gz

4.5 LUSH_GenotypeGVCFs

LUSH_GenotypeGVCFs是GATK GenotypeGVCFs功能使用C/C++的重新实现。

# UASGE: 
# LUSH_GenotypeGVCF inputGvcfFile outputVcfFile stand-call-conf# inputGvcfFile   input VCF file
# outputGvcfFile  output file name:/file/NA12878_PCR.vcf.gz
# stand-call-conf The minimum phred-scaled confidence threshold at which variants # should be called:10.0# 示例
export LD_LIBRARY_PATH=./bin/LUSH_toolkit-GenotypeGVCFs:$LD_LIBRARY_PATH./bin/LUSH_toolkit-GenotypeGVCFs/lush_genotypegvcfs \
INPUT_PATH/NA12878.g.vcf.gz \
./outdir/NA12878.vcf.gz 10

5. GATK管道Shell脚本

Usage:GATK_pipeline.sh [-i FQFile] [-t THREAD] [-o OUTDIR] [-m MODEL] [-s PREFIX] [-p SPARK]Description:FQFile, the path of INPUT fastq file, should be like '/path/fastq1,/path/fatq2'THREAD, the number of thread [10]OUTDIR, the path of outdir [./]PREFIX, the prefix of outputfile [GATKtest]MODE, GVCF or not [Y/N]SPARK, Spark or not [Y/N]GATK_pipeline.sh \
-i /PATH/MGISEQ2000_PCR-free_NA12878_30X_1.fq.gz,/PATH/MGISEQ2000_PCR-free_NA12878_30X_2.fq.gz \
-t 40 \
-o ./  \
-m N \
-s samplename \
-p N

6. 比较LUSH和GATK管道获得的变异VCF文件

Haplotype_Comparison.sh \
-i LUSHtest.vcf.gz,GATKtest.vcf.gz \
-t 40 \
-o ./ -s sample

生信软件文章推荐

生信软件1 - 测序下机文件比对结果可视化工具 visNano

生信软件2 - 下游比对数据的统计工具 picard

生信软件3 - mapping比对bam文件质量评估工具 qualimap

生信软件4 - 拷贝数变异CNV分析软件 WisecondorX

生信软件5 - RIdeogram包绘制染色体密度图

生信软件6 - bcftools查找指定区域的变异位点信息

生信软件7 - 多线程并行运行Linux效率工具Parallel

生信软件8 - bedtools进行窗口划分、窗口GC含量、窗口测序深度和窗口SNP统计

生信软件9 - 多公共数据库数据下载软件Kingfisher

生信软件10 - DNA/RNA/蛋白多序列比对图R包ggmsa

生信软件11 - 基于ACMG的CNV注释工具ClassifyCNV

生信软件12 - 基于Symbol和ENTREZID查询基因注释的R包(easyConvert )

生信软件13 - 基于sambamba 窗口reads计数和平均覆盖度统计

生信软件14 - bcftools提取和注释VCF文件关键信息

生信软件15 - 生信NGS数据分析强大的工具集ngs-bits

生信软件16 - 常规探针设计软件mrbait

生信软件17 - 基于fasta文件的捕获探针设计工具catch

生信软件18 - 基于docker部署Web版 Visual Studio Code

生信软件19 - vcftools高级用法技巧合辑

生信软件20 - seqkit+awk+sed+grep高级用法技巧合辑

生信软件21 - 多线程拆分NCBI-SRA文件工具pfastq-dump

生信软件22 - 测序数据5‘和3‘端reads修剪工具sickle

生信软件23 - Samtools和GATK去除PCR重复方法汇总

生信软件24 - 查询物种分类学信息和下载基因组TaxonKit和ncbi-genome-download

生信软件25 - 三代测序数据灵敏比对工具ngmlr

生信软件26 - BWA-MEM比对算法性能更好的bwa-mem2

生信软件27 - 基于python的基因注释数据查询/检索库mygene

生信软件28 - fastq与bam的reads数量计算与双端fastq配对检测工具fastq-pair

生信软件29 - 三代数据高效映射精确的长读段比对工具mapquik

生信软件30 - 快速单倍型分析工具merlin

生信软件31 - Bcftools操作VCF/BCF文件高级用法合集

生信软件32 - 变异位点危害性评估预测工具合集

生信软件33 - Wgsim生成双端(PE) fastq模拟数据

生信软件34 - 大幅提升Python程序执行效率的工具Pypy

生信软件35 - AI代码编辑器Cursor

生信软件36 - SAM/BAM/CRAM文件插入SNV/INDEL/SV工具Bamsurgeon

生信软件37 - 基于测序reads变异进行单倍型分型工具WhatsHap

生信软件38 - 基因型填充软件IMPUTE2

http://www.lryc.cn/news/467033.html

相关文章:

  • c#编写的各类应用程序、类库的引用(黑白盒)
  • 计算机网络考研笔记
  • 用感性的方式浅要了解什么是AI 与 大模型
  • Linux文件的查找和打包以及压缩
  • 专题十四_哈希表_算法专题详细解答
  • C++源码生成·序章
  • Android中的MVP模式
  • kebuadm部署k8s集群
  • Unity3D学习FPS游戏(2)简单场景、玩家移动控制
  • 网上的 AQS 文章让我很失望
  • 滑动窗口子串
  • 【windows11 提示“Microsoft Visual C++ Runtime Library Runtime Error】
  • 【leetcode|哈希表、动态规划】最长连续序列、最大子数组和
  • 【人工智能】掌握深度学习中的时间序列预测:深入解析RNN与LSTM的工作原理与应用
  • 今日开放!24下软考机考「模拟练习平台」操作指南来啦!
  • 合并.md文档
  • 10月18日笔记(基于系统服务的权限提升)
  • 【STM32 Blue Pill编程实例】-控制步进电机(ULN2003+28BYJ-48)
  • 监督学习、无监督学习、半监督学习、强化学习、迁移学习、集成学习分别是什么对应什么应用场景
  • WSL2 Linux子系统调整存储位置
  • Shiro授权
  • 算法题总结(十五)——贪心算法(下)
  • 《深度学习》【项目】自然语言处理——情感分析 <下>
  • postgresql是国产数据库吗?
  • 软考——计算机网络概论
  • 01 设计模式-创造型模式-工厂模式
  • ComnandLineRunner接口, ApplcationRunner接口
  • Swift用于将String拆分为数组的components与split的区别
  • docker之redis安装(项目部署准备)
  • 使用Maven前的简单准备