BWA 的基本介绍和主要算法

news2024/12/21 22:14:24

BWA 的基本介绍和主要算法

1. BWA 简介

BWA(Burrows-Wheeler Aligner)是一款将 DNA 序列比对到参考基因组上的工具,特别适用于低差异性的序列。它被广泛应用于基因组学和生物信息学研究,特别是在高通量测序数据处理和全外显子组测序(WES)分析中。

用途(比对)

BWA 可以将 DNA 序列映射到大型参考基因组

2. BWA 的三种算法

  • BWA-backtrack:适用于**短于 100 bp **的 Illumina 测序读段。主要用于早期版本的 Illumina 数据。
  • BWA-SW:适用于较长的序列(从 70 bp 到数百万 bp)。这种算法能够很好地处理较长的拼接片段或大型序列。
  • BWA-MEM:适用于序列长度从** 70 bp 到 1 Mbp** 的比对,最新且最常用的算法,适用于处理长读段和复杂序列。它通过寻找最大扩展匹配(MEM)来定位种子,然后使用 Smith-Waterman 算法进行局部比对,支持 indels(插入和缺失)处理。

BWA-MEM 特点:

  • 能够处理长度从 70 bp 到 1 Mbp 的读段。
  • 通过寻找 MEM 来进行种子化,支持 indels。
  • 使用 Smith-Waterman 算法来扩展比对,精度和效率都很高。

3. BWA 的索引构建

在使用 BWA 进行比对之前,必须对参考基因组(如人类基因组)进行索引构建。BWA 提供了两种不同的索引构建算法,分别是 ISbwtsw。参考基因组数据通常以 .fa.fasta 格式提供。

基本命令
bwa index [-p prefix] [-a algoType] <in.db.fasta>
  • -p prefix:为生成的索引文件指定输出文件的前缀(可选)。
  • -a algoType:指定构建索引的算法类型。可选的值有 isbwtsw
  • <in.db.fasta>:输入的参考基因组文件(FASTA 格式)。

算法选择

  • IS 算法(IS linear-time algorithm)

    • 是一种线性时间算法,用于构建后缀数组(suffix array)。
    • 内存需求:需要参考基因组大小的 5.37 倍内存。
    • 限制:不能处理大于 2 GB 的数据库。因此,IS 算法适用于小型参考基因组,但不适用于像人类基因组这样的大型基因组。
    • 优点:简单且速度适中,是 BWA 的默认算法
  • bwtsw 算法(BWT-SW Algorithm)

    • 适用于处理大型基因组数据,如整个人类基因组。
    • 没有 2 GB 的大小限制,因此更适合大规模基因组的数据处理。
生成的索引文件

索引构建完成后,BWA 会生成以下 5 个文件:

  • .bwt:Burrows-Wheeler Transform 结果。
  • .pac:压缩后的参考基因组序列。
  • .ann:注释信息。
  • .amb:二进制的 N 区域标记文件(表示不确定碱基的位置)。
  • .sa:后缀数组。
bwa index  genome.fasta
genome.fasta.amb
genome.fasta.ann
genome.fasta.bwt
genome.fasta.pac
genome.fasta.sa

这些文件将用于后续的序列比对。

BWA 的比对

4. BWA 的序列比对

在完成参考基因组的索引构建后,可以使用 BWA 进行序列比对。根据不同的序列长度和数据类型,可以选择不同的算法来进行比对。在实际应用中,BWA-MEM 是最常用的比对算法,适用于大多数测序数据。

BWA-MEM 算法

