发布时间:2015-01-15作者:诺为尔基因浏览次数:2978
Nature:与R语言一起探索未知的世界
在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认为投入产出比是非常高的。她说道:“这就好比投资,现在花一番功夫,就能够为日后的工作节省时间,而且还能够学到一门非常有用的新技能,能够解决我们科学家经常会碰到的各种问题。”