Nature论文爆出千行Python代码Bug,或影响百篇学术论文

  发布时间:2025-11-05 15:49:06   作者:玩站小弟   我要评论
你的论文借鉴了 Nature 文章的代码?对不起,论文可能要重新写了。在 10 月 8 日发表于《ACS Publication》期刊的一篇论文中,来自夏威夷大学的 Jayanti Bhandari 。

你的论文论文论文借鉴了 Nature 文章的代码?对不起,论文可能要重新写了。爆出百篇

在 10 月 8 日发表于《ACS Publication》期刊的千行一篇论文中,来自夏威夷大学的代码 Jayanti Bhandari Neupane、Yuheng Luo、影响Rui Sun、学术Philip Williams 等研究者表示,论文论文他们发现了一个《Nature》论文中的爆出百篇 Python 脚本编程错误,这个错误可能会对 150 多篇已经发表的千行化学论文产生影响。

 

10 月 8 日发表于「ACS Publication」的代码论文。作者是影响来自夏威夷大学化学系的 Jayanti Bhandari Neupane、Yuheng Luo、学术Rui Sun、论文论文Philip Williams 等人。爆出百篇他们在这篇论文中指出了《Nature》论文中的千行 Python 脚本 bug。

论文地址:https://pubs.acs.org/doi/full/10.1021/acs.orglett.9b03216

论文中提到的脚本名为「Willoughby-Hoye」,用来计算核磁共振图谱的化学位移值。夏威夷大学的研究者发现,在该脚本中,有一个模块是根据文件的香港云服务器排序返回值,但 Python 并没有定义查询的文件顺序。因此,该系统在不同的脚本上会有不同的返回值。

在运行这些脚本的时候,Luo 在不同的操作系统上得到了不同的结果。

他们在实验中使用了相同的核磁共振数据,但结果却出现了显著差异。在 macOS Mavericks 和 Windows 10 上运行该脚本都能得到正确的结果(173.2),但在 macOS Mojave 和 Ubuntu 上运行时,结果却出现了差异(分别是 172.4 和 172.7),与正确结果相差近 1 个百分点。虽然看起来相差不大,但在精确的科研世界里,这一差别就很严重了。

产生这种差异的原因是该脚本使用 Python 的 glob 模块来查找符合特定规则的文件路径名——基于 glob 的结果去生成读取文件列表。但是 glob 的云南idc服务商结果又取决于操作系统的文件返回值。于是脚本的计算结果会受到文件处理顺序的影响。夏威夷大学的 Rui Sun 和 Phillip Williams 编写了用来解决这个问题的排序较正代码以保证结果的一致性,代码量达到上千行。

在《Nature》论文中藏身五年的 Bug

2014 年,《Nature》子刊上发布了一篇名为《A guide to small-molecule structure assignment through computation of (1H and 13C) NMR chemical shifts》的化学论文,论文中包含了上文中提到的使用 Python 语言构建的脚本。

2014 年发表于「Nature」的那篇论文。

论文地址:https://www.nature.com/articles/nprot.2014.042

论文中的 Python 脚本下载地址:https://media.nature.com/original/nature-assets/nprot/journal/v9/n3/extref/nprot.2014.042-S2.zip

现任美国里彭学院化学系助理教授的 Patrick Willoughby 认可了夏威夷大学研究者的发现,并且在推特上展示了该团队对脚本所做的更正:

他还提醒道,「如果你在做或依赖核磁共振化学位移方面的研究,那你一定要读一下这篇论文。」

脚本的作者也在 twitter 上表示了对这一发现的赞赏,但他表示,高防服务器当年写代码的时候,脚本是运行良好的。

他说,「Rui 和 Williams 教授的发现真的非常棒。6 年前我写这个脚本的时候,操作系统能够处理排序问题。Rui 和 Williams 添加了必要的排序代码和函数来确保计算排序一致,给他们点赞!」

