999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于多線程技術的d-BM改進算法

2008-12-31 00:00:00劉少鵬林丕源張麗霞劉吉平
計算機應用研究 2008年11期

(華南農業大學, 廣州 510642)

摘要:在分析基于壓縮的DNA模式匹配算法d-BM的基礎上,采用多線程技術,設計并實現MultipleOF-dBM算法和DoubleOF-dBM算法。實驗結果表明,新算法的匹配速度比d-BM算法有所提高。

關鍵詞:生物信息學; 壓縮模式匹配; d-BM算法; 多線程技術

中圖分類號:TP311文獻標志碼:A

文章編號:1001-3695(2008)11-3299-03

Multithread-based improvement of d-BM algorithm

LIU Shao-peng, LIN Pi-yuan, ZHANG Li-xia, LIU Ji-ping

(South China Agricultural University, Guangzhou 510642, China)

Abstract:After analysis of the d-BM algorithm for DNA compressed pattern matching, two new algorithms, MultipleOF-dBM and DoubleOF-dBM were designed and implemented by using multithreads. The experimental results show that the efficiency of the new algorithms is higher than the old one.

Key words:bioinformatics; compressed pattern matching; d-BM; multithread technology



0引言

生物信息學(bioinformatics)[1,2]實質是利用計算機科學和網絡技術來解決生物學問題。其中DNA序列比對[3,4]是生物信息學最基本、最重要的操作之一,通過它可以發現生物序列的功能、結構和進化信息。DNA序列比對是傳統的模式匹配;而直接利用壓縮后的DNA數據進行序列比對則是特殊的模式匹配,即DNA壓縮模式匹配[5],它無須解壓縮操作,在減少DNA序列存儲空間的同時,極大地提高匹配檢索效率。

經典的字符串模式匹配算法有Knuth-Morris-Pratt算法[6,7]和Boyer-Moore算法[8,9]等。Boyer-Moore算法的匹配速度很快,與同類算法相比,表現更為優秀。其算法思想是:a)根據模式串構造壞字符移動表和好后綴移動表;b)從右至左掃描文本串,直到找出所有匹配位置。

由于DNA序列具有特殊性(它僅包括A、T、C、G四個字母,字母表大小為4),而Boyer-Moore算法的匹配速度與模式的字母表大小是緊密聯系的(字母表越大,速度就越快;字母表越小,速度越慢),使得Boyer-Moore算法難以在DNA序列的模式匹配中發揮其高效性。

Chen Lei等人[10]設計了d-BM壓縮模式匹配算法,通過對DNA序列和模式進行壓縮,擴大模式的字母表,再利用Boyer-Moore算法進行匹配。該算法的匹配速度明顯比Boyer-Moore算法快。

本文采用多線程技術,在d-BM算法的基礎上改進,設計并實現MultipleOF-dBM算法和DoubleOF-dBM算法,實驗結果表明新算法的匹配速度比d-BM算法有所提高。

1d-BM壓縮模式匹配算法

11d-BM算法思想

d-BM算法思想:a)采用簡單01碼壓縮算法[11],將DNA序列壓縮為一個Unicode字符串,DNA模式壓縮為八個Unicode字符串,以及相關的信息。b)八個壓縮DNA模式串分別與壓縮DNA串進行一次BM(即Boyer-Moore算法)匹配,再根據壓縮后DNA模式串的特殊字符和補位信息,對匹配位置進行檢驗,確保其合法性。

12d-BM算法描述

壓縮DNA模式表示為五元組:〈Pf, Af, Pm, Pb, Ab〉。其中:Pf是第一個unicode字符;Af是Pf中無效的比特位數;Pb是最后一個Unicode字符;Ab是Pb中無效的比特位數;Pm是除去Pf和Pb后的Unicode字符串,其長度為m′。壓縮DNA序列表示為三元組:〈Tf, Tb, A〉。其中:Tb是最后一個Unicode字符;A是Tb中無效的比特位數;Tf是除去Tb后的Unicode字符串,長度為n′。

d-BM算法如下:

//輸入:DNA序列和模式

//輸出:matchPosition數組記錄所有匹配位置,并打印

begin

/*簡單0/1碼壓縮算法壓縮DNA序列和DNA模式*/

壓縮得到八個DNA壓縮模式:〈Pfi,Afi,Pmi,Pbi,Abi〉

其中i≥1且i≤8

