Shell、Perl、Python还是R--生物信息学数据处理语言

解增言

2020-04-10 14:43

生物信息学大致有两个大的研究方向,一个是偏计算机的生物信息学工具和软件开发,例如开发序列比对的算法及工具;另一个是以生物学问题为导向的研究,如基因组测序及后续的数据分析。

Mitochondria Genome

由于对执行效率有较高的要求,新的算法和软件开发一般选用编译语言如C语言。但在做数据分析时,经常需要写一些处理临时任务的程序,有时甚至写好只用一次。编译语言尽管执行效率高,但开发的时间成本也大,而脚本语言则开发简便快捷,所以脚本语言就成了生物信息学数据处理的首选语言。

生物信息学领域常用的脚本语言有PerlPythonR及Shell等,那么对于初学者来说,到底该选哪种语言呢?

Perl在生物信息学领域曾经风光无限,是从事生物信息学研究必学的语言。但近年随着Python语言的兴起,Perl的地位每况愈下。Perl最重要的特性是它内部集成了正则表达式的功能,因此在文本处理领域应用广泛。其语法灵活多变,实现同一种功能有很多种写法。但其多变的语法是一把双刃剑,也正是这种特性葬送了Perl的前途。开发者经常会发现一个月前写的程序连自己都看不懂了,尤其是那些不喜欢在程序中写注释的人。Perl有时甚至被戏称为“只写语言”。

尽管Perl已风光不再,但瘦死的骆驼比马大,目前很多流行的生物信息学工具还是用Perl开发的,BioPerl也为我们提供了功能丰富的模块,它在生物信息学领域还是占有一席之地。

Perl

Perl相比,Python的语言的语法非常严谨,连代码的逻辑块都是由缩进的空白来界定的。Python的语法非常简单,适合初学者。同时Python的功能非常强大,在大数据处理、人工智能、web应用开发、网络爬虫等领域也有广泛的应用。近两年,Python已经成为了最流行的编程语言。

Python

R语言是一门主要用来统计和作图的语言,在矩阵处理和数据可视化领域应用较多。另外,芯片数据和新一代测序(NGS)数据处理也有不少R包可用。R语言的语法接近自然语言,简单易学。很多发表的生物信息学领域的文章中漂亮的插图都是用R语言绘制的。

R

如果把这几种语言比作几种生物的话,那么其中的PerlPython的生态位比较接近,在激烈的竞争和选择下,Python有取代Perl的趋势;但R语言的应用领域有些不同,被看做是一种统计语言,跟Python占据的是不同的生态位,将继续与Python共存很长一段时间。

与上面三种脚本语言不同,Shell脚本语言与Linux命令密切相关,被看做是一种系统管理语言。Shell语言本身的执行效率很低,但通过把其它语言开发的工具整合到一起,可以起到事半功倍的效果。在开发生物信息数据处理管道时,Shell可以用非常少的代码将各种语言开发的工具整合到一起。因此Shell与其它几种脚本语言并没有直接的竞争关系。

Shell

绕了一大圈,那么学习生物信息学到底该学哪种脚本语言呢?Perl能做的,Python基本都能做,但Python还可以干更多的事情如机器学习,这两种语言建议重点学习PythonPerl了解一下即可。R和Shell在自己的应用领域也不可替代,建议也学习一下。当然,每个人的喜好和兴趣不一样,见仁见智。语言只是工具,编程思想和算法才是最重要的!