【文献推荐】生物信息学编程技能的培养

2009年12月的PLoS Computational Biology上发表了一篇名为《培养实用生物信息学编程技能的简明指导》的文章。在此推荐给生物信息学专业的学生。不管你是“菜鸟”还是“高手”,读一读此文,均将获益匪浅。用原文中的一句话来说,就是:Successful adoption of these principals will serve both beginner and experienced bioinformaticians alike in career develop- ment and pursuit of professional and scientific goals.

我根据自己的理解把文中作者的观点整理概括如下:

  1. 打造适合自己的编程工具箱。
  2. 生物信息学中的编程语言众多,典型的如Perl、Python、Ruby、Java等。面对如此众多的编程语言,该如何选择呢?各种语言都有自己的优势与劣势所在,如何选择主要取决于自己的爱好、周围工作人员的选择、可用的网络资源等因素。
    是不是掌握一种编程语言就足够了呢?答案是否定的。但这也不是说你要花费几年的时间来学习各种语言。作者的观点(包含了我个人的理解)是,精通一们语言的同时,熟悉其它的若干种语言,了解他们各自的优缺点【典型的如:R基本上无法进行并行的统计运算】,因时因事进行选择,并利用各种工具或者库把各种语言粘贴起来,在一种语言中调用另一种语言。

  3. 充分利用现有的开源软件、工具。
  4. 除非你想练手,否则请不要重新发明轮子!你不是一个人,你想编程实现的某种功能,很有可能已经有人完成了,并把代码以开源的形式共享给了大家,如编程语言中的生物信息学工具集:BioPERL、BioPython、BioRuby、BioJava和Bio-Conductor。那么如何找到这些开源的代码为自己所用呢?除了使用普通的网络搜索引擎外,推荐大家使用KodersGoogle Code Search

  5. 熟练掌握并使用Unix。
  6. 为什么非得使用Unix系统?原因很多——Unix系统的稳定、瑞士军刀型的shell工具集、流水线式的管道、只针对Unix开发的生物信息学软件……在此不进行详述了。

  7. 项目/程序代码的维护与管理。
  8. 主要是一些编程规范,如:描述性的有意义的变量命名、清晰的代码注释、写作程序文档,此外,还有:使用make之类的工具管理运行代码、使用版本控制系统(Version Control Systems , VCS)维护代码、定期备份,等。

  9. 并行运算。
  10. 包括多台电脑的并行运算与一台电脑多线程的并行运算。

  11. 数据的结构化存储。
  12. 根据数据量的大小、数据的特点等选择合适的格式来存储数据,如:存储到数据库中用SQL提取,或者采用key/data的思路来存储数据,等。
    7.理解电脑硬件。
    充分利用硬件的特性、利用各种技术来加速生物信息学中的运算,如:向量化、GPU运算等。

  13. 数据的交流。
  14. 为了方便交流数据、让别人理解数据的含义,除了尽量使用标准的定义、名词外,尽量采用标准的格式来展示数据,如:XML、CSV、TSV等。

  15. 时间、时间、还是时间!
  16. 21世纪最贵的是什么?时间!在性能、时间、功能等各种因素中寻找出最佳的“性价比”。同时,专注于功能,而不是代码的完美。(The perfect is the enemy of the good.)目的第一,其他都往后站。只做一件事,并把它做好!(此语不只适用于程序,具有一定的普适性。)

  17. 与时俱进。
  18. 生物信息学的发展日新月异,因此想要在生物信息学领域混,就要与时俱进!“追风”的手段很多,比如:RSS订阅期刊、博客、用户组、交流群等。文末作者给出了几个比较好的交流社区,不过不要抱太大希望。因为——优秀的东西未必会被墙,但被墙的东西一定异常得优秀……

以上条目仅起抛砖引玉的作用,欲知详情,请阅读原文。

文章的详细信息:
Dudley, Joel T, and Atul J Butte. 2009. A quick guide for developing effective bioinformatics programming skills. PLoS computational biology 5, no. 12 (December): e1000589. doi:10.1371/journal.pcbi.1000589. http://www.ncbi.nlm.nih.gov/pubmed/20041221.

如果你懒得到官网去下载,请点击此处