壓縮得到壓縮DNA序列: 〈Tf, Tb, A〉

/*BM算法的預處理*/

每個DNA壓縮模式,計算壞字符移動表和好后綴移動表

/*d-BM匹配部分*/

matchPosition[8][];//存放匹配位置的二維數組

for i = 0 to i < 8 do //8個模式分別匹配

matchPosition[i]←BM (Tm,Pm); //BM匹配

//對每個壓縮模式找到的匹配位置,驗證正確性

// 調用size()方法計算數組大小

for j = 0 to j<size(matchPosition[i]) do

//調用檢驗匹配位置方法CheckPosition()

if CheckPosition() is true then

//刪除找到的多余位置

remove(matchPositon[i][j]);

end if

end for

//輸出準確的匹配位置

for k = 0 to k < size(matchPosition[i]) do

print(matchPosition[i][k]);

end for

end for

end

13驗證匹配位置正確性的方法

八個壓縮DNA模式分別調用BM匹配,找出所有匹配位置,然后調用方法CheckPosition( ),檢驗匹配位置的正確性。

方法CheckPosition( )如下:

//功能:實現匹配位置position的正確性檢驗

//輸入:Pfi, Afi, Pmi, Pbi, Abi, Tf, Tb, A

//輸出:布爾型flag,若true,則刪除找到的匹配位置。

flag ← 1;//初始化

lastPosition ← n′- m′;//特殊位置

if position==0 or position==lastPosition then

//找到位置是特殊位置進行特殊的判斷;

else

//非特殊位置,需檢驗模式第一個和最后一個特殊字符

if Pfi not equal對等位DNA字符then

//檢驗模式第一個字符

flag ← true;

elseif flag is 1 then //若flag為1 

if Pbi not equal對等位DNA字符then

//檢驗模式最后一個字符

flag ← true;

end if

end else if

end if

end if

return flag;

2基于多線程技術的壓縮模式匹配算法的設計與實現

21多線程編程與Java

線程也稱輕量級進程(lightweight process,LWP),它由線程ID、程序計數器、寄存器集合和堆棧組成,是CPU使用的基本單元。多線程編程具有響應程度高、資源共享、經濟、能夠利用多處理器結構四個主要優點[12]。

Java是在語言級提供了線程創建和管理支持功能的為數不多的一種語言。在Java語言中,實現線程編程有兩種方法:a)從java.lang.Thread繼承,該類已經實現具有了創建和運行線程所必要的架構。其中最重要的方法是run(),程序員要覆蓋這個方法,實現自己所要的功能。b)實現Runnable接口。可以看到,使用Java實現多線程編程是相當方便的。本文的MultipleOF-dBM算法和DoubleOF-dBM算法采用第一種方法設計并實現。

22MultipleOF-dBM算法

1)算法思想

d-BM算法的匹配過程具有重復性特點,DNA模式壓縮為八個,每個壓縮DNA模式與壓縮DNA序列進行相同的BM匹配查找,然后檢驗匹配位置正確性。MultipleOF-dBM算法正是根據模式匹配的重復性特點,采用八線程設計。

其主要思想是:a)利用簡單0/1碼壓縮算法,對DNA序列和DNA模式進行壓縮處理。 b)考慮到直接采用d-BM算法,每個壓縮DNA模式都要依次與壓縮DNA序列進行匹配查找,共計八次,耗時長。為減少時間,算法創建八個線程,每個線程分別對應一個壓縮DNA模式的BM匹配查找,使八次匹配查找同步并行。c)檢驗匹配位置的正確性。

2)算法步驟

a)構造八個vector對象。

b)調用MultipleOfdBMThread類的構造方法,創建八個線程。

c)同時啟動八個線程。

d)八個線程分別執行d-BM匹配查找,將線程找到的匹配位置保存到相應vector對象。

算法過程如圖1所示。

3)線程類MultipleOfdBMThread代碼實現

class MultipleOfdBMThread extends Thread{ 

private int i = 0;//i代表了第i個線程

public void run(){//執行線程

matchPosition [i] = BM (Tm,Pm);

//對每個模式找到的匹配位置,驗證其正確性

for(int j = 0; j < matchPosition [i].size(); ++j)

if(CheckPosition ())

//刪除找到的多余位置

matchPosition [i].removeElementAt(j);

}

23DoubleOF-dBM算法

1)算法思想

