如果要以查詢序列和資料庫中的每一個序列做並列分析會花許多時間,要想加快搜尋的速度就必須能很快挑出值得分析的序列,然後才對這些序列做並列分析。在 1983 年 Wilbur 與 Lipman 首先引入排出值得分析的序列的快速方法,他們先利用混亂編碼 (hash coding) 的方式建立對照表,以尋找兩個序列相似之處,可是這樣所找到的相似區都是很小的片段,其長度為給定之「字」的長度。因此需要利用點矩陣法來延伸所找到的區域,最後再針對上述區域插入空隙,求取最佳之並列方式。
在混亂編碼的階段所尋找的是連續配對的區域,若使用的「字」較長,雖能很快找到相似性高的區域,卻可能會找不到較短的相似區。例如在圖1中,雖可找到兩個 TCG,可是找不到任何一 TCGA。換言之,若字的長度為 4 個鹼基,就無法在圖1中找到相似區。如果使用較長的字做混亂編碼,會使程式的靈敏度 (sensitiviity) 降低,找不到已知存在的相似性。那為什麼不直接採用較短的字長呢?當然,最理想的狀況是字長為「1」,也就是直接比對,不做混亂編碼,可這樣就無法加快運算的速度,因此使用者必須根據自己的需求,在速度與靈敏度之間求取一折衷點。
圖1
這一個策略在 1985 年經過 Lipman 與 Pearson 的修正,到 1988 年 Pearson 與 Lipman 再修正寫成了現在大家所熟知的 FastA 程式。它與最初發展出來的策略有兩項重要的修正。一是在計分時,程式會先存下得分最高的十個,而不是一個點矩陣中的對角線 (即區域性的相似),這樣才不會誤失相似性較低的區域。其次,程式會根據規則將數個對角線連成一個較大的區域,在此允許加入空隙 (gap),以增加靈敏度。這一個經過連接的區域才會利用 Needleman-Wunsch algorithm 來做並列分析。
綜合上述 FastA 發展之過程,此程式的運作可分成三個步驟。第一步是利用給定之字長,製作對照表,尋找連續配對的小片段,並找出配對密度最高的十個片段的位置。其次是利用相似矩陣(例如 PAM250 或Blosum50) 針對這十個片段重新計分,並除去每個區域兩側得分較低的部份。此時所得的每個區域都是沒有空隙,但可能有誤配的並列序列,此時相似的區域的分數會被存下,稱之為「initl」。然後 FastA 會試著將相鄰的相似區域(即對角線)連接起,這個過程允許插入空隙,唯每插入一個空隙就要扣一定的分數。在經過連接後,最相似的區域的得分稱之為「initn」。最後的一步的並列分析是採用趙坤茂博士所設計的方法,它是 Smith -Waterman algorithm 的一種變異,在性質上還是區域性的並列分析,但是速度較快。在得到最佳並列方式後之得分,稱為 「opt」,程式會根據序列長度校正此值,而計算出 z-score,前述之柱狀圖就是根據z-score 所繪的。
[ GCG 程式 | 參數設定 | 結果分析 | 程式類別 | 個案分析 | 標準分析 ]
Last updated on 11/27/01