《自然》选出了10个改变科学的计算机代码项目。

从Fortran到arXiv.org,这些计算机代码和平台使生物学、气候科学和物理学的发展达到了真正“千变万化”的速度。

2019年,视界望远镜团队让世界第一次看到了黑洞。然而,研究人员发布的这个发光环形物体的图像并不是传统的图片,而是通过计算获得的。利用美国、墨西哥、智利、西班牙和南极洲的射电望远镜获得的数据,研究人员进行了数学变换,最终合成了这张标志性的图片。研究团队还发布了用于实现这一壮举的编程代码,并撰写了一篇文章记录这一发现,其他研究人员可以在此基础上进一步分析。

这种模式越来越普遍。从天文学到动物学,近代每一个重大科学发现的背后,都有计算机的参与。美国斯坦福大学计算生物学家迈克尔·莱维特(Michael levitt)因“创建了复杂化学系统的多尺度模型”,与另外两名研究人员分享了2013诺贝尔化学奖。他指出,今天的笔记本电脑的内存和时钟速度是他在1967年开始获奖时实验室制造的电脑的10000倍。“我们今天确实有相当大的计算能力,”他说。“问题是我们还需要思考。”

如果没有能够解决研究问题的软件和知道如何编写和使用软件的研究人员,一台计算机,无论多么强大,都是无用的。今天的科学研究已经从根本上与计算机软件联系起来,计算机软件已经渗透到研究工作的各个方面。近日,《自然》杂志将目光转向幕后,聚焦过去几十年改变科学研究的关键计算机代码,并列出了10个关键计算机项目。

这台CDC 3600计算机于1963年交付给位于科罗拉多州博尔德的美国国家大气研究中心,研究人员借助Fortran编译器对其进行了编程。

语言的先驱:Fortran编译器(1957)

第一台现代计算机不容易操作。当时的编程实际上是通过人工将导线连接成一排排电路来实现的。后来出现了机器语言和汇编语言,让用户用代码给计算机编程。然而,这两种语言都需要对计算机体系结构有深刻的理解,这使得许多科学家很难掌握。

在20世纪50年代,随着符号语言的发展,特别是Fortran,一种由john balks和他在加州圣何塞的IBM团队开发的公式翻译语言,这种情况发生了变化。有了Fortran,用户可以用人类可读的指令编程,比如x = 3+5。然后编译器将这些指令转换成快速高效的机器代码。

然而,这个过程仍然不容易。早期的程序员使用穿孔卡来输入代码,而复杂的模拟可能需要数万张穿孔卡。尽管如此,新泽西州普林斯顿大学的气候学家Syukuro Manabe指出,Fortran使得非计算机科学家也能编程。"这是我们第一次能够自己给计算机编程."他和他的同事使用这种语言开发的气候模型是最早成功的模型之一。

Fortran已经发展到第八个十年,现在仍然广泛应用于气候建模、流体力学、计算化学等学科,这些学科都涉及到复杂的线性代数,需要强大的计算机快速处理数字。Fortran生成代码很快,现在还有很多程序员知道怎么写。古老的Fortran代码库仍然活跃在世界各地的实验室和超级计算机中。“以前的程序员知道他们在做什么,”弗兰克·吉拉尔多说,他是美国海军研究所的应用数学家和气候建模师。"他们非常注重记忆,因为他们的记忆力很差."

信号处理器:快速傅立叶变换(1965)

当射电天文学家扫描天空时,他们捕捉到随时间变化的复杂信号噪声。为了理解这些无线电波的本质,他们需要看到这些信号作为频率的函数是什么样的。一种叫做“傅立叶变换”的数学过程可以帮助研究人员,但是效率很低。对于一个大小为n的数据集,需要n 2次计算。

1965年,美国数学家詹姆斯·库利和约翰·达克想出了一个加速这个过程的方法。快速傅里叶变换(FFT)通过递归(一种通过将问题反复分解成同类子问题来求解问题的编程方法)将傅里叶变换的计算问题简化为N log2(N)步。随着n的增加,速度也会增加。对于1000点,速度提升约100倍;1万积分是5万倍。

这个“发现”其实是一个再发现,因为德国数学家高斯在1805年就研究过,但他从未发表过。詹姆斯·库利和约翰·达克做到了。他们开启了傅里叶变换在数字信号处理、图像分析、结构生物学等领域的应用,成为应用数学和工程领域的重大事件之一。FFT已经在代码中多次使用。近年来,一种流行的方案是FFTW,它被认为是世界上最快的FFT。

