作为一名生物信息“工程师”,日常的工作环境是基于Unix的计算机集群,因此最常用的就是shell脚本。它可以简单的处理数据,再加上迷你语言sed和awk,也能满足日常需求了。
如果你满足于此,将会发现自己的代码维护不易,难以阅读和分享,这时候我们需要学习更专业的语言。R和python都是数据科学领域红火的编程语言,R本来就是由统计学家创建的,天生骄傲。python则是易上手的胶水语言,加上其扩展包pandas和scikit-learn等的加持,各行各业都有它的身影。建议都试试看,选择一个用得顺手的。
R的ggplot2和python的matplotlib各自赋予了两者强大的画图能力,绘制科研插图必不可少。有时候我们希望给图片加上交互的功能,这时候javascript就该出场了,掌握javascript语法及其常用库(如JQuery,boostrap和d3),能够创建各类交互式应用。
有时候我们收集了大量的结果,想分享给整个领域,可以选择创建一个数据库,一个可行的技术栈就是前端使用javascript(包括boostrap,JQuery),后端搭配python的django或者flask。不少发表的科研数据库文章都使用这种组合。
生物数据处理的经典软件,需要密集计算的或可视化交互的一般都由C++和Java开发,组学数据处理的包大部分都在bioconductor里,少数是python的模块。为了更好的交互体验,基于javascript的软件包也在不断推出,比如bio.js社区的成立,再比如HiGlass (http://higlass.io/) 可以流畅的在浏览器端可视化染色质交互矩阵 (使用d3.js)。
当然对大部分生信分析人员来说,编程语言只是工具和解决问题的手段之一,更重要的还是对生物学问题的理解。