BLASTN参数研究记之max_target_seqs和num_alignments

本文详细记录了对BLASTN工具中max_target_seqs和num_alignments参数的研究过程。通过NCBI的解释、网友的回答以及一系列测试,分析这两个参数在设置比对结果数量限制上的差异。实验结果显示,当设置相同值时,两个参数产生的结果一致,但其具体工作方式仍有待进一步确认。

BLASTN参数研究记之max_target_seqs和num_alignments

1. 准备数据

BLASTN参数研究记之max_hsps

2. 开始研究

2.1 NCBI给出的解释

  1. max_target_seqs

    Number of aligned sequences to keep. Use with report
    formats that do not have separate definition line and
    alignment sections such as tabular (all outfmt > 4). Not
    compatible with num_descriptions or num_alignments.
  2. num_alignments

    Show alignments for this number of database sequences.

好像都是设置对于每个query保留多少匹配数目的,这两者有什么区别呢?

2.2 网友的答案

见于biostars

It depends on what value you set for the option outfmt (options range from 0 to 12) and you can only use either one of the max_target_seqs  or num_alignments options.
If you want only one hit:
    If you set outfmt to any option <=4
        set both -num_descriptions and -num_alignments to 1
    If you set outfmt to any option >4
         set -max_target_seqs to 1
I hope you are aware that if you want only the top hit and if your query sequence is in the database you are searching against ('nr' for example), your query sequence might be the top hit.

大概意思是-max_target_seqs-num_alignments是功能是一样的,只是针对不同的输出格式。当-outfmt小于等于4时使用-num_alignments,当-outfmt大于4时,使用-max_target_seqs

感觉不太对,如果是这样的话NCBI根本就没有原因设置两个参数来完成这个目的。

2.3 测试

在当前目录下新建两个文件夹 - max_target_seqsnum_alignments,为了比较这两个参数的不同,我们分别把-max_target_seqs-num_alignments1500,分别运行500次,比较这500个结果之间的异同。

2.3.1 -max_target_seqs
$ for i in `seq 1 500`; do blastn -query otu.fa -outfmt '6 qseqid sseqid qstart qend sstart send evalue' -db indexes/ref -out max_target_seqs/max-target-seqs-$i.txt -max_target_seqs $i;
done
2.3.2 -num_alignments
$ for i in `seq 1 500`; do blastn -query otu.fa -outfmt '6 qseqid sseqid qstart qend sstart send evalue' -db indexes/ref -out num_alignments/num-alignments-$i.txt -num_alignments $i; done

2.4 分析

2.4.1 这两个参数是不是设置对于每个query保留多少条比对结果?

再仔细观察一下normal.txt文件,首先确定下,有多少个query有比对结果,运行:

$ awk '{print $1}' ret/normal.txt | sort -u

结果为:

ST-E00126:289:H3727ALXX:5:1106:8521:58761
ST-E00126:289:H3727ALXX:5:1111:1509:3717
ST-E00126:289:H3727ALXX:5:1112:28747:61064
ST-E00126:289:H3727ALXX:5:1117:19735:63173
ST-E00126:289:H3727ALXX:5:1119:9140:36381
ST-E00126:289:H3727ALXX:5:1201:11556:44187
ST-E00126:289:H3727ALXX:5:1213:10835:15654
ST-E00126:289:H3727ALXX:5:1213:8450:4280
ST-E00126:289:H3727ALXX:5:1215:23602:59780
ST-E00126:289:H3727ALXX:5:1219:8339:56475
ST-E00126:289:H3727ALXX:5:1220:26758:44011
ST-E00126:289:H3727ALXX:5:2102:21531:22932
ST-E00126:289:H3727ALXX:5:2110:14600:54700
ST-E00126:289:H3727ALXX:5:2120:29823:26782
ST-E00126:289:H3727ALXX:5:2121:4249:41304
ST-E00126:289:H3727ALXX:5:2123:10693:52432
ST-E00126:289:H3727ALXX:5:2219:23876:59938
ST-E00126:289:H3727ALXX:5:2224:11201:38438

发现有18query有比对结果,normal.txt254条结果,这其中都是一个query有多条比对结果。

那么如果-max_target_seqs-num_alignments都是设置每个query可以保留多少条匹配结果的话,如果-max_target_seqs或者-num_alignments设置为1的话,结果肯定都是18条。

$ wc -l max_target_seqs/max-target-seqs-1.txt num_alignments/num-alignments-1.txt

结果为:

18 max_target_seqs/max-target-seqs-1.txt
18 num_alignments/num-alignments-1.txt
36 total

使用这个思路分析其他文件,发现也是成立的,那么这两个参数应该就是:

对于每个query设置可以在结果中保留多少条匹配。
2.4.2 两个参数的结果是否一样?

计算每个结果文件的md5值发现,当-max_target_seqs-num_alignments设置为同一个值时,两个结果文件的md5值时完全一样的。

是不是可以得出结论,两个参数完全一样了呢?我觉得还不一定。可能我的测试文件特殊或是什么原因导致结果一样,如果你知道结果可以给我留言。

2.5 结论

-max_target_seqs和-num_alginments都是设置每个query保留多少条匹配结果,目前来看二者的结果是一样的。

2.6 疑问

比如我把-max_target_seqs设置为1,保留下来的是最佳匹配吗?

也就是说,BLAST去除的时候是按照匹配程度去除的吗?答案是肯定的,有兴趣的可以验证下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值