这篇 2014 年的论文至今已经被浏览过 1900 多次。Williams 表示,可能有 150-160 项研究项目受到了该 bug 的影响。例如,如果 Williams 用这个脚本错误地计算了样本中的成分,而化学家刚好要用这一结果合成新的分析来研发新药,那他的研究可能从开始就是错的。

虽然 Williams 等人及时发现了这个问题,避免了该 bug 对自己的研究造成的影响,但它可能对其他研究举足轻重。他希望这篇论文能够让科学家们更加关注实验的计算部分。由于已发表的论文中很少提及操作系统,所以这一 bug 产生的影响目前还很难得出定论。

「学术原型代码」VS「工业级别代码」

一般来说,代码并不是一篇学术论文中最被关注的点。所以说,计算机学界及其他领域学界往往不会对代码质量过分深究。这也导致,不管是学术研究者还是业界人士,都能感觉到「学术原型代码」和「工业级别代码」之间的巨大差异。

显然,科研人员们暂时未能成为精于代码的「程序员」。论文中的代码往往存在易读性差、注释量不足等问题,在没有对应技术手册的情况下也常常让读者摸不着头脑。

许多网友也对这一现象进行过讨论:「发 paper 的代码一般多是 quick and dirty, 如果说一个方法很好,希望把整个代码做好做鲁棒,一般要经历哪些步骤?」

最多的回答是:「重写。」

还有一种类似张无忌演习太极剑法的实现方式:「把 paper 看完然后丢在一边,直到完全忘却代码,然后根据记忆,按照工业级标准重写一遍。」

不过相比于工业界的代码,学术论文中代码 bug 的影响毕竟还是有限的。

新西兰惠灵顿维多利亚大学化学系讲师 Rob Keyzers 在今年的一项研究中引用了这篇论文,他表示自己当时确实并不知晓这个 bug。

Rob Keyzers 没有太过担心自己的成果,因为团队在研究中没有使用这项有 bug 的脚本。同时他也补充说:「我们会仔细检查研究数据,以确保没有得出任何不严谨的结论。」

「Nature Protocols」的发言人在一份声明中回应道,他们正在调查夏威夷大学这项研究中所提出的问题,目前处于保密方面的考虑暂不发表评论。

  • Tag:

相关文章

  • 以琦沃智能手表(领先智能手表市场,方便高效生活)

    摘要:随着科技的飞速发展,智能手表已经成为现代人生活中不可或缺的辅助工具。而以琦沃智能手表作为市场上领先的品牌,以其出色的功能和卓越的设计成为了人们心目中的首选。本文将详细介绍以琦沃智能...
    2025-11-05
  • LAMP安全加固之PHP篇

    复制;AutomaticallyaddfilesbeforeorafteranyPHPdocument. ;auto_prepend_file=“phpids.php”
    2025-11-05
  • 现在每个网络都是 OT 网络,安全能跟上吗?

    如今,每个网络都是OT 网络。或者很快就会。当然,这种转变的部分原因是 OT 和 IT 网络的持续融合。正如我们许多人所经历的那样,以前孤立的 OT 网络,如制造、加工、分销和库存管理,现在已经融入到
    2025-11-05
  • 如何清空iptables规则

    复制#!/bin/sh #accept-allpolicy IPT=/usr/local/sbin/iptables $IPT-t
    2025-11-05
  • 全网通手机与4G网络的完美结合(实现快速通信和无障碍连接的全新体验)

    摘要:随着移动通信技术的快速发展,全网通手机成为了人们追求更便捷通信和无障碍连接的首选。本文将探讨全网通手机以及其与4G网络的完美结合,为读者揭示这一新的通信方式带来的便利和前景。...
    2025-11-05
  • 几种常用关系型数据库介绍

    数据库管理系统是用于创建,维护与管理数据库的系统软件,是搭建其他应用环境所必备的软件之一,是软件系统架构的重要组成部分。对于IT人员,不论是开发还是测试人员都是其必须掌握的软件。对于开发可以说是他们吃
    2025-11-05

最新评论