JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

生物資訊學與序列比對

定序儀一旦把幾十億個字母交到你手上,沒有人能用肉眼去讀它們。來認識現代生物學裡「程式碼與資料」的那一半:比對和 BLAST 如何找出相關的序列、像 GenBank 這樣的公共資料庫如何讓每個人都能搜尋所有人的資料,以及單單一個統計量如何從海量資料的噪聲裡分辨出真正的訊號。

當生物學變成一門資料科學

在前幾篇導覽裡,你看著一台定序儀把 DNA 變成一大片字母,也看到了把這片洪流重新變回一條連續序列——基因組組裝——本身就已經是電腦的活兒,而不是移液器的活兒。這一次「接力棒的交接」正是本篇的全部要點。一個人類基因組大約有 32 億個字母;一次定序運行吐出幾億條短讀長;一個單細胞實驗產出動輒上百萬個數字的表格。沒有人能用肉眼去讀這一切。生物資訊學正是為了在這種規模上儲存、搜尋、比較並從統計上理解生物學資料而成長起來的一門學科——它是每一個基因組規模實驗都離不開的夥伴。

把改變了什麼說清楚很有幫助。分子生物學誕生在實驗台上——試管、凝膠、靠手工讀出來的幾千個鹼基。濕實驗並沒有消失,但這門學科如今有一半完全活在程式碼裡:一個假說常常不是靠一個新實驗、而是靠一次對已有資料的查詢來檢驗。一位發現了奇怪突變的病理學家、一位採集池塘水的生態學家、一支在與新病毒賽跑的疫苗團隊——他們如今首先伸手去拿的,都是鍵盤,而不是移液器。*讀取* DNA 的本領給了我們字母的洪流;*解讀*它的本領,才是當今生物學最忙碌的地方。

比對:把字母排齊,讀出意義

生物資訊學裡最根本的那一項操作,就是序列比對:把兩條序列上下排開、來回滑動,直到它們相似的部分對齊,於是你能看出哪裡相同、哪裡相差一個字母、哪裡這條有而那條缺了字母。它之所以這麼強大,原因在於生物學。兩條看起來相像的序列,通常之所以相像,是因為它們共有一個祖先、都是從它那裡複製下來的——字母上的相似,正是共同歷史的一塊化石。所以如果你那條未知序列能和一個功能已知的基因比對得很好,你就剛剛白白繼承了一個關於自己這條序列在幹什麼的、強有力的假說。下游幾乎所有事情——組裝、把讀長比對到參考序列上、比較物種——底下都是比對。

Two related sequences, aligned:

Query   5'-A C G T A T G C - - A G T C A-3'
           | | |   | | |     | | |   |
Subject 5'-A C G A A T G C T T A G T G A-3'
               ^             ^       ^
            mismatch       a gap    mismatch
            (A vs T)    (insertion/   (C vs G)
                         deletion)

Matches earn points; mismatches and gaps cost points.
The best alignment is the one with the highest total score.
一次比對把兩條序列相互滑動,讓匹配最大化。豎線標出相同的字母;錯配是單個字母的差異;空位(一道短橫)標出在一條序列裡有、而在另一條裡缺的字母。給匹配、錯配和空位計分,就把「它們看起來像不像?」變成了一個電腦能去優化的數字。

有一處微妙之處值得記住。兩條序列*真正最優*的比對,是可以被精確求出的,辦法是用一種有條理的方式去嘗試給字母和空位配對的每一種可能——但這種窮舉的方法很慢,面對一個有幾十億字母的資料庫,它會耗時長到沒法用。所以實踐中我們拿「完美的保證」去換速度:我們用一些巧妙的捷徑,幾乎總能找到*非常好*的比對,快到能在幾秒鐘內搜遍全世界的序列。把這個取捨記在心裡——精確但慢,對上快但是啟發式的——就是開始像一個生物資訊學家那樣思考的起點。

BLAST:向全世界發問「你見過這個嗎?」

現在讓比對派上用場。你手裡有一段神祕的 DNA,想知道它是什麼。最快的一招,不是苦思冥想,而是去問一座龐大的圖書館:*有沒有任何人、在任何地方,見過類似的東西?*BLAST——基本局部比對搜尋工具——正是回答這個問題的搜尋引擎。你把那條未知序列貼進去,幾秒之內,BLAST 就把它和幾千萬條已知序列做比對,再把最像的那些回給你,最佳匹配排在最前。如果你那條序列在一條魚或一隻果蠅裡某個研究得很透的基因上亮了起來,你立刻就對它的身份和功用有了一個強有力的猜測。

  1. BLAST 把你的查詢序列切成一些短「詞」——每個就幾個字母——並先只去尋找資料庫裡含有這些精確詞之一的序列。這就是那條捷徑:它不會把你的查詢和所有東西都做比對,而是把絕大多數一個詞都不共享的統統略過。
  2. 凡是有詞命中的地方,BLAST 就把那個點位當作一顆種子,朝兩個方向向外延伸比對,添上匹配、容忍少量錯配,只要分數還在往上爬,就讓這段局部匹配不斷生長。
  3. 每一段延伸出來的匹配都得到一個分數,而最關鍵的,是一個統計量——E 值——它說的是:在一個這麼大的資料庫裡,純靠運氣出現一段這麼好的匹配,會有多頻繁。BLAST 據此給命中排序,把最好的排在最前。

