桑格法無法突破的瓶頸
在上一篇導覽裡你見過了桑格定序,它真的很優美:一種聚合酶複製你的鏈,每隔一陣就有一個能終止鏈延伸的雙脫氧核苷酸給正在增長的拷貝封頂,於是你得到一組層層嵌套、各種長度俱全的片段梯,每一段都由它最後一個字母來標記。把這架梯子跑開、讀出顏色,你就拿到了序列。問題就出在「一個」這個詞上。一次反應只讀一個片段——幾百到約一千個鹼基——跑在單獨一條泳道裡。要用這種辦法讀完一個三十億鹼基的人類基因組,你得把它克隆成數百萬小塊,跑數百萬次各自獨立的反應,再把答案拼接起來。人類基因組計劃正是這麼幹的,前後花了大約十年,耗資數十億美元。
所以瓶頸從來都不在準確度上——桑格法的讀取品質極佳。瓶頸在於通量:你每花一塊錢、每過一天能讀出多少個字母。桑格法是一道手藝活,一管、一根毛細管地來,而你沒法把一門手藝切實地放大到幾十億個鹼基。那個顯而易見的夢想,就是別再一個接一個地讀片段,而是讓海量的片段*同時*被讀取,肩並肩,擠在同一小塊空間裡。這個夢想,正是下一代定序——也叫*大規模並行定序*——最終實現的東西,也正是為什麼一個曾經要花掉一國科研預算的基因組,如今只值一部智慧型手機的價錢。
邊合成邊讀,百萬個點同時進行
下一代定序中占主導的那一種,靠的是一招叫邊合成邊定序的把戲,其核心思路你其實已經半懂了:盯著一種聚合酶搭建一條互補鏈,並在每個字母*被加上的那一刻*把它記下來。首先把基因組打碎成短小的片段,把數百萬個這樣的片段撒開、固定在一張玻璃片上,每一個各占一個微小的點位。接著每一個孤零零的片段都被就地複製——被擴增,很像一場微型的局部PCR——變成一簇一千來個一模一樣分子的密集團塊,於是單個分子發出什麼訊號,整簇就把它放大一千倍發出來,你這才真正看得見。如今你手裡這張片子載著*數百萬個簇*,每一簇都是某一個片段的純淨菌落,全都準備好被同時讀取。
- 把四種鹼基一次全加進去,但每一種都帶著一個有顏色的標籤,以及一個能擋住下一個鹼基接上來的化學「封帽」。聚合酶在每一簇上恰好接上一個正確的鹼基,然後停住。
- 給整張片子拍一張照。每一簇都以四種顏色之一發亮,告訴你剛剛在那裡接上的是哪一個字母——一張快照讀出幾百萬個字母。
- 用化學方法剪掉顏色標籤和封帽,讓每一條鏈都能接受它的下一個鹼基。
- 把「加—拍—剪」這一循環重複幾百次。按順序把這些照片疊起來,每一簇就一個字母一個字母地拼出了它那個片段。
讀長、覆蓋度,以及把拼圖復原
從機器裡滾出來的不是一個基因組,而是一大片短片段。你讀到的每一個片段給出一條讀長(read)——一串字母,對邊合成法而言通常只有 100 到 300 個鹼基長。一次人類基因組的運行會產出幾億、甚至幾十億條這樣的讀長。關鍵在於,基因組當初是被*隨機*打碎的,所以這些讀長彼此隨機地交疊,就像把同一本書的許多份撕成紙屑,再全倒進一堆。片段之間彼此交疊這一點,正是把它們重新拼起來的全部要害,也正是為什麼你要刻意讀出遠多於基因組實際所含的字母總數。
這種刻意的過量有個名字:覆蓋度,或稱*深度*。如果你讀了足夠多的片段,使得基因組上平均每一個位置都被 30 條不同的、彼此交疊的讀長覆蓋到,你就擁有了*30 倍覆蓋度*。深度是你的安全網。每一條單獨的讀長都帶有一些誤差,任何一個鹼基都可能恰好落在一條把它讀錯了的讀長裡;但當 30 條讀長各自獨立地一致認為某個位點是 G,你就可以信它,而當它們 15 條說是 A、15 條說是 G 平分時,你就逮到了一個真正的變異——這條染色體的一份拷貝與另一份不同。低覆蓋度便宜,卻會留下空缺和不確定的判讀;高覆蓋度更費錢,但買來了把握。選定一個深度,就是定序實驗裡天天要算的經濟帳。
GENOME: ...A C G T T A G C C A T G A C ... (the truth we want)
Reads (short, overlapping, error-prone):
A C G T T A G
G T T A G C C A
A G C C A T G
C A T G A C
--------------------------------
ALIGN + A C G T T A G C C A T G A C <- overlaps let us
VOTE every column read many times rebuild the sequence
Coverage 4x here: each base sits under ~4 reads, so a single misread loses the vote.把那一堆交疊的讀長重新變回一條連續的序列,就是基因組組裝,一道由電腦來解的巨型拼圖。當你手頭已有該物種一份已知的參考基因組時,活兒就輕鬆些:你只需找出每條讀長與參考序列最匹配的位置、把它鋪在那兒,就像對著盒蓋上畫好的成圖來歸整紙屑。而*從零開始*——沒有參考——去構建一個基因組就難多了,因為你必須純靠讀長與讀長的相互匹配來找出交疊,而那些到處看起來都一樣的重複片段會讓拼圖卡殼。正是在這一刻,生物學變成了計算:濕實驗把接力棒交給軟體與統計,讀一個基因組就成了一道生物資訊學的難題。
長讀長:讓一條鏈穿過奈米孔
邊合成法有一個頑固的弱點:它的讀長*太短*。幾百個鹼基對於在參考序列上找出單個字母的差異綽綽有餘,但要跨越一段很長的重複區域就毫無指望了,因為一條落在一長串相同重複裡的 150 鹼基讀長,可能來自那串重複裡的任何地方——這副拼圖有許多塊長得一模一樣。解決之道是一種截然不同的*第三代*路子:奈米孔定序,它直接讀取單個 DNA 分子,完全不複製、也完全不合成。
想象一張膜,上面嵌著單獨一個蛋白質孔,剛好寬到能讓一條 DNA 單鏈穿過去,再有一個微小的電壓推動著離子流過那個孔、形成一股穩定的電流。現在讓一個 DNA 分子穿過這個孔。當每個鹼基經過最窄處時,它各自的形狀和大小會把電流掐住一個特定的幅度——四種字母對電流的擠壓各不相同——於是這條鏈就把自己寫成了一道起伏的電訊號軌跡,軟體再把這道軌跡解碼回 A、T、G、C。因為你只是不停地把同一個分子往裡穿,讀取不會停在幾百個鹼基處:奈米孔讀長動輒長達數萬個鹼基,有時超過一百萬個,長到足以一步跨過那些擊敗短讀長的重複區。
廉價的定序為何改變了生物學
一旦你能廉價地以十億鹼基計讀取 DNA,同一台機器就遠不只能讀基因組。把一個細胞的 RNA 反轉錄回 DNA——用的是你在中心法則那一級見過的那同一種反轉錄酶——再去測它,你做的就是RNA 定序:你不再問*這個細胞裡有哪些基因*,而是問*這個細胞把哪些基因開了、開得多響*,辦法是數有多少條讀長落在每個基因上。把同樣的思路一直推到一次只測一個細胞,你就得到了單細胞定序,它揭示出我們曾當作均一一片的組織,實則是由各不相同的細胞狀態拼成的馬賽克。這台讀字母的機器,成了一把衡量細胞正在做什麼的通用量尺。
它也走進了臨床。給一個腫瘤定序,能精確揭示是哪些突變在驅動它,從而指向一種針對那個特定改變的藥物。孕者的血液裡帶著胎兒 DNA 的蹤跡,定序能據此篩查染色體異常,而無需把針扎到子宮附近。在大流行期間,從成千上萬份樣本裡讀出流行病毒的基因組,正是在幾天之內發現並追蹤新變異株的辦法。這一切若按桑格法的通量都將貴到負擔不起;正是那「一次幾百萬個」的並行,才讓定序成為一項常規的診斷手段,而非一樁英雄主義的一次性工程。
最後一句誠實的提醒,好讓你帶著一幅真切的圖景往上爬。那句著名的「千元基因組」,指的是產出原始讀長的成本——它並不包含組裝、生物資訊學分析、資料儲存,也不包含解讀一個變異對一個人究竟*意味著什麼*的艱苦工作。廉價的讀取並沒有讓生物學變簡單;它只是把瓶頸往下游挪了,從實驗台挪到了資料上。我們如今讀基因組的速度,已經快過我們理解它們的速度,而把字母的洪流變成知識的這門學問,從許多意義上說,正是當今分子生物學最忙碌的地方。