更新:2021年1月8日:这篇文章已经过科学地和无效的链接方面的修订和更新。 TomásSimões(@ putadagravidade / tomasprsimoes @ gmail.com)进行的修订。如果我输入有误,请随时与我联系。
2017年8月25日:此页面导致了两个小时的演讲,名为DNA:《生命的代码》,在SHA 2017上发布。包括幻灯片和视频以及摘要博客。如果您喜欢此页面,则会喜欢该演示文稿。
这是计算机程序员对DNA的一些漫谈。我不是分子遗传学家(更新:开始撰写此文章20年后,我可以很好地进行伪造。此页面始于2001年,可能需要在此进行一些更新。自2001年以来,我已经学到了一些事情,我想我需要重新访问此页面的某些部分。)
我并不想将自己的观点强加于脱氧核糖核酸-这里的每个观察结果都相当“完整”。要了解我从哪里得到的信息,请转到参考书目(页面末尾)。
在这儿。这不是在开玩笑。但是我们可以对许可证感到好奇。也许我们应该问一下这个来源的步行产品:克雷格·文特(Craig Venter)(更新:不太正确,主要是其他人)。可以通过一组称为“ Ensembl”的perl脚本来查看源代码。人类基因组大约3个千兆字节长,最大可压缩到750兆字节。令人非常沮丧的是,它只有3.6(更新:以前是2.8,显然Firefox的大小有所减小,是吧。)Mozilla浏览器。
DNA不像C源代码,而是更像是称为“核”的虚拟机的字节编译代码。令人怀疑的是,此字节编译是否有源代码—您所看到的就是所得到的全部。
DNA的语言是数字的,但不是二进制的。当二进制编码使用0和1进行处理(2-即“二进制”)时,DNA具有4个位置:T,C,G和A。
数字字节通常是8个二进制数字,而DNA的“字节”(称为“密码子”)只有3个数字。因为每个数字可以具有4个值而不是2个值,所以DNA密码子有64个可能的值,而二进制字节有256个。
DNA密码子的典型例子是“ GCC”,它编码氨基酸丙氨酸。这些氨基酸中大量结合在一起被称为“多肽”或“蛋白质”,它们在生物上具有化学活性。
动态链接的库代码(在Unix下是.so,在Windows上是.dll)在内部不能使用静态地址,因为在不同情况下代码可能会出现在内存中的不同位置。 DNA也有这种情况,被称为“转置代码”:
人类基因组的近一半由转座因子或跳跃DNA组成。在1940年代,Barbara McClintock博士首先在印度玉米的颜色中发现了独特的遗传模式,这一点得到了广泛认可,DNA跳跃是指这样的想法,即某些DNA片段是不稳定的并且是“可转座的”,即它们可以四处移动–在染色体上和之间。
现在被认为存在于人类基因组中的20,000至30,000个基因中(更新:有争议),大多数细胞仅表达很小的一部分-这是有道理的,肝细胞几乎不需要构成神经元的DNA密码。
但是由于几乎所有细胞都携带基因组的完整副本(“分布”),因此需要一种系统来#ifdef清除不需要的物质。这就是它的工作原理。遗传密码中充满了#if /#endif语句。
这就是“干细胞”现在如此炙手可热的原因-这些细胞具有分化为一切的能力。可以这么说,代码尚未被#ifdeffed出来。
更准确地说,干细胞并没有打开所有的东西-它们不是肝细胞和神经元。可以将细胞比作状态机,从干细胞开始。在细胞的整个生命周期中,它可能会多次克隆('fork()'),这是专门技术。每个专业都可以视为在树中选择一个分支。
每个单元都可以做出(或被诱使做出)关于其未来的决策,从而使每个单元更加专业化。这些决定相对于使用转录因子进行克隆以及通过修改DNA在空间上的存储方式(“空间效应”)而言都是持久的。
肝细胞虽然携带基因,但通常无法充当皮肤细胞。有迹象表明,有可能“向上”将细胞“繁殖”到层次结构中,从而使其具有多能性。另请参阅本文。
尽管有机体DNA的实际相关变化很少发生在一代人之内,但通过激活或失活基因组的某些部分,可以进行大量修补,而无需更改实际代码。
可以将其与Linux内核进行比较,后者在启动时会发现其运行在哪个CPU上,并且实际上会禁用其二进制代码的某些部分,以防万一(例如)它在单个CPU系统上运行。这超出了诸如if(numcpus> 1)之类的东西,它实际上是锁定退出。至关重要的是,这种中断发生在内存中,而不是在基于磁盘的映像上。
同样,随着胚胎在母亲子宫内的发育,对其DNA进行了大量编辑以降低其生长速度和胎盘的大小。这样,父亲(“强壮的大孩子”)和母亲(“幸存的怀孕”)的利益竞争就达到了平衡。这样的“烙印”只能在母亲体内发生,因为父亲的基因组对母亲的大小一无所知。
最近,也越来越清楚的是,父母的新陈代谢状况会影响其子孙长寿,癌症和糖尿病的机会。这也是有道理的,因为在食物匮乏的气候中生存可能需要与食物充足的情况不同的代谢策略。
表观遗传学和印迹的机制是“甲基化”,它使甲基附着在DNA上以“翻转”它们的激活状态,还有组蛋白修饰,它可以使DNA卷曲,因此不被激活。
这些DNA编辑中的一些是可遗传的,并传递给儿童,其他形式可能仅影响一只动物。
这个领域仍在迅速发展,可能是我们的DNA比最初想象的要动态得多。
基因组中散布着旧的基因副本和最近在过去一百万年(即最近一百万年)发生的错误的实验。该代码在那里,但是无效。这些被称为“伪基因”。
此外,您的DNA中有97%被注释掉了。 DNA是线性的,从头到尾读取。不应解码的部分被标记得非常清晰,就像C注释一样。直接使用的3%构成所谓的“外显子”。介于“中间”的注释称为“内含子”。
这些评论本身引人入胜。像C注释一样,它们有一个开始标记(如/ *)和一个停止标记(如* /)。但是它们具有更多的结构。请记住,DNA就像磁带一样-注释需要从物理上删除!注释的开头几乎总是由字母“ GT”表示,因此对应于/ *,结尾由“ AG”表示,然后类似于* /。
但是,由于进行了剪裁,因此需要一些胶水将注释之前的代码连接至之后的代码,这使注释更像html注释,但注释更长:“&lt ;! –”表示开始,“ –>”结束。
ACTUAL CODE<!-等等等等-等等-> ACTUAL CODE | | | | | |外显子1供体内含子1分支受体外显子2(注释开始)(注释结束)
注释的开头很清楚,然后是许多非编码DNA。在评论结尾附近的某个地方,有一个“分支站点”,表示该评论将很快结束。然后是更多注释,然后是实际终止符。
注释的实际剪切是在将DNA转录为RNA之后进行的,方法是循环注释并将实际代码片段紧密结合在一起。然后在注释结尾附近的“分支站点”处剪切RNA,然后将“捐助者”(注释开始)和“接受者”(注释结束)相互连接。
现在,这些评论有什么用?该讨论是一场可以与vi / emacs竞争的神圣战争的一部分。当比较不同的物种时,我们知道一些内含子显示的编码变化少于邻近的外显子。这表明评论正在做重要的事情。
大量的非编码DNA有很多可能的解释-最吸引人的(对编码者而言)与“折叠倾向”有关。 DNA需要以高度卷曲的形式存储,但是并非所有的DNA代码都可以很好地做到这一点。
这可能使您想起RLL或MFM编码。在硬盘上,通过极性转换或缺少极性来对位进行编码。天真的编码会将0编码为“无过渡”,将1编码为“过渡”。
编码000000很容易-只需将磁相保持几微米不变即可。但是,在解码时,不确定性会增加-我们读了多少微米?这对应于6个零还是5?为避免此问题,请对数据进行处理,以使这些长时间的无过渡不会发生。
如果我们在磁盘上看到“无过渡,无过渡,过渡,过渡”,则可以确定它对应于“ 0011”-我们的读取过程非常不精确,以至于它可能对应于“ 00011”或“ 00111'。因此,我们需要插入垫片以防止过渡太少。在磁性介质上,这称为“行程限制”。
需要注意的是,有时需要插入转换以确保可以可靠地存储数据。内含子可以通过确保正确编码结果代码来完成很多相同的事情。
但是,分子生物学领域是一个雷区!巨大的异族激怒了各种变体,例如“内含子早”或“内含子晚”等令人振奋的名字,以及诸如“折叠倾向”和“茎环潜力”之类的大词。我认为最好让这一讨论激起一点。
2013年更新:十年过去了,辩论仍未解决!很明显,“垃圾DNA”是一个误称,但就其即时功能而言,尚无共识。查看关于ENCODE和垃圾的战斗,以了解我们的立场。
2021年更新:十八年过去了,辩论距离解决还很遥远。现在已经有些共识,“垃圾DNA”具有重要而多样的功能,但是每天都会有新发现。 https://www.advancedsciencenews.com/that-junk-dna-is-full-of-information/
与Unix一样,单元不是“产生”的,而是分叉的。所有细胞都从卵子开始,此卵子自此分叉多次。像过程一样,fork()的两半在开始时(大部分)是相同的,但是从那时起它们可能会决定做不同的事情。
与Unix一样,当单元继续分叉时会出现很大的问题。他们迅速耗尽资源,有时甚至导致死亡。这称为肿瘤。该单元中充斥着“ ulimits”和“ watchdogs”,以防止发生此类情况。例如,划分的数目受到端粒缩短的限制。
除非满足非常严格的条件(“默认情况下是安全的”配置),否则细胞无法克隆。仅当这些防护措施失败时,肿瘤才能生长。与计算机安全性一样,很难在安全性(“没有单元可以分裂”)和可用性之间取得平衡。
将此与著名的暂停问题进行比较,该问题首先由计算机科学的创始人艾伦·图灵(Alan Turing)提出。也许无法预测一个程序是否会完成,就像无法创建一个不会患癌症的功能基因组一样?
每个DNA螺旋本身都是多余的-您可以将基因组看作是一个扭曲的梯子,其中每个辐条包含两个碱基-因此有“碱基对”一词。如果缺少这些基准之一,则可以从另一侧的基准中得出。 T总是与A结合,C总是与G结合。因此,我们可以说基因组镜像在螺旋内。可以说是“ RAID-1”。
此外,每个染色体都有两个副本-每个父母都有一个副本,但Y染色体例外,它仅存在于男性中。实际细节很复杂-但大多数基因因此出现两次。万一一个损坏或突变失败,另一个独立副本仍然存在。这就是我们通常所说的“故障转移”。
当蛋白质在细胞中相互作用时,它们彼此依赖。刚刚表明,与许多其他蛋白质相互作用的蛋白质无法进化,或者至少只能以非常缓慢的速度进化。
他们认为,这是因为内部依赖性很大,抑制了蛋白质“合约”的变化。还要注意的是,确实发生了进化,但是进化非常缓慢,因为依赖的两个部分都需要以兼容的方式同时进化。
最近有人在讨论中提出,砍掉基因组并对其进行折衷以插入代码将其自身复制到其他基因组中是非常酷的事情,它使用宿主作为载体。 ‘就像尼姆达蠕虫一样!’
此后不久,他意识到生物病毒正是数百万年来一直在做的事情。它们非常擅长。许多这类病毒已成为我们基因组的固定组成部分,与我们所有人息息相关。为此,他们必须对试图检测外来代码并阻止其进入DNA的病毒扫描程序隐藏。
当科学家们仍在寻找遗传学的基础知识时,他们面临着许多不同的化学物质,但相关性还不清楚。当事情变得清晰起来时,它被誉为伟大的胜利,并被称为“中央教条”。
这个教条告诉我们,DNA用于制造RNA,而RNA用于制造蛋白质,这就像说.c文件来自一个.o目标文件,该文件可以编译成可执行文件(a.out / exe )。它还告诉我们,这是信息流动的唯一顺序。
现在,中央教条最近已经失去光泽。就像任何具有十亿年历史的编码项目一样,大量黑客活动正在进行中,有时信息会以其他方式流动。有时RNA会修补DNA,而其他时候,DNA会被较早产生的蛋白质修饰。
我们可以用DNA轻松地摆弄。有些公司可以向您发送带有DNA字符的ASCII文件,它们将为您合成相应的“输出”。我们还可以将DNA拼接到发育中的动植物中。
正如任何程序员所能证明的那样,“修补正在运行的可执行文件”要困难得多。就像基因组一样。要更改正在运行的副本(“人类”),您需要编辑要修补的基因的每个相关副本。
多年以来,医学界一直在尝试用SCID或“严重综合免疫缺陷”给人打补丁,这是一种非常令人讨厌的疾病,实际上会削弱免疫系统,导致患者重病。很长一段时间以来,人们已经很清楚需要修复DNA中的哪些字母才能治愈这些人。
使用将新的DNA插入活生物体的病毒,进行了许多尝试来修补奔跑的人,但这被证明非常困难。对于这种简单的工作方法,基因组的保护太好了-细胞比Microsoft更好地保护其代码!
但是,最近发现了正确的病毒,该病毒能够破坏基因组的保护并修复损坏的字符,从而导致看上去健康的人。
修复计算机程序中的错误时,我们通常会在此过程中引入新的错误。基因组里充斥着这件事。许多非裔美国人对疟疾免疫,但是却患有镰状细胞性贫血:<在寄生虫传播的疾病疟疾盛行的世界热带地区,具有特定基因突变的单个拷贝的人具有生存优势。 (…)虽然继承突变的一个副本会带来好处,但是继承两个副本却是一个悲剧。出生有两个基因突变拷贝的孩子患有镰状细胞性贫血,镰状细胞性贫血是一种影响红细胞的痛苦疾病。链接到报价
发生这种情况的例子很多。另请参阅Matt Ridley撰写的精彩著作《 Genome》。
像计算机存储一样,DNA(及其中间的“ RNA”)也可能遭到破坏。为了防止常见的“单比特错误”,从单个DNA字母到蛋白质的编码都是简并的。有4个RNA字符,U,C,G和A-换句话说,“字节”是2位长。三个字符对应一个氨基酸。
可以想象6位可以映射到64个氨基酸,但是只有20个在使用中。例如,UCU,UCC,UCA和UCG都编码为'Serine',而只有UGG映射为'Tryptophan'.Now,事实证明,编码中某些可能的'typos'(UCU-> UCC)导致表达相同的氨基酸。有关此引人入胜的现象的更多信息,请阅读道格拉斯·霍夫斯塔特(Douglas Hofstadter)的“超自然主题”。
有些代码是神圣的。我们可能不记得是谁写的,或者为什么-我们只知道它有效。认为这件事的人可能已经离开了公司。此类代码不可修改。
DNA知道“分子钟”的概念。基因组的某些部分正在积极变化,而某些部分则是神圣不可侵犯的。后者的一个很好的例子是组蛋白基因H3和H4。
这些基因是基因组实际存储的基础,因此至关重要。该代码中的任何错误都会迅速导致机体失灵。
因此,可以预期该代码不会被修改,事实就是如此。 H3和H4基因在人类中的有效突变率为零。但这远远不止于此。您可以将几乎相同的代码与任何东西共享,从鸡到草或霉菌。
基于化石证据,每千亿年间人类和啮齿类蛋白质编码基因的位点替换率为8,000万,
现在看来,基因组可以通过两种方式确保代码不会突变。上面描述了第一种方法:使用高度简并的氨基酸,并确保确实发生的错别字产生相同的输出。
此外,基因可以在细胞的繁殖过程中早晚复制,从而或多或少地有利于复制条件。此类条件更多。
似乎H3和H4的编写非常仔细,因为它们确实有很多“同义词更改”,通过上述巧妙的技巧,它们不会导致输出更改。
这清楚地描述了8位值1、2和3。我添加的空格使一个字节的开始和停止位置清晰可见。许多串行设备使用停止位和开始位对您开始读取的位置进行编码。如果我们稍微改变一下这个顺序:
它突然读到2、4、6!为了防止这种情况在DNA中发生,有精心设计的信号告诉细胞从哪里开始读取。有趣的是,有些基因组片段可以从多个起点读取,并且可以通过任何一种方式产生有用(但不同)的结果。这就是我所说的很酷的技巧!
可以读取DNA链的每种方式称为开放阅读框,通常每种方式有6、3种。
现在,DNA不像计算机编程语言。真的不是。但是有一些惊人的类比。我们可以将每个单元视为运行自己内核的CPU。每个单元都有整个内核的副本,但是选择仅激活相关部分。可以说它加载了哪些模块或驱动程序。
如果细胞需要做某事(称为“功能”),它会鞭打正确的基因组片段并将其转录为RNA。然后将RNA翻译成一系列氨基酸,这些氨基酸共同构成了DNA编码的蛋白质。现在要说真的很酷:-)
该蛋白标有送货地址。这是一个由几种氨基酸组成的标记,可以告诉细胞的其余部分
......