BWA-MEM 适用于长度在** 70 bp 到 1 Mbp** 之间的序列,并且能处理长读段和复杂序列。BWA-MEM 通过寻找最大扩展匹配(MEM)来进行种子化,然后使用 Smith-Waterman 算法(https://blog.csdn.net/2302_80012625/article/details/142904050?spm=1001.2014.3001.5501)扩展这些种子,并支持 indels 的处理。

基本用法
bwa mem [options] <idxbase> <in1.fq> [in2.fq] > output.sam
  • [options]:一系列可选参数。
  • <idxbase>:参考基因组的索引文件 前缀
  • <in1.fq>[in2.fq]:输入的质控后的 FASTQ 文件,in1.fq 是必选的(单端测序或双端测序的第一个读段),in2.fq 是可选的(双端测序的第二个读段)。
  • output.sam:输出文件的路径,结果会以 SAM 格式输出。
示例
bwa mem -t 4 reference.fa sample_1.fq.gz sample_2.fq.gz > output.sam
# 使用 BWA 进行比对,并生成 SAM 文件
bwa mem -t 8 \                             # 使用 8 个线程并行处理
  -R '@RG\tID:H1\tSM:H1\tPL:illumina' \    # 添加 read group 信息:ID 为 H1,样本名为 H1,测序平台为 illumina
  ../01.ref/genome.fasta \                 # 参考基因组文件(FASTA 格式)  (已经通过 `bwa index` 构建)
  /public/home/2022099/yiyaoran/workspace/02.ReadsFilter/H1_1.fq.gz \  # 第一条测序读取(FASTQ 格式,压缩)
  /public/home/2022099/yiyaoran/workspace/02.ReadsFilter/H1_2.fq.gz \  # 第二条测序读取(FASTQ 格式,压缩)
  -o H1.sam \                              # 输出结果到 H1.sam 文件中
  2>H1.bwa.log &&                          # 将 BWA 比对过程中产生的日志输出到 H1.bwa.log 文件中

# 使用 samtools fixmate 处理配对比对信息
samtools fixmate -m H1.sam H1.fixmate.bam &&  # 将 H1.sam 修正后输出为 BAM 格式文件,并确保 mate 信息正确 (-m 选项)

# 对 BAM 文件进行排序
samtools sort -@ 2 -m 2G \                  # 使用 2 个线程,分配每个线程 2G 内存进行排序
  -o H1.fixmate.sort.bam \                  # 将排序后的结果输出为 H1.fixmate.sort.bam
  H1.fixmate.bam &&                         # 输入修正后的 BAM 文件进行排序

# 使用 samtools markdup 标记重复比对
samtools markdup H1.fixmate.sort.bam H1.fixmate.sort.markdup.bam  # 标记重复比对的片段,并将结果保存为 H1.fixmate.sort.markdup.bam

常用选项
  • -t:指定线程数,用于并行处理,加快比对速度。一般建议设定为 4。
  • -k:设定最小种子长度。默认值是 19,较小的值会提高比对灵敏度,但降低速度。
  • -w:指定比对的带宽,影响比对算法的搜索范围。默认值是 100。
  • -R:为输出的 SAM 文件添加读取组(Read Group)信息,特别适合后续使用 GATK 进行分析。

Read Group 的重要性

在 BWA 的比对过程中,使用 -R 选项可以为输出的 SAM 文件添加 Read Group 信息。Read Group 信息包含了样本、测序平台、文库等重要信息,后续在使用 GATK 等工具进行分析时非常关键。

Read Group 示例
-R "@RG\tID:group1\tSM:sample1\tLB:lib1\tPL:ILLUMINA"
  • ID:Read Group 的 ID,一般为测序的 lane ID。
  • SM:样本 ID。
  • LB:文库名称。
  • PL:测序平台(如 ILLUMINA)。

调整灵敏度和速度的常用选项:

参考https://blog.csdn.net/2302_80012625/article/details/142904660?sharetype=blogdetail&sharerId=142904660&sharerefer=PC&sharesource=2302_80012625&spm=1011.2480.3001.8118

  • -k:设置最小种子长度。默认值为 19,增加该值可以减少误配率,但也会减少比对的灵敏度。

    bwa mem -k 19 ref.fa reads.fq > aln.sam
    
  • -w:Band width,默认值为 100,设置为更大的值可以找到更长的插入或缺失片段。

  • -a:输出所有可能的比对,而不仅仅是最佳比对。

    bwa mem -a ref.fa reads.fq > aln.sam
    
比对得分调整:

参考:https://blog.csdn.net/2302_80012625/article/details/142904784
你可以调整 BWA-MEM 的比对得分参数来控制比对的准确性。

bwa mem -A 1 -B 4 -O 6 -E 1 ref.fa reads.fq > aln.sam
  • -A:匹配得分,默认值为 1。
  • -B:错配罚分,序列错误率大约为 {0.75 * exp[-log(4) * B/A]},默认值为 4。
  • -O:空位开启罚分,默认值为 6。
  • -E:间隙延伸罚分,默认值为 1。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

初学Vue(3)(内置指令)

文章目录 十四、内置指令v-textv-htmlv-cloak&#xff08;没有值&#xff09;v-oncev-pre自定义指令一、定义语法二、配置对象中常用的3个问题三、备注 十四、内置指令 回顾&#xff1a; v-bind &#xff1a;单向绑定解析表达式&#xff0c;可简写为 :xxx v-model : 双向数据绑…

HTML快速入门--第一节--五个基本标签

一、网络编程的三大基石 1.1 url 统一资源定位符&#xff1a; 网址:整个互联网中可以唯一且准确的确定一个资源的位置 (url项目外) 网址:https://www.baidu.com/ https://www.baidu.com/ 协议://ip端口/项目名/页面名 协议:交通法规获取资源 ip端口 &#xff08;域名&…

安全企业邮箱优势与局限,密码策略反馈

密码策略是什么呢&#xff1f;如何设置出安全可靠的密码策略呢&#xff1f;企业邮箱安全始于密码策略&#xff0c;包括复杂性、长度、更新频率、重用限制和两步验证。实施需全员培训、密码管理工具、审计与监控。一文为你详细介绍密码策略。 一、如何设置好的密码策略&#xff…

【JavaScript】JavaScript开篇基础(3)

1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; Hello, Hello~ 亲爱的朋友们&#x1f44b;&#x1f44b;&#xff0c;这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章&#xff0c;请别吝啬你的点赞❤️❤️和收藏&#x1f4d6;&#x1f4d6;。如果你对我的…

【微信小程序_11_全局配置】

摘要:本文介绍了微信小程序全局配置文件 app.json 中的常用配置项,重点阐述了 window 节点的各项配置,包括导航栏标题文字、背景色、标题颜色,窗口背景色、下拉刷新样式以及上拉触底距离等。通过这些配置可实现小程序窗口外观的个性化设置,提升用户体验。 微信小程序_11_全…

总看别人写贪吃蛇,自己也来写一个吧

贪吃蛇是一个流行度非常高的游戏&#xff0c;玩法十分简单&#xff0c;从最初的方块机上就有这个游戏了&#xff0c;后来出现的手机中也是加入了这个游戏&#xff0c;无聊的时候可以打发时间玩一会。这个游戏可谓是非常的简单&#xff0c;容易上手&#xff0c;所以直到现在&…

番外篇 | 常用的激活函数汇总 | 20+种激活函数介绍及其公式、图像等

前言:Hello大家好,我是小哥谈。激活函数(Activation Function)是神经网络中的一种重要概念,用于控制神经网络中神经元的激活方式。在传统的神经网络中,激活函数被用来将神经元的输出从数值转换为可以被神经网络其他部分理解的非数值形式。激活函数通常被定义为神经元的输…

电能表预付费系统-标准传输规范(STS)(2)

5. 标准传输规格参考模型 5.1 一般付费电表功能参考图 In a single-device payment meter all the essential functions are located in a single enclosure as depicted in Figure 1 above, while in a multi-device payment meter it is possible for the TokenCarrierToMe…

Pagehelper获取total错误

前言 在使用若依框架的pagehelper时&#xff0c;给分页表设置数据的时候前端只收到了分页的那一页的数据&#xff0c;总记录数不符合要求 我想要的效果如下&#xff0c;可以实现分页&#xff0c;和显示总记录数 但是实际情况为 但是我的数据库有11条记录&#xff0c;他这里明…

【python学习】1-2 配置python系统环境变量

1.点击“我的电脑”右键&#xff0c;点击属性&#xff0c;点击“高级系统设置”&#xff0c;再点击环境变量。 2.选择“系统变量”中的Path后&#xff0c;点击编辑。 3.点击新建&#xff0c;添加如图两个路径&#xff0c;即是python安装的路径位置后&#xff0c;点击确定。

前端脚手架插件安装总结(axios,element-ui,bootstrap,echarts等)

1.打开前端项目终端 输入命令 vue ui 进入图形化界面 a.选择插件 b.选择添加插件 c.安装插件 d.完成安装

手写mybatis之完善ORM框架,增删改查操作

前言 目前这个框架中所提供的 SQL 处理仅有一个 select 查询操作&#xff0c;还没有其他我们日常常用的 insert、update、delete&#xff0c;以及 select 查询返回的集合类型数据。 其实这一部分新增处理 SQL 的内容&#xff0c;也就是在 SqlSession 需要定义新的接口&#xff…

Java 读取word , 作为私有知识库做RAG答疑

检索与生成的技术&#xff08;RAG)&#xff0c;可以提升文本精准度与企业数据相关性 检索增强生成 (RAG) 是一种技术&#xff0c;它结合了检索模型和生成模型&#xff0c;旨在通过私有或专有的数据源来辅助文本生成。在使用大模型时&#xff0c;一个常见问题是模型可能会产生“…

利用Spring Boot优化企业知识管理

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…

【Java SE】数组的应用

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 目录 1. 数组的概念 1.1 为什么存在数组 1.2 数组是什么 1.3 数组的创建 1.4 数组的初始化 1.4.1 动态初始化 1.4.2 静态初始化 1.4.3 默认值 1.5 数组的使…

【最新华为OD机试E卷-支持在线评测】英文输入法(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历 ✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解 🧩 大部分包含 Python / C / Javascript / Java / Cpp 多语言代码 👏 感谢大家的订阅➕ 和 喜欢�…

AD之Layout设计规则

设计规则&#xff1a; 间距 线宽 过孔 铺铜 其他 1.添加类 这里建立了PWR类&#xff0c;与电源相关的网络 2.间距规则:6mil的成本低 3.线宽规则&#xff1a;PWR的优先级排第一&#xff0c;否则不起作用 4.过孔规则&#xff1a;8mil<大小<12mil 4.铺铜规则

音视频开发:FFmpeg库的使用

文章目录 一、FFmpeg的介绍二、FFmpeg的安装三、FFmpeg的使用1.ffplay&#xff1a;播放音视频2.ffprobe&#xff1a;查看视频信息3.ffmpeg&#xff1a;处理视频(1)格式转换(2)帮助 四、参考资料 一、FFmpeg的介绍 FFmpeg 是使用广泛的多媒体框架&#xff0c;是一个强大的音视频…

LeetCode讲解篇之740. 删除并获得点数

文章目录 题目描述题解思路题解代码题解链接 题目描述 题解思路 首先对于这题我们如果将所有点数装入一个切片f中&#xff0c;该切片f中的i号下标表示所有点数为i的点数之和 那么这题就转换成了打家劫舍这道题&#xff0c;也就是求选择了切片中某个下标的元素后&#xff0c;该…

观察者模式和发布-订阅模式的区别

观察者模式是&#xff0c;当被观察者的数据发生变化时&#xff0c;调用被观察者的 notify 方法&#xff0c;去通知所有观察者执行 update 方法进行更新&#xff1b; 对于发布-订阅模式&#xff0c;首先发布者与订阅者互相并不知道彼此的存在&#xff0c;他们是通过事件中心来进…