從壓縮DNA序列的角度思考,若要提高算法的匹配查找速度,應縮短壓縮DNA序列的長度。DoubleOF-dBM算法,通過將壓縮DNA序列截成兩半(考慮到可能遺漏匹配位置的情況,不是進行簡單的長度對分)。

其主要思想是:a)利用簡單0/1碼壓縮算法,對DNA序列和DNA模式進行壓縮處理。 b)在壓縮DNA序列長度減小為1/8的基礎上,將壓縮DNA序列截成兩半,使得每次檢索的信息縮小為一半。 c)算法創建兩個線程并發執行已截半的壓縮DNA序列的d-BM匹配。

2)算法步驟

a)構造二維vector對象,每維大小為8。

b)調用DoubleOfdBMThread類的構造方法,創建八個線程。

c)同時啟動兩個線程。

d)兩個線程分別執行d-BM匹配查找(檢索的壓縮DNA序列長度變為一半),再將線程找到的匹配位置保存到相應vector對象。

算法過程如圖2所示。

3)線程類DoubleOfdBMThread代碼實現

class DoubleOfdBMThread extends Thread{ 

private int startDNAPosition, //壓縮DNA序列起始位置

endDNAPosition;//壓縮DNA序列結束位置

private int threadNum = 0; //i代表了第i個線程

public void run(){//執行線程

for(int i = 0; i < 8; ++i){//8個模式分別匹配

matchPosition [threadNum][i]=BM (Tm,Pm);

//對每個模式找到的匹配位置,驗證其正確性

for(int j = 0; j < vectorOfdBM[i].size(); ++j)

if(CheckPosition ())

//刪除找到的多余位置

matchPosition [i].removeElementAt(j);

}

}

}

3實驗結果與分析

實驗數據主要包括兩部分:a)真實的DNA序列,如EMBL數據庫的Homo sapiens物種HUMHBB序列以及est_hum數據庫的DNA序列。b)程序隨機生成的DNA序列。

31真實DNA序列的實驗結果

采用est_hum數據庫的DNA序列,約40 MB。如表1及圖3所示,記DNA模式長度為m,單位是字節。當m<100 Byte,MultipleOF-dBM算法和DoubleOF-dBM算法表現優于d-BM算法,BM算法最差;100 Byte<m<4 KB,MultipleOF-dBM算法最好,DoubleOF-dBM算法略優于d-BM算法;m>4 KB,與d-BM算法相比,MultipleOF-dBM算法和DoubleOF-dBM算法沒有優勢。

隨著DNA模式長度m的增大,四種算法的運行時間都在下降。這是因為壓縮后,DNA模式的字母表明顯增大(最大可為216),從而縮短算法匹配查找時間。m=72 KB時,算法時間都開始接近0,甚至為0。

32隨機DNA序列的實驗結果

采用程序隨機生成的DNA序列,約100 MB。如表2及圖4所示,記DNA模式長度為m,單位是字節。當m<100 Byte,MultipleOF-dBM算法和DoubleOF-dBM算法表現優于d-BM算法,BM算法最差,DoubleOF-dBM算法最好;100 Byte<m<4 KB,與d-BM算法相比,MultipleOF-dBM算法和DoubleOF-dBM算法沒有優勢。

注:MultipleOF-dBM算法和DoubleOF-dBM算法的運行時間取各個線程運行時間中的最大值。

4結束語

在d-BM壓縮模式匹配算法的基礎上,采用多線程編程技術,設計并實現基于壓縮的多線程模式匹配算法MultipleOF-dBM和DoubleOF-dBM。實驗結果表明:當DNA序列與模式長度分別不超過100 MB和100 Byte時,兩個算法的匹配速度與d-BM算法相比有所提高;隨著DNA序列和DNA模式長度的增大,兩個算法與d-BM算法相比,優勢不明顯。

進一步的工作是:a)綜合考慮多線程創建的開銷等因素,把兩個算法不斷完善。b)由于算法使用Java平臺,實現模塊化簡單,可成為搭建生物信息學平臺的重要模塊,完成其中的DNA序列比對工作。

參考文獻:

[1]陳新.生物信息學簡介[EB/OL].(2001) [2007-10-21].http://166.111.68.168/bioinfo/papers/Chen_Xin.pdf.

[2]林毅申,林丕源.基于Web services的生物信息解決方案[J]. 計算機應用研究, 2005,22(6): 157-158,164.

