小编在科研工作中发现,blast和blast+的比对结果有一些出入,比对做NT库比对的时候,blast+比对的效率高,比上的会多。于是着手收集下blast+和blast的不同之处。
1.BLAST+的使用
BLAST+与BLAST相比,有很多改进和提高,NCBI强烈推荐放弃BLAST,使用BLAST+, 这里说的BLAST和BLAST+,都是本地的。
BLAST+的一般用法如下:
格式化数据库(注意这里建库的方法和blast不一样啦)
makeblastdb -in db.fasta -dbtype prot-parse_seqids -out dbname
参数说明:
-in:待格式化的序列文件
-dbtype:数据库类型,prot或nucl
-out:数据库名
蛋白序列比对蛋白数据库(blastp,注意没有blastall 啦,都是分开的)
blastp -query seq.fasta -out seq.blast -dbdbname -outfmt 6 -evalue 1e-5 -num_descriptions 10 -num_threads 8
参数说明:
-query: 输入文件路径及文件名
-out:输出文件路径及文件名
-db:格式化了的数据库路径及数据库名
-outfmt:输出文件格式,总共有12种格式,6是tabular格式对应BLAST的m8格式(这个数据格式设计的更为灵活,支持自定义)
-evalue:设置输出结果的e-value值
-num_descriptions:tabular格式输出结果的条数
-num_threads:线程数
核酸序列比对核酸数据库(blastn)以及核酸序列比对蛋白数据库(blastx)
与上面的blastp用法类似:
blastn -query seq.fasta -out seq.blast -dbdbname -outfmt 6 -evalue 1e-5 -num_descriptions 10 -num_threads 8
blastx -query seq.fasta -out seq.blast -dbdbname -outfmt 6 -evalue 1e-5 -num_descriptions 10 -num_threads 8
以上的参数说明只是一些常用的参数,完整的参数说明可以用-help查询。
2 blast+与blast的差异
BLAST已经成为序列比对软件代名词,且其词性也已经开始变化,诸如BLASTing之类的词汇在各种论文中已是屡见不鲜,可见其影响之深,使用之广,如同分子生物学领域中的PCR。
自从1997年释出现有的BLAST版本后,这十多年来,BLAST经历了多次的升级,功能、性能一版比一版好,相应的其Source code也被修改的凌乱不堪,难于维护,极大的限制了对BLAST进一步的修改、功能提升。再加上NCBI C++ Toolkit项目的开展,促使BLAST的维护者们决定从头开始,重新编写 BLAST代码。
2009年7月,NCBI发布了BLAST升级版——BLAST+,BLAST+使用了BLAST的核心算法,延 续了BLAST的优势功能,发展并增强了如BLAST的fastacmd程序,新增了如update_blastdb.pl等 程序。下面简单列举此次修改的主要内容:
(1)高度模块化是本次修改的主要目标,不仅从理论上,更是从代码上明 确模块化了BLAST的三个过程:setup,scanning, trace-back。
(2)选择的ISO C99标准,使得源代码可以同时被c以及c++使用,不需要做任何修改。
(3)Database mask:之前的版本 需要第三方软件如RepeatMasker来mask数据库,c现在内置了WindowMasker和DUST来进行重复序列过滤。
(4)使 用Query split, Partialsubject sequence retrieval以及Retrieving subject sequences from an arbitrary source等策略来提高长序列(如染色体序列)的比对效率,有效的降低了CPU时间,充分使用了一、二级缓存。
(5)全新的命令行参数使用方式,添加了长字符串作为参数的支持,如-out,而不是以前的-o,关于每一个程序其具体的命令行参数,可以通过添加-help参数来查阅。
(6)分离blastn, blastp,blastx等作为独立的程序以替代之前的blastall -p blastn模式。
(7)makeblastdb, blastdb_aliastool,blastdbcmd三个程序都和数据库有关,增强了数据库方面的处理。
(8)添加 Best-Hit算法,只报告最优的Hit。比较有意思的是,最新的FASTA(version 36) 程序学习BLAST添加了multi-HSP 的功能,而BLAST+却学习FASTA添加了Best-Hit的功能。互相学习,互相提高。其实,在BLAST是学习并消化吸收了一大批文章中的先进成果而发展起来的,例如MPBLAST, BLAST++, miBLAST, BLAT等。
(9)添加了保存search strategy的功能,所谓searchstrategy也就是程序运行时的参数等信息。
总之,对于广大用户来说,BLAST+的发布绝对是一个好消息。它是对BLAST的一个全新设计,其在性能(主要对长序列的比对)以及易用性上均有了很大提高,尤其在易用性上。同时对于开发者来说,也是一个“解脱”,清晰的模块化将会极大的提高维护者的效率。
总结:能用blast+就用blast+吧。Blast都停止维护啦。
整理自网络
网上其它的好资料:
http://boyun.sh.cn/bio/?p=1887
http://blog.sina.com.cn/s/blog_7b41b69101015hbc.html
http://blast.ncbi.nlm.nih.gov/Blast.cgi
http://linxiao.name/archives/86
http://www.yelinsky.com/blog/archives/421.html
http://fhqdddddd.blog.163.com/blog/static/18699154201061935513495/
http://www.vcu.edu/csbc/bbsi/inst/archives/bioinf/SetupLocalBlast.html
http://www.plob.org/2012/10/13/4326.html
http://www.plob.org/2012/09/30/3860.html
http://www.plob.org/2012/06/04/2011.html
欢迎关注