搜索
查看: 796|回复: 11

我的Python之路。。。

[复制链接]

19

主题

65

帖子

331

积分

版主

Rank: 7Rank: 7Rank: 7

积分
331
QQ
发表于 2016-10-14 16:37:50 | 显示全部楼层 |阅读模式
本帖最后由 bioinfo.dong 于 2016-10-15 11:38 编辑

今天去了趟机场送朋友,回来已经半夜不想做题了,发个Python推荐帖吧,哈哈~
刚接触生信的同学大都有个困惑,知道生物信息可能需要编程,可是选择什么语言呢?有人会说perl啊,Python啊,R啊,java啊,等等等等。目的不一样,选择也不一样,你可以说语言都没有区别,达到目的就行,当然没问题。可是我们也要知道每种语言都有其独特优势,你可以用perl倒腾出矩阵运算,也可以画出想要的图,可是没有R专业;你也可以用R的正则表达式处理文本,可是perl或者Python做正则会更方便一些。这不是比较帖,只是从一个Python体验者的角度来说一下为什么选择Python。我目前的编程组合是Python+R+Shell Scripting。

这篇文章比较适合编程初学者,常年用perl的老司机们可以随便看一下,虽说perl和Python很像,有了一门的基础,学另一门就容易多了,可是真让一个用了几年perl的人彻底换Python还是比较困难的,主要还是习惯问题。最初做生信的人大都以perl作为常用脚本语言。我也是从perl开始的,当年为了申请出国读Bioinformatics,认真把小骆驼书看了一遍。来美国之后的第一个导师刚好是教perl的,我又跟着学了一次,看完导师推荐的《Unix and Perl to the Rescue》,算是巩固加第二次入门。之后一年基本都是用perl来处理数据。一个偶然的机会,同学说一起学学Python吧,听说很好用,于是就在网上找了个教程把题目刷了一遍。虽说入了门,可是每次项目赶时间的时候第一个想到的还是用perl来解决,所以入门很久也没啥长进,我亲爱的同学因为perl用的太好,虽然知道Python很好用,可始终没法狠心转过来,而我因为本身perl学得也只是半斤八两,纠结了一段时间也就彻底放弃perl了。



先说用了很长时间perl再用Python觉得不习惯的点:(1)首先是动物园的书,《learning perl》真是入门的典范。再看《Learning Python》,一千多页,那么厚,我到现在也没法认真看下去。
(2)另外perl语句比较简洁,几个符号就可以讲清楚的,Python可能需要几行,比如按行读取,perl只要while(<>)就可以,而最初学Python的时候,光这个问题就困扰了很久。再比如perl正则匹配的$1, Python是match.group(0)。perl的简洁伴随的缺点是可读性较差,自己的代码写完了都不想再看,更不要说别人写的。
(3)perl的正则表达式是真的非常厉害,我已经不记得是怎么厉害的了,就只记得Python的re module刚开始接触不太好用,不过现在已经感觉不出区别了。
(4)通常一个Python脚本需要很多modules,不熟悉之前会觉得很痛苦,perl就比较少用到,我总共也没用几次,一方面说明我的perl确实学得不好,另一方面可能也真是不太好用,看到就觉得麻烦。但Python的modules一旦熟悉了会大大提高工作效率。

