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做库时,就能够比对出很多结果。这有点奇怪。至于具体原因,还有待探索,知道的大佬可以交流。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了