2015-01-15
多年以來,遺傳學家Helene Royo一直都使用商業化的計算機軟件完成她的數據分析工作。她提取正在發育中的小鼠精子細胞的DNA進行試驗分析,然后用一種名叫GeneSpring的軟件對試驗結果進行研究。“作為一名科學家,我希望對我正在開展的工作有一個全面的了解。但是這種軟件分析滿足不了我的需求,使用這種軟件時我只能按按電腦鍵盤,最后得到一個結果而已。” Royo這樣介紹道。Royo的主要工作是比較不同染色體的遺傳活性(genetic activity),隨著她的工作不斷的深入,她逐漸意識到,商業化的計算機軟件已經無法滿足她在科研工作中對數據處理的需求了。
在Royo剛剛開始做博后的時候,她拿到了一份基因組測序試驗的結果,當時她面臨一個選擇,將這些數據交給相關的專家進行分析,或者是自己學著去分析這些數據。她選擇了后者,開始學習如何使用免費的開源統計軟件R來進行數據分析。在Royo供職的瑞士Friedrich Miescher生物醫學研究所(Friedrich Miescher Institute for Biomedical Research in Basel, Switzerland)里,R軟件已經被用于常規的數據統計工作。但是Royo跟隨的卻是一個更大的潮流,很多學術科研機構都在嘗試擺脫商業化的數據分析軟件,而R軟件就是一個很好的選擇。
R軟件之所以如此受歡迎,除了因為它是免費軟件之外,還有一個原因就是因為它能以不同的面目面對不同的使用者。首先,也是重要的一點,需要用命令行形式進行輸入的編程語言對于非程序員而言就是噩夢。但是R語言的初學者就可以越過這些復雜的編程步驟,使用預設的一套軟件,這里面包含有各種統計分析命令和圖形化的數據形式。這樣一些預制的軟件就在“黑匣子”般的商業化的軟件與專業的程序員之間建起了一個中間地帶。“R語言讓一切都變得非常簡單,能夠滿足我的所有需要。” Rojo評價道。
實際上,這也正是R語言的開發者在20世紀90年代開發這套工具時的初衷和設計。新西蘭奧克蘭大學(University of Auckland in New Zealand)的統計學家Ross Ihaka和 Robert Gentleman對計算機非常感興趣,但是他們找不到能夠滿足他們需要的軟件。于是他們決定自己開發一套軟件,完成數據分析和統計的工作。他們將這套工具命名為R語言,有一部分原因是因為他們倆名字的第一個字母都是“R”,另外一部分原因是因為當時有一套非常流行的編程語言名叫“S”,所以他們取名“R”。
在互聯網剛剛興起的年代,R語言就迅速獲得了全世界需要統計學軟件,同時也愿意貢獻自己想法的科學家的廣泛關注。Ihaka和Gentleman決定向所有人免費開放R語言的源代碼。很快,擅長寫程序的科學家就利用R語言開發出了各種軟件包和預設的程序,以滿足各種不同的工作需要。據Gentleman介紹,他也可以為從事天文學研究的人寫一套程序,但是如果是天文學家自己來寫這套程序,那肯定會好用得多。
數學解決方案
Karline Soetaert是荷蘭皇家海洋研究所(Royal Netherlands Institute for Sea Research in Yerseke)的一名海洋學家,她在2008年時想到要對Scheldt河河口里的浮游生物(zooplankton)的健康狀況做一番了解。Soetaert想要沿著Scheldt河測算一下這些浮游生物的死亡速度,但是當時還沒有相應的R語言軟件可供她使用。為了解決這個問題,她與另外兩名生態學家使用R語言開發了deSolve軟件,這也是一款使用R語言編寫的,能夠解微分方程(differential equations)的軟件。“其他的軟件也可以解決這個問題,但是都非常貴,而且都不是開源軟件。” Soetaert著重強調道。現在,deSolve軟件已經被廣泛使用,比如流行病學家在構建感染性疾病模型時,遺傳學家在研究基因調控網絡問題時,新藥研發人員在了解藥物的藥代動力學問題時都會用到deSolve軟件。
2003年是R語言問世十周年的日子,當時科學家已經開發了200多款不同的R語言軟件,而且也出現了一批引用“R項目(R Project)”的文獻。到今天為止,已經誕生了6000多個R語言軟件包,可以用來解決各種各樣、遍布各個科研領域的問題。其中有些軟件,比如Bioconductor(參見go.nature.com/s7mq39)能夠幫助科研人員對人類基因組與荷蘭人基因組(Neanderthal genome)進行比對;有些軟件,比如IPMpack(參見go.nature.com/cyhons)能夠對種群增長(population growth)進行建模;有些軟件,比如quantmod(參見go.nature.com/jxqasm)能夠幫助科研人員預測產權價格(equity prices);還有些軟件,比如ggplot2(參見ggplot2.org)能夠幫助科研人員使用漂亮的圖片將數據結果展示出來。專業人士還能夠利用R語言,比如knitr(http://yihui.name/knitr)寫出底稿,將原始的數據至于其中,供讀者使用。去年在Elsevier出版社的Scopus數據庫中,平均在每100篇專業文獻當中就大約有1篇文獻用到了R語言,或者R語言相關軟件,在農業科學和環境科學相關文獻中,這個比例會更高,詳見附圖“R語言的快速上漲趨勢”。
R語言使用小貼士
*可以在R的網站CRAN (Comprehensive R Archive Network)http://cran.r-project.org上安裝R語言。這里提供了關于這個系統的介紹: go.nature.com/jh9jb8。
*很多科研人員都建議使用功能強大的、免費的交互式軟件RStudio,詳見www.rstudio.com。
*有很多在線學習教程,比如DataCamp (go.nature.com/qndp6w), rOpenSci (ropensci.org), Software Carpentry (go.nature.com/wg3s9u)和R-bloggers (www.r-bloggers.com)。
*到go.nature.com/zrhdkj網頁上瀏覽本文的在線版,獲取更多R語言軟件包信息。
統計學威力
對于很多使用者而言,R語言作為一種統計學軟件是非常優秀的。美國田納西大學(University of Tennessee in Knoxville)的統計學家Robert Muenchen對各種統計學軟件都做過分析,他認為,R語言在統計學方面的功力與SPSS或SAS這些專業化的統計學軟件不相上下。近十年來,R語言不僅跟上了統計學軟件市場的領頭羊,甚至已經取代了它們的地位。據Muenchen介紹,R語言非常有可能在今年夏天的時候成為頭號統計學軟件。
Bioconductor軟件也是一款基于R語言開發的軟件,主要應用于基因組學研究領域和分子生物學研究領域。Bioconductor軟件能夠幫助科研人員對海量的遺傳序列數據進行處理和比較,對Gene Expression Omnibus等數據庫進行檢索,或者將數據上傳到數據庫當中等。該軟件包含1000多個軟件包,其中有一些軟件還可以將數百萬個由新一代DNA測序儀產出的DNA片段與已注釋基因一一對應起來。
在深入學習R語言的過程中,Royo也在Friedrich Miescher研究所生物信息學組的組長——Michael Stadler的指導下接受了強化訓練。Royo花了大約半年來鉆研R語言和Bioconductor軟件。但是美國加利福尼亞州伯克利數據科學研究所(Berkeley Institute for Data Science in California)的生態學家,rOpenSci組織(該組織旨在幫助科研人員接受并使用R語言,促進R語言的發展)的創始人Karthik Ram認為,還有更多的學習機會。Ram等人會針對科研人員的問題免費教授R語言課程,沒有任何編程技巧的人都可以學習。
美國圣地亞哥州立大學(San Diego State University in California)的生態學家Megan Jennings就接受了Ram等人的培訓。Jennings跟蹤山貓(bobcats)、美洲獅(mountain lions)和其他野生動物,了解它們的運動情況。用了將近一年的時間,使用了36臺攝像機,拍攝了40多萬張照片,Jennings希望能夠在一年的某一個時間跟蹤某個動物的活動情況。一開始,Jennings決定用人工挑選照片,并且使用PRESENCE軟件處理的方法來完成這項任務。后來在Ram的幫助下,Jennings自己寫了一個R語言程序,能夠自動識別帶標記的照片,并將照片提純,然后將特定的數據輸送給另外一個R語言建模工具。“我以前要花一個小時才能完成的工作,現在只需要5分鐘就搞定了。” Jennings介紹道。
R語言優勢就是它的在線支持能力。據Muenchen介紹,在統計學論壇中,與R語言相關的問題在所有商業化的統計軟件當中名列第一。
“我們經常能夠看到,有人在論壇上發出了一個提問貼,不到半個小時,相關軟件的開發者就會出來回答這個問題。” Muenchen介紹道。這種快速反應能力就是從事基礎科研工作的科學家關注的。Royo還指出,她幾乎能夠在網上找到任何問題的答案。Royo現在基本上已經能夠完成她所有的數據處理和分析工作,同時也給很多同事提供了大量的幫助。“不過我每天也都會在谷歌上尋找答案。” Royo說道。學習R語言不僅教會了Royo編程技巧,同時也讓她能夠對其他科學家的統計工作有更加深刻的認識。
據Ram介紹,雖然并不是每一位科學家都熱衷于學習R語言編程技巧,但是與Python等語言(更不要說Perl或C語言了)相比,R語言還是要容易多了。據Muenchen介紹,會有越來越多的科研人員樂于接受用戶友好式的軟件,而非學習一門編程語言。比如與Royo一樣,遺傳學家Rabih Murr在博后期間也學習了同一門R語言課程,但是他并沒有花那么多的時間去好好做練習。Murr認為,學習R語言,并且能夠用R語言解決相應的科學問題也需要下一番功夫,他表示,這是一個按照重要性先后排序的問題。但是自從Murr今年當上了瑞士日內瓦大學(University of Geneva in Switzerland)實驗室主任之后,他也打算雇一個有過R語言開發經驗的員工了。
與其他的技能一樣,學習R語言編程也并非一日之功。但是Jennings認為投入產出比是非常高的。她說道:“這就好比投資,現在花一番功夫,就能夠為日后的工作節省時間,而且還能夠學到一門非常有用的新技能,能夠解決我們科學家經常會碰到的各種問題。”