组织生物信息学项目的最佳方式?

19 workflow bioinformatics

我来自计算机科学.背景,但我现在正在做基因组学.

我的项目包括许多生物信息学,通常涉及:比对序列,比较序列之间的重叠等,以及各种基因组注释特征,来自不同类别的生物样本,时间过程数据,微阵列,高通量测序("下一步 -生成"排序,虽然它实际上是当前这一代"的数据,这种东西.

这种分析的工作流程与我在计算机科学研究期间所经历的完全不同:没有UML和精心设计的对象闪耀着崇高的优雅,没有版本管理,没有适当的文档(通常没有文档),没有软件工程在所有.

相反,每个人在这个领域所做的就是一个接一个地删除一个Perl脚本或AWK -one-liner,通常是一次性使用.

我认为原因是输入数据和格式变化如此之快,问题需要尽快回答(截止日期!),似乎没有时间进行项目组织.

一个例子来说明这一点:假设你想写一个光线跟踪器.您可能会首先在软件工程中投入大量精力.然后编程,最后以一些高度优化的形式.因为您将使用不同的输入数据无数次使用光线跟踪器,并且会在未来几年内对源代码进行更改.因此,从头开始编写严格的光线跟踪器时,良好的软件工程是至关重要的.但是想象一下你想写一个光线跟踪器,你已经知道你将使用它来光线跟踪一张单张图片.而那张照片是在方格地板上的反射球体.在这种情况下,你会以某种方式一起破解它.生物信息学就像后一种情况一样.

您最终会得到具有不同格式的相同信息的整个目录树,直到您达到下一步所需的一种特定格式,以及名称为"tmp_SNP_cancer_34521_unique_IDs_not_Chimp.csv"的十几个文件,其中您没有任何想法一天后,为什么你创建了这个文件,它究竟是什么.

有一段时间我使用MySQL帮助了,但现在生成新数据和更改格式的速度使得无法进行适当的数据库设计.

我知道有一篇出版物处理这些问题(Noble,WS(2009,July).组织计算生物学项目的快速指南.PLoS Comput Biol 5(7),e1000424 +).作者总结了很好的目标:

核心指导原则很简单:不熟悉您的项目的人应该能够查看您的计算机文件并详细了解您的工作和原因.

嗯,这也是我想要的!但我已经遵循了与作者相同的做法,我觉得这绝对是不够的.

记录您在Bash中发出的每一个命令,对它的确切原因进行评论,等等,只是单调乏味且容易出错.工作流程中的步骤太精细了.即使你这样做,弄清楚每个文件的用途,以及在什么时候特定的工作流程被中断,以及出于什么原因,以及你继续在哪里,仍然是一项非常繁琐的工作.

(我不是在Taverna意义上使用"工作流程"一词;工作流程我只是指为实现特定目标而选择执行的步骤,命令和程序).

如何组织生物信息学项目?

Hig*_*ark 12

我是一个嵌入研究科学家团队的软件专家,虽然在地球科学领域,而不是生命科学领域.你写的很多内容对我来说都很熟悉.

要记住的一件事是,您在学习中学到的很多东西都是关于继续使用的工程软件.正如您所观察到的,研究科学家所做的很多事情都是关于一次性使用而且工程方法不适合.如果你想实现良好的软件工程的某些方面,你将不得不仔细挑选你的战斗.

在开始对抗任何战斗之前,您将不得不批判性地检查自己的想法,以确保您在学校学到的有关通用软件工程的知识对您当前的情况有效.不要以为它是.

在我的例子中,我选择的第一场战斗是源代码控制的实现.在没有版本控制的情况下,找到所有出错的例子并不难:

  • 一些用户有几十个目录,每个目录都有不同版本的"相同"代码,只有大多数人所做的最独特的,或者为什么他们在那里的最危险的想法;
  • 一些用户通过覆盖他们而无法记住他们所做的事情而失去了有用的修改;
  • 很容易找到人们正在研究应该是同一个程序但实际上在不同方向上不相容的情况;
  • 等等

一旦我收集到了这些信息 - 并确保你保留了关于谁说出了什么以及它们花费了什么的好记录 - 用源代码控制来描绘一个更美好世界的图片变得相对容易.

接下来,好吧,接下来你必须选择自己的下一场战斗.但是,你必须在科学家和同事心中撒播的怀疑之一是"再现性".如果科学实验不可重复,则无效; 如果他们的实验涉及软件(他们总是这样做),那么仔细的软件工程对于再现性至关重要.其中很多都与数据来源有关,但这是另一天的主题.


chr*_*ler 6

对于生物信息学特定的答案,您可能会对BioStar(生物信息学StackExchange 1.0站点)的这两个问题感兴趣