首頁>科技>

21世紀是資訊的世紀,21世紀是生物(生信)的世紀。前一個預言已經被大家認同了。但是後一個預言正在實現中。其實IT資訊和生物資訊有很多共同之處,本文我們就以碼農的視角來學習下DNA和生信的一些知識。

原始碼

和計算機程式一樣,人體也有原始碼,這就是所謂的人體基因組。人類基因組大約3個千兆位元組長,最大可壓縮到750兆位元組,可以網路下載人體基因組的原始碼。

DNA的語言是數字的,但不是二進位制的。當二進位制編碼具有0和1來處理,DNA則是有4位的:T,C,G和A。

數字位元組Byte通常是8位二進位制數字,而DNA的位元組(稱為"密碼子")是3個數字。每個數字位可以具有4個值而不是2個值,所以與具有256個二進位制位元組的二進位制位元組相比,DNA密碼子具有64個可能值。

DNA密碼子的典型例子是"GCC",是丙氨酸的編碼。有這些氨基酸再組成更大的結構"多肽"和"蛋白質",蛋白質,組成生物的基本物質之一,具有化學活性。

獨立位程式碼

動態連結庫(在Unix下是.so,在Windows上是.dll)在內部不能使用靜態地址,因為在不同情況下程式碼可能出現在記憶體中的不同位置。DNA也有類似的機制,那就是"轉碼":

人類基因組的近一半由轉碼子或跳躍DNA組成。上世紀40年代Barbara McClintock博士首先在印度玉米的顏色中發現了獨特的遺傳模式,這一點得到了廣泛認可,DNA跳躍是指這樣的想法,即某些DNA片段是不穩定的並且是"可的",即它們可以在染色體上和染色體之間移動。

條件編譯

現在被認為存在於人類基因組中的2w到3w個基因中,大多數細胞僅表達很小的一部分,比如肝細胞幾乎不需要構成神經元的DNA編碼。

但是由於幾乎所有細胞都攜帶基因組的完整副本("分佈"),因此需要一種系統來#ifdef清除不需要的東西。這就是它的工作原理。遺傳密碼中充滿了#if/#endif語句。

這就是為什麼"幹細胞"現在如此炙手可熱的原因。這些細胞具有分化為一切的能力。可以這麼說,程式碼尚未被#ifdeffed出來。

更準確地說,幹細胞並沒有開啟所有的東西,它們不僅僅是肝細胞和神經元。可以將細胞比作是從幹細胞開始狀態機。在細胞的整個生命週期中,它可能會多次克隆('fork()'),這是專門技術。每個物種都可以視為在樹中選擇了一個分支。

每個細胞都可以做出(或被誘使做出)關於其未來的決策,從而使其更加專業化。這些決定相對於使用轉錄因子進行克隆和透過修改DNA在空間上的儲存方式("空間效應")而言是持久的。

肝細胞雖然攜帶基因,但通常無法充當面板細胞。有跡象表明,有可能將細胞"向上"繁殖到層次結構中,從而使其具有多能性。

遺傳學特徵和烙印:執行時二進位制修補

儘管有機體DNA的實際相關變化很少發生在一代人之內,但透過啟用或失活基因組的某些部分,可以進行大量修補,而無需更改實際程式碼。

可以將DNA與Linux核心進行類比,Linux在啟動時會發現其執行在哪個CPU上,並且實際上會禁用其二進位制程式碼的某些部分,以防萬一(例如)在單個CPU系統上執行。這超出了諸如if(numcpus>1)之類的東西,它實際上是鎖定退出。至關重要的是,這種中斷髮生在記憶體中,而不是在基於磁碟的映像上。

同樣,隨著胚胎在母親子宮內發育,其DNA會被大量編輯以降低其生長速度和胎盤大小。這樣,父親("強壯的大孩子")和母親("倖存的懷孕")的利益競爭就達到了平衡。這種"烙印"只能在母親內部發生,因為父親的基因組對母親的大小一無所知。

最近,也越來越清楚的是,父母的代謝狀況會影響其孫輩長壽,癌症和糖尿病得病機率。這也是有道理的,因為在食物匱乏的氣候中生存可能需要與食物充足的情況不同的代謝策略。

表觀遺傳學和印跡的機制是"甲基化",它使甲基附著在DNA上以"轉錄"它們的啟用狀態,還有組蛋白修飾,它可以使DNA捲曲,因此不被啟用。

這些DNA編輯中的有些是可遺傳的,並傳遞給兒童,其他則可能僅影響一隻動物。

這個領域仍在迅速發展,可能是DNA比最初想象的要動態得多。

死程式碼,膨脹,註釋——垃圾DNA