加州劳伦斯伯克利国家实验室分子生物物理学和集成生物成像系主任保罗·亚当斯(Paul adams)回忆说,他在1995年改进细菌蛋白质凝胶结构时,即使使用FFT和超级计算机,也需要“许多小时甚至几天”才能计算出来。“如果我试图在没有FFT的情况下做到这一点,我不知道如何在现实中做到这一点,”他说。“可能需要很长时间。”

分子编目:生物数据库(1965)

数据库是当今科学研究不可或缺的一部分,以至于很容易忘记它们也是由软件驱动的。在过去的几十年中,数据库资源的规模迅速扩大,影响了许多领域,但也许没有一个领域的变化比生物学更剧烈。

蛋白质数据库拥有超过654.38+0.7万个文件的分子结构,包括这种细菌的“表达我”,其功能是结合RNA和蛋白质合成的过程。

如今,科学家使用的庞大基因组和蛋白质数据库源于美国物理化学家玛格丽特·德霍夫的工作,她也是生物信息学领域的先驱。20世纪60年代初,当生物学家试图整理蛋白质的氨基酸序列时,德霍夫开始整理这些信息,以寻找不同物种之间进化关系的线索。1965年,她和三位合著者发表了蛋白质序列和结构图谱,描述了当时已知的65种蛋白质的序列、结构和相似性。历史学家布鲁诺·斯特拉瑟(Bruno strasser)在2010中写道,这是第一个与特定研究问题无关的数据集。它将数据编码在穿孔卡片中,这使得扩展数据库和搜索成为可能。

其他“计算机化”的生物数据库紧随其后。蛋白质数据库在1971投入使用,现在详细记录了17万多个大分子结构。加州大学圣地亚哥分校的进化生物学家Russell doolittle在1981中创建了另一个名为Newat的蛋白质数据库。1982年,美国国立卫生研究院(NIH)与多家机构合作建立了GenBank数据库,这是一个开放访问的DNA序列数据库。

这些数据库资源在7月1983证明了自己的存在价值。当时,由来自伦敦帝国癌症研究基金会蛋白质的生物化学家迈克尔·沃特菲尔德(Michael Waterfield)领导的团队和杜利特尔的团队独立报告了一种特殊的人类生长因子序列和蛋白质(一种导致猴子癌症的病毒)之间的相似性。观察结果显示了一种病毒诱导肿瘤的机制——通过模仿一种生长因子,病毒可以诱导细胞不受控制的生长。美国国家生物技术信息中心(NCBI)前主任詹姆斯·奥斯特尔(James Austell)说:“这一结果让一些对计算机和统计学不感兴趣的生物学家灵光一闪:我们可以通过比较序列来了解癌症。”

奥斯特尔还表示,这一发现标志着“客观生物学的到来”。除了设计实验来验证特定的假设,研究人员还可以挖掘公共数据集,以找到那些实际收集数据的人可能从未想到的联系。当不同的数据集连接在一起时,这种力量会急剧增加。比如NCBI程序员在1991通过Entrez实现了这一点;Entrez是一个允许研究人员自由搜索和比较DNA、蛋白质和文件的工具。

预报负责人:大气环流模型(1969)

二战末期,计算机先驱约翰·冯·诺依曼(john von neumann)开始将几年前用于计算弹道轨迹和武器设计的计算机转向天气预测的问题。在此之前,“天气预报只是经验性的”,也就是用经验和直觉来预测接下来会发生什么。相比之下,冯·诺依曼的团队“试图根据物理定律进行数值天气预测”。

位于新泽西州普林斯顿的美国国家海洋和大气管理局(NOAA)地球物理流体动力学实验室的建模系统部门负责人Venkatramani Balaji表示,几十年来,人们已经熟悉了这些方程。但是早期的气象学家实际上无法解决这些问题。要做到这一点,你需要输入当前的条件,计算它们在短时间内将如何变化,并不断重复。这个过程非常耗时,在天气状况真正出现之前,不可能完成数学运算。1922年,数学家Lewis Frye Richardson花了几个月计算德国慕尼黑6小时预报。根据一份历史记录,他的结果“极不准确”,包括“在任何已知的土地条件下都不可能”的预测。计算机使这个问题很容易解决。

