欢迎光临散文网 会员登陆 & 注册

BWA比对及Samtools提取目标序列

2022-05-13 21:44 作者:笨笨熊爱吃肉  | 我要投稿

今天想看一下自己的序列里面会不会有某细菌基因组存在,主要使用BWA和Samtools:


bwa主要用于将低差异度的短序列与参考基因组进行比对。主要包含三种比对算法:backtrack、SW和MEM,第一种只支持短序列比对(<100bp),后两种支持长序列比对(70bp~1M),并支持分割比对(split alignment)。MEM算法是最新的也是官方推荐的。


BWA-MEM 是一种新的比对算法,用于将测序 reads 或者组装后 contigs 比对至大型参考基因组,例如人参考基因组。它会自动选择局部比对和 end-to-end 比对模式,支持PE reads 比对和嵌合体比对。该算法对测序错误有良好的稳定性,适用的reads 长度范围较广,从70bp至几Mb。


bwa的工作原理

所有的比对工具均基于相同的原则:

1. 从参考基因组建立一个索引

2. 将FASTA和FASTQ文件中的序列同索引进行比对


一.ncbi上下载了wol细菌的100条序列,作为ref。


二.BWA比对

1.先是构建索引:


生成的索引文件:wol100.fas.ambwol100.fas.annwol100.fas.bwt  wol100.fas.pacwol100.fas.sa


2.bwa比对及samtools转为bam文件,并根据比对情况进行提取


bwa比对生成的为sam(sequence Alignment mapping)文件,将SAM转换为二进制对应的BAM格式。二进制格式对于计算机程序来说更容易使用。要将SAM转换为BAM,使用samtools view命令。


在医院服务器上用转录组的数据成功运行,学校服务器上报错,见后面。


三.samtools根据比对情况提取

四.Flag参数


flag是一种描述read比对情况的标记,对于双端比对的数据,生成的BAM文件中,R1端序列和R2端序列的标识符是一样的,之前一直不知道如何根据bam文件区分哪条序列是R1端,哪条序列是R2端,代表R1端和R2端的信息都存储在flag中,即bam文件的第二列;


在bam文件格式中定义了各种flag代表的意思,一种12种,可以搭配使用。


-f 正确比对   only include reads with all  of the FLAGs in INT present [0]

-F NOT正确比对   only include reads with none of the FLAGS in INT present [0]

查询flag值含义:samtools flag 4

更多Flag信息见:http://www.htslib.org/doc/samtools-flags.html



.提取特定位置上的比对结果


六.将sam文件、bam文件、fastq文件之间转换


附:samtools功能蛮强大的,功能很多,都可以单独写一篇了,参考的里面有非常详细的记录。


七.错误

错误1.

[M::bwa_idx_load_from_disk] read 0 ALT contigs

[M::process] read 67652 sequences (10000283 bp)...

[main_samview] fail to read the header from "-".

中划线“-”是前一句命令的,也就是bwa出了错误。


发现错误2

错误2.单独运行bwa程序:

/opt/gridview//pbs/dispatcher/mom_priv/jobs/21873.node1.SC: line 10: 20117 Bus error  (core dumped)

一时找不到原因,但换了服务器运行就没有问题,暂时记录一下。



参考:

bwa官网:http://bio-bwa.sourceforge.net/

samtools命令详解:https://blog.csdn.net/qq_27390023/article/details/121164168

本文使用 文章同步助手 同步


BWA比对及Samtools提取目标序列的评论 (共 条)

分享到微博请遵守国家法律