去年10月,一组天然产物化学家发现了一个广泛使用的核磁共振的软件故障。埋藏在内心深处的代码是一个简单的文件排序问题,这在某些操作系统导致不正确的值被预测为化学变化。这一发现把不确定性在结果发表在150多篇科学论文一个五年计划。

十年是一段很长的时间在这个领域架构的发展而言,编译器的发展,各种各样的发展

林恩Kamerlin,乌普萨拉大学

这不是第一次错误的软件代码已经蒙上了一层阴影计算研究,这些问题实际上是惊人的相似。在一个著名的案例中,一个编码错误的核心七年的纠纷之间的一些世界顶级理论化学家,他们试图模型过冷水的阶段。最近,一个算法使用旧版本的受欢迎的分子动力学软件Gromacs介绍被发现数量级的错误在模拟。

理想情况下,代码将被很好的记录和公开,允许研究人员审查脚本和定位问题。但这并非总是如此,传统出版实践,以及担忧知识产权,通常意味着代码访问困难甚至是不可能的。

即使源代码是开放给所有人看的,其他因素可以使问题复杂化。计算机程序倾向于依靠一批其他的软件,不断更新,新版本推出。这使得重复执行的具体条件,计算研究最初是在出乎意料的困难。这些问题已经变得如此普遍,现在“再现性危机”一个主要问题在计算科学家。

答案是什么?

“我的一个老Python脚本取决于200软件直接或间接,所有这些改变随着时间的推移,”说康拉德Hinsen发展,分子动力学软件在新奥尔良的法国国家科学研究中心。的最终运行的东西变得非常困难,甚至如果您可以运行它,这并不意味着你得到相同的数字。Hinsen解释说,即使老科学程序仍然运行和产生一个结果,它并不总是清楚他们已经计算。就像著名的东西搭车指南:答案是42 -但它是这问题的答案吗?”他说。

Hinsen计算科学方法特别感兴趣,有严重担忧再现性。几年前,他与《华尔街日报》ReScience C创建一个空间,人们负责回顾旧代码可以分享他们的结果。我们想改善这个问题在论文中有许多计算处方不完整、缺乏代码,然后在某种程度上没有人读正在开展哪些工作,“Hinsen说。即使在实验室,一个以前的学生做了一些和下面的一个不能接的工作,因为没有正确记录。

一个图像显示十年挑战海报

来源:由尼古拉斯•P鲁吉尔

ReScience C最近推出了一个挑战要求作者回去看看他们是否可以重现他们发表的研究结果至少10年前。Hinsen解释说,挑战是使计算科学更容易理解、更透明、更持久的。参加自己Hinsen重新审视自己的两个老项目——一个10年前写的,另一个年代中期。奇怪的是,25岁的代码仍然完美运行,而更复杂的10岁的代码没有。现代的代码的失败是由于故意更改2014年它是Python库。

计算生物化学家林恩Kamerlin解释说,遗留问题时往往更有问题的代码已经成为休眠状态。“生活”代码,所使用的方法,正在积极研究社区——错误往往是发现和快速修复。当封存方法是重新审视局势变得更加困难。Kamerlin描述她在处理旧代码的问题,然后被遗忘。”这是15 - 20年前(同事),从来没想过,他们把它带了灰尘在他们的办公室,”她回忆道。录音最终被找到,但在一个形式,是现代硬件不兼容。我们不能找到一个方法来实际阅读录音——我们最终不得不从头开始重新实现它,“Kamerlin说。

虽然这是一个极端的例子,它说明了可能出现的问题的快速计算的世界。十年是很长一段时间在这一领域的架构发展,编译器的发展,各种各样的发展,“Kamerlin说。”,如果你还没有看过[计划]10年来,没有保证你可以运行代码,所以你可以得到基本的软件相当于我的磁带播放器的问题。

黑盒的问题

与日益增长的使用机器学习模型来解决化学问题,再现性的问题在人工智能的研究尤其令人担忧。显而易见的问题是,你需要大量的训练数据,你应该,在理论上,保持一份,并使其公开的所以人们可以重做这些事情后,“Hinsen说。”,这通常是困难的,仅仅因为数据的大小,你可能无法存储或发布,它容易丢失,也常常被迅速更新,然后你不知道你使用哪个版本。

基本上团队合作、开放、透明,我真的认为这是唯一的出路,以确保安全的代码

林恩Kamerlin,乌普萨拉大学

一个问题是,许多计算化学程序程序员没有正式训练的软件开发人员,他们往往是化学家试图解决一个问题,没有现成的软件。因此,编程实践往往落后于什么被认为是最佳实践在计算机科学社区。