20世纪40年代末,冯·诺依曼在普林斯顿高等研究院建立了一个天气预报小组。1955年,第二个团队——地球物理流体动力学实验室——开始了他所谓的“无限预测”,即气候建模。

舒朗·真由在1958加入了气候建模团队,开始研究大气模型。他的同事Kirk Bryan将这个模型应用于海洋研究。从65438到0969,他们成功地将两者结合起来,并在2006年创造了《自然》杂志所称的科学计算的“里程碑”。

今天的模型可以把地球表面分成25公里和25公里的正方形,把大气层分成几十层。相比之下,舒朗和布莱恩·马科托(Bryan Makoto)的海洋-大气联合模型将该区域划分为500平方公里,并将大气分为9个级别,仅覆盖地球的六分之一。尽管如此,Venkatramani Balaji表示,“这个模型非常好”,使研究团队首次能够通过计算机预测二氧化碳含量上升的影响。

数字计算器:BLAS(1979)

科学计算通常涉及使用向量和矩阵的相对简单的数学运算,但是这样的向量和矩阵太多了。然而,在20世纪70年代,没有普遍认可的计算工具来执行这些操作。因此,从事科学工作的程序员会把时间花在设计高效的代码来执行基本的数学运算,而不是专注于科学问题。

加利福尼亚州劳伦斯利弗莫尔国家实验室的Cray-1超级计算机。在1979年BLAS编程工具问世之前,没有线性代数标准可供研究人员在Cray-1超级计算机上工作。

编程世界需要一个标准。1979年出现了这样一个标准:基础线性代数子程序(BLAS)。这是一个应用程序编程接口(API)标准,用于标准化基本线性代数运算(如向量或矩阵乘法)的数值库的发布。标准已经发展到1990,为向量数学和后来的矩阵数学定义了几十个基本例程。

田纳西大学计算机科学家、BLAS开发团队成员杰克·唐加拉(Jack Dongarra)表示,实际上,BLAS将矩阵和向量数学简化成了像加减法一样的基本计算单元。

德克萨斯大学奥斯汀分校的计算机科学家罗伯特·范·德·盖因(Robert van de Geijn)指出,BLAS“可能是为科学计算定义的最重要的接口”。除了为常用函数提供标准化名称,研究人员还可以确保基于BLAS的代码在任何计算机上都能以相同的方式工作。该标准还使计算机制造商能够优化BLAS的安装和激活,以在他们的硬件上实现快速操作。

40多年来,BLAS代表了科学计算栈的核心,也就是让科学软件运行的代码。美国乔治·华盛顿大学的机械和航空航天工程师洛雷纳·巴尔巴(Lorena Barba)称之为“五层代码中的机械”。杰克·唐加拉说,“它为我们的计算提供了基本结构。”

显微镜:NIH图像(1987)

20世纪80年代初,程序员韦恩·拉斯班德(Wayne Rasband)在马里兰州贝塞斯达的美国国立卫生研究院脑成像实验室工作。实验室有扫描仪,可以将x光数字化,但不能在电脑上显示或分析。为此,拉斯班德写了一个程序。

这个程序是专门为价值15000美元的小型PDP-11计算机设计的。这台电脑安装在一个架子上,显然不适合个人使用。然后在1987年,苹果发布了Macintosh II,这是一个更加友好和实惠的选择。拉斯班德说:“在我看来,这显然是一个更好的实验室图像分析系统。”他把软件转移到一个新的平台上,重新命名,建立了一个图像分析生态系统。

NIH Image及其后续版本使研究人员能够在任何计算机上查看和量化几乎任何图像。软件系列包括ImageJ,这是Rasband为Windows和Linux用户编写的基于Java的版本;以及Fiji,ImageJ的分布式版本,由德国德累斯顿马克斯·普朗克分子细胞生物学和遗传学研究所的Pavel Tomancak团队开发,包括关键插件。“ImageJ无疑是我们拥有的最基本的工具,”布劳德研究所(由麻省理工学院和哈佛大学共同创立)成像平台的计算生物学家贝丝·切米尼说。“我从未和一位使用过显微镜,但从未使用过ImageJ或Fiji的生物学家交谈过。”

