为什么Perl在生物学研究中如此广泛地使用?

Kev*_*vin 29 perl bioinformatics biometrics

作为一名学生,我在生物研究所担任支持人员,Perl似乎随处可见.不是每个项目都有,但似乎超过一半的人在他们的办公室/桌面上都有一些Perl书.

为什么Perl在生物学中使用了这么多?

mob*_*mob 47

林肯斯坦在他的文章中强调了Perl对生物信息学的一些拯救: Perl如何拯救人类基因组计划.

从他的分析:

我认为有几个因素是有责任的:

  1. Perl非常适合切片,切块,扭曲,拧紧,平滑,总结和修改文本.虽然生物科学现在确实涉及大量的数值分析,但大多数主要数据仍然是文本:克隆名称,注释,注释,书目参考.甚至DNA序列都是文本的.互换不兼容的数据格式是文本修改与一些创造性猜测相结合的问题.Perl强大的正则表达式匹配和字符串操作运算符以一种与任何其他现代语言不相称的方式简化了这项工作.

  2. Perl很宽容.生物数据通常是不完整的,字段可能会丢失,或者一旦出现多次就会出现的字段(例如,因为实验是一式两份进行的),或者数据是手工输入的,并不完全符合预期的格式.如果值为空或包含奇数字符,Perl并不特别介意.可以编写正则表达式来拾取和纠正数据输入中的各种常见错误.当然,这种灵活性也可能是一种诅咒.我在下面更多地讨论Perl的问题.

  3. Perl是面向组件的.Perl鼓励人们用小模块编写软件,使用Perl库模块或使用经典的Unix工具导向方法.可以使用管道,系统调用或套接字将外部程序轻松合并到Perl脚本中.Perl5引入的动态加载器允许人们使用C例程扩展Perl语言,或者使整个编译库可用于Perl解释器.目前正在努力将世界上所有关于生物数据的智慧收集到一组称为"bioPerl"的模块中(稍后将在稍后在Perl期刊上发表的文章中详细讨论).

  4. Perl易于编写和快速开发.解释器不需要您提前声明所有函数原型和数据类型,新变量根据需要弹出,调用未定义函数只会导致函数错误需要.调试器与Emacs配合良好,可以实现舒适的交互式开发.

  5. Perl是一种很好的原型语言.因为Perl是快速而又脏的,所以在将它们转换为快速编译语言之前,在Perl中构建新算法通常是有意义的.有时事实证明Perl足够快,因此算法不必移植; 更频繁的是,可以在C中编写算法的小核心,将其编译为动态加载的模块或外部可执行文件,并将其余的应用程序保留在Perl中(对于以这种方式实现的复杂基因组映射应用程序的示例,请参阅http://waldo.wi.mit.edu/ftp/distribution/software/rhmapper/).

  6. Perl是Web CGI脚本的一门优秀语言,随着越来越多的实验室转向Web发布数据,Perl的重要性日益增加.


bri*_*foy 16

真正的答案可能与Perl的关系不如你想象的那么多.发生的许多事情都是历史事故.当时,回到过去,Perl非常受欢迎,Java越来越受欢迎,没有太多人关注Python,而Ruby刚刚开始.

需要完成工作的人使用Perl并在Perl中创建了一些库,其他人开始使用这些库.一旦人们开始使用对他们有用的东西,他们往往不会转换(经济学家称之为"转换成本").从那里开始,更多的人开始使用它,因为很多其他人正在使用它.

今天可能不会发生同样的演变.我会说Perl,Python和Ruby都完全可以完成任务.林肯斯坦所引用的所有内容都可以适用于今天的任何一个.如果每个人都必须从头开始,那么这些语言中的任何一种都可能是每个人都使用的语言.

我注意到,从我自己的客户群(生物技术的一个非常小且无代表性的样本),推动编程的许多生物学的人似乎至少是支持科学家的兼职系统管理员.科学家们对科学感到担忧并做了一些轻量级的编程,但IT支持人员正在为非科学部分做很多繁重的工作.Perl非常适合作为系统管理员工具使用,因为它是互联网的管道胶带.

  • 我在这里倾向于不同意.Perl真的很有表现力,所以如果你的主要关注点不是编程,而是完成工作,并回到你真正的工作,那么语言的表达能帮助计算机像你一样思考,而更典型的语言更有帮助你像计算机一样思考. (4认同)
  • 虽然Ruby和Python与Perl非常相似,但它们的正则表达式引擎并不是那么好.他们不是那么快,也不能做那么多"疯狂"的事情.这通常不是问题,因为如果你正在做一些非常疯狂的事情,语法可能更适合,但是你必须教所有那些生物学家语法,递归下降解析等. (4认同)

Fed*_*oni 12

可能是因为Perl善于操纵字符串,并且许多遗传学研究涉及操纵长期"ACTGCATG ..."字符串.猜猜......

  • 他们有一个非常好的正则表达引擎,而且总是有.(拉里·沃尔(Larry Wall)是R​​E引擎之神之一,是字符串操纵的shub-niggurath.) (10认同)

sin*_*ish 9

我使用大量的Perl来处理社会科学研究中的定性和定量数据.在快速完成任务(主要是文本)方面,在CPAN(良好的中心位置)上查找库,并且通常只是快速完成任务,它无法超越.

Perl也是出色的胶水,所以如果你有一些工具记录,并且需要将它们粘贴到数据分析程序中,那么Perl就是你的语言.


Pau*_*l R 7

Perl似乎是生物信息学的首选语言 - 在这个主题上甚至还有O'Reilly的头衔:生物信息学的Perl Perl.

  • 究竟!但为什么?!:)也许我会看看我是否可以找到该书的副本,因为它可能有介绍章节解释我的问题的答案. (3认同)

Phi*_*ppe 5

Perl在处理文本时非常强大,它几乎存在于每个Linux/Unix发行版中.在生物信息学中,不仅序列数据很容易用Perl操作,而且大多数生物信息学算法都会输出某种文本结果.

然后,像EBI这样最大的生物信息学中心有一位伟大的家伙,Ewan Birney,他领导着BioPerl项目.该库具有许多解析器,用于各种流行的生物信息学算法的结果,以及用于操纵主要序列数据库中使用的不同序列格式.

然而,如今,Perl并不是生物信息学家使用的唯一语言:与序列数据一起,实验室产生越来越多不同类型的数据类型,而其他语言更常用于这些领域.

[R统计编程语言,例如,被广泛用于微阵列和qPCR数据(其中包括)进行统计分析.再说一遍,为什么我们这么用呢?因为它有适合这种数据的大型库(参见bioconductor项目).

现在谈到网络开发时,CGI并不是今天最先进的技术,但知道Perl的人可能会坚持下去.在我的公司,虽然不再使用...

我希望这有帮助.