基因組中充斥著舊的基因副本,而實驗則在最近的某個地方發生了錯誤,例如最近一百萬年。該程式碼還存在,但是無效的。這些被稱為"偽基因"。

此外,人類基因組中的DNA中有97%被註釋掉了。DNA是線性的,從頭到尾讀取。不應解碼的部分被標記得非常清晰,就像C註釋一樣。直接使用的3%形成所謂的"外顯子"。介於"中間"的註釋稱為"內含子"。

但是由於剪裁,需要一些膠水將註釋之前的程式碼連線到之後的程式碼,這使註釋更像html註釋,但更長:" <!-"表示開始,"->"表示結束。

因此,帶有外顯子和內含子的實際DNA片段可能看起來像這樣:

註釋的開頭很清楚,然後是許多非編碼DNA。在註釋結尾附近的某個地方,有一個"分支站點",表示該註釋將很快結束。然後是更多註釋,然後是實際終止符。

註釋的實際剪下是在將DNA轉錄為RNA之後進行的,方法是迴圈註釋並將實際程式碼片段緊密結合在一起。然後,在註釋結尾附近的"分支位置"處剪下RNA,此後,"供體"(註釋開始)和"受體"(註釋結束)相互連線。

當比較不同的物種時,目前知道一些內含子顯示的編碼變化少於鄰近的外顯子。這表明註釋也起到了重要的作用。

大量的非編碼DNA有很多可能的解釋,最吸引人的(對編碼者而言)與"摺疊傾向"有關。DNA需要以高度捲曲的形式儲存,但是並非所有的DNA程式碼都可以很好地做到這一點。

這很像RLL或MFM編碼。在硬碟上,透過極性轉換或缺少極性來對位進行編碼。編碼會將0編碼為"無過渡",將1編碼為"過渡"。

編碼000000很容易,只需將磁相保持幾微米不變即可。但是,在解碼時,不確定性會增加。讀了多少微米?這對應於6個零還是5?為避免此問題,需要請對資料進行處理,以使這些長時間的無過渡不會發生。

如果在磁碟上看到"無過渡,無過渡,過渡,過渡",則可以確定它對應於" 0011",讀取過程非常不精確,以至於它可能對應於" 00011"或" 00111'。因此,需要插入墊片以防止過渡太少。這在磁性介質上稱為"行程限制"。

需要注意的是,有時需要插入轉換以確保可以可靠地儲存資料。內含子可以透過確保正確編碼結果程式碼來做很多事情。

fork()和fork炸彈——"腫瘤"

與Unix一樣,細胞不是"產生"的,而是fork的。所有細胞都從卵子開始,此卵子要fork很多次。像程式程序一樣,fork()的兩半在開始時(大部分)是相同的,但是從那時起它們可能會決定做不同的事情。

和Unix一樣,當細胞不斷fork時會出現很大的問題。會導致資源迅速耗盡,有時甚至導致死亡。這就是癌症。細胞中有很大量的 "ulimits"和"watchdogs",以防止發生此類情況。例如,分割的數量受到端粒縮短的限制。

除非滿足非常嚴格的條件("預設安全"配置),否則細胞無法克隆。僅當這些防護措施失敗時,癌細胞才會生長。和計算機安全性一樣,很難在安全性("沒有細胞可以分裂")和可用性之間取得平衡。

將其與著名的暫停問題進行比較,該問題首先由計算機科學的創始人艾倫·圖靈(Alan Turing)提出。也許無法預測一個程式是否會完成,就像無法建立一個不會患癌症的功能基因組一樣?

映象——故障轉移

每個DNA螺旋本身都是多餘的,可以將基因組看作是一個扭曲的梯子,其中每個輻條都包含兩個鹼基,因此稱為"鹼基對"。如果缺少這些基準之一,則可以從另一側的基準中得出。T總是與A結合,C總是與G結合。因此,可以說基因組映象在螺旋內。可以說是"RAID-1"。

此外,每個染色體都有兩個副本:每個父母都有一個副本,但Y染色體例外,它僅存在於男性中。實際細節很複雜,但大多數基因因此出現兩次。萬一一個損壞或突變失敗,另一個獨立副本仍然存在。這就是通常所說的"故障轉移"。

混亂的API,依賴地獄

當蛋白質在細胞中相互作用時,彼此依賴。許多其他蛋白質相互作用的蛋白質無法進化,或者至少只能以非常緩慢的速度。

這是由於內部依賴性很大,抑制了蛋白質"合約"的變化。還要注意的是,確實發生了進化,但是進化非常緩慢,因為依賴的兩個部分都需要以相容的方式同時進化。

