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