理學院因為看見數據科學在社會上不同地方都有非常多的應用,而且我們的同學好像對數據科學的興趣也非常之大,所以在這學年,我們推出一個全新的本科生課程,叫做「科學數據分析」(Data Analytics in Science)。同學會先在JUPAS進入理學院A組,在第一及第二年修讀一些科學基礎課程和數學課程以後,將可以從四個不同專修(Track)裏面挑選一個自己有興趣的科學科目,然後將學懂的數據分析技巧應用在那一專修項目內的大數據上面。有興趣的同學可以到相關的網頁仔細了解課程內容。我在這裏就不再仔細介紹這個課程。

在那四個專修裏面,有一個叫應用生物科學(Applied Bioscience)。可見在不同生物學相關的領域,也需要用到很多不同數學的技巧。這跟大部份我從中學生聽回來的感覺很不一樣,大部份主修生物科的同學,可能對數學完全沒有興趣。同樣道理,修讀數學科目的同學,會覺得生物學非常困難。給大部份人的感覺這兩個項目完全不相關。可是這幾年我看見不同地方的研究項目,生物學跟數學科可以是息息相關。尤其現代的科學研究,非常着重跨學科研究。目的是希望可以運用不同科目研究的技巧和看問題的不同角度,可以突破一些傳統研究項目的困難。所以在這篇文章裏面,我希望介紹一些跟生物學相關而又運用了大量數學技巧的研究項目,希望鼓勵中學同學可以同時修讀多幾門科學科目。但是由於自己並不是生物專科,中間實驗所需要的原理和程序,可能沒有辦法給予一個仔細的介紹。只能用我都中五程度的生物知識,盡量把我所知道的介紹出來。如果有任何更正,歡迎指出。

前幾年在外國娛樂圈有一宗比較震撼的消息,指出安祖蓮娜祖莉(Angelina Jolie)因為根據自己家族遺傳病的病史,為自己的DNA進行了測試,因而發現了自己患上乳癌的機會相當高。所以在2013年,還沒有發病之前,進行了乳腺切除手術,令到自己不會因為患上癌症而備受折磨。這裏不會討論這種手術是否有需要,主要希望討論這個DNA測試裏面所見到的數學。

DNA測序或者排序(DNA Sequencing)本身就是一個非常有趣的科學題目。到底我們如何可以得到一顆細胞裏面DNA這個序列呢?人類一條DNA裏面,有高達30億個核苷酸(Nucleotides)。所謂核苷酸,是DNA或者RNA的組件,也就是我們經常會提到的A/C/G/T符號。傳統的DNA測序過程,需要將整條DNA從頭至尾複製一次,而在複製過程裏面每一個組件都會附上一個螢光物質。當這個程序做完,我們只需要用儀器從頭至尾將DNA「看」一次,就可以將ACGT判別出來。由於這個過程是需要從頭到尾30億個組件「看」一次,可以想像這個過程將要花非常長時間。所以在1990年剛出現的國際人類基因組計劃 (Human Genome Project),預計需要大約15年時間才可以將人類整個基因圖譜測序出來。

這個傳統的程序,就好像我們在自己手提電腦上跑程式一樣,只有一部電腦幫你做所有運算。在數學領域裏面,有很多問題如果只用一部普通電腦,可能需要花以年計的時間去運算,才可以得到一個測試結果。如果要加速這個過程,就有可能需要運用超級電腦(Super Computer)幫忙計算。所謂超級電腦,並不是這個電腦可以運行得「超級」快,而是由於電腦有非常多的處理器可以同一時間進行計算運作。用家需要編寫特定的程式,將計算工作盡量平均分給不同的處理器。如果有100個處理器同事運作,理論上一個很好的程式可以只用原來1%的時間就可以得到答案。當然要撰寫這些給超級電腦使用的程式,有時比較麻煩,也可能在實質運用上未能達到期待的加速效果。比較麻煩,是由於程式編寫員有時候需要想像一下如何要不同的處理器分工合作,將整個數學問題解決。這裏已經有非常多的研究去將不同的數值方法進行平行化(Parallelize)去給超級電腦使用。另外一個問題,是由於不同處理器還是需要溝通將計算出來的答案互相使用,所以實質運用上很多時候不一定可以「事倍功半」(花多了一倍的處理器的數目,就可以用少一半的時間)。

