位置:爱财经新闻网 > 科技数码 > 正文 >

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

2019年10月20日 13:45来源:未知手机版

圣诞树英文,广告计划书,焓变

参与:张倩、郑丽慧

你的论文借鉴了 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 的结果又取决于操作系统的文件返回值。于是脚本的计算结果会受到文件处理顺序的影响。夏威夷大学的 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 添加了必要的排序代码和函数来确保计算排序一致,给他们点赞!」

本文地址:http://www.axxxc.com/kejishuma/1004655.html 转载请注明出处!

今日热点资讯