生信软件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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/900722.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【计网】UDP Echo Server与Client实战:从零开始构建简单通信回显程序

目录 前言: 1.实现udpserver类 1.1.创建udp socket 套接字 --- 必须要做的 socket()讲解 代码实现:​编辑 代码讲解: 1.2.填充sockaddr_in结构 代码实现: 代码解析: 1.3.bind sockfd和…

linux中级wed服务器(https搭建加密服务器)

一。非对称加密算法: 公钥:公共密钥,开放 私钥:私有密钥,保密 1.发送方用自己的公钥加密,接受方用发送方的私钥解密:不可行 2.发送方用接受方的公钥加密,接受方用自己的私钥解密…

ffmpeg视频滤镜: 色温- colortemperature

滤镜简述 colortemperature 官网链接 》 FFmpeg Filters Documentation 这个滤镜可以调节图片的色温,色温值越大显得越冷,可以参考一下下图: 咱们装修的时候可能会用到,比如选择灯还有地板的颜色的时候,选暖色调还是…

【论文+源码】基于spring boot的垃圾分类网站

创建一个基于Spring Boot的垃圾分类网站涉及多个步骤,包括环境搭建、项目创建、数据库设计、后端服务开发、前端页面设计等。下面我将引导您完成这个过程。 第一步:准备环境 确保您的开发环境中安装了以下工具: Java JDK 8 或更高版本Mav…

Unity URP ShaderGraph 基本设置

先简单了解一下各种渲染管线之间的区别 Unity 从 2019.3 版本开始正式支持通用渲染管线(URP,Universal Render Pipeline)。URP 是轻量渲染管线(LWRP,Lightweight Render Pipeline)的升级和重命名版本&…

【解决】使用Hypermark将Markdown文件转化为HTML文件

写在前面: 如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持! 文章目录 一、文件准备(一)HTML模板文件(二)MD文件夹和储存文件夹 二、文件转…

COSCon'24 志愿者招募令:共创开源新生活!

亲爱的开源爱好者们, 第九届中国开源年会(COSCon24)即将在北京中关村国家自主创新示范区会议中心于2024年11月2日至3日隆重举行。今年的主题是“Open Source, Open Life|开源新生活”,旨在探索开源技术如何在各个领域推…

日常记录,使用springboot,vue2,easyexcel使实现字段的匹配导入

目前的需求是数据库字段固定,而excel的字段不固定,需要实现excel导入到一个数据库内。 首先是前端的字段匹配,显示数据库字段和表头字段 读取表头字段: 我这里实现的是监听器导入,需要新建一个listen类。 读Excel …

uniApp 加载google地图 并规划路线

uniApp 加载google地图 并规划路线 备注:核心代码实例 备注: 打开谷歌地图失败的话 参考google开发文档 https://developers.google.com/maps/documentation/urls/ios-urlscheme?hlzh-cn#swift核心代码 mounted() {this.loadGoogleMapsScript(); }, methods: {//加载loadGo…

AI服务器HBA卡的国产PCIe4.0/5.0 switch信号完整性设计与实现,支持定制(二)

表 2 展示了 PCB 板所选介质材料 PSR4000AUS703 , &#xff3…

解决Redis缓存穿透(缓存空对象、布隆过滤器)

文章目录 背景代码实现前置实体类常量类工具类结果返回类控制层 缓存空对象布隆过滤器结合两种方法 背景 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库 常见的解决方案有两种,分别…

使用DolphinScheduler接口实现批量导入工作流并上线

使用DS接口实现批量导入工作量并上线脚本 前面实现了批量生成DS的任务,当导入时发现只能逐个导入,因此通过接口实现会更方便。 DS接口文档 DS是有接口文档的地址是 http://IP:12345/dolphinscheduler/swagger-ui/index.html?languagezh_CN&lang…

安全见闻---清风

注:本文章源于泷羽SEC,如有侵权请联系我,违规必删 学习请认准泷羽SEC学习视频:https://space.bilibili.com/350329294 安全见闻1 泷哥语录:安全领域什么都有,不要被表象所迷惑,无论技术也好还是其他方面…

网站建设中需要注意哪些安全问题?----雷池社区版

服务器与应用安全指南 1. 服务器安全 1.1 操作系统安全 及时更新补丁:确保操作系统始终安装最新补丁,以防范系统漏洞。例如,Windows Server 定期推送安全更新,修复如远程代码执行等潜在威胁。优化系统服务配置:关闭不…

PoissonRecon学习笔记

1. Screened Poisson Reconstruction (SPR) 源码:https://github.com/mkazhdan/PoissonRecon However, as noted by several researchers, it suffers from a tendency to over-smooth the data. 泊松重建存在过度平滑的现象。 方法:position and gradi…

【C++】一文带你深入理解C++异常机制

⭐️个人主页:小羊 ⭐️所属专栏:C 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 前言一、C语言处理错误的方式二、C异常三、异常的使用3.1 异常的抛出和捕获3.2 异常的重新抛出3.3 异常安全3.4 异常规范 四、自定义异…

擎创科技声明

近日,我司陆续接到求职者反映,有自称是擎创科技招聘人员,冒用“上海擎创信息技术有限公司”名义,用“126.com”的邮箱向求职者发布招聘信息,要求用户下载注册APP,进行在线测评。 对此,我司郑重…

7、哈希表

7、哈希表 哈希表最主要的作用就是把一个比较庞大的空间或者值域 映射到比较小的值域 (0-n) 就是将-10^9 ~10^9 映射到 0 ~10^5 一、存储结构 映射的方法可以是 h(x) x mod 10^5 但是这样映射会出现一个问题 可能会有重复的数字出现 所以就引出了两个方法 开放寻址法 和…

【Javaee】网络原理—TCP协议的核心机制

前言 TCP/IP五层协议是互联网中的主流模型,为网络通信提供了一个稳固的框架。 主要包含了应用层,传输层,网络层,数据链路层,物理层。 本篇主要介绍传输层的TCP协议的核心机制 一. 确认应答(ack&#xf…

SQL 干货 | SQL 半连接

大多数数据库开发人员和管理员都熟悉标准的内、外、左和右连接类型。虽然可以使用 ANSI SQL 编写这些连接类型,但还有一些连接类型是基于关系代数运算符的,在 SQL 中没有语法表示。今天我们将学习一种这样的连接类型:半连接(Semi …