BLAST+:NCBI新的一套BLAST工具

评论6,891

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等 程序。下面简单列举此次修改的主要内容:

  • 高度模块化是本次修改的主要目标,不仅从理论上,更是从代码上明 确模块化了BLAST的三个过程:setup, scanning, trace-back。
  • 选择的ISO C99标准,使得源代码可以同时被c以及c++使用,不需要做任何修改。
  • Database mask:之前的版本 需要第三方软件如RepeatMasker来mask数据库,c现在内置了WindowMasker和DUST来进行重复序列过滤。
  • 使 用Query split, Partial subject sequence retrieval以及Retrieving subject sequences from an arbitrary source等策略来提高长序列(如染色体序列)的比对效率,有效的降低了CPU时 间,充分使用了一、二级缓存。
  • 全新的命令行参数使用方式,添加了长字符串作为参数的支持,如-out,而不是以前的-o,关 于每一个程序其具体的命令行参数,可以通过添加-help参数来查阅。
  • 分离blastn, blastp, blastx等作为独立的程序以替代之前的blastall -p blastn模式。
  • makeblastdb, blastdb_aliastool, blastdbcmd三个程序都和数据库有关,增强了数据库方面的处理。
  • 添加 Best-Hit算法,只报告最优的Hit。比较有意思的是,最新的FASTA (version 36) 程序学习BLAST添加了multi-HSP 的功能,而BLAST+却学习FASTA添加了Best-Hit的功能。互相学习,互相提高。其实,在BLAST是学习并消化吸收了 一大批文章中的先进成果而发展起来的,例如MPBLAST, BLAST++, miBLAST, BLAT等。
  • 添加了保存search strategy的功能,所谓search strategy也就是程序运行时的参数等信息(还包括对数据库的一些定制,详细信息会在后面的文章中介绍)。

总之,对于广大用户来说,BLAST+的发布绝对是一个好消息。它是对BLAST的一个全新设计,其在性能(主要对长序列的比对)以及易用性上均有了很大提高,尤其在易用性上。同时对于开发者来说,也是一个“解脱”,清晰的模块化将会极大的提高维护者的效率。

BLAST+的下载与使用

下面简要介绍一下BLAST+的使用:

BLAST+与BLAST相比,有很多改进和提高,前面已经有所介绍。NCBI强烈推荐放弃BLAST,使用BLAST+, 这里说的BLAST和BLAST+,都是本地单机版程序。

程序下载FTP地址:ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/

格式化数据库

[code lang="plain"]makeblastdb -in db.fasta -dbtype prot -parse_seqids -out dbname[/code]

参数说明:

-in:待格式化的序列文件

-dbtype:数据库类型,prot或nucl

-out:数据库名

蛋白序列比对蛋白数据库(blastp)

[code lang="plain"]
blastp -query seq.fasta -out seq.blast -db dbname -outfmt 6 -evalue 1e-5 -num_descriptions 10 -num_threads 8
[/code]

参数说明:

-query: 输入文件路径及文件名

-out:输出文件路径及文件名

-db:格式化了的数据库路径及数据库名

-outfmt:输出文件格式,总共有12种格式,6是tabular格式对应BLAST的m8格式

-evalue:设置输出结果的e-value值

-num_descriptions:tabular格式输出结果的条数

-num_threads:线程数

附:Blast结果m8格式意义

进行Blast比对,用参数-m 8可以以列表的方式输出结果,结果中从左到右每一列的意义分别是:

[00] Query id

[01] Subject id

[02] % identity

[03] alignment length

[04] mismatches

[05] gap openings

[06] q. start

[07] q. end

[08] s. start

[09] s. end

[10] e-value

[11] bit score

核酸序列比对核酸数据库(blastn)以及核酸序列比对蛋白数据库(blastx)

与上面的blastp用法类似:

[code lang="plain"]
blastn -query seq.fasta -out seq.blast -db dbname -outfmt 6 -evalue 1e-5 -num_descriptions 10 -num_threads 8
blastx -query seq.fasta -out seq.blast -db dbname -outfmt 6 -evalue 1e-5 -num_descriptions 10 -num_threads 8
[/code]

参考来源:

http://www.xinkexue.com/blog-2002-1546.html

http://www.yelinsky.com/blog/archives/421.html

发表评论

匿名网友