此後不久,他意識到生物病毒這正是數百萬年來一直在做的事情。他們非常擅長於此。這些病毒中有許多已成為我們基因組的固定部分,並與我們所有人息息相關。為此,必須對試圖檢測外來程式碼並阻止其進入DNA的病毒掃描程式隱藏。

dogma:.c->.o->a.out/.exe

當科學家們仍在尋找遺傳學的基礎知識時,面臨著許多不同的化學物質,但相關性還不清楚。當事情變得清晰起來時,它被譽為偉大的勝利,並被稱為"dogma"。

總體上就是DNA用於製造RNA,而RNA用於製造蛋白質,這就像說.c檔案來自一個.o目標檔案,該檔案可以編譯成可執行檔案(a.out/exe)。這是資訊流動的唯一順序。

就像任何具有十億年曆史的編碼專案一樣,大量駭客活動正在進行中,有時資訊會以其他方式流動。有時RNA會修補DNA,而其他時候,DNA會被較早產生的蛋白質修飾。

但總體而言,依賴性很明顯,因此dogma仍然很重要。

二進位制修補——基因療法

有些公司可以向傳送帶有DNA字元的ASCII檔案,它們將為合成相應的"輸出"。還可以將DNA拼接到發育中的動植物中。

正如任何程式設計師所能證明的那樣,"修補正在執行的可執行檔案"要困難得多。就像基因組一樣。要更改正在執行的副本("人類"),需要編輯要修補的基因的每個相關副本。

多年以來,醫學界一直在嘗試用SCID或"嚴重綜合免疫缺陷"給人打補丁,這是一種非常討厭的疾病,實際上會使免疫系統失去作用-導致重病患者。很長一段時間以來,人們已經很清楚需要修復DNA中的哪些字母才能治癒這些人。

使用將新的DNA插入活生物體的病毒,進行了許多嘗試來修補奔跑的人,但這被證明非常困難。

但是,最近發現了正確的病毒,該病毒能夠破壞基因組的保護並修復損壞的字元,從而導致看上去健康的人。

錯誤迴歸

修復計算機程式中的錯誤時,通常會在此過程中引入新的錯誤。基因組裡也充斥著類似的事情。許多非裔美國人對瘧疾具有免疫力,但卻患有鐮狀細胞性貧血:>在世界上寄生蟲傳播的疾病瘧疾盛行的熱帶地區,只有一個特定基因突變的人具有生存優勢。繼承突變的一個副本可帶來好處,而繼承兩個副本則是一個悲劇。出生時有兩個基因突變的孩子患有鐮狀細胞性貧血,這是一種影響紅細胞的痛苦疾病。

像計算機儲存一樣,DNA(及其中間的"RNA")可能會損壞。為了防止常見的"單位元錯誤",從單個DNA字母到蛋白質的編碼都應進行簡併。有4個RNA字元,U,C,G和A-換句話說,"位元組"是2位長。三個字元對應一個氨基酸。

可以想象6位可以對映到64個氨基酸,但是實際中被編碼的只有20個。例如,UCU,UCC,UCA和UCG都編碼為"Serine",而只有UGG對映為"色氨酸"。事實證明,編碼中某些可能的"typos"(UCU-> UCC)導致表達相同的氨基酸。

Holy 程式碼:——/*勿動!!!*/

有些程式碼是神聖的。我們可能不記得是誰寫的,或者為什麼,我們只知道它有效。認為這件事的人可能已經離開了公司。該程式碼不可修改。

DNA知道"分子鐘"的概念。基因組的某些部分正在積極變化,而某些部分則是神聖不可侵犯的。後者的一個很好的例子是組蛋白基因H3和H4。

這些基因是基因組實際儲存的基礎,因此至關重要。該程式碼中的任何錯誤都會迅速導致機體失靈。

因此,可以預期該程式碼不會被修改,事實證明是這樣。H3和H4基因在人類中的有效突變率為零。但這遠遠不止於此。可以將幾乎相同的程式碼與任何東西共享,從雞到草或黴菌。

基於化石證據,每千億年間人類和齧齒類蛋白質編碼基因的位點取代率分別為8000萬年:

現在看來,基因組可以透過兩種方式確保程式碼不會突變。上面描述了第一種方法:使用高度簡併的氨基酸,並確保確實發生的錯別字產生相同的輸出。

此外,基因可以在細胞繁殖過程中更早或更晚地複製,從而導致或多或少的有利複製條件。此類條件更多。

似乎H3和H4編寫得很仔細,因為它們確實有很多"同義詞更改",透過上述巧妙的技巧,它們不會導致輸出更改。

幀錯誤——起始位和終止位

