生物信息學GPU解決方案

 

生物信息學是一門新興的交叉學科。利用計算機科學來分析生物學數據,可以發現隱含在數據中的生物學知識,可以在實驗之前給出較準確的預測,也可以為實驗的設計提供指導方向。在生物數據爆炸式增長的今天,同計算機密切結合的生物信息學成為生物學研究中不可缺少的工具,具備重要的應用價值。對計算機科學的研究者來說,生物信息學是一個綜合的應用方向,它結合了算法設計,數據挖掘,模式匹配,高性能計算,程序優化等領域,具備重要的研究價值。生物信息學的算法有很多,總體來說一部分算法側重于正確性和敏感度,比如蛋白質結構預測;而一部分算法側重于較快的執行速度,比如在數據庫中搜尋序列。為了提高運算速度,可以使用專用的加速卡,FPGA設備,以及高性能集群。前兩種解決方案的通用性較差,一般只能針對特定的問題購買特定的設備。構建高性能集群是一種通用性較好的方案,但成本較高,不適用于小規模的研究機構。CUDA平臺的出現則提供了一種廉價而且有效的加速手段,使很多生物信息學應用在普通計算機上就可以得到較好的加速。同時CUDA設備也可以用于構建大型的計算服務器,提供比普通集群更高的性能以及更低的成本和功耗。研究生物信息學算法在CUDA上的加速是一個重要的研究方向,同時也是CUDA的重要應用方向。

 

CUDA上的Voting算法

1、模體發現問題簡介

    在生物信息學中,一個主要研究方向是對模體(motif)的研究。模體是DNA或蛋白質序列中,有特定生物學意義的短串。在轉錄的基因的表達中,很大程度上會受到核苷酸序列中一些較固定的短串控制,稱為DNA模體。DNA模體本一般均處在受調控基因的上游區域,轉錄因子可識別這些Motif并與之結合,從而調節DNA的代謝和轉錄。在蛋白質序列中,也存在一些特殊的序列片段具備某種保守性。這種保守性與蛋白質的生物活性有關或折疊方式有關,從而可以用于蛋白質識別、分類和預測。因此模體發現問題是生物信息學中的一個基本而重要的問題。模體發現問題可以簡單描述為,在一組由有限的特定字符集組成的序列中,找到一個較頻繁的出現的短串。如果用漢明距離評價,該短串在每個的序列中都存在一個編輯距離不超過特定值的變異子串。模體發現可以不指定模體的長度,由算法自動尋找可能性最高的短串,也可以手動指定目標模體的長度,以縮小搜尋的范圍。一般情況下,DNA模體的長度在1020個堿基對,蛋白質模體的長度在510個氨基酸。

PevznerSze提出了一種描述模體發現問題的模型,稱為(1d).模型。在這個模型中,給定t個長為W序列,序列中的字符都取自一個字母表Σ。在給定兩個參數ld,滿足04d<l<W,其中l代表模體的長,d代表模體變種和模體之間的漢明距離。如果在各個序列中都能找到一個長度為l的短串,并且和模體候選短串的距離不大于d,則該候選模體短串就是(1d).模型下的一個模體。有很多算法用于解決模體發現問題,這些算法大致可以分為兩類,即確定性算法和非確定性算法。如果模體存在的話,確定性算法一定能夠找到滿足要求的模體,例如Voting算法,PMSPrune算法。而非確定性算法不一定能找到正確的模體,但算法速度較快,能夠解決較大規模的計算任務,例如Gibbs采樣算法,期望最大化算法以及隨機投影法等。

下面將介紹用于DNA模體發現的Voting算法,以及Voting算法在CUDA平臺上的實現及優化。

2 Voting算法

    DNA序列的字符集有4個元素ACG T,因此使用窮舉法逐一驗證所有的長度為l的短串,需要O(Wt41)的時間復雜度,只能適用于對于l較小的場合。Voting算法是一種確定性的模體發現算法,能夠找到所有滿足條件的模體,同時有效地降低了時間復雜度。Voting算法由Francis Chin提出,詳述如下。記N(sd)是和字符串S的漢明距離為d的所有字符串的集合。將所有的長度為l的字符串視為候選模體,序列組中所有長度為l的子串si都給其對應的N(sid)O的元素投1票,那么最終從每個序列都得到了至少1票的候選模體就是滿足(1d).模型的模體。

算法偽碼如下:

l:建立兩個H2LshvR并初始化每個元素為O。其中V表示每個候選模體獲得的票數,

R指示每個同一個序列中的子串最多給一個候選模體投一票。

2 for i=1 to t

 

微乐龙江棋牌