返回剛剛DNA排序討論,如果我們想將這個過程加快,一個方式就是希望有一個「超級排序」的方式,可以將一整條DNA分成不同部份及不同儀器進行排序。這個想法,在國際人類基因組計劃裏面亦有出現。計劃裏面,將DNA分成很多不同部份,不同研究組織就會用自己的儀器將分到的DNA部份進行排序過程。當所有的實驗室將這個過程做完,人類基因圖譜亦都大功告成。那現今的DNA排序是如何執行的呢?在坊間經常聽到一些個人的DNA排序,好像不需要全球20多個實驗室幫我們做測試。那如何將15年的時間,縮短成現在所需要的數天呢?

想法其實也差不多。原理是我們將DNA分割成很多不同小段,然後將每一小段發送到不同的儀器同一時間進行排序。仔細執行時可能會有很多不一樣的方法,但這些不同的方法都歸納成稱為次世代定序Next Generation Sequencing (NGS)。這裏有一個問題,在生物課程裏面可能沒有指出過。而且,就算同學是生物科專業,也不一定知道如何把這個問題解決。對,每一小段我們都有方法將它準確地排序出來。可是,過程裏面,我們將一整組DNA隨機分割成很多不同長度的小段,然後又隨機地將這些不同小段依附到晶片(Flow Cell)上面進行複製,最後才將這些小段進行排序。這些基因小段長度不同,放置的位置有沒有特定的次序,我們是如何可以將它們組合回一條完整的DNA排序呢?

在2011年科大開始跟UCLA Institute of Applied and Pure Mathematics(IPAM)合作,舉辦了一個本科生暑期研究活動叫做Research in Industrial Projects for Students (RIPS)。每年有大約八名美國不同地方的本科生會跟我們科大找來的八名本地本科生,分成四組去做一些我們找來的公司提供的本科生研究項目。起初頭幾年,我們都也找來華大基因(BGI)提供一些應用數學的項目。這些題目都非常有趣,他們都有着生物科技的「包裝」,內裏都是一些數學問題。我還記得2011年他們提供的問題,就跟剛剛提到的有關。他們提供的問題是這樣子的。在一些沼澤裏面,他們可能採集到不同細菌樣本。裏面有的細菌種類可能有很多,有一些是已知的,有一些可能是新品種,而且裏面有多少不同物種也不清楚。項目的目的,是希望把這些樣本做DNA分析,了解到他們是什麼種類的生物。這個項目的難處有以下兩個,第一,我們根本不清楚樣本裏面有多少不同種類的生物。第二,當我們進行NGS時,我們會將好幾種不一樣的DNA樣本同時進行剪碎以及混合起來。當我們將這些從不同生物裏面得來的DNA小段進行排序,我們如何可以將它們組合會多條完整的DNA排序呢?有興趣了解裏面解決辦法的讀者,可以看一下我們同學最後得出來的研究成果。我們下面會簡單介紹一下原來NGS將不同DNA小塊組合的想法,然後簡單介紹一下這個本科生研究問題的複雜之處。

簡單的來說,這個從一小段組合邊會整組DNA排序的過程,就跟我們拼湊拼圖的原理是一樣的。我猜想大部份讀者都有組合拼圖的經驗,一份剛開始的拼圖,我們只可以看見每一小塊拼圖上面的圖畫。遊戲目的是將所有不同的小塊組合還原為原本的圖畫。當然,我們在玩拼圖時,我們有一幅完整正確的圖畫去加以比較,幫助我們將不同組件組合在一起。儘管如此,我們在拼圖時就算不看答案,也可以從每一小塊邊緣的形狀測試他們是否能合在一起。

DNA排序過程的原理也差不多。 DNA每一小段的兩端還是有一些特徵的。我們可以(編寫電腦程式,幫助我們)比較不同小段兩端的特徵,看看他們會否能拼合在一起。舉一個很簡單的例子,我現在給你3段數字組合,希望將這3段數字可以連接在一起成為一整段。他們分別是

X: 1-2-3-4-3,

Y: 3-1-2,

Z: 4-3-4-1。