拉斯班德说,部分原因可能是这些工具是免费的。但威斯康星大学麦迪逊分校的生物医学工程师凯文·埃利塞利(Kevin Eliceiri)指出,另一个原因是用户可以根据自己的需求轻松定制工具。自从拉斯班德退休后,凯文·埃利塞利(Kevin Eliceiri)的团队一直在领导ImageJ的开发。ImageJ提供了一个看似简单极简的用户界面,自20世纪90年代以来基本保持不变。然而,由于其内置的宏记录器(允许用户通过记录鼠标点击和菜单选择的序列来保存工作流)、广泛的文件格式兼容性和灵活的插件架构,该工具具有无限的可扩展性。该团队的编程总监柯蒂斯·鲁登(Curtis Ruden)表示,“数百人”为ImageJ贡献了插件。这些新添加的功能极大地扩展了研究人员的工具集,例如跟踪视频中的对象或自动识别细胞。

凯文·埃利塞利(Kevin Eliceiri)说:“这个程序的目的不是做所有事情或结束所有事情,而是服务于用户的目标。与Photoshop和其他程序不同,ImageJ可以是你想要的任何东西。"

序列搜索器:BLAST (1990)

也许没有什么比把软件名变成动词更能说明文化相关性了。说到搜索,你会想到谷歌;说到遗传学,研究人员马上想到BLAST。

通过替换、删除、缺失和重排,生物体将进化变化蚀刻成分子序列。找到序列之间的相似性——尤其是蛋白质之间的相似性——将使研究人员发现进化关系,并对基因功能有更深入的了解。在迅速膨胀的分子信息库中,要做到快速准确并不容易。

玛格丽特·德霍夫在1978中提供了关键进展。她设计了一个“点接受突变”矩阵,使研究人员不仅可以根据它们的相似性,还可以根据它们的进化距离来评估两个蛋白质序列的遗传关系。

在1985中,弗吉尼亚大学的威廉·皮尔逊和NCBI的大卫·利·普尔曼推出了FASTP,这是一种结合了德霍夫矩阵和快速搜索能力的算法。

几年后,Leapman与NCBI的Warren Kish和Stephen Atshur、宾夕法尼亚州立大学的Weber Miller和亚利桑那大学的Gene Myers一起开发了一种更强大的改进技术:blast(基本局部比对搜索工具)。BLAST发表于1990,结合了处理快速增长的数据库所需的搜索速度和在进化中提取更远距离匹配结果的能力。同时,该工具还可以计算这些匹配的概率。

Atshur说计算结果很快就出来了。"你可以输入搜索内容,喝一口咖啡,搜索就完成了."但更重要的是,BLAST很好用。在一个通过邮件更新数据库的时代,沃伦·吉什建立了一个电子邮件系统,后来又建立了一个基于网络的架构,允许用户在NCBI的计算机上远程运行搜索,从而确保搜索结果总是最新的。

哈佛大学计算生物学家肖恩·埃迪(Sean Eddie)表示,BLAST系统为当时处于起步阶段的基因组生物学领域提供了一个革命性的工具,即根据相关基因找出未知基因可能功能的方法。它也为全世界的测序实验室提供了一个新颖的动词。“这是名词变成动词的许多例子之一,”埃迪说。“你会说你要炸了你的序列。”

预印本平台:arXiv.org(1991年)

在20世纪80年代后期,高能物理学家经常将他们的论文和手稿的副本发给他们的同行征求意见——但只发给少数人。物理学家保罗·金斯伯格(Paul Kingspug)在2017中写道:“处于食物链较低位置的人依赖于一线研究人员的成就,而非精英机构中有抱负的研究人员往往处于特权圈之外。”

1991年,当时在新墨西哥州洛斯阿拉莫斯国家实验室工作的金斯帕格编写了一个电子邮件自动回复程序,希望建立一个公平的竞争环境。订户每天都会收到一份预印本列表,每篇文章都与一个文章标识符相关联。只需一封电子邮件,世界各地的用户就可以从实验室的计算机系统中提交或检索论文,获得新论文的列表,或者按作者或标题进行搜索。

金斯堡的计划是把论文保留三个月,内容限定在高能物理领域。但是一个同事劝他无限期保留这些文章。他说:“那一刻,它从一个公告栏变成了一个档案馆。”于是,论文开始从各个领域潮水般涌来。1993年,金斯堡将这个系统迁移到互联网上,并在1998年将其命名为arXiv.org,沿用至今。

