第二步,对数据库中的每一个记录序列数据定义同样的窗口,在匹配时顺序计算其窗口值,如果数据库序列数据的某一窗口值与匹配序列的窗口值列表中的某一项相等,则比较序列数据的前后部分,如果前后都相等,则找出了一个符合条件的子串,否则窗口在数据库序列数据中后移16bits,再顺序计算其窗口值。假定数据库的一个记录序列数据(核酸序列数据)如下: 4. Blast检索速度的优化 随着生物学的发展,blast数据库的规模也越来越大,数据库的更新速度也越来越快,越来越多的人希望使用blast数据库。但是Blast系统由于数据库的庞大具有三个最大的弱点: 由于blast数据库大,检索时需要进行匹配的序列数据多,检索速度不可避免会慢,并且随着数据库的进一步膨胀,Blast的速度将会使用户不可忍受。同时,每一种生物的基因序列数据都是一个极其庞大的数据,必须将它分解成几个基因序列数据库。一般典型的基因序列数据库大小在100MB~500MB之间,Blast需要将数据库序列数据映象到内存中,这将会消耗大量的时间用于数据库数据的I/O操作,并且在运行中消耗大量的内存资源。而现在人们对生物学进行研究时,对生物基因序列数据却越来越依赖。随着Blast数据库的增大,Blast的检索速度会越来越慢,所以必须对Blast进行改进。 现在,在模式匹配算法上进行性能改进的空间不大,即使有改进,它所需要的时间及改进所取得的效果不可能满足blast数据库膨胀对Blast系统的要求。Blast是一个对数据库进行检索的工具,这种检索程序一般在时间和空间上的数据相关性是比较小的,对于Blast性能问题可以采用并行机制对其进行改进。 4.1. Blast串行程序的性能 Blast的检索程序是一个结构非常简单明了的串行程序,其大致执行流程如图-1。 在实验中我们采用了三个核酸序列数据库,Fun、Htg和Ecoil。Fun数据库的基因序列数据为13.7MB,Htg数据库的大小为67.4MB,Ecoil数据库的大小为287.6MB。采用串行Blast对这三个数据库进行检索,其时间结果如下:
顶一下
(6)
100%
踩一下
(0)
0%
------分隔线----------------------------
|