Python如何成为科研效率的倍增器
2018-12-26 本文已影响25人
WooWoods
究竟为什么要学编程,可能每个人在行动之前都会有这样的疑问。因为炫酷,可以装逼,荧幕上的黑客都帅呆了;因为潮流,整个社会都在宣传学编程,各种广告铺天盖地,再不学就out了。诚然,这些理由都不错,但这些是大众学编程的原因,而不是你学编程的理由。我绝对学习一样技能,一定要有强烈的主观愿望,尤其是编程,如果不是靠兴趣驱动,真的会很痛苦。如何才能有强烈的主观愿望呢?兴趣是基础,然后在学习的过程中不断地获得正反馈,越学越有意思,越来越爽。
我们就用几个小例子来展示一下编程能给我们的工作生活带来怎样意想不到的便利。希望通过适当的引导,大家能体会编程的爽,乐在其中,享受编码的乐趣。
首先声明,我们的原则是,一切机械的重复性的工作都应该自动化,牢记这一条。
代码已上传至GitHub,想直接看代码的点这里。
场景一
我们想研究某个基因家族,比如说人类的HSP家族,首先我们需要获取该家族的所有成员以及他们的序列。我们可以这样做,在NCBI上搜索“heat shock protein”,物种设置为“Homo Sapiens”,逐条记录点进去,将序列拷下来,粘贴到记事本中,整理成fasta格式。上期讲过,编程就是通过编程语言告诉计算机我们想怎么做,让机器替我们去干苦力,解放自己的双手和时间。现在我们把自己手动执行的过程转换成代码。我这里简化了,直接从refgene数据库提取HSP家族各成员相应的转录本编号,再利用这个编号去NCBI上获取序列。![](https://img.haomeiwen.com/i1719634/f2ca0b78a0946b92.gif)
场景二
我们需要对上一步得到的序列设计引物,用于后续的研究。从程序输出的log可以看到,一共有39条序列,一条一条拖进primer5,调整好参数,鼠标一点一点拖过去,天啦噜,干完眼睛都要瞎了(回想起自己当年一遍一遍重复这个操作,瑟瑟发抖。。。)。龟叔告诉我们,生活不应该是这个样子的。![](https://img.haomeiwen.com/i1719634/b3f26b2c8abfb296.jpg)
我们有primer3-py库啊,只需要适度的封装,别说39条,就算39万条都不带眨眼睛的。
![](https://img.haomeiwen.com/i1719634/8144a63f5e663f34.gif)
示例代码比较糙,只为了说明问题。完全可以在这基础上优化,比如调整参数,结果过滤,筛选出最优的primer,使其成为实际可用的代码。
场景三
引物设计完了,需要送去合成,也可以用代码搞定。将上一步的结果发送给生物公司的销售,并抄送老师。![](https://img.haomeiwen.com/i1719634/62bc75054de25d5e.gif)
来看看是不是真的发送成功了
![](https://img.haomeiwen.com/i1719634/54917cc12845e385.png)
以上三个场景是一个连贯性的操作,完全可以整合到一起,实现完全自动化。只需要敲完命令,回车,剩下的就不用关心了。除了第一步比较耗时,因为要通过网络请求,需要62s,二三两步不超过5s,总耗时不过70s,节省了大量的时间精力。这么美好的时光,干点啥不好啊,看剧看文献,打球做实验,撩妹写文章都行啊。
当然编程的应用场景远不止这些,这里抛砖引玉。其实很多问题都有第三方的库,这也是python如此受欢迎的原因之一,Google一下,说不定就有你想要的,直接拿过来用就好了。还有些问题,不怕想不到,就怕实现不了。只要能力炉(lan)火(ai)纯(wan)青(qi),你用python煮咖啡也不是不可以噢。
![](https://img.haomeiwen.com/i1719634/811034f8300aea2a.jpg)
当然了,这种事还是在家干,在学习室这么抢网速会被怼的。但是在学习室,他的分析流程要跑12h,我就比他NB,我只要4h跑完,这种事情绝对是喜闻乐见的。我们后面会讨论如何构建一个高效的分析流程,请保持关注哦。
今天就到这里了,see you!
更多精彩内容请关注公众号:易微升
![](https://img.haomeiwen.com/i1719634/4145433ceccce722.png)