《自然》評選改變科學的10個計算機代碼項目
據國外媒體報導,從Fortran到arXiv.org,這些計算機編碼和平台讓生物學、氣候科學和物理學等學科的發展達到了真正“日新月異”的速度。
2019年,事件視界望遠鏡團隊讓世界首次看到了黑洞的樣子。不過,研究人員公佈的這張發光環形物體的圖像並不是傳統的圖片,而是經過計算獲得的。利用位於美國、墨西哥、智利、西班牙和南極地區的射電望遠鏡所得到的數據,研究人員進行了數學轉換,最終合成了這張標誌性的圖片。研究團隊還發布了實現這一壯舉所用的編程代碼,並撰文記錄這一發現,其他研究者也可以在此基礎上進一步加以分析。
如果沒有能夠解決研究問題的軟件,以及知道如何編寫並使用軟件的研究人員,一台計算機無論再強大,也是毫無用處的
這種模式正變得越來越普遍。從天文學到動物學,在現代每一項重大科學發現的背後,都有計算機的參與。美國斯坦福大學的計算生物學家邁克爾·萊維特因“為複雜化學系統創造了多尺度模型”與另兩位研究者分享了2013年諾貝爾化學獎,他指出,今天的筆記本電腦內存和時鐘速度是他在1967年開始獲獎工作時實驗室製造的計算機的1萬倍。“我們今天確實擁有相當可觀的計算能力,”他說,“問題在於,我們仍然需要思考。”
如果沒有能夠解決研究問題的軟件,以及知道如何編寫並使用軟件的研究人員,一台計算機無論再強大,也是毫無用處的。如今的科學研究從根本上已經與計算機軟件聯繫在一起,後者已經滲透到研究工作的各個方面。近日,《自然》(Nature)雜誌將目光投向了幕後,著眼於過去幾十年來改變科學研究的關鍵計算機代碼,並列出了其中10個關鍵的計算機項目。
這台CDC 3600型計算機於1963年交付給位於科羅拉多州博爾德的國家大氣研究中心,研究者在Fortran編譯器的幫助對其進行了編程
語言先驅:Fortran編譯器(1957年)
最初的現代計算機並不容易操作。當時的編程實際上是手工將電線連接成一排排電路來實現的。後來出現了機器語言和彙編語言,允許用戶用代碼為計算機編程,但這兩種語言都需要對計算機的架構有深入的了解,使得許多科學家難以掌握。
20世紀50年代,隨著符號語言的發展,特別是由約翰·巴克斯及其團隊在加州聖何塞的IBM開發的“公式翻譯”語言Fortran,這種情況發生了變化。利用Fortran,用戶可以用人類可讀的指令來編程,例如x = 3 + 5。然後由編譯器將這些指令轉換成快速、高效的機器代碼。
不過,這一過程仍然很不容易。早期的程序員使用打孔卡來輸入代碼,而復雜的模擬可能需要數万張打孔卡。儘管如此,新澤西州普林斯頓大學的氣候學家真鍋淑郎(Syukuro Manabe)還是指出,Fortran讓非計算機科學家也能編程,“這是我們第一次能夠自己給計算機編程”。他和同事們利用這種語言開發的氣候模型是最早取得成功的模型之一。
Fortran發展至今已經到了第八個十年,它仍然廣泛應用於氣候建模、流體動力學、計算化學等學科,這些學科都涉及到復雜線性代數並需要強大的計算機來快速處理數字。Fortran生成的代碼速度很快,而且仍然有很多程序員知道如何編寫。古早的Fortran代碼庫仍然活躍在世界各地的實驗室和超級計算機上。“以前的程序員知道他們在做什麼,”美國海軍研究院的應用數學家和氣候模型師弗蘭克·吉拉爾多說,“他們非常注重內存,因為他們擁有的內存非常少。”
信號處理器:快速傅立葉變換(1965)
當射電天文學家掃描天空時,他們捕捉到的是隨時間變化的複雜信號雜音。為了理解這些無線電波的本質,他們需要看到這些信號作為頻率的函數時是什麼樣的。一種名為“傅里葉變換”的數學過程可以幫到研究人員,但它的效率很低,對於一個大小為N的數據集需要N^2次計算。
默奇森寬視場陣列的部分夜景,這是一個建於澳大利亞西部的射電望遠鏡陣列,使用快速傅里葉變換來收集數據
1965年,美國數學家詹姆斯·庫利和約翰·杜基想出了一種加速該過程的方法。快速傅里葉變換(FFT)通過遞歸(一種通過重複將問題分解為同類的子問題而解決問題的編程方法)將計算傅里葉變換的問題簡化為N log2(N)步。隨著N的增加,速度也會提高。對於1000個點,速度提升大約是100倍;100萬個點則是5萬倍。
這個“發現”實際上是一個再發現,因為德國數學家高斯在1805年就對此進行了研究,但他從未發表過。而詹姆斯·庫利和約翰·杜基做到了,他們開啟了傅里葉變換在數字信號處理、圖像分析、結構生物學等領域的應用,成為應用數學和工程領域的重大事件之一。FFT在代碼中的應用已有很多次,近年一個流行的方案是FFTW,被認為是世界上最快的FFT。
保羅·亞當斯是加州勞倫斯伯克利國家實驗室分子生物物理學和綜合生物成像部門的主任,他回憶稱,當他在1995年改進細菌蛋白質凝膠的結構時,即使使用FFT和超級計算機,也需要“很多個小時,甚至數天”的計算。“如果在沒有FFT的情況下嘗試做這些,我不知道在現實中應該如何做到,”他說,“那可能要花很長時間。”
分子編目:生物數據庫(1965年)
數據庫是當今科學研究中不可或缺的組成部分,以至於人們很容易忘記它們也是由軟件驅動的。過去的幾十年中,數據庫資源的規模急劇膨脹,影響了許多領域,但或許沒有哪個領域的變化會比生物學領域更引人注目。
蛋白質數據庫Protein Data Bank擁有超過17萬個分子結構的檔案,包括這種細菌的“表達子”(expressome),其功能是結合RNA和蛋白質合成的過程
今天,科學家所用的龐大基因組和蛋白質數據庫源於美國物理化學家瑪格麗特·戴霍夫的工作,她也是生物信息學領域的先驅。20世紀60年代初,當生物學家們致力於梳理蛋白質的氨基酸序列時,戴霍夫開始整理這些信息,以尋找不同物種之間進化關係的線索。她與三位合著者於1965年發表了《蛋白質序列和結構圖譜》,描述了當時已知的65種蛋白質的序列、結構和相似性。歷史學家布魯諾·斯特拉瑟在2010年寫道,這是第一個“與特定研究問題無關”的數據集,它將數據編碼在打孔卡中,這使得擴展數據庫和搜索成為可能。
其他“計算機化”的生物數據庫緊隨其後。蛋白質數據庫Protein Data Bank於1971年投入使用,如今詳細記錄了超過17萬個大分子結構。加州大學聖地亞哥分校的進化生物學家拉塞爾·杜利特爾在1981年創建了另一個名為Newat的蛋白質數據庫。1982年,美國國立衛生研究院(NIH)與多個機構合作,成立了GenBank數據庫,這是一個開放獲取的DNA序列數據庫。
這些數據庫資源在1983年7月證明了其存在價值。當時,由倫敦帝國癌症研究基金會蛋白質生物化學家邁克爾·沃特菲爾德領導的團隊,與杜利特爾的團隊各自獨立報導了一個特殊的人類生長因子序列與一種導致猴子出現癌症的病毒蛋白質之間的相似性。觀察結果顯示了一種病毒誘發腫瘤機制——通過模仿一種生長因子,病毒會誘導細胞不受控制地生長。美國國家生物技術信息中心(NCBI)前主任詹姆斯·奧斯特爾說:“這一結果讓一些對計算機和統計學不感興趣的生物學家頭腦裡靈光一閃:我們可以通過比較序列來了解有關癌症的一些情況。”
奧斯特爾還表示,這一發現標誌著“客觀生物學的到來”。除了設計實驗來驗證特定的假設,研究人員還可以挖掘公共數據集,尋找那些實際收集數據的人可能從未想到的聯繫。當不同的數據集連接在一起時,這種力量就會急劇增長。例如,NCBI的程序員在1991年通過Entrez實現了這一點;Entrez是一個可以讓研究人員在DNA、蛋白質和文獻之間自由檢索和比對的工具。
預測領先者:大氣環流模式(1969年)
在第二次世界大戰結束時,計算機先驅約翰·馮·諾伊曼開始將幾年前用於計算彈道軌跡和武器設計的計算機轉向天氣預測問題。真鍋淑郎解釋道,在那之前,“天氣預報只是經驗性的”,即利用經驗和直覺來預測接下來會發生什麼。相比之下,馮·諾伊曼的團隊“試圖基於物理定律進行數值天氣預測”。
新澤西州普林斯頓的美國國家海洋和大氣管理局(NOAA)地球物理流體動力學實驗室的建模系統部門負責人Venkatramani Balaji表示,幾十年來,人們已經熟知這些方程式。但早期的氣象學家無法實際解決這些問題。要做到這一點,需要輸入當前的條件,計算它們在短時間內會如何變化,並不斷重複。這個過程非常耗時,以至於在天氣狀況實際出現之前還無法完成數學運算。1922年,數學家劉易斯·弗萊·理查森花了幾個月時間計算德國慕尼黑的6小時預報。根據一段歷史記載,他的結果是“極不准確的”,包括“在任何已知的陸地條件下都不可能發生的”預測。計算機使這個問題變得很容易解決。
20世紀40年代末,馮·諾伊曼在普林斯頓高等研究院建立了天氣預報團隊。1955年,第二個團隊——地球物理流體動力學實驗室——開始進行他所謂的“無限預測”,也就是氣候建模。
真鍋淑郎於1958年加入氣候建模團隊,開始研究大氣模型;他的同事柯克·布萊恩將這一模型應用在海洋研究中。1969年,他們成功將二者結合起來,創造了《自然》雜誌在2006年所說的科學計算“里程碑”。
今天的模型可以將地球表面劃分為一個個25公里×25公里的正方形,並將大氣層劃分為數十層。相比之下,真鍋淑郎和布萊恩的海洋-大氣聯合模型劃分的面積為500平方公里,將大氣分為9個層次,只覆蓋了地球的六分之一。儘管如此,Venkatramani Balaji表示,“這個模型做得很好”,使研究團隊第一次能夠通過計算機預測二氧化碳含量上升的影響。
數字運算機:BLAS(1979年)
科學計算通常涉及到使用向量和矩陣進行相對簡單的數學運算,但這樣的向量和矩陣實在太多了。但在20世紀70年代,還沒有一套普遍認可的計算工具來執行這些運算。因此,從事科學工作的程序員會將時間花在設計高效的代碼來進行基本的數學運算,而不是專注於科學問題。
加州勞倫斯利弗莫爾國家實驗室的Cray-1超級計算機。在BLAS編程工具於1979年問世之前,並沒有線性代數標準可供研究人員在Cray-1超級計算機等機器上工作
編程世界需要一個標準。1979年,這樣的標准出現了:基本線性代數程序集(Basic Linear Algebra Subprograms,簡稱BLAS)。這是一個應用程序接口(API)標準,用以規範發布基礎線性代數操作的數值庫,如矢量或矩陣乘法。該標準一直發展到1990年,為向量數學和後來矩陣數學定義了數十個基本例程。
美國田納西大學計算機科學家、BLAS開發團隊成員傑克·唐加拉表示,事實上,BLAS把矩陣和向量數學簡化成了和加法和減法一樣基本的計算單元。
美國德克薩斯大學奧斯汀分校的計算機科學家Robert van de Geijn指出,BLAS“可能是為科學計算定義的最重要的接口”。除了為常用函數提供標準化的名稱之外,研究人員還可以確保基於BLAS的代碼在任何計算機上以相同方式工作。該標準還使計算機製造商能夠優化BLAS的安裝啟用,以實現在其硬件上的快速操作。
40多年來,BLAS代表了科學計算堆棧的核心,也就是使科學軟件運轉的代碼。美國喬治·華盛頓大學的機械和航空航天工程師洛雷娜·巴爾巴稱其為“五層代碼中的機械”。而傑克·唐加拉說:“它為我們的計算提供了基礎結構。”
顯微鏡必備:NIH Image(1987年)
20世紀80年代初,程序員韋恩·拉斯班德在馬里蘭州貝塞斯達的美國國立衛生研究院的腦成像實驗室工作。該實驗室擁有一台掃描儀,可以對X光片進行數字化處理,但無法在電腦上顯示或分析。為此,拉斯班德寫了一個程序。
這個程序是專門為一台價值15萬美元的PDP-11小型計算機設計的,這是一台安裝在架子上的計算機,顯然不適合個人使用。然後,在1987年,蘋果公司發布了Macintosh II,這是一個更友好、更實惠的選擇。拉斯班德說:“在我看來,這顯然是一種更好的實驗室圖像分析系統。”他將軟件轉移到新的平台上,並重新命名,建立了一個圖像分析生態系統。
NIH Image及其後續版本使研究人員能在任何計算機上查看和量化幾乎任何圖像。該軟件系列包括ImageJ,一個拉斯班德為Windows和Linux用戶編寫的基於Java的版本;以及Fiji,這是ImageJ的分發版,由德國德累斯頓的馬克斯普朗克分子細胞生物學和遺傳學研究所的Pavel Tomancak團隊開發,其中包括關鍵的插件。“ImageJ無疑是我們所擁有的最基礎的工具,”布洛德研究所(由麻省理工學院和哈佛大學聯合創立)成像平台的計算生物學家貝絲·契米妮說,“我從來沒有和一個使用過顯微鏡,但沒有使用過ImageJ或Fiji的生物學家說過話。”
ImageJ工具在插件的幫助下,可以自動識別顯微鏡圖像中的細胞核
拉斯班德表示,部分原因可能是這些工具是免費的。但威斯康星大學麥迪遜分校的生物醫學工程師Kevin Eliceiri指出,另一個原因是用戶可以很容易地根據自己的需求定制工具。自拉斯班德退休後,Kevin Eliceiri的團隊一直領導著ImageJ的開發。ImageJ提供了一個看似簡單、極簡主義的用戶界面,自20世紀90年代以來基本上沒有改變。然而,由於其內置的宏記錄器(允許用戶通過記錄鼠標點擊和菜單選擇的序列來保存工作流)、廣泛的文件格式兼容性和靈活的插件架構,該工具具有無限的可擴展性。該團隊的編程主管柯蒂斯·魯登表示,有“數以百計的人”為ImageJ貢獻了插件。這些新添加的功能極大擴展了研究人員的工具集,例如在視頻中跟踪對像或自動識別細胞的功能。
Kevin Eliceiri說:“這個程序的目的不是做到一切或終結一切,而是服務於用戶的目標。不像Photoshop和其他程序,ImageJ可以成為你想要的任何東西。”
序列搜索器:BLAST (1990年)
可能沒有什麼能比把軟件名稱變成動詞更能說明文化的相關性了。提到搜索,你會想到谷歌;而提到遺傳學,研究者會立刻想到BLAST。
通過諸如替代、刪除、缺失和重排等方式,生物將進化中的改變蝕刻在分子序列中。尋找序列之間的相似性——特別是蛋白質之間的相似性——可以讓研究人員發現進化關係,並深入了解基因功能。在迅速膨脹的分子信息數據庫中,想要快速而準確地做到這一點並不容易。
瑪格麗特·戴霍夫在1978年提供了關鍵的進展。她設計了一種“點接受突變”矩陣,使研究人員不僅可以根據兩種蛋白質序列的相似程度,還可以根據進化距離來為評估它們的親緣關係。
1985年,弗吉尼亞大學的威廉·皮爾森和NCBI的大衛·利普曼引入了FASTP,這是一種結合了戴霍夫矩陣和快速搜索能力的算法。
數年後,利普曼與NCBI的沃倫·吉什和斯蒂芬·阿特舒爾,賓夕法尼亞州立大學的韋伯·米勒,以及亞利桑那大學的吉恩·邁爾斯一起開發了一種更強大的改進技術:BLAST(Basic Local Alignment Search Tool)。BLAST發佈於1990年,將處理快速增長的數據庫所需的搜索速度,與提取進化上更為遙遠的匹配結果的能力結合起來。與此同時,該工具還可以計算出這些匹配發生的概率。
阿特舒爾表示,計算結果出來得非常快,“你可以輸入搜索內容,喝一口咖啡,搜索就完成了。”但更重要的是,BLAST很容易使用。在一個通過郵寄更新數據庫的時代,沃倫·吉什建立了一個電子郵件系統,後來又建立了一個基於網絡的架構,允許用戶在NCBI計算機上遠程運行搜索,從而確保搜索結果始終是最新的。
哈佛大學的計算生物學家肖恩·艾迪表示,BLAST系統為當時處於萌芽階段的基因組生物學領域提供了一個變革性的工具,即一種根據相關基因找出未知基因可能功能的方法。對於各地的測序實驗室,它還提供了一個新穎的動詞。“它是眾多由名詞變成動詞的例子之一,”艾迪說,“你會說,你正準備BLAST一下你的序列。”
預印本平台:arXiv.org (1991年)
20世紀80年代末,高能物理學家經常將他們已投稿的論文手稿副本郵寄給同行,徵求他們的意見——但只發給少數人。物理學家保羅·金斯帕格在2017年寫道:“處於食物鏈較低位置的人依賴於一線研究者的成果,而非精英機構中有抱負的研究人員則往往身處特權圈以外。”
1991年,當時在新墨西哥州洛斯阿拉莫斯國家實驗室工作的金斯帕格編寫了一個電子郵件自動應答程序,希望建立一個公平的競爭環境。訂閱者每天都會收到預印本列表,每一篇都與文章標識符相關聯。只需通過一封電子郵件,世界各地的用戶就可以從實驗室的計算機系統中提交或檢索論文,並獲得新論文的列表,或按作者或標題進行搜索。
arXiv成立已近30年,擁有約180萬份預印本,全部免費提供,而且每月有超過1.5萬份論文提交,下載量達3000萬次
金斯帕格的計劃是將論文保留三個月,並將內容限制在高能物理學界。但一位同事說服他無限期地保留這些文章。他說:“就在那一刻,它從佈告欄變成了檔案館。”於是,論文開始從比各個領域如潮水般湧來。1993年,金斯伯格將這個系統遷移到互聯網上,並在1998年將其命名為arXiv.org,沿用至今。
arXiv成立已近30年,擁有約180萬份預印本,全部免費提供,而且每月有超過1.5萬份論文提交,下載量達3000萬次。十年前,《自然-光子學》(Nature Photonics)的編輯在評論arXiv創立20週年時寫道:“不難看出為什麼arXiv的服務會如此受歡迎,這個系統讓研究人員能快速而方便地插上旗幟,顯示他們所做的工作,同時避免投稿傳統同行評議期刊時的麻煩和時間成本。”
arXiv網站的成功也促進了生物學、醫學、社會學和其他學科同類預印本網站的繁榮。在如今已出版的數万份關於新冠病毒的預印本中就可以看到這種影響。“很高興看到30年前在粒子物理學界之外被認為是異端的方法,現在被普遍認為是平淡無奇和自然而然的,”金斯伯格說,“從這個意義上說,它就像一個成功的研究項目。”
數據瀏覽器:IPython Notebook (2011年)
2001年,費爾南多·佩雷斯還是一位希望“尋找拖延症”的研究生,當時他決定採用Python的一個核心組件。
Python是一種解釋型語言,這意味著程序是逐行執行的。程序員可以使用一種稱為“讀取-評估-打印循環”(read–evaluate–print loop,簡稱REPL)的計算調用和響應工具,在其中輸入代碼,然後由解釋器執行代碼。REPL允許快速探索和迭代,但佩雷斯指出,Python的REPL並不是為科學目的而構建的。例如,它不允許用戶方便地預加載代碼模塊,也不允許打開數據可視化。因此,佩雷斯自己編寫了另一個版本。
結果就是IPython的誕生,這是一個“交互式”Python解釋器,由佩雷斯在2001年12月推出,共有259行代碼。十年後,佩雷斯與物理學家布萊恩·格蘭杰和數學家埃文·帕特森合作,將該工具遷移到web瀏覽器上,推出了IPython Notebook,開啟了一場數據科學革命。
與其他計算型Notebook一樣,IPython Notebook將代碼、結果、圖形和文本合併在一個文檔中。但與其他類似項目不同的是,IPython Notebook是開源的,邀請了大量開發者社區的參與其中。而且它支持Python,一種很受科學家歡迎的語言。2014年,IPython演變為Jupyter,支持大約100種語言,允許用戶在遠程超級計算機上探索數據,就像在自己的筆記本電腦上一樣輕鬆。
《自然》雜誌在2018年寫道:“對於數據科學家,Jupyter實際上已經成為一個標準。”當時,在GitHub代碼共享平台上有250萬個Jupyter Notebook;如今,這一數字已經發展到1000萬個,在2016年引力波的發現,以及2019年的黑洞成像工作中,它們都發揮了重要的作用。佩雷斯說:“我們對這些項目做出了很小的貢獻,這是非常值得的。”
快速學習器:AlexNet(2012年)
人工智能有兩種類型。一種是使用編碼規則,另一種則通過模擬大腦的神經結構來讓計算機“學習”。加拿大多倫多大學的計算機科學家杰弗裡•辛頓表示,幾十年來,人工智能研究人員一直認為後者是“一派胡言”。但在2012年,他的研究生亞力克斯·克里澤夫斯基和伊爾亞·蘇茨克維證明了事實並非如此。
在一年一度的ImageNet比賽中,研究人員被要求在一個包含100萬張日常物體圖像的數據庫中訓練人工智能,然後在一個單獨圖像集上測試生成的算法。辛頓表示,當時最好的算法錯誤分類了大約四分之一的圖像。克里澤夫斯基和蘇茨克維的AlexNet是一種基於神經網絡的“深度學習”算法,它將錯誤率降低到了16%。辛頓說:“我們基本上把錯誤率減半了,或者說幾乎減半了。”
辛頓還指出,該團隊在2012年的成功反映了足夠大的訓練數據集與出色的編程,以及新出現的圖形處理單元的強大能力的結合。圖形處理單元是最初設計用來加速計算機視頻性能的處理器。“突然之間,我們可以將(算法)運行速度提高30倍,”他說,“或者說,學習多達30倍的數據。”
真正的算法突破實際上發生在三年前,當時辛頓的實驗室創建了一個神經網絡,可以比經過幾十年改進的傳統人工智能更準確地識別語音。“只是稍微好一點,”辛頓說,“但這已經預示了某些東西。”
這些成功預示著深度學習在實驗室研究、臨床醫學和其他領域的崛起。通過人工智能的深度學習,手機能夠理解語音查詢,圖像分析工具能夠很容易地在顯微照片中識別出細胞;這就是為什麼AlexNet會成為眾多從根本上改變科學,也改變世界的工具之一。(任天)