https://m.toutiao.com/is/JnNmdJN/
21世紀(jì)是信息的世紀(jì),21世紀(jì)是生物(生信)的世紀(jì)。前一個預(yù)言已經(jīng)被大家認(rèn)同了。但是后一個預(yù)言正在實現(xiàn)中。其實IT信息和生物信息有很多共同之處,本文我們就以碼農(nóng)的視角來學(xué)習(xí)下DNA和生信的一些知識。
和計算機程序一樣,人體也有源代碼,人的源代碼就是基因,即DNA,人的所有基因構(gòu)成了人體基因組。人體基因組大約3KMB長,最大可壓縮到750MB字節(jié),人體基因組的源碼可以從相關(guān)網(wǎng)站上下載。
DNA的源碼不像C語言等編程語言,而是更像以'核苷酸'為虛擬機的字節(jié)碼編譯代碼。字節(jié)編譯是源于何處,可能是“女媧”,“上帝”神授,亦或其他,不得而知。
DNA源碼本質(zhì)上是數(shù)字的,但不像是計算機的二進制的。二進制編碼由0和1來構(gòu)成,DNA則是有4位的:T,C,G和A。
數(shù)字的字節(jié)Byte通常是8位二進制數(shù)字,而DNA的字節(jié)(稱為'密碼子')是3個字符。每個數(shù)字位可以具有4個值,與具有256(2^8)個二進制字節(jié)相比,DNA密碼子有64個可能構(gòu)成。
DNA密碼子的一個典型例子'GCC',表示丙氨酸。三位DNA數(shù)字組成氨基酸,再由這些氨基酸再組成更大的結(jié)構(gòu)'多肽'或'蛋白質(zhì)'。而蛋白質(zhì)是組成生物的基本物質(zhì)之一,具有化學(xué)活性。
在計算機世界中動態(tài)鏈接庫(在Unix下是.so,在Windows上是.dll)內(nèi)部不能使用靜態(tài)物理內(nèi)存地址,因為在不同情況下代碼可能出現(xiàn)在內(nèi)存的不同位置。DNA也有類似的機制,即'轉(zhuǎn)碼':
人類基因組有近一半是由轉(zhuǎn)碼子和跳躍DNA組成。在上世紀(jì)40年代Barbara.McClintock博士首先在印度玉米的顏色中發(fā)現(xiàn)了獨特的遺傳模式,目前該模式得到了廣泛認(rèn)可。DNA跳躍即某些DNA片段是不穩(wěn)定的,可以'換位'的,他們可以在染色體上和染色體之間移動。
現(xiàn)在共識是在于人類基因組中共有2w~3w個基因,其中大多數(shù)細(xì)胞僅使用了基因表達的很小一部分,比如肝細(xì)胞就不需要構(gòu)成神經(jīng)元的DNA編碼。
但是幾乎所有的細(xì)胞都會攜帶基因組的完整副本('分布'),因此需要一種系統(tǒng)來#ifdef清除不需要的東西。這就是基因表達的工作原理,遺傳密碼中充滿大量的#if/#endif處理語句。
這就是為什么'干細(xì)胞'研究炙手可熱的原因。這些細(xì)胞具備表達分化為一切功能細(xì)胞的能力。只不過是其中的大部分代碼還沒有被#ifdeffed出來而已。
準(zhǔn)確地說,干細(xì)胞并沒有一次表達分化成各種各樣的功能態(tài),肝細(xì)胞和神經(jīng)元只不過其中之二。將細(xì)胞比作是從干細(xì)胞開始的狀態(tài)機,在細(xì)胞的整個生命周期中,它可能會被多次克隆('fork()'),每個物種都可以視為在基因樹中選擇了一個分支。
每個細(xì)胞都可以做出(或被誘使做出)關(guān)于其未來功能的分化的決策,從而使其分化為更加專業(yè)的功能。該決策相對于使用轉(zhuǎn)錄因子進行克隆和通過修改DNA在空間上的存儲方式('空間效應(yīng)')而言是恒定的(天或者說是基因注定的)。
肝細(xì)胞雖然攜帶了皮膚細(xì)胞的基因,但通常不能分化成皮膚細(xì)胞。目前有跡象表明,有可能將細(xì)胞'向上'繁殖到層次結(jié)構(gòu)中,從而使其具多能性。
盡管有機體DNA的實際相關(guān)變化不會發(fā)生在一代之內(nèi),但通過激活或失活基因組的有些部分,可以對其進行大量修補,而無需去更改實際基因代碼。
將DNA與Linux內(nèi)核進行類比,Linux在啟動時會發(fā)現(xiàn)其運行在哪個CPU上,而且會禁用其二進制代碼的某些部分,以防萬一在單個CPU系統(tǒng)上運行。這超出了諸如if(numcpus>1)之類的限制,實際上是鎖定退出。而且,這種中斷是發(fā)生在內(nèi)存中的,而不是在基于磁盤的鏡像上。
同樣,隨著胚胎在母體子宮內(nèi)發(fā)育,其DNA會被大量編輯以降低其生長速度和胎盤大小。這樣,父體('強壯的大孩子')和母體('幸存的懷孕')的利益競爭就達到了平衡。這種'烙印'只在母體內(nèi)部發(fā)生,而父體的基因組對母體的大小一無所知。
最近,研究表明父母的代謝狀況會影響其孫輩的長壽,癌癥和糖尿病得病幾率。這在進化論中可以解釋為由于食物匱乏的環(huán)境中生存可能需要與食物充足的環(huán)境下有不同的代謝策略。
表觀遺傳學(xué)和印跡的機制表現(xiàn)為'甲基化',它使甲基附著在DNA上以'轉(zhuǎn)錄'其激活狀態(tài),還有組蛋白修飾,它可以使DNA卷曲,從而不被激活。
這些DNA編輯中的某些是可遺傳的,并傳給子代,其他則可能僅影響其本體。
這個領(lǐng)域研究進展很快,可能DNA比最初想象的要動態(tài)得多。
基因組中充斥著大量舊的基因副本,而這些可能是進化過程的某次實驗中發(fā)生了錯誤,比如,最近一百萬年里的進化。代碼都還存在,但是已經(jīng)無效,他們被稱為'偽基因'。
此外,人類基因組中的DNA中有97%都被注釋掉了。DNA是線性的,從頭到尾讀取,不被解碼的部分標(biāo)記得很清楚,和編程代碼中的注釋一樣。直接被表達的3%形成所謂的'外顯子'。介于'中間'的注釋稱為'內(nèi)含子'。
基因的注釋本身也引人入勝。像C注釋一樣,它們會有一個開始標(biāo)記(如/*)和一個停止標(biāo)記(如*/),但是支持更多的形式。DNA就像磁帶一樣,注釋只能從物理上刪除,基因注釋的開頭幾乎總是由字母'GT'表示,可以將其對應(yīng)為/*,結(jié)尾由'AG'表示,就像是*/。
由于剪裁,需要一些膠水將注釋之前的代碼連接到后面的代碼,這樣注釋更像是html注釋,但要長得多:' <!-'表示開始,'->'表示結(jié)束。
因此,帶有外顯子和內(nèi)含子實際DNA片段看起來可能如下:
注釋的開頭很明顯,其后是許多非編碼的DNA。在注釋結(jié)尾之前的某個地方,有一個'分支點',用來表示該注釋很快會結(jié)束。然后是更多注釋,最后是注釋的結(jié)尾。
注釋的實際剪切是在將DNA轉(zhuǎn)錄為RNA后進行的,方法是遍歷注釋并將實際代碼片段連接在一起。然后,在注釋結(jié)尾附近的'分支位置'處剪切RNA,之后,將'供體'(注釋開始)和'受體'(注釋結(jié)束)連接。
當(dāng)比較不同的物種時,目前知道一些內(nèi)含子顯示的編碼變化會顯著地少于鄰近的外顯子。這表明注釋也在起著重要作用。
大量的非編碼DNA有很多可能的解釋表達,最吸引人的部分與'折疊傾向'有關(guān)。DNA需要以高度卷曲的形式存儲,但是并非所有的DNA代碼都可以很好地做得到。
這就像是RLL或MFM編碼。在硬盤上,通過極性轉(zhuǎn)換或缺少極性來對位進行編碼。編碼會將0編碼為'無過渡',將1編碼為'過渡'。編碼000000很容易,只需將磁相保持幾微米不變即可。但是,在解碼時,不確定性會大大增加。讀取多少微米,對應(yīng)于6個零還是5個+1個?
為避免這種問題,需要對數(shù)據(jù)進行處理,讓這些長時間的無過渡不會實際發(fā)生。
如果在磁盤上看到'無過渡,無過渡,過渡,過渡',則可以確定它對應(yīng)于' 0011'。讀取過程則非常不確定,它可能對應(yīng)于' 00011'或' 00111'。因此,需要對其插入墊片以防止過渡太少。這在磁性介質(zhì)上稱為'行程限制'。
需要注意的是,有時需要插入轉(zhuǎn)換以確保可以可靠地存儲數(shù)據(jù)。內(nèi)含子可以通過確保正確編碼結(jié)果代碼來做很多事情。
與Unix一樣,細(xì)胞不是憑空產(chǎn)生的,而是fork來的。所有細(xì)胞都從卵子開始,卵子要被fork很多次。就像程序進程一樣,fork()的兩部分在開始時是相同的,但是從一開始也就注定了它們可能會被表達為不同的功能基因。
和Unix一樣,當(dāng)細(xì)胞不斷fork時會出現(xiàn)問題,導(dǎo)致資源迅速耗盡,甚至?xí)?dǎo)致死亡,這就是癌癥。細(xì)胞中有大量的 'ulimits'和'watchdogs'機制以防止發(fā)生這種情況。例如,分裂的數(shù)量受到端??s短的限制。
除非滿足非常嚴(yán)格的條件('默認(rèn)安全'配置),否則細(xì)胞是無法克隆的。僅當(dāng)這些防護措施失敗時,才會長成癌細(xì)胞。和信息安全性一樣,很難在安全性('沒有細(xì)胞可以分裂')和可用性之間取得平衡。將其與著名的“暫停問題”進行比較,問題首先由計算機科學(xué)的創(chuàng)始人艾倫·圖靈(Alan Turing)提出:我們無法預(yù)測一個程序是否會完成,就像無法創(chuàng)建一個不會患癌癥的功能基因組一樣。
每個DNA螺旋本身都是多余的,可以將基因組看作是一個扭曲的梯子,其中每個梯條都包含兩個堿基,因此稱為'堿基對'。如果少了某個堿基,則可以通過另一側(cè)的堿基校對出來:T總是與A配對,而C總連著G。因此,可以說基因組鏡像在螺旋內(nèi)具'RAID-1'。
此外,每個染色體都有兩個副本:每個父母都有一個副本,但Y染色體例外,其僅存在于男性中。實際中的細(xì)節(jié)很復(fù)雜,但大多數(shù)基因都有兩份,萬一一個損壞或突變失敗,另一個獨立副本仍然存在,對比計算機,稱之為'故障轉(zhuǎn)移'。
當(dāng)?shù)鞍踪|(zhì)在細(xì)胞中相互作用時,彼此依賴。許多于其他蛋白質(zhì)相互作用的蛋白質(zhì)無法進化,或者至少只能以非常緩慢的速度進化。
由于內(nèi)部依賴性很大,抑制了蛋白質(zhì)'合約'的變化。還要注意的是,雖然確實發(fā)生了進化,但是進化非常緩慢,因為依賴的兩個部分都需要互相兼容,然后才能共進化。
最近有人在討論中提出,砍掉基因組并對其進行折衷,插入代碼將其自身復(fù)制到其他基因組,這是非??岬氖虑椋褂盟拗鳛檩d體。
馬上,他就意識到生物病毒數(shù)百萬年來一直在做這樣的事情,他們擅長于此。這些病毒中有許多已成為進化為我們基因組的固定部分,與我們所有人都息息相關(guān)。
當(dāng)科學(xué)家們不斷尋找遺傳學(xué)的基礎(chǔ)知識時,會面臨許多不同的化學(xué)物質(zhì),但相關(guān)性還沒有弄清楚。但有一個中心法則,已經(jīng)很清晰的呈現(xiàn)了出來。
總體上來說就是DNA用于制造RNA,而RNA用于制造蛋白質(zhì),類比計算機就像是.c文件總會編譯成一個.o目標(biāo)文件,該文件最終會被編譯成可執(zhí)行文件(a.out/exe),這是信息流動的唯一順序。
基因也是如此,就像是一個具有十億年歷史的編碼項目一樣,有大量黑客活動正在進行中,有時信息會以其他方式流動。有時RNA會修補DNA,而其他時候,DNA會被較早產(chǎn)生的蛋白質(zhì)修飾。
但總體而言,依賴性非常明顯,中心法則仍然其決定性作用。
有些公司可以發(fā)送帶有DNA字符的ASCII文件,并將為合成相應(yīng)的'輸出'。還能將DNA拼接到發(fā)育中的動植物中。
正如任何程序員知道的'修補正在運行的可執(zhí)行文件'要困難得多?;蚪M也一樣,要更修正在運行的副本('人類'),需要編輯要修補基因的每個相關(guān)副本。
多年以來,醫(yī)學(xué)界一直在嘗試用SCID或'嚴(yán)重綜合免疫缺陷'給人打補丁,它是一種非常討厭的疾病,實際上會使免疫系統(tǒng)失去作用,導(dǎo)致重病患者。很長一段時間以來,人們已經(jīng)很清楚需要修復(fù)DNA中的哪些字符才能治療這總病。
可以嘗試使用病毒將新的DNA插入活生物體的,這方面也有大量的研究和嘗試,但實踐證明這非常困難。最近研究者發(fā)現(xiàn)了合適的病毒,該病毒能夠破壞基因組的保護并修復(fù)損壞的基因。
修復(fù)計算機程序中的錯誤時,通常也會引入新的錯誤?;蚪M里也有類似的情況。許多非裔美國人對瘧疾具有免疫力,但卻患有鐮狀細(xì)胞性貧血。在世界上寄生蟲傳播的疾病瘧疾盛行的熱帶地區(qū),只有一個特定基因突變的人才具有生存優(yōu)勢。繼承突變的一個副本可帶來好處,而如果繼承兩個副本則是大有害處。出生時有兩個基因突變的孩子會患有鐮狀細(xì)胞性貧血,這是一種影響紅細(xì)胞的痛苦疾病。
像計算機存儲一樣,DNA(及其中間的'RNA')可能會損壞。為了防止常見的'Byte錯誤',從單個DNA字母到蛋白質(zhì)的編碼都要進行簡并。有4個RNA字符,U,C,G和A。換句話說,字節(jié)是2位長。三個字符對應(yīng)一個氨基酸。
總共可以映射到64個氨基酸,但是實際中被編碼的只有20個。比如,UCU,UCC,UCA和UCG都編碼為'Serine',而只有UGG才會被映射為'色氨酸'。事實證明,編碼中某些可能的'typos'(UCU-> UCC)都表達相同的氨基酸。
有些代碼是神圣的。我們可能不記得是誰寫的,或者為什么要這樣寫,只知道它很有效。清楚這代碼的人可能已經(jīng)離開了公司,該代碼不可修改!
DNA知道分子鐘的概念。基因組的某些部分會積極變化,而某些部分則是神圣不變的。比如組蛋白基因H3和H4。這些基因是基因組實際存儲的基礎(chǔ),因此至關(guān)重要。他們中的任何錯誤都會很快導(dǎo)致機體失靈。
事實證明,H3和H4基因在人類中的有效突變率為零。而且這些基因片段在所有的物種基因組中都是存在,從雞到草或霉菌都不例外。
基于化石證據(jù),每千億年間人類和嚙齒類蛋白質(zhì)編碼基因的位點取代率分別為8000萬年:
現(xiàn)在看來,基因組可以通過兩種方式確保代碼不會突變。上面描述了第一種方法:使用高度簡并的氨基酸,并確保確實發(fā)生的錯別字產(chǎn)生相同的輸出。
此外,基因可以在細(xì)胞繁殖過程中更早或更晚地被復(fù)制,從而導(dǎo)致或多或少的有利復(fù)制條件,這種條件更多。H3和H4編寫得很仔細(xì),它們實際上確實有很多同義詞更改,但通過上述巧妙的技巧,它們的表達結(jié)果不會發(fā)生變化。
...0 0000 0001 0000 0010 0000 0011 0...
上面很清楚地描述了8位值1、2和3。添加的空格使一個字節(jié)的開始和停止位置清晰可見。許多串行設(shè)備使用停止位和開始位對開始讀取的位置進行編碼。如果稍微改變一下這個順序:
...00 0000 0010 000 00100 000 00110 ...
就會讀成2、4、6!為了防止這種情況在DNA序列中發(fā)生,精心設(shè)計的信號機制會指導(dǎo)細(xì)胞從哪里開始讀取。有趣的是,有些基因組片段可以從多個起點讀取,并且可以通過任何一種方式都能產(chǎn)生有用的結(jié)果。
可以讀取DNA鏈的每種方式稱為開放閱讀框,通常每種方式有6、3種。
在這方面,DNA不像計算機編程語言很有不同。但是有一些驚人的類比??梢詫⒚總€細(xì)胞視為運行自己內(nèi)核的CPU。每個細(xì)胞都有整個內(nèi)核的副本,但是選擇僅激活相關(guān)部分??梢哉f它加載了哪些模塊或驅(qū)動程序。
如果細(xì)胞需要做某事(稱為'功能'),它會指出基因組的正確部分并將其轉(zhuǎn)錄為RNA。然后將RNA翻譯成一系列氨基酸,這些氨基酸共同構(gòu)成了DNA編碼的蛋白質(zhì)。
蛋白標(biāo)有目標(biāo)地址。這是一個由幾個氨基酸組成的標(biāo)記,可以告訴細(xì)胞的其余部分該蛋白需要流向何處。有一些器官可以按照這些指令操作,并傳遞可能在細(xì)胞外部的蛋白質(zhì)。
然后剝離交貨說明,執(zhí)行幾個后處理步驟,可能會激活蛋白質(zhì)。這樣就保證了不會將活性蛋白質(zhì)轉(zhuǎn)運到不應(yīng)起作用的地方。
如果要銷毀這個星球上所有現(xiàn)有的C編譯器,而只留下一份源代碼,那么可能會有很大的麻煩。雖然我們有C編譯器的源碼,但是我們需要C編譯器來對其進行編譯。(蛋雞問題?)這就是編程語言的自舉性。
實際上,第一個C編譯器是通過使用其他可用的語言編寫來解決語言和編譯器的蛋雞問題。
基因組也是如此。要創(chuàng)建標(biāo)本的新'二進制'文件,需要一個活體副本?;蚪M需要精巧的工具鏈才能提供生物。這個工具鏈就是'你父母'。
將DNA轉(zhuǎn)譯為蛋白質(zhì)的過程中也需要一個中間代碼RNA,來實現(xiàn)基因編譯器的引導(dǎo)。
生物通常以單個細(xì)胞開始,如前所述,細(xì)胞包含基因組的兩個完整副本??梢赃@么說,大的tarfile和所有文件都已被提取出來,可以開始使用。
輸入同源異型基因(HOX)。每個細(xì)胞必須復(fù)制并分配一個用途。同源異型框基因通過放置一個'從上到下'的依賴關(guān)系開始,該依賴關(guān)系顯示為'從頭開始'。為了實現(xiàn)這一點,將創(chuàng)建一個化學(xué)梯度,通過該梯度,細(xì)胞可以感知它們的位置,并決定是否需要做一些對構(gòu)建頭部或原始脊索有用的事情。
同源異型(HOX)基因在1983年被發(fā)現(xiàn),現(xiàn)在是一個非常令人興奮的研究領(lǐng)域。有趣的是,像Makefile一樣,'HOX'基因僅會觸發(fā)其他基因中的事務(wù),而不會實質(zhì)性地構(gòu)建事務(wù)。
所以可以說源異型基因的'語法'是非常'神圣'的。如果將小鼠HOX基因的'腿選擇器'部分復(fù)制粘貼到果蠅Homeobox中會發(fā)生什么呢:
'實際上,當(dāng)將小鼠Hox-B6基因插入果蠅中時,它可以代替觸角蟲并產(chǎn)生代替觸角的腿'
果蠅和人類基因組不是在數(shù)百萬年前就分支,而是在數(shù)億年前就分支了。然后,復(fù)制Makefile的粘貼部分(遺傳語言中的'選擇器'),仍然有效。請注意,果蠅中的'建腿'例程與小鼠中的例程有根本不同,但是'選擇器'還是觸發(fā)了正確的指令。
所有活生物體都有DNA,有的會組織成多個染色體,有的只有一個。一個染色體的情況下通常是環(huán)狀的,比如大多數(shù)細(xì)菌。在該主要基因組旁邊,細(xì)菌經(jīng)常還會攜帶'質(zhì)粒'——具有特定功能的微小DNA圈。
這樣的質(zhì)粒在種間是可移植的,并且通過多種機制它們可以做到水平轉(zhuǎn)移。通過這種方式,即使是不同的細(xì)菌也可以彼此'學(xué)習(xí)'抗生素抗性。
與編程世界相比,質(zhì)粒是非自愿的,就像LD_PRELOADing .so或其他平臺上的等效物一樣。實際上,經(jīng)常出于研究目的注射質(zhì)粒,它們可以被輕松注入到各種細(xì)菌中,并會立即起作用。
質(zhì)粒獨立于主要染色體復(fù)制自身,是細(xì)菌的永久固定裝置。為此,質(zhì)粒具有一個宏偉的'復(fù)制起點'基因,當(dāng)細(xì)胞想要分裂時就會觸發(fā)該基因。