重点说一下Python的优点。Python作为编程语言真正的优势比如面向对象编程(OOP),可移植/扩展/嵌入,强大的爬虫功能,APP开发,web开发等都不在讨论范围之内,只从最实用的角度做一下说明:
(1)简单,适合作为入门语言。很多时候觉得读Python的代码像是在读简单的英文,或者觉得pseudocode稍微一改就可以在Python里run了。Python还规范了很好的写作格式,该缩进的必须缩进,这样更增强了可读性。同时提高了代码重复利用的可能(很多时候perl代码写完就不想读了,三个月不用再回来已经看不太懂了,Python的就可以留着慢慢用。。。)
(2)Python社区活跃。有问题可以很容易搜索到解决方案。我perl的老师现在也转教Python了,问他为什么,他说perl的community不活跃,用Python是一种趋势
(3)作为开源语言,Python有很多非常好用的包,可以最大程度让我们避免把时间浪费在重复造轮子上。刚接触Python的时候我就觉得这简直是perl和R的整合,之前提过Python的scipy,numpy,pandas,matlibplot等等packages使其同样拥有了很强大的统计画图功能,我曾一度弃用R,用Python做所有的数据处理,数据分析和画图。不过现在又将这些工作交回了R,实验室本身是做统计的,用R显得入流一点:-)
(4)Python的jupyter notebook!!!这个是要强力推荐的!!!以前叫ipython notebook。用过R的都知道R Studio。jupyter notebook就是Python的Studio。以前写perl或者Python是不是这样的流程:写好了,存成.pl或.py格式,在shell里python xxx.py或者perl xxx.pl。运行完发现不好,有bug,打开文件找找bug在哪,再运行,还不行,唉,反反复复,好累。有了jupyter notebook你就可以边写边跑边改程序。有任何不确定的地方,都可以在notebook里直接测试,有任何bug都可以在notebook里直接改。简直方便到爆。现在用Anaconda安装jupyter还附赠很多包,方便又实惠。
(5)学好Python可以转行!!!跳出生物坑,奔向美好的互联网坑。前面提到的爬虫,APP开发,web编程都是很实用的技能。许多互联网公司也会专门招Python程序员,比如Google,比如Youtube,比如Dropbox。。。

我本专业是Bioinformatics,需要上一些计算机和统计的研究生课程,还记得算法课上老师第一节课就问,java和C++都会吧,如果不会的话Python总会吧,都不会的话这门课的作业写不了。就因为觉得自己还算会一点Python,把一次学习java的好机会浪费掉了

暂时就想到这么多。说的未必对。都是自己的体会吧。希望对初学者有用~









上一篇:2016 Illumina 用户大会之Epigenomics &amp; Metagenomics
下一篇:请问做连锁不平衡分析时,对于二态的indel要怎么处理?
You really shouldn't spend your time reinventing the wheel
回复

使用道具 举报

5

主题

37

帖子

165

积分

版主

Rank: 7Rank: 7Rank: 7

积分
165
发表于 2016-10-20 02:52:50 | 显示全部楼层
python 是我转行前一刻学习的语言,当时我只是想尝试写游戏给自己玩,等我真的写出了可视化的游戏,我就毫不犹豫地转了。我都推荐每个人都应该学点python,理由是语言非常人化。如今反而写得很少,卤煮的这篇文让我又有了一些冲动
回复 支持 1 反对 0

使用道具 举报

276

主题

478

帖子

1731

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1731
发表于 2016-10-14 22:35:05 | 显示全部楼层
回复 支持 反对

使用道具 举报

4

主题

30

帖子

191

积分

注册会员

Rank: 2

积分
191
发表于 2016-10-14 22:56:06 | 显示全部楼层
听了楼主的一番经历,作为一个生信初学者受益匪浅,觉得先学一两门能解决问题的语言,等以后解决的能力可以了,再多学几门玩出花来,比较一下之间的差异也不迟。
本科阶段接触学习了python,R,shell,C/C++,matlab,其中python学了半年多一点,感觉上手容易,在效率允许的情况下,不用思考太深,代码也不需太长,就能解决一些问题(之前有vb,c/c++的学习基础)。
简单的文件处理交给shell命令;
通用编程问题、或者爬虫问题交给python(自己当然也学了urllib2,request[获取网页],re,bs4[解析提取],scipy,numpy,pandas[数据清洗],matlibplot[绘图]等一些常用外包),如果部分程序需要提高效率,考虑用C重写;
偏向统计的检验、回归,画图[ggplot2教材已就绪,还没开始自学]可以交给R。

人生苦短,我写python。
有CS背景和生信老司机请无视。。。。
回复 支持 反对

使用道具 举报

1

主题

38

帖子

180

积分

