搜索关注【生物城堡】
超乎想象的干货分享
生物信息学面临的挑战
生物学对大型测序数据集的频繁使用,正在改变我们所需的工具和技能,它也在改变科学发现的可重复性和稳健性。当我们利用新的工具和技能来分析基因组学数据时,有必要确保我们的方法可重复和稳健,就像实验方法一样。然而,庞大的数据和复杂的分析流程,使得在基因组学中实现这一目标变得尤其困难。
可重复的必要条件是我们共享数据和方法。现在的论文有很长的补充方法,代码和数据。共享数据非常重要,因为测序项目包括Tb级的附加数据。分析中使用的参考基因组及其注释不断更新,期刊网站上的补充材料、方法和数据的链接失效,当开发人员离开而不更新代码时,软件变得无法使用,这些都会使结果更加难以重复。
生物信息学分析的复杂性会导致研究出错和混淆。即使是相当常规的基因组学项目也会用到几十个不同的程序,复杂的输入参数组合,以及许多样本和注释数据集;此外,工作可能分布在服务器和工作站之间。
所有这些数据处理都需要一步一步的分析,进而得出结果,我们得出了我们的生物学结论。结果是,研究所得出的结论处于一个摇摇欲坠的脚手架上。更糟糕的是,生物信息学分析通常只运行一次,来产出用于发表的结果,然后就再也不运行。这些分析可能依赖于软件特定的版本,在不同的系统上难以重现结果。
在之后的文章中,我将分享一些具体的实践方法来提高项目的可重复性,一定要关注我的公众号【生物城堡】呀!
可重复性研究
重复科学发现是确认其准确性的唯一方法。
卡尔·波普尔(Karl Popper)有一句名言:“不可重复的单一事件对科学没有意义”。
卡尔·波普尔(Karl Popper)
然而,大多数测序实验都太昂贵,无法进行重复,所以我们只能寄希望于后续的分析可以重复。生物信息学项目往往非常复杂,所以作为优秀的科学家,我们的工作必然要顾及研究的可重复性。
那么什么是可重复的生物信息学项目呢?
至少,它共享了项目的代码和数据。大多数期刊都要求共享项目的数据,而NCBI的SRA等资源就是为此存在。如果代码是研究结果的重要部分,编辑和审稿人通常会建议共享项目的代码。然而,我们可以并且应该做更多的事情来确保项目的可重复性。
关于可重复性的一个案例。
杜克大学的Anil Potti博士和其他研究人员创造了一种方法,该方法使用micro array的表达数据来检测和预测对不同化疗药物的反应。这些方法是个性化精准医学的萌芽,用于临床试验中确定患者的化疗治疗情况。然而,有两位生物统计学家,在试图重复这项研究时,在分析中发现了严重的错误(Baggerly和Coombes,2009)。包括:
1、一个“差一”错误,基因表达值的整个列表相对于其正确的标识符下挫一行 2、所使用的array上没有两个具有生物学意义的离群点基因 3、处理与运行array的日期混淆 4、样本组名称混淆
Baggerly和Coombes的工作给我们的教训是“常见的错误是简单的,简单的错误是常见的”,糟糕的文档可能导致错误并无法重复。方法、数据版本和代码的文档不仅有助于重复结果,而且很可能防止这些严重错误的发生。
稳健生物信息学研究的“黄金法则”
在湿实验室生物学中,当实验出错时,它非常明显,但在生信中并不总是这样。错误可以是无声的;也就是说,代码和程序可能会产生输出(而不是因错误而停止),但这种输出是不正确的。当学习生物信息学时,这是一个非常重要的概念。
此外,代码只运行一次是很常见的,因为研究人员得到他们想要的输出并继续下一步。
大多数生物信息学分析产生的中间输出太大,维度太高,无法检查或可视化。大多数分析还涉及多个步骤,即使能够检查整个中间数据集是否存在问题,但对于每个步骤而言,很难做到这一点(因此,我们通常采取检查数据样本或查看数据汇总统计数据的方法)。
在湿实验中,很容易对实验结果有一个预期。例如,我认为A基因在某组织中表达量应该显著低于内参。有了先前预期,出现异常结果代表实验过程或分析方法出了问题,而不会立即断定A基因表现出了新的表达模式。相反,大多数基因组学结果的高维度难以形成强烈的预期。通过RNA-seq对成千上万个基因的表达形成预期是不可能的。然而,没有事先的预期,我们就很难区分结果的好坏。
生物信息学家还必须警惕,生物信息学程序,甚至是经过社区审查的大型工具,可能在特定的生物体上并不适用。生物体都是奇妙的,它们的基因组也是。许多生物信息学工具都是在少数二倍体模式生物(如人类)上测试的。
确保一切正常工作的简单方法是采取谨慎的态度,并检查计算步骤之间的一切输出。此外,你应该以一种怀疑的态度对待生物数据(无论是自己测的还是来自数据库的),认为它可能是有问题的。所谓“垃圾输入,垃圾输出”--输入的数据将直接决定分析的结果质量。这就是进行稳健生物信息学研究的“黄金法则”:
Never ever trust your tools (or data)
永远不要完全相信你的工具(或数据)
并不是说生物信息学是不可信的,相反,这是为了训练你谨慎的态度。简单地检查输入数据和中间结果,运行快速健全的检查,维护适当的控制和测试程序是一个很好的开始。这也避免了遇到bug,修复bug意味着要重新做大量的工作。
进行稳健和可重复的实践会让你的生活更愉悦
在科研圈工作让我们以艰难的方式学到了生活的真相:任何可能出错的事情都会出错。我几乎可以保证以下事情会发生:
1、几乎可以肯定,一套流程必然会运行多次,可能会使用新的或更改的数据。经常发生这种情况是因为你会发现一个bug,或者你会想要在步骤的上游尝试一些新的东西。后续的分析都依赖于这些早期结果,就需要重新运行之前的所有步骤。 2、未来的某一天,肯定需要重新访问项目的一部分,你可能已经完全看不懂它是做什么的了。你唯一的办法就是记录清楚每一步。如果不写下关键信息(例如,从哪下载数据,何时下载,以及运行了哪些步骤),肯定会忘记它们,必然会带来更大的麻烦,浪费时间不说,还会降低生活质量。记录计算过程相当于保存一个详细的实验笔记本--这是科学中绝对重要的一部分。
幸运的是,采用使项目可重复的方案有助于解决这些问题。从这个意义上说,生物信息学(以及一般的科学计算)中的良好实践既使生活变得更容易,也顺带产生了可重复的项目。
例如,如果我们使用脚本自动执行任务,并跟踪所有输入数据和软件版本,那重复此脚本中的所有步骤要容易得多,因为编写良好的脚本自然会记录工作流。这种方法还可以节省时间:如果接到新的或更新的数据,所要做的就是用新的输入文件重新运行脚本。这在实践中并不难做到;编写脚本并不困难,计算机擅长做脚本中的重复性任务。
在之后的文章中,我将分享一些构建可重复执行脚本的方案,一定要关注我的公众号【生物城堡】呀!
·end·
超乎想象的干货分享