生物信息析编程Perl 还是Python?
Posted 同源基因
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生物信息析编程Perl 还是Python?相关的知识,希望对你有一定的参考价值。
经常有人问学习生物信息,需要学习编程,到底是选择学习Perl还是Python。有的人推荐perl,认为perl简单好学,足够用了,所以学习perl。而另外一些人则是认为学习python,python语法优雅,功能强大,而且更加流行。那么到底该选择学习哪种语言呢?今天我们就来聊一聊。
其实不仅仅是学择编程语言这个问题,其实生活中有太多这样让人纠结的场景。比如,这些年来我一直在纠结以后娶高圆圆呢还是范冰冰呢?哪个我都不舍得。当然结果大家都知道的,何不怜取眼前人了;还有中午吃牛肉饭还是鸡肉饭呢?这将是困扰处女座直到晚餐时间依然悬而未决的难题。现在社会,选择越多,反而得到的越少。
那么选择perl还是python,首先我们要明确几个问题。
1、我们为什么要学习编程?
2、为什么只有perl和python?
3、两个语言各有什么特点?
明确这三个问题之后,结合自身情况相信你会做出一个合适的选择。
一、学习生物信息,为什么要学习编程?
首先,对软件结果进行二次处理,我们通过生物软件得到的结果,需要进行很多的二次处理,比如设置条件过滤数据,合并结果,提取序列等,都需要编程,编程可以极大的提高效率。比如提取序列这件事情,我曾经就看到不会编程的人不断地复制粘贴,复制粘贴,这样既浪费时间,又容易出错。而编程几秒钟就能解决问题。这就是为什么我们课程的宣传语中说的“为什么别人1分钟完成的工作,你需要24小时呢?”
第二,生物信息分析中往往需要处理多样品,比如一次处理1000个样品,这1000个样品数据处理方式完全一致,都是过滤数据,序列拼接,基因组分析等。如果一个一个样品来处理,就需要处理1000次。而会编程,则可以进行批量处理,提升效率;
第三,流程化处理,每个样品数据需要分别进行数据质控过滤一直到完成处理,可能需要10个步骤,如果一步步来,则非常耗时,而且需要很多等待时间,前一步完成,才能进行下一步的操作,但是如果可以编程,就可以进行自动化的处理,一步到位,运行脚本,第二天早上来看结果,而不需要夜里值班;
第四,一些生物软件本身就是用程序编写的,可以将自己的想法,通过程序来实现。所以,学习生物信息编程是必须的。
二、为什么只有perl和python?
其实除了perl和python还有其他一些语言,主流的是perl和python。其实其他语言也能完成完成所需要的工作,只不过这里涉及到一个效率的问题。比如提取序列,C语言,java等都能完成,只不过这些语言处理问题可能需要10条语句,而perl只需要一条语句。
首先,这两种语言都被称为脚本语言,perl和python都支持正则表达式,非常善于处理文本,而生物数据本质上就是文本,生物信息分析本质上也就是处理文本。
第二,这些语言都根植于Linux平台,无需编译可以直接执行;
第三,作为脚本语言,不需要提前定义变量,也不用严格区分变量类型,比如C语言中要定义一大堆整形,浮点型,单精度与双精度浮点型这么多复杂的概念,perl和python都不需要;
第四,用来处理生物信息,这些语言都集成了大量第三方工具,比如perl的CPAN模块库,python也有类似的模块库。生物信息中常见的bioperl项目和biopython项目等;
第五,已经有大量的生物软件用这两种语言编写,比如perl编写的rnamer,nucmer,sspace,python编写的qiime等。
所以,我们看到,这两种语言都非常适合用来做生物信息,尤其是perl,简直是Born for Bio。
三、这两个语言之间有什么差别呢。
Perl 一般被称为“实用报表提取语言”(Practical Extraction and Report Language),Perl 最初的设计者为拉里·沃尔(Larry Wall)也就是我们课程的封面人物。perl的吉祥物是骆驼。Python 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年发明,python
的吉祥物是蟒蛇。设计perl的是语言学家,设计python的是数学家。虽然二者都能完成同样的工作,但是语言风格上却有非常大的差别,perl是艺术性的而python是富有逻辑性的,也就是二者在编程思想上有明显的不同,甚至是对立的。perl追求的是There's More Than One Way To Do It。而在The Zen of Python中,则强调There should be one-- and preferably only one --obvious way to do it。解决问题最好的方式只有一
种。因此,perl的语法更自由,可以随便写,perl程序里,有各种各样奇特甚至说奇葩的操作符,这些操作符往往能非常高效解决问题,所以,perl的程序一般看起来非常乱,天马行空,因为解决问题方法不止一种。而python则追求优雅,python的程序看起来非常整洁,语法简洁,格式工整,便于阅读。所以,选择哪种看个人喜好。
此外,如果单纯是处理生物信息,并且没有多少编程基础,那么perl是一个很好的选择,perl比较容易,学会小骆驼中的正则表达式,就可以解决绝大部分的问题,剩余的掌握复杂数据结构就可以,比如引用。而python的话则需要掌握的较深,特别是python对象和变量之间的关系,掌握好python对象的处理方式,才能游刃有余的解决问题。
如果实在是哪个都不愿放弃,那就两个一起学吧,先学习perl,再学习python。而我还是同样的观点,其实这个问题的本质并不在于我们选择学习哪个,而是是否能够学好。我们经常看到有人电脑里收藏几百份生物信息学习的资料,微信天天分享和收藏相关的信息,但是从来都没有认真看过,还不如一份资料,认真学习。
【广告时间】
编程可以提高效率,而如果自己看书学习编程效率其实并不高,不如购买一份《Perl语言入门与生物信息》视频教程,认真学习课程内容,配合同步练习,以最快的时间和效率掌握一门语言。
https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-10284985287.2.zALjES&id=521236799325
以上是关于生物信息析编程Perl 还是Python?的主要内容,如果未能解决你的问题,请参考以下文章