blast的短序列比对

blast所使用的query一般为基因等序列较长的对象,但有时候我们也需要使用短的query序列比如使用引物作为query序列。这种时候使用一般的比对参数,比对不出结果的。这时候在比对时,加入以下参数就行:

#参考

#参考别人的文章

一句话概括就是:blastn多加上-task blastn-short -word_size 7 -evalue 1就ok了。
针对这种短序列query,这三个选项是比较重要的
-task:设置比对模式,通常情况会有一个默认task,这里要设置为blastn-short -word_size:尽可能小,这里设为7 -evalue:类似于p值的一个指标,越小说明越可靠

evalue这个值跟平时一般序列比对时设置的完全不一样,以往我设置的是1e-5,这回我设的100和1。

当设置为blastn-short时,就默认了word_size为7,所以此时可以不加word_size。那设置了word_size为7后,可以不加task吗?可以的,但是得到的结果有些区别:它得到的纪录数更多,但也有更多记录出现了错配(我的测试中37%出现了错配),而加了task之后,错配数只占7%,这也进一步说明了blastn-short模式会限制错配数出现,对于短序列比对是可以理解的。

我分别做了三次尝试:

  

可以看到在一定范围内(100-1),降低evalue会缩小结果范围,留下最可靠的记录。改用blastn-short比对模式,基本不允许错配,会更适合短序列比对。

最后我按照相似度100%,比对长度为查询序列原长提取三个结果文件中最准确的记录,发现居然是一模一样的(哪条短序列比对到ref的哪一个位置完全相同)!!!

仔细一想,这也好理解,完美匹配的那一些记录在不同的e值,不一样严格程度的比对下,始终是完美匹配的。

 

当然,我们也可以考虑其他比对方法,如BWA,bowtie等工具

 

blast问题:为什么blast比对的时候query文件和库文件对调,比对会出现不同的结果??

例子:有小伙伴想将引物序列primer,比对到测序的reads上。发下当将primer作为query时,比对出的结果就很少,而将primer做库时,就能够比对出很多结果。这有点奇怪。至于具体原因,还有待探索,知道的大佬可以交流

 

 

 

 

 

posted @   静风-fish  阅读(2693)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示