...0 0000 0001 0000 0010 0000 0011 0...

這清楚地描述了8位值1、2和3。新增的空格使一個位元組的開始和停止位置清晰可見。許多序列裝置使用停止位和開始位對開始讀取的位置進行編碼。如果稍微改變一下這個順序:

...00 0000 0010 000 00100 000 00110 ...

就會讀成2、4、6!為了防止這種情況在DNA中發生,有精心設計的訊號機制會指導細胞從哪裡開始讀取。有趣的是,有些基因組片段可以從多個起點讀取,並且可以透過任何一種方式產生有用(但不同)的結果。

可以讀取DNA鏈的每種方式稱為開放閱讀框,通常每種方式有6、3種。

大規模多處理——每個單元都是一個宇宙

在這方面,DNA不像計算機程式語言,很有不同。但是有一些驚人的類比。可以將每個細胞視為執行自己核心的CPU。每個細胞都有整個核心的副本,但是選擇僅啟用相關部分。可以說它載入了哪些模組或驅動程式。

如果細胞需要做某事(稱為"功能"),它將指出基因組的正確部分並將其轉錄為RNA。然後將RNA翻譯成一系列氨基酸,這些氨基酸共同構成了DNA編碼的蛋白質。

該蛋白標有目標地址。這是一個由幾個氨基酸組成的標記,可以告訴細胞的其餘部分該蛋白需要去向何處。有一些機器可以按照這些指令操作,並傳遞可能在細胞外部的蛋白質。

然後剝離交貨說明,然後執行幾個後處理步驟,可能會啟用蛋白質。這很好,因為可能不想將活性蛋白質轉運透過不應起作用的地方。

自託管和引導

如果要銷燬這個星球上所有現有的C編譯器,而只將程式碼留給一個,那麼將陷入極大的麻煩。將C程式碼包含在C編譯器中,但是需要C編譯器對其進行編譯。

實際上,這不是透過不使用C(duh)而是使用已經可用的語言編寫第一個C編譯器來解決的。

基因組也是如此。要建立標本的新"二進位制"檔案,需要一個活體副本。基因組需要精巧的工具鏈才能提供生物。該工具鏈就是"你父母"。

Makefile

生物通常以單個細胞開始,如前所述,該細胞包含基因組的兩個完整副本。可以這麼說,大的tarfile和所有檔案都已提取出來,可以開始使用了。

輸入同源異型基因。每個細胞必須複製並分配一個用途。同源異型框基因透過放置一個"從上到下"的依賴關係開始,該依賴關係顯示為"從頭開始"。為了實現這一點,將建立一個化學梯度,透過該梯度,細胞可以感知它們的位置,並決定是否需要做一些對構建頭部或原始脊索有用的事情。

同源異型基因直到1983年才被發現,現在是一個非常令人興奮的研究領域。有趣的是,像Makefile一樣,"HOX"基因僅會觸發其他基因中的事務,而不會實質性地構建事務。

所以可以說源異型基因的"語法"是非常"神聖"的。如果將滑鼠HOX基因的"腿選擇器"部分複製貼上到果蠅Homeobox中會發生什麼呢:

"實際上,當將小鼠Hox-B6基因插入果蠅中時,它可以代替觸角蟲併產生代替觸角的腿"

果蠅和人類基因組不是在數百萬年前就分支,而是在數億年前就分支了。然後,可以複製Makefile的貼上部分(遺傳語言中的"選擇器"),它仍然會有效。請注意,果蠅中的"建腿"例程與滑鼠中的例程當然有根本不同,但是"選擇器"正確觸發了正確的指令。

外掛——質粒

所有活生物體都有DNA,有時組織成多個染色體,有時只有一個,一個的情況下通常是環狀的。比如大多數細菌就是如此。在這個主要的主要基因組旁邊,這種細菌經常還會攜帶"質粒":具有特定功能的微小DNA圈。

這樣的質粒在種間是可移植的,並且透過多種機制它們確實可以水平轉移。透過這種方式,即使是不同的細菌也可以彼此"學習"抗生素抗性。

與程式設計世界相比,質粒不是自願的,就像LD_PRELOADing .so或其他平臺上的等效物一樣。實際上,經常出於研究目的注射質粒。它們可以輕鬆注入各種細菌中,並立即起作用。

質粒獨立於主要染色體複製自身,因此是細菌的永久固定裝置。為此,質粒具有一個宏偉的"複製起點"基因,當細胞想要分裂時就會觸發該基因。

13
  • 整治雙十一購物亂象,國家再次出手!該跟這些套路說再見了
  • 日本機器人巨頭·發那科:如何用機器人組裝機器人?