ArXiv成立近30年,预印本约654.38+0.8万,全部免费提供,每月提交论文超过654.38+0.5万篇,下载量3000万次。10年前,《自然光子学》的编辑在评论arXiv成立20周年时写道:“不难看出arXiv的服务为何如此受欢迎。这个系统允许研究人员快速方便地竖起旗帜展示他们的工作,同时避免了提交传统同行评审期刊时的麻烦和时间成本。”

arXiv网站的成功也促进了生物学、医学、社会学等学科类似预印本网站的繁荣。这种影响可以在今天已经出版的数万份关于新冠肺炎的预印本中看到。“很高兴看到一种30年前在粒子物理学领域外被认为是异端的方法现在被普遍认为是平淡无奇和自然的,”金斯伯格说。"从这个意义上说,这就像一个成功的研究项目."

数据浏览器:Ipython笔记本(年份2011)

2001年,费尔南多·佩雷斯(fernando peres)是一名想“寻找拖延症”的研究生,他决定采用Python的一个核心组件。

Python是一种解释型语言,这意味着程序是逐行执行的。程序员可以使用一种叫做“读取-评估-打印循环”(简称REPL)的计算调用和响应工具,在里面输入代码,然后解释器执行代码。REPL允许快速探索和迭代,但Perez指出Python的REPL不是为科学目的而建的。例如,它不允许用户方便地预加载代码模块或打开数据可视化。因此,佩雷斯自己写了另一个版本。

结果是IPython的诞生,这是一个“交互式”Python解释器,由Perez于2006 5 4 38+0 6 5 4 38+2月推出。* *有259行代码。10年后,佩雷斯与物理学家布莱恩·格兰杰和数学家埃文·帕特森合作,将该工具迁移到网络浏览器上,并推出了IPython Notebook,这开启了数据科学的一场革命。

与其他计算笔记本一样,IPython Notebook将代码、结果、图形和文本合并到一个文档中。但与其他类似项目不同的是,IPython Notebook是开源的,并邀请了大量开发者社区参与。它支持Python,这是一种科学家非常流行的语言。2014年,IPython演变为Jupyter,支持约100种语言,让用户可以像在自己的笔记本电脑上一样轻松地在远程超级计算机上探索数据。

《自然》杂志在2018中写道:“对于数据科学家来说,Jupyter实际上已经成为一种标准。”当时有250万台Jupyter笔记本;在GitHub代码共享平台上;如今,这个数字已经发展到10万,在2016年发现引力波和2019年黑洞成像中发挥了重要作用。佩雷斯说:“我们为这些项目做出了小小的贡献,这非常值得。”

快速学习者:AlexNet(2012)

人工智能有两种类型。一是利用编码规则,二是通过模拟大脑的神经结构,让计算机“学习”。加拿大多伦多大学计算机科学家杰弗里?辛顿说,几十年来,人工智能研究人员一直认为后者是“无稽之谈”。然而,2012年,他的研究生亚历克斯·克雷塞和伊利亚·苏兹克维证明事实并非如此。

在一年一度的ImageNet比赛中,研究人员被要求在包含654.38+0万张日常物品图像的数据库中训练人工智能,然后在单个图像集上测试生成的算法。辛顿说,当时最好的算法对大约四分之一的图像进行了错误的分类。Creaser和Su Zikewei的AlexNet是基于神经网络的“深度学习”算法,将错误率降低到16%。辛顿说:“我们基本上把错误率减半,或者说几乎减半。”

Hinton还指出,该团队在2012中的成功反映了足够大的训练数据集、优秀的编程以及新兴图形处理单元的强大能力的结合。图形处理单元是一种处理器,最初设计用于加速计算机视频性能。“突然间,我们可以将(算法)速度提高30倍,”他说。“或者,我们可以学习多达30倍的数据。”

真正的算法突破其实发生在三年前,当时Hinton的实验室创建了一个神经网络,它可以比改进了几十年的传统人工智能更准确地识别语音。“只是好一点,”辛顿说,“但这已经表明了一些东西。”

这些成功表明了深度学习在实验室研究、临床医学和其他领域的兴起。通过人工智能的深度学习,手机可以理解语音查询,图像分析工具可以轻松识别显微照片中的细胞;这就是为什么AlexNet会成为从根本上改变科学和世界的工具之一。(任天)