重复性的艰难之路
2018-11-13 17:09

 
早在我攻读博士学位的时候,导师给我分配了一项运行计算机代码的任务,这个计算机代码是由之前一名毕业后离开的学生编写的。这真是糟透了,我不得不对许多不同版本的代码进行排序,这些代码保存在带有神秘编号方案的文件夹中。代码本身没有文档,也几乎没有说明注解。我花了至少一年的时间来可靠地运行代码,并重复了前辈论文中的结果。现在我管理自己的实验室,我确保自己的学生不必经历这些。
 
2012年,我写了一份宣言,在这份宣言中,我决心从事重复性的最佳实践。今天,一名新学生来到我的团队,发现我们所有的研究代码都在整洁的存储库中,这里的每一个变化都会被自动记录。版本控制是我们记录保存和协作的基本技术。每当我们发表论文时,都会创建一个“可重复性包”,在网上存储,其中包括数据集和重新创建分析和数据所需的所有代码。作为计算科学家,这些实践对我们是有用的,但它们背后的原则适用于任何学科。
 
新学生需要一些时间来学习如何使用这些标准,但我们有文件和培训材料,可以使其尽可能感到轻松。我的学生并不反感把时间花在这上面,他们知道像我们这样的实践对于科学的完整性是至关重要的。他们也意识到,我们的方法将帮助他们向潜在的未来雇主表明,他们是认真的、尽职尽责的研究人员。
 
当我们的团队在其他人的作品中被公认为高标准时,当我们被邀请在会议上谈论这些实践时,我感到很高兴。但我们发现,关于研究所需的内容我们仍有很多东西要了解,即使是在可重复性高的标准下,也要被复制。几年前,我们发表了一篇论文,将计算流体力学应用于飞蛇的空气动力学。最近,我要求一个新学生重复这篇论文的调查结果,既作为一个培训机会,也帮助我们选择在未来的研究中使用哪些代码。复制一项已发表的研究总是很困难的——有太多的条件需要匹配,而且细节也不容忽略。但我认为这个案例相对简单——有数据可用,整个分析工作是开放的检查,补充材料中记载了其他细节。这正是可重复研究的定义。
 
3年的工作和4个不同代码的数百次运行告诉我们有多少方法会出错。未能记录任何软件或硬件的版本,忽略单个参数,或者对如何使用另一个研究人员的代码的限制视而不见,都可能会让你误入歧途。
 
我们发现,只能通过自动化每一步来达到必要的可靠性和透明度。手动操作被脚本或登录到文件中取代;绘图只能通过代码进行,而不是通过图形用户界面;每一个结果,包括那些失败的实验都被记录在案。在这个过程中的每一步,我们都希望通过预测另一个研究者可能需要什么来重现我们的结果或者通过重复他们的研究独立地得出相同的结果。
 
大约150年前,Louis Pasteur展示了如何以可重复的方式进行实验,而且证明了这样做的价值。起初,他的研究遭到了许多人的怀疑,但当人们在重现他的研究结果、用他所使用的详尽的记录方法后,人们被他说服了。在计算科学领域,我们仍在学习如何与他并驾齐驱。我和学生不断地讨论并完善我们的标准,与自己所在的领域分享可重复性实践,希望其他人也能采纳类似的理念。是的,研究这些标准需要时间和努力——也许我们的论文发表得比较慢,但它们不太可能出错。■
  
Lorena A. Barba是位于华盛顿特区的乔治·华盛顿大学的副教授。请将你的故事发送至 SciCareerEditor@aaas.org
DOI: 10.1126/science.354.6308.142
鸣谢:“原文由美国科学促进会(www.aaas.org)发布在2016年10月7日《科学》杂志”。官方英文版请见
http://science.sciencemag.org/content/354/6308/142。
 
《科学新闻》 (科学新闻2018年10月刊 科学·职场生涯)

分享到:

0