我来自计算机科学。背景,但我现在正在做基因组学。
我的项目包括许多生物信息学,通常涉及:比对序列、比较序列和各种基因组注释特征之间的重叠等,来自不同类别的生物样本、时间进程数据、微阵列、高通量测序(“next-代”排序,虽然它实际上是当前一代)数据,这种东西。
这种分析的工作流程与我在计算机科学研究期间所经历的完全不同:没有 UML 和精心设计的对象,闪耀着崇高的优雅,没有版本管理,没有适当的文档(通常根本没有文档),没有软件工程全部。
相反,每个人在这个领域所做的就是一个接一个地破解一个 Perl 脚本或AWK -one-liner,通常用于一次性使用。
我认为原因是输入数据和格式变化如此之快,问题需要尽快回答(截止日期!),似乎没有时间组织项目。
一个例子来说明这一点:假设你想写一个光线追踪器。您可能首先会在软件工程上投入大量精力。然后对其进行编程,最后以某种高度优化的形式。因为你会无数次地使用光线追踪器来处理不同的输入数据,并且会在未来几年内对源代码进行更改。因此,在从头开始编写严肃的光线追踪器时,优秀的软件工程至关重要。但是想象一下,你想写一个光线追踪器,你已经知道你会用它来光线追踪一个,永远的单张照片。那张照片是在方格地板上的一个反射球。在这种情况下,您只需以某种方式将其破解。生物信息学只是后一种情况。
您最终会得到具有不同格式的相同信息的整个目录树,直到您达到下一步所需的一种特定格式,以及十几个名称如“tmp_SNP_cancer_34521_unique_IDs_not_Chimp.csv”的文件,您对此一无所知一天后你为什么创建这个文件以及它到底是什么。
有一段时间,我使用MySQL有帮助,但现在生成新数据和更改格式的速度如此之快,以至于无法进行正确的数据库设计。
我知道有一份涉及这些问题的出版物(Noble,WS(2009 年,7 月)。组织计算生物学项目的快速指南。PLoS Comput Biol 5 (7),e1000424+)。作者很好地总结了目标:
核心指导原则很简单:不熟悉您项目的人应该能够查看您的计算机文件并详细了解您做了什么以及为什么。
嗯,这也是我想要的!但是我已经跟那个作者一样的做法了,我觉得这绝对是不够的。
记录你在Bash中发出的每一个命令,评论你为什么这样做,等等,都是乏味且容易出错的。工作流程中的步骤太细了。即使你这样做了,要弄清楚每个文件的用途、特定工作流在什么时候被中断、出于什么原因以及你继续的位置,这仍然是一项极其繁琐的任务。
(我不是在 Taverna 的意义上使用“工作流程”这个词;我所说的工作流程只是指您为达到特定目标而选择执行的步骤、命令和程序)。
你如何组织你的生物信息学项目?