BLAST+ blastn输出fmt17(SAM)格式异常:参考与查询序列位置颠倒
BLAST+ outfmt 17输出SAM时参考与查询序列位置颠倒的解决方法
你遇到的问题是BLAST+默认的SAM输出逻辑导致的:当使用-outfmt 17时,程序默认将查询序列(你的nanopore reads)作为SAM文件中的参考序列(@SQ条目),而你需要的是把自定义参考序列作为SAM的参考,所以才会出现位置颠倒、IGV等工具无法识别的情况。
修正后的命令
添加-sam_outfmt 1参数即可解决:
blastn -db .\db\path\ref.fa -query .\query\path\query.fasta -out .\results\path\file_fmt17.sam -outfmt 17 -sam_outfmt 1
参数说明
-sam_outfmt 1:强制BLAST将数据库中的自定义参考序列作为SAM文件里的@SQ条目源,这样比对行中的参考列会对应你的ref.fa序列,查询列对应nanopore reads,完全符合SAM规范和IGV/Tablet的要求。
验证步骤
- 运行修正命令后,打开输出的SAM文件,检查开头的
@SQ行,确认序列ID是你ref.fa中的序列,而非查询reads的ID。 - 用
samtools view -Sb将SAM转为BAM,再用samtools sort排序、samtools index建索引。 - 打开IGV/Tablet,加载你的ref.fa作为参考基因组,再导入BAM文件,即可正常显示比对结果。
补充说明
-outfmt 0和6是BLAST原生输出格式,它们的逻辑是“查询比对到参考”,所以不会出现位置颠倒;但SAM格式的定义是“reads比对到参考基因组”,BLAST默认的SAM输出逻辑与这个定义相反,必须通过-sam_outfmt 1调整才能匹配标准SAM的使用场景。
内容的提问来源于stack exchange,提问作者BioNewb
相关产品推荐
相关产品推荐