注册会员

Rank: 2

积分
180
发表于 2016-10-15 10:44:24 | 显示全部楼层
写的非常棒,对比了perl和Python的优缺点,给后来人一个很好的参考。
一篇好文章一般到最后都有深刻的总结
学好Python可以转行!!!跳出生物坑
PS:生物这个坑有点深
回复 支持 反对

使用道具 举报

19

主题

65

帖子

331

积分

版主

Rank: 7Rank: 7Rank: 7

积分
331
QQ
 楼主| 发表于 2016-10-15 11:41:05 | 显示全部楼层
Jimmy 发表于 2016-10-14 22:35
好文!已转发:http://www.bio-info-trainee.com/1933.html

You really shouldn't spend your time reinventing the wheel
回复 支持 反对

使用道具 举报

19

主题

65

帖子

331

积分

版主

Rank: 7Rank: 7Rank: 7

积分
331
QQ
 楼主| 发表于 2016-10-15 11:43:34 | 显示全部楼层
xuehzh95 发表于 2016-10-14 22:56
听了楼主的一番经历,作为一个生信初学者受益匪浅,觉得先学一两门能解决问题的语言,等以后解决的能力可以 ...

就羡慕基础打得牢靠的牛人。今天还跟师妹说我用R画图都没有系统学过,需要画什么就去网上搜一下,画了很多图了也没有觉得自己真的会画了。你现在没有课题压力,什么都可以系统的学一下,简直就是我想要的生活,哈哈~
You really shouldn't spend your time reinventing the wheel
回复 支持 反对

使用道具 举报

19

主题

65

帖子

331

积分

版主

Rank: 7Rank: 7Rank: 7

积分
331
QQ
 楼主| 发表于 2016-10-15 11:45:31 | 显示全部楼层
learnyoung 发表于 2016-10-15 10:44
写的非常棒,对比了perl和Python的优缺点,给后来人一个很好的参考。
一篇好文章一般到最后都有深 ...

生物信息还算可以。真让我完全转计算机我也想不出来自己喜欢做哪方面。在生物和统计计算机结合的领域说不定能挖出有意思的东西。年轻人可以任性的随便转,哈哈~
You really shouldn't spend your time reinventing the wheel
回复 支持 反对

使用道具 举报

5

主题

24

帖子

159

积分

版主

Rank: 7Rank: 7Rank: 7

积分
159
发表于 2016-10-16 19:03:57 来自手机 | 显示全部楼层
生物确实坑太深,Python学好了综合竞争力会更强。话虽然这么说,但是真学起来还是需要时间啊。个人感觉可以以爬虫做切入点学Python,不知道可不可行?我个人可以试试
回复 支持 反对

使用道具 举报

19

主题

65

帖子

331

积分

版主

Rank: 7Rank: 7Rank: 7

积分
331
QQ
 楼主| 发表于 2016-10-17 00:21:19 | 显示全部楼层
侠客行 发表于 2016-10-16 19:03
生物确实坑太深,Python学好了综合竞争力会更强。话虽然这么说,但是真学起来还是需要时间啊。个人感觉可以 ...

如果想用Python找工作,爬虫切入可以,还有Python的web编程flask。你时间充裕可以试一下,哈哈
You really shouldn't spend your time reinventing the wheel
回复 支持 反对

使用道具 举报

5

主题

24

帖子

159

积分

版主

Rank: 7Rank: 7Rank: 7

积分
159
发表于 2016-10-17 07:37:27 | 显示全部楼层
bioinfo.dong 发表于 2016-10-17 00:21
如果想用Python找工作,爬虫切入可以,还有Python的web编程flask。你时间充裕可以试一下,哈哈 ...

话说我在github上找了个课程,用python做教学语言,我准备试试。那可以去看看感觉不错,gregcaporaso/An-Introduction-To-Applied-Bioinformatics
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|关于我们|手机版|小黑屋|生信技能树    

GMT+8, 2017-1-25 01:07 , Processed in 0.243206 second(s), 33 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.