改变科学的⼗⼤编程软件《⾃然》长⽂
原⽂作者:Jeffrey M. Perkel
从Fortran到,计算机程序和平台的进步,令⽣物学、⽓候科学与物理学突飞猛进。
在2019年,事件视界望远镜向世界⾸次揭开了⿊洞的神秘⾯纱。但我们看到的那个发光环形⿊洞图像并不是直接拍摄得到的,⽽是利⽤来⾃于美国、墨西哥、智利、西班⽛和南极的射电望远镜所捕获的数据,通过复杂的数学变换和计算处理⽽得到的 [1]。在发布结果的同时,该团队也公开了实现这⼀突破性成就的代码,使得科学界详细理解其实现过程,并以此为基础更深⼊地研究。
从天⽂学到动物学,这样的研究模式在各个学科中越来越趋于普遍:在现代每⼀项重⼤科学发现的背后,总有计算机的⾝影。加州斯坦福⼤学的计算⽣物学家Michael Levitt由于在化学结构建模的计算策略⽅⾯做出的杰出贡献⽽分享了2013年的诺贝尔化学奖,他提及⾃⼰在1967年刚开始这项⼯作时,实验室电脑的内存和计算性能只有不到现在笔记本电脑的万分之⼀。他说:“虽然我们现在已经掌握了强⼤的计算资源,但思考的重要性并没有丝毫减弱。”
这就需要科学家兼程序员。如果没有可以处理研究问题的软件,没有知道如何编写并使⽤程序的研究⼈员,再强⼤的电脑也会显得毫⽆⽤处。Neil Chue Hong是总部位于英国爱丁堡的软件可持续性研究所的
负责⼈,该研究所主要致⼒于持续改善科学软件的研发和使⽤,Neil说:“现在的科学研究基本都会运⽤软件来进⾏,它们已经渗透到了研究的⽅⽅⾯⾯。”
图 | Paweł Jońca
科学发现理应是媒体的头版头条。但本期《⾃然》中,我们想要和读者⼀起聊聊这些发现背后的故事,⼀起回顾过去⼏⼗年来极⼤地改变研究进程的关键代码。程序员最常用的编程语言
尽管这样的列表并⾮绝对,但在过去⼀年⾥我们调研了⼤量研究⼈员,汇总了不同领域内对科研带来巨⼤影响的的⼗⼤软件⼯具。
编程语⾔先驱者:Fortran编译器 (1957)
第⼀台现代电⼦计算机对于⽤户并不友好。编程需要通过⼿动逐个链接电路来完成。虽然随后的机器语⾔和汇编语⾔迅速发展,可以让⽤户通过代码进⾏编程,但依然需要对计算机体系结构有着深⼊的理解,这阻碍了许多科学家使⽤计算机的效率。
随着20世纪50年代符号化语⾔的发展,效率慢慢提⾼,尤其是 “公式翻译”语⾔Fortran的出现改变了这⼀局⾯。Fortran 语⾔是由John Backus与其在加州圣何塞的IBM团队开发的。⽤户可以利⽤Fortran中⼈类可读的指令来编程,例如编写x=3+5的计算公式,随后编译器就可以将其转化为快速⾼效的机器代码。
这台CDC 3600计算机于1963年送达位于科罗拉多州博尔德的国家⼤⽓研究中⼼,它可以在Fortran编译器的帮助下进⾏编程。| ⼤⽓科学研究⼤学联盟/ Science Photo Library
但编程仍然不是⼀件容易的事情:早期的程序员使⽤打孔卡来输⼊代码,稍微复杂点的模拟就需要上万张打孔卡来编写程序。但新泽西普林斯顿⼤学的⽓候学家Syukuro Manabe表⽰,Fortran为⾮计算机科学家的研究者提供了⼀种⾼效的编程⼿段。“我们第⼀次可以⾃⼰对计算机进⾏编程”,Manabe说。他和同事们利⽤Fortran开发了第⼀个成功的⽓候模型。
如今,Fortran已经进⼊了第⼋个⼗年,它依旧⼴泛应⽤于⽓象建模、流体⼒学、计算化学和其他需要复杂线性代数与强⼤计算能⼒的学科。其⽣成的代码运算⾼效,依然有很⼤⽐例的程序员会使⽤Fortran。中古Fortran代码库仍然活跃在全球各地的超级计算机和实验室中。“以前的程序员清楚⾃⼰
在做什么,”加州蒙特雷海军研究⽣院的应⽤数学家和⽓候建模专家Frank Giraldo说,“他们⾮常注重内存,因为以前的内存⾮常⼩。”
信号处理器:快速傅⽴叶变换 (1965)
当射电天⽂学家扫视天空时,他们会捕获到⼀系列随时间变化的复杂信号。为了理解这些电波的本质,他们需要看到这
当射电天⽂学家扫视天空时,他们会捕获到⼀系列随时间变化的复杂信号。为了理解这些电波的本质,他们需要看到这些信号转成频率⽅程是什么样的。研究⼈员可以使⽤⼀种被称为傅⽴叶变换的数学过程来完成这⼀过程,问题在于它的效率很低,⼀个N⼤⼩的数据集需要N2的计算量。
但在1965年,美国数学家James Cooley和John Tukey发明了⼀种⽅法来加速这⼀过程。使⽤递归,⼀种“分⽽治之”的编程⼿段(算法可以重复调⽤⾃⾝),快速傅⽴叶变换(FFT)可以将傅⽴叶变换的计算降低到 N log 2 ( N )步。计算速度随着数据集的增⼤⽽增加,1000个数据点的情况下速度提升100倍,⽽对于⼀百万个点的情况则可以提速5万倍。
英国⽜津⼤学的数学家Nick Trefethen说,这其实是⼀次重复发现——德国数学家⾼斯(Carl Friedrich Gauss)在1805年曾提出过这个算法,但他并未发表。然⽽,Cooley和Tukey 为数字信号处理、图像
分析、结构⽣物学等等领域打开了⼴阔的应⽤空间。Trefethen说:“这确实是应⽤数学和⼯程领域的重⼤事件。” FFT已经在代码中实现了很多次,最为著名的是FFTW (西⽅最快的傅⽴叶变换)。
西澳⼤利亚⽆线电天⽂望远镜默奇森宽场阵列(Murchison Widefield Array)的夜景,该望远镜使⽤快速傅⽴叶变换收集数据。| John Goldsmith/Celestial Visions
加州劳伦斯伯克利国家实验室分⼦⽣物和集成⽣物成像部门的负责⼈Paul Adams回忆在1995年优化细菌蛋⽩GroEL结构时 [2],即使使⽤了快速傅⽴叶变换和超级计算机,计算也耗费了⼤量的时间。他说:“如果没有FFT,我甚⾄都不知道完成这些计算是否现实,可能会永远做不完。”
分⼦编⽬:⽣物学数据库 (1965)
数据库是当代科学研究不可或缺的部分,但⼈们很容易忽略它是由软件驱动的。在过去⼏⼗年⾥,这些资源得到了⼤规模的扩充,并改变了许多领域的研究⽅式,但或许没有哪个领域能像⽣物领域⼀样出现了翻天覆地的变化。
当今⼤规模的基因和蛋⽩质数据库,源于马⾥兰国家⽣物研究基⾦会的⽣物信息学先驱Margaret Dayhoff的⼯作。20世纪60年代初,⽣物学家们致⼒于揭开蛋⽩质的氨基酸序列结构,Dayhoff开始整理这些信息,寻不同物种间演化关系的线索。她与三位合作者合著的《蛋⽩质序列和结构图集》( Atlas of Protein Sequence and Structure )于1965年⾸
的线索。她与三位合作者合著的《蛋⽩质序列和结构图集》( Atlas of Protein Sequence and Structur
e )于1965年⾸次发表,描述了当时已知的65种蛋⽩质序列、结构及其相似性。历史学家Bruno Strasser在2010年写道 [3],这个数据库是第⼀个不局限于具体研究问题的数据集。Dayhoff通过打卡纸带编码了这些数据,使得这⼀数据集具有可拓展和可搜索的潜⼒。
在这⼀研究后之后,其他的计算⽣物学数据库开始不断出现。于1971年诞⽣的蛋⽩质三维结构数据库(The Protein Data Bank)如今已经囊括了超过17万种⼤分⼦结构的详情。加州⼤学圣迭⼽分校的演化⽣物学家Russell Doolittle于1981年创建了另⼀个名为Newat的蛋⽩质数据库。随后于1982年,诞⽣了后来的国际核酸序列数据库(GenBank),GenBank的DNA档案是由美国国⽴卫⽣研究院(NIH)维护的。
蛋⽩质数据银⾏中包含了超过17万种分⼦结构,包括这个结合RNA和蛋⽩质合成过程的细菌表达组。| David S. Goodsell and RCSB PDB (CC BY 4.0)
这些数据库在1983年7⽉证明了⾃⼰的巨⼤价值,当时由伦敦帝国癌症研究所的蛋⽩质⽣物化学家Michael Waterfield和Doolittle领导的两个团队,分别独⽴报告了⼀种⼈类特定⽣长因⼦与可使猴⼦患上癌症的病毒蛋⽩质序列间的相似性。观测结果提出了⼀种通过模拟⽣长因⼦的病毒致癌机理,病毒可以诱导细胞不受调控地快速增⽣[4]。美国国家⽣物信息研究中⼼(NCBI)前主任James Ostell认为:“这让⽣物学家们意识到,能利⽤计算机和统计学进⾏研究。通过⽐较蛋⽩质序列,我们能加深对癌症的理解。”
此外Ostell表⽰,这⼀发现标志着“客观⽣物学的问世”。除了设计实验验证假设,研究⼈员还可以通过挖掘公开数据库,从中发现数据收集者可能从未想过的联系。随着越来越多的数据库被链接在⼀起,这⼀研究范式的巨⼤潜⼒急剧增长。NCBI的程序员在1991年开发了⼀款可以在DNA、蛋⽩质和⽂献中⾃由导航的⼯具Entrez实现了这⼀构想。
马⾥兰贝赛达NCBI的负责⼈Stephen Sherry曾在研究⽣阶段使⽤Entrez,他说:“我还记得那时感觉像魔法⼀样神奇。”
天⽓预报领导者:⼤⽓环流模式(1969)
在⼆战结束时,计算机先驱冯·诺伊曼(John von Neumann)将战时⽤于计算弹道计算和武器设计的技术转向天⽓预报的研究。Manabe说:“在那之前,天⽓预报都是依赖经验的,⽽冯·诺伊曼的团队则希望利⽤物理定律来实现数值天⽓预报。”
Venkatramani Balaji是普林斯顿的美国国家海洋与⼤⽓管理局地球物理流体动⼒学实验室的建模系统负责⼈,他说,描述这些过程的⽅程已经存在了⼏⼗年,但早期的⽓象学家不知道该如何解这些⽅程。由于这些⽅程的计算需要给定当前条件,计算其在短期内随时间的变化,然后重复,这⼀过程⼗分耗时,⽽且计算的速度赶不上天⽓的变化。1922年数学家Lewis Fry Richardson花费了⼏个⽉的时间计算了德国慕尼⿊天⽓的6⼩时预报,但据记录来看预报的结果“极不准确”,还出现了“在任何已知陆⾯情况下都不可能发⽣”的预测结果。计算机的出现让问题变得容易了许多。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论