第三章、 研究方法
3.2 核醣核酸共同結構元搜尋系統
系統的流程圖如下圖所示,整體來看會分為 2 大部份:
(1) 因為本系統是使用 Gibbs-like 解搜尋核醣核酸共同結構元的問題,因此第一 部份就是在為 Gibbs-like 建立多個「抽象形狀候選者池(Abstract Shape Candidate Pools)」,以供 Gibbs-like 使用。
(2) 接下來就是 Gibbs-like 流程的部份,每個抽象形狀候選者池都會選出多個初 使化種子,而後每個種子再經過 2 次 Gibbs-like 而得到具有相似結構的共同 結構元集合。最後對所有的共同結構元集合做排序後輸出給使用者。
3.2.1 產生核醣核酸共同結構元候選者集合
在接收到資料序列集時,會先由 RNAFold 預測出每條核醣核酸序列的結 構,要注意的是,RNAFold 對於過長的序列的預測結果不佳,而且預測時間也 很久,所以我們不會直接將整條序列送給 RNAFold 做預測,而是會對序列做分 段輸入,每次輸入的長度只有 1.5 倍的「max candidate length(使用者設定)」,而 sliding window size 為 0.5 倍的「max candidate length(使用者設定)」。接下來經 由分解演算法將核醣核酸結構中所有共同結構元候選者分解出來,最後將每個候 選者依造抽象形狀分類得到多個「抽象形狀候選者池(Abstract Shape Candidate Pools)」,以供 Gibbs-like 使用。
讀者現在一定會好奇,為什麼要用抽象形狀來做分類呢?這其實是一個觀 察出來的現象,在我們目前所見到的同家族的共同結構元,它們的抽象形狀都是 相同的,當然這也是為何我們要設計”抽象形狀”這個核醣核酸表示法的原因,所 以我們將它做為系統的實驗假設,而且也在實驗結果中得到很不錯的結果,如此 初步分群後的結果能大大的縮小系統的搜尋空間,加速搜尋的時間。
3.2.2 如何選擇種子
其實 Gibbs-like 是可以隨機選取種子的,但是為了能讓結果快速收斂,所以 我們決定先選擇一些相似的結構們來當種子,這是選取種子的目的,但難度在我 們如何找"相似"的結構呢?用排比演算法來計算並不划算,因為我們只是在選 種子而已,所以決定只用 RLD 來計算兩兩結構之間的相似度,並且將相似度很 高的結構們集合起來當成是一個種子。如下圖的例子是用 Seq1 最下面的 candidate 做為中心,到其它的序列中將與自己相似度最高的 candidate 集合起來,就可以 形成一個種子。在候選者池中的每個候選者都要做一次這個動作,去收集與自己 高度相似的結構,因此會有很多個種子,最後以「平均相似度」做排序後,輸出 給 Gibbs-like 做處理。
3.2.3 Gibbs-like 流程
n: 測試序列條數 S:(s I) 1≦i≦n,序列集合
T:(t I) 1≦i≦n,種子,其中t I = ψ表示種子中沒有第i條序列的成員。
C:(c Ij) 1≦i≦n,候選者集合,c Ij表示s I的第j個候選者 C I表示s I的所有候選者集合。
MT: 由T所建立出來的排比模型。
sim(T): 種子T的內成員們之間的相似度,定義為Score(MT)。
sim(c Ij, T): 候選者與種子T之間的相似度,定義為c Ij與MT排比分數。
(文中會用到符號的定義)
Gibbs-like 這個方法的目的,就類似是要在 k-partite graph 中找 max-Clique,它 的步驟我們由下圖來說明:
(1) 如下圖中被標記起來的Sub-structure就是種子的成員,現在我們計算C1中 每一個候選者與種子的相似度,並且選擇相似度最大者加入種子中,如 下圖就是選最下面那個候選者(相似度為 0.94)加入種子中。要注意到 的是,計算sim(cIj, T)時,若RLD的值小於θl(RLD的門檻值,由使用者 設定)則sim(c Ij, tk)會直接設定為 0 而不用排比演算法計算相似度,用以 限定Gibbs的搜範圍。
(2) 如上述的方法,對每一條序列都處理過一次後稱為一個回合(Iteration)。
(3) 如果某個回合在執行前和執行後,種子的內容是不變的,即為收斂停 止。
Gibbs-like 在每個回合的過程中有以下的特性:
(1) 目的是使 sim(T)的值最大化。
(2) 每條序列必定會選擇一個與種子相似度最高者加入種子。
如(1)中所描敘使 sim(T)值最大化表示 Gibbs-like 會從種子出發,試著找其它 的候選者加入使得找到的種子集合變大,並且依造 RLD 來限制 Gibbs,在計算 sim(Ci, T)的時候,若與 T 中暫定共同結構元的 RLD 小於θl的候選者則計算相似 度,否則相似度直接設定為 0,那麼 Gibbs-like 就只會嘗試選擇可能在 T 附近的 候選者來比較,以避免做不必要的搜尋。
而(2)中說出了一項 Gibbs-like 的缺點,當一組資料中,並非每一條序列都是 屬於同一個家族時(就是有些它們沒有共同結構元),則這幾條序列對 Gibbs-like 來說就是雜訊,因為 Gibbs-like 一定會幫每條序列選擇一個候選者加入。
解決方法是設定相似度的門檻值(θs),在為C I選擇加入種子的候選者時,如 果其中沒有任何一個候選者與種子的相似度高於θs則不選,t I選定為ψ。
但是由實驗的結果看來,直接設定一個θs 是可以做到過濾雜訊的功用,但 效果並不佳,所以後來決定θs 會由一個最大值一直遞減 0.02,直到 0,再由系 統去選要停在那一個值會比較好,而最大值就是用種子中最小的成員相似度,結 果就如下圖所示,在遞減的過程中會有一段蠻長的"穩定區間",系統就會選擇 這時的種子為結果,也表示後來再進來的就被視為是雜訊。
3.2.4 樣版搜尋(Pattern Search)和第二次 Gibbs-like
樣版搜尋(Pattern Search)就是拿一個種子去搜尋測試資料,將每條序列中所 有能折疊出與種子中任何一個成員相同的子序列都搜尋出來,然後構成新的候選 者池,如下圖一個種子中有 4 個成員,拿來搜尋Seq1 後,所有搜尋到的Sub- structure都存在C1中,如此搜尋完全部的序列後,就可以可以形成新的候選者池,
對於新的候選者池再跑一次 3.2.3 中所敘述的Gibbs-like即可,得到新的共同結構 元。
為何要做第二次的 Gibbs-like 呢?想想看在第一次 Gibbs-like 時,為何有些序 列沒有找到共同結構元呢?有以下 2 種可能性:
(1) 這條 sequence 並非同一個家族(它沒有與其它序列相同的共同結構元)。
(2) 從結構預測程式接收到的結果中沒有正確的二級結構。
如果是(1),則沒有找到是對的,但如果是(2)的話,樣版搜尋(Pattern Search)就能 可能將答案找回來,因為共同結構元之間的結構是很相似的,那麼用已找到的結 構去掃瞄沒有共同結構元的序列,就會有可能找到,而能簡易的擺拖只依懶結構 預測程式來預測序列的結構的現象。
3.2.5 結果
下表為系統的結果範例,其中第一行是這組共同結構元排序後的排名,第 二行中是它的相似度,而後每一行各代表一個共同結構元,第一個為序列核醣核 酸序列的,第二個##中的數字為共同結構元在序列中的起點與終點,最後是共同 結構元的結構。
# Rank 1 ####
SS_Similarity : 0.85972878335044
AB062402.1/11-40 ##(44-71):0.7718689356620393 (((.((.(((((...)))))))))) AB073371.1/5-34 ##(142-167):0.7668859450468646 (.(((.(((((...))))))))) AC073115.5/47515-47486 ##(71-96):0.7190369230599117 (((...(((((...))))).))) AF117958.1/132-161 ##(29-54):0.7353796703166375 ((.((.(((((...))))))))) AF171078.1/1416-1442 ##(33-58):0.7026030589248979 (.(((.(((((...))))))))) AF266195.1/14-43 ##(62-89):0.7703516913194333 (((.((.(((((...)))))))))) AF285177.1/3-32
AF338763.1/11-40 ##(3-31):0.71486837226548 (...(((.(((((...)))))))).) AJ426432.1/1593-1619 ##(100-124):0.688661836248043 (((..(((((...))))).))) AJ426432.1/1658-1684 ##(9-33):0.7231902495120888 (((..(((((...))))).))) AL034379.8/68035-68064 ##(77-104):0.7740334378265413 ((.(((.(((((...)))))))))) AL355837.6/87643-87614 ##(62-89):0.7502985520226898 ((.(((.(((((...)))))))))) AL513423.3/108544-108573 ##(19-46):0.7394387221973429 ((.(((.(((((...)))))))))) AP003174.2/91762-91734 ##(99-125):0.744721283592757 ((((..(((((...))))).)))) AY120878.1/50-76 ##(9-31):0.7108776973249286 (((.(((((...)))))))) BC001188.1/3791-3817 ##(59-82):0.7321221307428204 (.((.(((((...))))))))