Perl,R,Python在生物信息学中是怎样的角色?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Perl,R,Python在生物信息学中是怎样的角色?相关的知识,希望对你有一定的参考价值。
应该说Python/Perl是相互替代的脚本语言,但个人推荐用Python, 虽然很多老的生物信息软件是用Perl,Python学习曲线好,功能也更强大,是发展趋势。这两个语言主要是做数据预处理、文本处理和格式转换、对算法效率要求不高的分析软件开发,系统管理和pipeline搭建等工作。R语言主要的优势是大量的统计包的支持,数据统计分析中非常常用。Python和R有良好的接口。关于绘图很多人用R,其实Python的Matplotlib的绘图效果比它漂亮很多,也更强大。对pipeline的搭建shell编程更适合,是一个不可缺少的技能。与数据库相关的工作需要用到SQL, Linux : 操作系统,是基础。 生物信息对Linux的要求其实并不高,并不是要做系统开发者或管理员,只需要会用就行。复制粘贴、处理数据、安装软件等。生物信息软件:标准数据分析。 生物信息学的数据格式已经基本标准化,大部分工作可以直接用软件完成。Perl和Python:处理个性化问题、软件之间的对接。 这两门语言至少应该熟练掌握一门自己写程序用,另外一门要能看得懂。 写点小脚本感觉差别不大,但是perl写大程序不合适。 很多人认为python是趋势,但至少截止目前更多生信软件是用perl写的。 所以,如果刚开始学,建议主打python, 看懂perl。R :数据处理、统计、绘图、数据分析。 R语言的数据结构跟其他语言差异较大、而且总感觉语法比较散,不好记。但是R的软件包却异常强大。数据处理的reshape2, dplyr;绘图的ggplot2;还有Bioconductor里的几千个包。不得不会。
参考技术Aython和perl没有最优之说,甚至你可以两者都不会,照样可以成为很好的生信学者,在我看来,系统学习一门programming language才是更重要的,比如java,C, 然后回过头来在看perl,Python,你会发现比起programming language,这些script language更简单易读一些,也容易上手。你不需要成为这两门语言的专家,只需要能够阅读,并参照着写代码来处理你遇到的问题即可,更甚,可以直接跳过per和Python的学习,直接了解Bioperl和BioPython就行了,二者为生信学者提供了强大的工具。另外,语言没有最优之说,针对自己遇到的问题,身边的朋友,学习难易度,恰当选择一门语言才更重要。 比如你身边都是学习python的,那么当你开始学习Python的时候,会有很多懂行的人来帮助你,所带来的进步是非常大的,相比自己去摸索一门语言来说,效率高很多。R是目前生信领域应用非常广泛的统计分析语言,我个人认为R在生信领域的统计分析有着统治地位,当然,其他软件并不是说不好,我身边也有人用matlab和SAS,我觉得选择更适合自己的即可,还是上面那个观点,和周围人一起学习更重要,而不是纠结使用哪个软件。 因为R是开源!这就有了无限可能~ 很多R包是专门针对某一特殊的生物问题而设计的,个人认为学好R非常重要! 不管是任何组学研究,所得到的结果都会使用R分析。所以在我心中,R属于必学的语言之一。
参考技术BPerl处理文本超级好用。Python在这方面不如Perl方便省事。但是Python也有他好用的一方面,靠使用时自己的体会了。Perl 处理文本信息,Python和Perl写模块流程,妥妥的。我不喜欢Python是趋势的说法,这句话听起来好像有道貌岸然的成分。R用来统计画图的,在统计语言中比较好写好学,但是统计的话还要懂统计学方面的计算理论。,perl用来做大部分文本处理工作,网页内容抓取,以及其他日常的批量处理工作。有一些即写即丢的一次性小脚本,也可以写一些有比较大功能的程序。R拿来做统计,跑各种图表,方便,效果又好。现在很多生物信息学的软件都是R包的形式。
生物信息析编程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,R,Python在生物信息学中是怎样的角色?的主要内容,如果未能解决你的问题,请参考以下文章