有其中一個可能性,我們會將X跟Y連起來。因為我們看見在X的最後一個數字和Y的第一個數目字一樣,所以我們猜想他們應該有關。可是如果我們單憑一個數目字就將不同「DNA小段」連繫起來,而且很多時候我們就會得到一些錯的答案。第一個原因,在真實DNA排序的應用上,這些1234數字就代表着ACGT的DNA組合成份。所以這麼多的小段末端,我們會見到大約有¼是1,¼是2,¼是3,亦都有¼是4。如果只看每一段的末端數字就將不同線段黏合起來,得到的組合就會非常多,亦會組合了很多沒有意義的東西出來。最大的問題,是沒有人說「3就是黏合劑,看見一樣的就黏合起來」。因為我們得到的這些「DNA」小段並不一定都來源於唯一一條DNA。所以當我們將這對DNA隨機剪裁,根本不可能剛好看見一個元素重複出現在兩小段來。

所以比較合理的,是我們需要看每一小段DNA頭尾兩到三個元素去進行比較。如果這樣, X連到Y是不合理的。因為在X裏面我們見到他的一端是4-3,可是在Y裏面,有3的一端應該是3-1。所以更合理的,是將X連到Z而得出

1-2-3-4-3-4-1。

然後我們將Y連到哪裏呢?一個合理的猜想,是將它放到最前面,我們就可以用「1-2」這個特徵將它跟X聯合起來。如果我們在「DNA排序」裏面得到X,Y和Z,我們猜想最終的組合將會是

3-1-2-3-4-3-4-1。

上面提到BGI在2011年給我們本科生進行的數學研究項目。由於我們根本不知道這堆DNA小塊來自於多少個不同物種,困難程度比剛剛提到的組合問題更高。如果再用拼圖作為例子,這就好像是我將不同圖案的拼圖混合在一起再將所有原圖收起來,希望你將所有的拼圖還原一樣。

另外有一年BGI提供給我們同學另外一個非常有挑戰性的項目,裏面希望研究細胞突變跟發生癌症的關係。由於人類基因圖譜的完成,我們可以將病人的DNA排序跟這個基因圖譜的排序比較,看看不同基因位置會不會發生一點變化。從病人身上抽取的DNA會有兩個不同來源,一個是從血液裏面獲得的正常細胞,另外一個是癌細胞裏面組織的DNA。這裏有三個不同DNA排序。從病人身上抽取的DNA,有些位置可能跟基因圖譜有所不同,我們可以判別為自出世的時候從父母身上所獲得的基因突變特徵,叫做 Germinal Mutation。另外有些地方,可以見到從正常細胞的DNA排序跟基因圖譜的排序一樣,癌細胞內出現的DNA排序跟另外兩款不一樣,我們就可知道這個是病人由於癌細胞出現而導致的基因變化,這種突變叫做體細胞突變(Somatic Mutation)。聽起來好像很簡單,我們只需要將三條DNA排序比較就可以把所有體細胞突變的位置通通指出。可是,要記得這裏有30億個地方需要核對,而且在排序過程裏面都有可能發生計算錯誤。如何可以有一個快而且準確的方法解決這個問題就變得不太容易了。

又有一年,他們提供了我們同學一個有趣的項目。話說加拿大安大略省有兩個品種的水蚤(Daphnia pulex and pulicaria)。其中一款生長在Sudbury 附近Simon Lake的品種由於生長在長期受到金屬污染的環境,對重金屬鎘(Cadmium)已經有所適應。另外一個生長在Dorset的品種,由於並沒有接觸過這個污染物,並不能在這個受污染的環境生長。而這個研究項目的目的,就是比對這兩個品種生物的DNA排序,嘗試指出DNA上面那一個部份可以幫助物種對重金屬物質的適應。由於有海量的數據,同學就需要運用不同的數學方法去設計機械學習的程式,幫忙找出在DNA上面相應的位置。

同樣的技術在很多不同的生物科技問題上都可以見到。其中一個就是上文提到的基因測試去判別得到乳癌的機會。如果研究人員可以從DNA身上正確指出那一個部份可以幫助生物適應重金屬環境,研究員就可以運用同樣的技巧去指出DNA那一部份可能會令病人產生癌症。方法是找出好多患上乳癌的病人,然後將他們的基因作比對。如果有某一個基因突變的位置,頻繁出現在不同病人身上,這些地方就很可能跟這個基因疾病有所關連。研究員就可以從無數的基因位置裏面,挑選出少數個位置繼續進行研究。除了乳癌,其他基因相關的疾病,也可以運用同樣的數學或者計算技巧。