今天你可以发表一篇关于机器学习在化学测试(模型)在一个或两个基准,只有与选定的基线,未必是最先进的,”麻省理工学院的说Regina,22药物发现,发展深度学习方法。这是一个严重的问题,很难看到如果新方法确实是一个进步。,22解释说,这种做法将是不可接受的计算机科学的核心学科,新模型必须对尽可能多的公共数据集进行评估,以确保再现性。“不幸的是,这种级别的测试是在人工智能和化学仍然不是一个常见的做法。我希望它将会改变,”她补充道。

所以如何增加的寿命计算方法?

Hinsen建议所有学生在计算开始工作应该获得良好的编程实践的基本训练,确保他们可以跟踪项目和避免意外损失的数据。他教的课程软件木工网络,提供车间和实验室基本技能训练的研究计算,并组织了一次大规模网络公开课程(蕴藏)覆盖至关重要的技术,如文件管理、版本控制和备份数据。虽然不如亲自培训,全面Hinsen指出,蕴藏可以达到成千上万的人在一个会话。

一个囚犯的软件

Kamerlin强调记录所有进入的重要性计算研究,不仅需要发布脚本,但其他细节如所使用的编译器和软件的总体架构。她指出,免费在线存储库GitHubZenodo那里的研究人员可以存储所有的代码和使用额外的数据。Kamerlin解释说,开放代码社区可以帮助确保使用它并保持活跃,而不是丢弃尽快帮助解决问题。基本上是团队合作、开放、透明——我认为这是唯一的出路,以确保安全的代码,”她说。

再现性的问题,解决它需要的不仅仅是开放的纯粹的道德责任

亚历山大•Hocquet大学洛林

Hinsen同意,记录每一个方面的计算方法是至关重要的,但认为需要更多的不仅仅是公开代码和数据文件。科学软件的源代码是一个复杂的混合计算,近似计算所需内存管理机制和技术,处理数据集和优化性能。因此,代码通常可以比原来的几乎无法解释的任何其他开发人员。根据Hinsen,这导致了复杂的模型支撑许多计算的研究已经成为“囚禁”科学软件——通常这些模型存在的唯一地方。

为了说明这一点,Hinsen描述蛋白质的双分子的模拟,这通常是由一个函数定义由成千上万的坐标。理论上你应该把它放在纸,但你不能因为没有出版商愿意有50页描述5000年变量的函数方程,没人想读它,没有人可以重新计算它,”他说。所以,在软件有一个实现运行它,但是没有人确切地知道什么。”

Hinsen呼吁一个新的数字科学记数法帮助科学家重新控制他们的代码。这将创建一个正式的语言,将使编码信息发布和审查的方式适用于数字时代。这样一种语言为人类和机器可读的,使同行审查的科学模型和软件验证的计算方法。Hinsen希望这将防止科学软件包使用“黑盒”的方式,这是常有的事。

开源

透明代码周围的问题强调计算机科学的基本困境——所有的代码应该开放给所有人看的吗?如果不是,那么如何复制方法和建立在同行吗?但如果是这样,做计算科学家风险放弃他们的劳动成果免费吗?它甚至会实用——开发人员或用户?这些问题在计算化学家几十年来引起了热烈的讨论。

亚历山大Hocquet前计算化学家现在是一个大学的科学历史学家洛林,一束光照耀在法国,问题复杂的商业和法律的方式嵌入到科学行为。Hocquet指出,尽管推动开放软件在很多层面上是有意义的,商业软件的制造商认为他们的模型软件维护,提供了必要的参考资料。没有专有许可所产生的收入,你怎么能支持一个劳动力,将更新计划和让他们活着吗?作为证据,Hocquet强调成功的计算化学最著名的软件之一。高斯一直严格的许可条款吸引了许多科学家的愤怒,然而,程序仍然领导今天,50多年后第一次发达。

再现性的问题——解决它需要的不仅仅是仅仅是道义上的开放,“Hocquet说。的治理问题有很多,很多的许可证问题。并不是每一个自由软件许可证都是一样的——他们政治嵌入到他们。”

Hocquet指出,许多科学仪器开发和维护的公司,没有固定用户质疑他们的内部运作。当你买一个力量核磁共振谱仪,你不能指望知道里面到底是什么。你依赖于标准化的科学仪器的企业实体,你相信了,维护标准化、校准,Hocquet说。之间有一个平行”(软件)应该开放吗?”、“相信科学仪器是什么?”——开放的道德责任是当我们讨论核磁共振光谱学还很不发达,例如。

也许到那时,一个积极的再现性危机,它打开了一个对话,基本的科学哲学可以采取中心舞台。“计算化学领域实际上是一个科学领域的问题,什么是相信科学的两个异象实际上是讨论,“Hocquet说。在其他领域,你看不到这些争论。