[3]ATTWOOD T K, PARRY-SMITH D J.生物信息學概論[M].羅靜初,譯. 北京:北京大學出版社,2002.

[4]CHEN Yuan.序列比較[EB/OL].[2007-10-21].http://www.lmbe.seu.edu.cn/chenyuan/xsun/bioinfomatics/Web/CharpterThree/3.1.htm.

[5]NAVARRO G, RAFFINOT M. A general practical approach to pattern matching over ziv-lempel compressed text[C]//Proc of Combinatorial Pattern Matching. Berlin: Springer, 1999:14-36. 

[6]KNUTH D E, MORRIS J H, PRATT V R.Fast pattern matching in strings[J].SIAM Journal on Computing, 1977,6(2):323-350.

[7]嚴蔚敏,吳偉民.數據結構[M].北京:清華大學出版社,2004:80-83.

[8]BOYER R S,MOORE J S.A fast string searching algorithm[J].Communications of the ACM, 1977,20(10):762-772.

[9]LEVITIN A. 算法設計與分析基礎[M].潘彥,譯.北京:清華大學出版社,2004:202-209.

[10]CHEN Lei, LU Shi-yong, RAM J.Compressed pattern matching in DNA sequences[C]//Proc of IEEE Computational Systems BioinformaticsConference. Washington DC: IEEE Computer Society,2004: 62-68.

[11]張麗霞,張義青,林丕源,等.基于字符和0/1碼的DNA壓縮模式匹配算法[J].計算機應用研究, 2007,24(9):22-24.

[12]SILBERSCHATZ A. 操作系統概念[M].鄭扣根,譯.北京:高等教育出版社,2004:98-99.

主站蜘蛛池模板: 欧美午夜网| 国产精品冒白浆免费视频| 国产无码制服丝袜| 日韩精品一区二区三区视频免费看| 污网站免费在线观看| 国产成人精品在线| 亚洲资源在线视频| 国产一区三区二区中文在线| 日韩欧美一区在线观看| 亚洲va精品中文字幕| 欧美日韩国产综合视频在线观看| 亚洲第一成年网| 国产亚洲男人的天堂在线观看| 国产日韩欧美在线视频免费观看| 不卡国产视频第一页| 亚洲高清免费在线观看| 久久青青草原亚洲av无码| 自拍亚洲欧美精品| 最新国产你懂的在线网址| 无码精品国产dvd在线观看9久 | 欧美成人午夜影院| 国产你懂得| 国产视频入口| 亚洲综合中文字幕国产精品欧美| 四虎成人精品| 精品1区2区3区| 被公侵犯人妻少妇一区二区三区| 亚洲欧美在线综合图区| av一区二区无码在线| 欧美笫一页| 九九九精品视频| 色香蕉影院| 国产精品网曝门免费视频| 日本精品视频| 丁香婷婷在线视频| 欧美天堂在线| 国产成人高清在线精品| 久久青草免费91线频观看不卡| 国产精品无码一二三视频| 欧美一级夜夜爽| 亚洲日韩精品无码专区97| 一级全免费视频播放| 99精品在线看| 国产激情无码一区二区三区免费| 免费无码又爽又黄又刺激网站 | 免费无码网站| 国产精品亚欧美一区二区三区 | 免费一级全黄少妇性色生活片| 18黑白丝水手服自慰喷水网站| 亚洲精品视频免费| 欧美区在线播放| 久久亚洲美女精品国产精品| 视频二区亚洲精品| 91娇喘视频| 2022国产91精品久久久久久| 国内精品视频在线| 欧美综合激情| 这里只有精品国产| 国产女人18水真多毛片18精品| 国产福利一区二区在线观看| 青青青国产在线播放| 亚洲国产中文精品va在线播放| 久久青草视频| 成年女人a毛片免费视频| 免费国产一级 片内射老| 久久99久久无码毛片一区二区| 亚洲欧美精品一中文字幕| 欧美中文字幕一区二区三区| 中国精品自拍| 国产精品视频999| 香蕉视频国产精品人| 五月天在线网站| 无码aaa视频| 日韩黄色大片免费看| 亚洲一区二区约美女探花| 国产xx在线观看| 亚洲美女久久| 亚洲成a人在线观看| 日本黄色不卡视频| 日韩a在线观看免费观看| 丁香婷婷激情网| 欧美日韩精品一区二区在线线|