批量做Blast的问题还是蛮多网友问起的。既然这样,在这里就稍微讲讲吧。其它的Blast基础知识就略过了,不懂的就去Google本地Blast用法。
这篇文章默认为你已有了Blast的基础。
批量Blast
就是指多个序列的Blast。其实我也不明白为什么会有这么多人提这个问题,批量Blast就跟单个Blast一样的。
我们都知道,默认参数下的blastn是这样的:
blastall -p blastn -d BlastDB -i in_file.fasta >blast_output
当in_file.fasta里面只有一个序列时,就是单个Blast啊。in_file.fasta也可以放多个Fasta格式的序列,这样子就是批量Blast了。
当然了,麻烦的是批量Blast之后的结果,一个的话我们可以看得了,当批量上千个时,我们不可能一个个看到的。这种小事情Blast早就想到了。这就引进了-m8参数。-b5参数是指显示匹配的前5个结果(默认好像是500个,忘记了)。
blastall -p blastn -d BlastDB -i in_file.fasta -m8 -b5 >blast_output
-m8参数的输出结果有12列,每一列的解释如下(用Tab键隔开的):
例子
Query_id,Subject_id,%identity,alignment_length,mismatches,gap_openings,q.start,q.end,s.start,s.end,e-value,bit_score A_query B_Sbjct 97.61 585 3 3 309 886 94498 95078 0.0 1017 A_query B_Sbjct 100.00 303 0 0 913 1215 95092 95394 2e-172 601 A_query B_Sbjct 100.00 209 0 0 1 209 94196 94404 3e-116 414 A_query B_Sbjct 100.00 123 0 0 1234 1356 95413 95535 6e-65 244
这样子的结果就方便后面的分析工作了。
推荐的命令行如下:
blastall -p blastn -d BlastDB -i in_file.fasta -m8 -b5 -b1 -a2 -FF >blast_output
-a2参数是用二个CPU,加速。-FF是不过滤简单的重复序列和低复杂度的序列(默认是过滤的)。
其它更详细的参数,直接敲打blastall命令就能看到了。





阿门,弱弱飘过鸟 ~ ╮(╯▽╰)╭
[回复]
罪过罪过...
[回复]
我喜欢保存原始的blast结果,然后用bioperl解析。
这样做好处是你可以保留更多的原始信息,方便查阅,但占用磁盘空间可能相当大,我习惯用-b选项保留适当的数据。
问这个问题我可以理解,可能大多数和我一样,都是生物背景,我以前也傻傻的被这个问题困扰,为了做批量blast居然把一个多fasta格式文件中的每一条序列分离出来blast,用perl写了二三十行,后来发现这么做真是太笨了,不光blast是这样批量出来,大多数生物信息学软件都是这样,例如SignalP,RNAfold,mirada,etc.
另外,如果不是本地数据库,一般的在线blast也可以做批量blast(序列条数有限制),例如二三十条序列的话我们可以以多fasta格式直接提交到NCBI服务器。
[回复]
恩,我也是用bioperl的。
不过-m8参数大部分的都有了。蛮好的。
[回复]
师兄你好,我也是在做生物信息学,请问您在Linux下做过Clustalw吗?用命令行批量处理多个蛋白的氨基酸序列比对怎么做?我现在只能一个一个蛋白做,我想多个一块做且用命令行~期待师兄的答复
[回复]
一个蛋白如何做clustalW啊?clustalW不就是二个或以上的序列一起做的嘛~
[回复]
忘记和师兄介绍了,我做的流感蛋白,每一个蛋白都有不同年份不同宿主的!
[回复]
随便写个脚本循环就行了。~
[回复]