添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
2017-02-22 Xingqiang Sun

BLASTX优化方案

本文总结了生物信息人员在使用BLASTX的一些经验,期待与其他同行交流BLASTX的优化经验。

0 前言

BLAST作为生物信息最重要的局部比对工具,在序列物种注释和基因注释起重要作用。其中BLASTX(将query序列翻译成氨基酸序列和蛋白数据库进行比对)常常作为对核酸序列的基因注释工具。BLASTX先要将DNA序列按照6个读码框翻译成氨基酸序列,从而BLASTX的比对时间和需要计算资源都是比较大的,如何减少运行时间和降低运算成本,成为生信工作人员关心的重要问题之一。另外,本文主要讨论BLASTX工具的优化,其他BLASTX的替代工具,比如DIAMOND等,不在此文的讨论范围。

1 使用ncbi-blast+工具替换blastall

NCBI在1989年引入BLAST软件包,现在叫legacy_blast,主要是通过blastall 去调用 blastx,blastall最后一个版本更新在2016年。2009年,NCBI发布了检索速度更快,输出格式更为多样化的 ncbi-blast+软件包 。BLAST+的特点为:擅长处理长查询序列,将长序列切成短序列,即减少了内存消耗又更好的利用CPU计算架构,提高了比对效率,详情见 Command Line Applications User Manual 。BLAST+软件包将BLASTN,BLASTP和BLASTX单独拆分出来并分别进行了优化和处理,因而计算速度比blastall有了很大的提升。具体测试结果可以看ncbi-blast+的 user_manual

2 使用blastx-fast模式

ncbi-blast+软件包对blastx-fast的比对模式介绍比较少,没有详细说明fast模式用了什么参数或者算法,本人的猜想可能是做了贪婪算法,增加或者减少一些参数阈值,比如增大word-size参数值等。blast2go是作为核酸比对蛋白序列使用广泛的工具包,在进行序列比对时,采用的BLASTX参数是: -task blastx-fast 。本文作者也是用一些数据进行了测试。ncbi-blast+版本: ncbi-blast+ 2.4.0。query数据:MEGA-HIT软件组装双端测序数据,得到的contigs核酸序列和截取的其中10,000条contigs的部分核酸序列(final.contigs.fa和final.contigs.10000.fa),数据详情见下 表1

表1 query数据(DNA)

从运行时间来看,blastx-fast 大约为BLASTX的 1/3。本文采用的是基因组组装结果序列,contigs的长度最长有390多kb,BLAST+软件包对长的查询文件优化提升很多。根据多次的经验来看,BLASTX-fast的运行时间大约是BLASTX的1/4~1/3。一致性比较如下 表5

表5 结果一致性比较表
sample_name num_seqs sum_len(bp) min_len(bp) avg_len(bp) max_len(bp)

交集/blastx-fast_query是为了比较公共集合占总query数的百分比。从运行结果来看,发现 blastx-fast模式的结果,基本上属于BLASTX结果的子集。在14万条查询序列也能保持很高的一致性。本文推测,blastx-fast比blastx的结果要少一些,漏掉的比例在 5%左右,漏掉的结果可能是假阳性或者真阳性结果。

blast2go在其官网一些案例使用的是blastx-fast模式。 官方帮助文档 ,参考第10页也是使用blastx-fast。

3 充分利用cpu并行任务

对于通过云计算申请的机子,计费按使用时间算,尽量最大限度地使用计算资源,一方面减少运行时间,另一方面减少计算花费。当一条query在和database比对的时候,可能只占了部分内存和部分CPU,如果能在申请的实例,在保证多个任务不会带来太大的IO和线程切换问题,可以尝试尽量多并行几个任务。观察单个任务的CPU和内存的使用状态,发现虽然BLASTX设置的CPU为8个,但是实际使用的却只有200%,空闲600%的CPU。根据上述的观察结果,设计了测试,如 表6 所示

表6 不同数据切分和cpu的组合试验
seq_name blastx_query_num blastx-fast_query_num (交集数/blastx_query)% (交集数/blastx-fast_query) blastx_特有 blastx-fast_特有
seq_name db_name threads(n) *Mem(MB) *time(min)