最後那個統計量,是誠實地做這件事的核心,所以它值得一幅清晰的圖景。在一個有幾十億字母的資料庫裡搜尋,*總會*有某條序列純靠運氣與你的相像——乾草堆越大,隨機噪聲能撒進去的、看起來越唬人的「針」就越多。E 值,就是在那麼大的資料庫裡,純靠運氣你會得到的、和你這條一樣好的匹配的期望個數。E 值等於 10,意思是「預計大約有十個這麼好的偶然命中——你這條多半是噪聲」;E 值等於 1e-50,意思是「靠運氣你基本上永遠見不到這個——這是真正的訊號」。光看分數會騙了你;E 值才是把一個真正的親戚和一次巧合分開的東西,而會不會讀它,正是一項發現和一場難堪之間的區別。

GenBank 與 FASTA:所有人的資料,用一種樸素的格式

BLAST 的好壞,全看它搜的那座圖書館,而那座圖書館,正是整個基因組學底下那個靜悄悄的奇蹟。科學只有在分享時才會複利增長,而在這個領域,分享是透過龐大的公共序列資料庫發生的。其中最大的一座,GenBank——由美國國家生物技術資訊中心運營,並由歐洲和日本的姊妹庫鏡像——收藏著人類曾測過序的幾乎每一種生物所提交的 DNA 與蛋白質序列,而地球上任何人都能免費搜尋並下載它的全部。當你單單一次 BLAST 搜尋認出了你那條未知基因,它比對的,是其他所有人幾十年來的工作——全都捐進了同一片公地。

要讓一片這麼大的公地運轉起來,資料需要一種簡單到任何電腦上的任何程式都能讀的格式——而那匹主力馬,樸素得令人欣喜。一個 FASTA 檔案就是純文字:一行以「>」開頭、給這條序列命名的標題行,後面跟著序列本身、用普通字母一一寫出來。整個標準就這些。正因為它是不含任何隱藏機關的純文字,一個 1995 年在筆記型電腦上寫下的 FASTA 檔案,今天照樣打得開,而同一個檔案,能餵給一個比對工具、一次資料庫上傳,以及一名學生昨晚寫的腳本。這種徹底的簡單不是偷懶;正是它,讓陌生人在相隔幾十年間各自造出來的工具,全都能彼此對話。

一整條 FASTA 記錄小到能在腦子裡想象出來。標題行讀起來像 `>gene_X Homo sapiens hypothetical protein`,接下來幾行就單純是序列——`ATGGCATTAGCCGATCAGTTACGG...`——一直往下跑,直到下一個「>」開啟一條新記錄。一個檔案能把成千上萬條這樣的記錄一條接一條地摞起來。再沒別的了:沒有字體、沒有隱藏代碼,就只有一個名字和那些字母。正是這種頑固的樸素,才讓一個實驗室寫下的檔案,原封不動地,幾十年後還能在另一個實驗室的軟體裡打開——也才讓同一個小檔案,能同樣輕鬆地餵給一次 BLAST 搜尋、一次資料庫上傳,以及一行腳本。

當資料極其龐大時,分辨訊號與噪聲

E 值是你初嘗大數據生物學裡那個核心的統計風險,而它可以推而廣之。這風險是:當你做上百萬次檢驗,「罕見到靠運氣才會出現」就變成了「因為數量大而常見」。擲一枚公平的硬幣十次,十次全是正面,令人驚嘆;讓一萬枚硬幣各擲一百萬次,那麼某處某枚,會以無聊的確定性出現十連正。基因組學一次同時檢驗上百萬個位置,所以一個看起來「千里挑一」般唬人的結果,純靠運氣就預計會出現成千上萬次。不去校正這一點——這就是多重檢驗問題——是用一個基因組規模的資料集騙過自己的、最常見的那一種方式。

這正是為什麼下一篇要講的全基因組關聯研究,會要求如此兇狠嚴苛的閾值——也是為什麼一個在單獨一個小實驗裡「顯著」的命中,一旦它是百萬分之一,就會被當作噪聲丟掉。這也是為什麼一項 GWAS 顯示的是*關聯,而非因果*:一個與某疾病結伴出現的字母,可能只是緊挨著真正的元兇坐著,或是搭著某個隱藏的混雜因素的便車。這個教訓貫穿了整個生物資訊學。資料一多,巧合就是必然;而這門手藝的全部,就是去構建統計量——E 值、校正過的閾值、在第二個樣本裡的重複驗證——來守住真正的生物學訊號與規模帶來的、無可避免的海市蜃樓之間的那條線。

可重複性:程式碼所要求的那種文化

正因為如今這門工作有那麼多是程式碼和資料,生物資訊學不得不長出一種可重複性的文化,而老一輩在實驗台上做生物學時對此還可以馬虎。一次分析是一長串步驟——修剪讀長、比對、判讀變異、跑統計——而每一步都用著某個特定的軟體、某個特定的版本、某套特定的設定。改動一個版本或一個設定,答案就可能變。所以這門學科堅持:*配方*要和結果一樣被仔細地分享出來——確切的程式碼、參數、軟體版本,最好連原始資料也一併提交,好讓一個陌生人能重新跑一遍你的流程、得到同樣的數字。一個別人無法重現的結果,越來越被視作根本不算結果。

退後一步,現代分子生物學的輪廓就清晰起來了。那同一種在 GenBank 裡找出你基因的比對,一旦橫跨許多物種一起做,就成了比較基因組學——靠觀察每個基因組守住了哪些字母、又讓哪些漂移了,來讀出演化。把基因目錄及它們之間的相互作用接成網絡,你就到達了系統生物學,也就是下一篇裡從一張零件清單躍向一張接線圖的那一跳。而托起這一切的,正是你在這裡見到的那套靜悄悄的機器:比對、BLAST、共享的資料庫、樸素的格式,以及那些在訊號與噪聲之間守住誠實界線的統計量與可重複的習慣。生物學如今既關乎試管,也同樣關乎程式碼與資料——而兩者都懂,才是攀上這一級的真正含義。