Michael Levitt 是加利福尼亞州斯坦福大學的計算生物學家,他因在化學結構建模的計算策略方面的工作獲得了2013年諾貝爾化學獎。他指出,今天的膝上型電腦的記憶體和時鐘速度是他在1967年開始獲獎工作時實驗室製造的計算機的1萬倍。
的確,計算機的發明極大的提升了效率,釋放了生產力,也成為現代人不可不會的生存技能。
近日,Nature就整理了10項改變科學的計算機專案,arXiv、IPython等均在列。
下面是這10個專案的詳細介紹:
語言先驅:Fortran編譯器(1957年)在1950年代這個計算機並不發達的時代,程式設計還是透過手工將電線連線成電路組完成的。當後來有了機器語言和組合語言,使用者可以用程式碼進行程式設計了,但即便省去了手上的工作,人們卻面臨另一個難題——需要對計算機結構有深入的瞭解,這讓許多計算機專家也束手無策。
這種情況在20世紀50年代隨著符號語言的發展而改變,特別是由John Backus和他的團隊在加州聖何塞的IBM開發的「公式翻譯」語言Fortran。
使用Fortran,使用者可以使用人類可讀的指令對計算機進行程式設計,例如x=3+5。然後,編譯器會將這種指令轉化為快速、高效的機器程式碼。
圖:CDC 3600計算機,於1963年交付給科羅拉多州博爾德市的國家大氣研究中心,在Fortran編譯器的幫助下進行了程式設計
在早期,程式設計師使用打孔卡來輸入程式碼,一個複雜的模擬可能需要數萬個打孔卡。不過,新澤西州普林斯頓大學的氣候學家Syukuro Manabe說,Fortran讓非計算機科學家的研究人員也能使使用程式設計。「第一次,我們能夠自己給的計算機程式設計,」Manabe說。他和他的同事們使用該語言開發了首批成功的氣候模型之一。
如今Fortran已經發展到第八個十年了,它仍然被廣泛地應用於氣候建模、流體動力學、計算化學等,這些學科涉及複雜的線性代數,並需要強大的計算機來快速處理數字。由此產生的程式碼速度很快,而且仍然有很多程式設計師知道如何編寫它。復古的Fortran程式碼庫仍然活躍在實驗室和全球的超級計算機上。
訊號處理器:快速傅立葉變換(1965年)當射電天文學家掃描天空時,他們捕捉到了隨著時間變化的複雜訊號的嘈雜聲。為了瞭解這些無線電波的性質,他們需要看到這些訊號作為頻率的函式是什麼樣子。一種被稱為傅立葉變換的數學可以幫到他們。可問題是,它的效率太低了,對於一個大小為N的資料集來說,就需要進行N2次計算。
1965年,美國數學家James Cooley和John Tukey研究出了一種加速方法:快速傅立葉變換(FFT),它利用遞迴(一種「分而治之」的程式設計方法,在這種方法中,一個演算法反覆地重新應用自己,將計算傅立葉變換的問題簡化到只有N個對數2(N)步。隨著N的增長,速度也會提高。
其實,在1805年,德國數學家高斯就研究出了它,但他從未發表過。而Cooley和Tukey的「再發現」,卻開啟了數字訊號處理、影象分析、結構生物學等方面的應用。FFT已經實現了很多次,目前有一種流行的方案叫做FFTW。
圖:Murchison Widefield Array的一部分夜景,這是西澳大利亞州的射電望遠鏡,使用快速傅立葉變換進行資料收集
分子目錄員:生物資料庫(1965年)在過去的幾十年裡,資料庫得到了大規模的發展,而且影響了很多領域,但是,最令人矚目的還屬生物學。
今天,我們看到龐大的基因組和蛋白質資料庫,這起源於Margaret Dayhoff的工作,她是美國物理化學家,也是生物資訊學領域的先驅。
在20世紀60年代初,當生物學家們努力拆解蛋白質的氨基酸序列時,Dayhoff整理了這些資訊,以找尋不同物種之間進化關係的線索。
她與另外三位合著者的《蛋白質序列和結構圖譜》(Atlas of Protein Sequence and Structure)於1965年首次出版,這本書描述了當時已知的65種蛋白質的序列、結構和相似性。這本圖冊中的資料,演化為後來的蛋白質資訊資源資料庫 PIR( Protein Information Resource ) 。
其他「計算機化」的生物資料庫也隨之而來。蛋白質資料庫於1971年上線,今天它詳細記錄了17萬多個大分子結構。1981年,加州大學聖地亞哥分校的進化生物學家Russell Doolittle建立了另一個名為Newat的蛋白質資料庫。而1982年,該資料庫釋出,成為美國國立衛生研究院維護的DNA檔案庫GenBank。
圖:蛋白質資料庫有一個超過17萬個分子結構的檔案,包括這個細菌的 "表達組",它結合了RNA和蛋白質合成的過程
1983年7月,這樣的資源在證明了其存在的價值,當時,由倫敦帝國癌症研究基金的蛋白質生物化學家邁克爾-沃特菲爾德和杜利特爾領導的獨立團隊,報告了一種特殊的人類生長因子序列與一種猴子身上致癌的病毒蛋白質之間的相似性。這一觀察結果提出了一種由病毒引起腫瘤發生的機制--透過模仿一種生長因子,病毒會誘導細胞不受控制地生長。
除了設計實驗來測試特定的假設,研究人員還可以挖掘公共資料集,尋找那些實際收集資料的人可能從未想到的聯絡。
當不同的資料集被連結在一起時,這種力量就會急劇增長--1991年,NCBI的程式設計師透過Entrez實現了這一目標,Entrez是一個允許研究人員從DNA到蛋白質再到文獻,然後再返回的工具。
位於馬里蘭州貝塞斯達的NCBI現任代理主任Stephen Sherry在研究生時期就使用過Entrez。「我記得當時我覺得它很神奇。」他說。
預測領先者:大氣迴圈模型(1969年)第二次世界大戰結束時,計算機先驅約翰-馮-諾依曼開始將幾年前還在計算彈道軌跡和武器設計的計算機轉向天氣預報問題。Manabe解釋說,在此之前,"天氣預報只是經驗性的",利用經驗和直覺來預測接下來會發生什麼。相比之下,馮-諾依曼的團隊 "試圖根據物理定律進行數值天氣預測"。
位於新澤西州普林斯頓的美國國家海洋和大氣管理局地球物理流體動力學實驗室的建模系統部負責人Venkatramani Balaji說,幾十年來,這些方程已經為人所知。但早期的氣象學家無法實際解決這些問題。
要做到這一點,需要輸入當前的條件,計算它們在短時間內會如何變化,然後重複。這個過程非常耗時,以至於在天氣本身到來之前,數學都無法完成。1922年,數學家劉易斯-弗萊-理查德森花了幾個月的時間來計算德國慕尼黑的6小時預報。根據一份歷史資料,結果是 "非常不準確",包括 "在任何已知的陸地條件下都不可能發生 "的預測。
計算機使這個問題變得容易解決。
20世紀40年代末,馮-諾依曼在普林斯頓高等研究院成立了他的天氣預測小組。1955年,第二個小組:地球物理流體動力學實驗室,開始了他所謂的 "無限預報"--即氣候建模的工作。
Manabe於1958年加入氣候建模團隊,開始研究大氣模型;他的同事Kirk Bryan則研究海洋模型。1969年,他們成功地將兩者結合起來,創造了2006年《自然》雜誌所說的科學計算的 "里程碑"。
今天的模型可以將地球表面劃分為25×25公里的方塊,將大氣層劃分為幾十層。相比之下,Manabe和Bryan的海洋-大氣組合模型5使用了500公里的方塊和9個層次,只覆蓋了地球的六分之一。不過,Balaji說,"那個模型還是做得很好",使該團隊首次能夠在矽片中測試二氧化碳水平上升的影響。
數學運算器:BLAS(1979年)
科學計算通常涉及使用向量和矩陣進行相對簡單的數學運算。它們的數量實在是太多了。但在20世紀70年代,還沒有一套普遍認同的計算工具來執行這些運算。因此,在科學領域工作的程式設計師會把時間花在設計高效的程式碼來進行基礎數學運算上,而不是專注於科學問題。
程式設計世界需要的是一個標準。在1979年,它得到了一個標準:基本線性代數子程式,或BLAS6。
這個標準一直髮展到1990年,為向量數學和後來的矩陣數學定義了幾十個基本例程。位於諾克斯維爾的田納西大學的計算機科學家Jack Dongarra說,實際上,BLAS將矩陣和向量數學還原成了和加減法一樣基本的計算單位。
圖:Cray-1超級計算機:在1979年推出BLAS程式設計工具之前,沒有線性代數標準供研究人員在加州勞倫斯利弗莫爾國家實驗室的Cray-1超級計算機等機器上工作。
德克薩斯大學奧斯汀分校的計算機科學家Robert van de Geijn說,BLAS "可能是為科學計算定義的最有影響的介面"。除了為常見功能提供標準化的名稱外,研究人員還可以確保基於BLAS的程式碼在任何計算機上以同樣的方式工作。該標準還使計算機制造商能夠最佳化BLAS的實現,使其在硬體上快速執行。
40多年過去了,BLAS代表了科學計算堆疊的核心,是科學軟體的程式碼。華盛頓特區喬治華盛頓大學的機械和航空航天工程師Lorena Barba稱其為 "五層程式碼中的機械"。
顯微鏡必備: NIH Image(1987)
20世紀80年代早期,程式設計師 Wayne Rasband 在位於馬里蘭州貝塞斯達的美國國立衛生研究院研究所的腦成像實驗室工作。研究小組使用掃描器對 x 射線膠片進行數字化處理,但無法在電腦上進行顯示或分析。所以拉斯班德寫了一個程式來做這件事。
這個程式最初是專門為一臺價值15萬美元的 PDP-11小型計算機設計的,這是一臺安裝在機架上的非個人電腦。然後,在1987年,蘋果公司釋出了 Macintosh II,這是一個更友好、更實惠的選擇。拉斯班德說: “在我看來,很明顯,作為一種實驗室影象分析系統,這種方法會工作得更好。”他將自己的軟體移植到新平臺上,並重新命名,建立了一個影象分析生態系統。
NIH Image及其後代使研究人員能夠在任何計算機上檢視和量化幾乎任何影象。
這個軟體系列包括 ImageJ,這是一個由 Rasband 為 Windows 和 Linux 使用者編寫的基於 java 的版本,以及 Fiji,一個由 Pavel tomanchak 的團隊在德國德累斯頓的 Max Planck 分子細胞生物學和遺傳學研究所開發的 ImageJ 分發版,其中包括關鍵的外掛。“ ImageJ 無疑是我們擁有的最基礎的工具,”計算生物學家貝絲 · 西米尼說,“我從來沒有和使用過顯微鏡但沒有用過 ImageJ 或 Fiji的生物學家交談過。”
圖:mageJ 工具在一個外掛的幫助下,可以在顯微鏡影象中自動識別細胞核
序列搜尋器: BLAST (1990)
也許沒有什麼比把軟體名稱變成一個動詞更能說明文化相關性了。一提到搜尋,就會想到谷歌。而對於遺傳學,則會想到 BLAST。
1978年,戴霍夫為解決這個謎題提供了關鍵的進展。她設計了一個點接受突變矩陣(point accepted mutation matrix),研究人員可以根據兩種蛋白質序列的相似程度,以及它們之間的進化距離來評估它們之間的關係。
1985年,夏洛茨維爾弗吉尼亞大學的 William Pearson 和 NCBI 的 David Lipman 引入了 FASTP 演算法,該演算法結合了 Dayhoff 的矩陣和快速搜尋的能力。
多年以後,Lipman 與 NCBI 的 Warren Gish 和史蒂文·阿爾茨契爾,賓夕法尼亞州立大學的 Webb Miller 和圖森亞利桑那大學的 Gene Myers 一起開發出了一種更加強大的改進技術: BLAST (Basic Local Alignment Search Tool)。BLAST 於1990年釋出,將處理快速增長的資料庫所需的搜尋速度與提取進化上更為遙遠的匹配結合起來。同時,這個工具可以計算出這些匹配發生的機率有多大。
結果是令人難以置信的快速,阿特舒爾說。“你可以進行搜尋,喝一口咖啡,搜尋就完成了。”但更重要的是,它很容易使用。在資料庫透過郵寄更新的時代,Gish 建立了一個電子郵件系統,後來又建立了一個基於網路的架構,允許使用者在 NCBI 的計算機上遠端進行搜尋,從而確保他們的搜尋結果始終是最新的。
這個系統為當時剛剛起步的基因組生物學領域提供了一個變革性的工具——一種根據未知基因的相關基因推算出未知基因可能出現的可能性。
預印本平臺:arXiv.org(1991)
1991年,當時在新墨西哥州洛斯阿拉莫斯國家實驗室的 Ginsparg 寫了一封電子郵件自動應答,以平衡競爭環境。
訂閱者每天收到預印本的列表,每個列表與一個文章識別符號相關聯。透過一封電子郵件,世界各地的使用者可以從實驗室的計算機系統提交或檢索一篇文章,獲得新文章的列表,或者按作者或標題進行搜尋。
起初,金斯帕格的計劃是將文章保留三個月,並將內容限制在高能物理學界。但一位同事說服他無限期保留這些文章。從此,論文如潮水般湧來。
到了1993年,Ginsparg 把這個系統移植到了網際網路上,1998年,他把它命名為 arxiv. org。
現在,arXiv 已經成立30年了,它收藏了大約180萬份預印本,而且都是免費提供的,每個月下載量達到3000萬次,提交量超過15000份。
這個系統為研究人員提供了一種快速方便的方式,可以透過一個標識,顯示他們在什麼時候做了什麼,避免了在傳統期刊上進行同行評審所需的麻煩和時間。
資料瀏覽器: IPython Notebook (2011)
2001年,Fernando Pérez 還是一名“尋找拖延症”的研究生,當時他決定採用 Python 的一個核心元件。
Python是一個可解釋性語言,這意味著程式是逐行執行的。程式設計師可以使用一種稱為讀取-評估-列印迴圈(REPL:read–evaluate–print loop )的計算呼叫和響應工具,在這種工具中,他們輸入程式碼,然後由直譯器執行程式碼。
REPL 允許快速的探索和迭代,但是 pérez 指出 Python 不是為科學而構建的。例如,它不允許使用者輕鬆地預載入程式碼模組,也不允許開啟資料視覺化。於是佩雷斯寫下了他自己的版本。
其結果就是 IPython,這是一個“互動式”Python 直譯器,佩雷斯在2001年12月公佈了它的全部259行程式碼。
十年後,佩雷茲與物理學家布萊恩 · 格蘭傑和數學家埃文 · 帕特森一起,將這個工具移植到了網路瀏覽器上,釋出了 IPython Notebook,並開啟了一場資料科學革命。
與其他計算型notebook一樣,IPython Notebook 將程式碼、結果、圖形和文字合併到一個文件中。但與其他此類專案不同的是,IPython Notebook 是開源的,邀請了大量開發者社群的貢獻。它還支援 Python這種科學家們喜歡的語言。2014年,IPython 演變成了“Jupyter”,支援100多種語言,允許使用者在遠端超級計算機上探索資料,就像在自己的膝上型電腦上一樣輕鬆。
《自然》雜誌在2018年寫道: “對於資料科學家來說,Jupyter 已經成為了行業標準”。當時,GitHub 程式碼共享平臺上有250萬 Jupyter notebooks; 如今,已有近1000萬,其中包括記錄2016年引力波發現和2019年黑洞成像的notebooks。佩雷斯表示: “我們為這些專案做出了一點貢獻,這是非常值得的。”
快速學習器: AlexNet (2012)
人工智慧通常有兩種型別。一種使用編碼規則,另一種使計算機透過模擬大腦的神經結構來“學習”。
計算機科學家Geoffrey Hinton曾表示,幾十年來,人工智慧研究人員一直認為後一種方法是“無稽之談”。2012年,Hinton 的研究生 Alex Krizhevsky 和 Ilya sutskiver 證明了事實並非如此。
在 ImageNet比賽中,研究人員在一個包含100萬張日常物品影象的資料庫中訓練人工智慧,然後在一個單獨的影象集上測試得出的演算法。Hinton說,當時,最好的演算法錯誤分類了大約四分之一。Krizhevsky 和 sutskiver 的 AlexNet 是一種基於神經網路的“深度學習”演算法,它將錯誤率降低到了16% 。
Hinton表示,該團隊在2012年的成功反映了大量訓練資料集、出色的程式設計和新出現的圖形處理單元(最初設計這些處理器是為了加速計算機影片效能)的強大能力的結合。“突然之間,我們可以將(演算法)執行速度提高30倍,或者在30倍於此的資料上學習。”
AlexNet的勝利預示著深度學習在實驗室、醫學等領域的興起。這就是為什麼手機能夠理解語音查詢,也是為什麼影象分析工具能夠輕而易舉地在顯微照片中挑出細胞。這就是為什麼 AlexNet 在許多工具中佔有一席之地,而這些工具從根本上改變了科學,以及世界。
參考連結:
https://www.nature.com/articles/d41586-021-00075-2