生信分析常用编程语言汇总
0525 Cloudy
说到编程语言,其实大致可以分成两种,一种是计算机编译器语言,比方说C,C++,优点在于基于计算机硬件特点编写,可以使代码有效高速的运行,特别适合大规模复杂的计算。日常用到的程序有很多,比方说其中之一就是大名鼎鼎的BLAST。还有一种是脚本语言,小到中等规模的计算和数据操作时会经常用到,这个时候用C可以说是用牛刀杀鸡。用编译器语言编写的工具绝大多数情况下除了需要参数设置以外都可以直接使用。比起编译器语言,生信分析中给我们带来阻碍更多的是脚本语言。
当然也不是说每一个编程语言都需要用的风生水起,炉火纯青,这是要去抢码农饭碗的节奏。其实我们不用从0开始自己写程序,而是只需要能看得懂网上大神写的东西,然后根据自己的需要修改一部分变成自己能用的东西就好。更何况很多开源语言都有自己的针对生信分析的library,相当于app store,想要用什么自己下载什么就可以。
在此会介绍几种可能会接触到的脚本语言。以及其各自的特点和用法。希望能给大家带来帮助。
awk, Perl, Ruby的话,macOS都有自带不需要另行安装
awk
短跑高手(刺客)
这是一款由A. V. Aho, P. J. Weinberger, B. W. Kernghan三个大神开发的语言。三大神名字首字母拼凑在一起就成了该语言的名字。awk时一款最早就被UNIX收录的程序,运行速度非常快,经常用在NGS等数据量很大的文件处理方面。awk的特点就是小巧灵活,非常适合编写短小的单行(one-line)程序。以下举个栗子:
% x=3;y=16;echo | awk -v xx=$x -v YY=$y '{sum=xx + yy; print sum}'
19
类似这样的计算你要启动R或者Python就有点像导弹打蚊子了。
Perl
文字处理高手(辅助)
非常适合读取编辑各种格式的文件并输出自己想要的格式。同时可以与很多别的程序语言一起组队并肩打团战,因此也被称作胶水语言。在生命科学领域里,有专门的library- BioPerl。BioPerl早在2000年前(?哈哈,感觉有歧义)就存在了,可以说是BioXXXX系列里最有历史的(众所周知的Ensembl里的数据就是用BioPerl生成的)。没有Perl就没有Ensembl。
Perl偶尔也可以客串awk的角色可以写one-line程序,比方说:
% perl -pe 's/\r/\n/g' mac.txt > unix.txt
Ruby
东亚之星(法师)
日本人(松本)发明的一个编程语言。功能很魔幻也很强大,生信里经常被用来代替Perl。同样也有自己的BioXXX系列-BioRuby。无奈早期用户和开发者大多数都是日本人,很多文献和攻略都只有日语的,没有得到很好推广,要不然估计就没有Python的事了。
R
才貌双全(射手)
家喻户晓的R,最擅长统计分析和华丽的输出。R有很强悍的生信数据分析包Bioconductor。同时其他的开源包可以说是不计其数。
数据清洗担当:dplyr
颜值担当:ggplot2
安装包用install.packages()
install.packages(ggplot2)
关于R本身,因为太有名,就不做长文赘述了。
在此介绍一下R graphical gallery。想要出什么图都有,只有你想不到的。
https://www.r-graph-gallery.com/all-graphs.html
Python
想了半天不知道该怎么定位Python,最后想到了一句话:
"文能提笔控萝莉,武能床上定人妻;进可欺身压正太,退可提臀迎众基!"
教材分享https://www.jianshu.com/p/7ab82482c509
要注意的是有两个版本,Python2, Python3,现在主流是Python3, 安装的时候出错会给后期带来很多不必要的麻烦。有专门的生信库,BioPython。未来的趋势也是Python主流,会有越来越多针对Python的包出现吧。Python也有比较独特的包安装管理系统pip(Pip Installs Packages/Pip Installs Python)。但是和Anaconda混在一起用的话有崩溃的风险,用的时候小心掉坑。
Julia
未来之星
大数据时代的新星,快速计算能力使其在众多脚本语言里脱颖而出。2018年出了version.1。现在有越来越多的生信工具偏向于用Julia写。未来可期。
以上
毕竟以后的时代是大数据时代,个人感觉R或者Python最好重点学习至少其中之一,就算以后不做生信分析,其他领域的数据分析还是会有很大概率会再次用到他们的。其他的脚本语言嘛,能看得懂代码就好。
以后大家在遇到这些编程语言的时候想起曾经在Jason自习室见到过,Jason就已经很欣慰了。