日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

發(fā)布時間:2025/5/22 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nature论文爆出千行Python代码Bug,或影响百篇学术论文 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

你的論文借鑒了 Nature 文章的代碼?對不起,論文可能要重新寫了。

在 10 月 8 日發(fā)表于《ACS Publication》期刊的一篇論文中,來自夏威夷大學(xué)的 Jayanti Bhandari Neupane、Yuheng Luo、Rui Sun、Philip Williams 等研究者表示,他們發(fā)現(xiàn)了一個《Nature》論文中的 Python 腳本編程錯誤,這個錯誤可能會對 150 多篇已經(jīng)發(fā)表的化學(xué)論文產(chǎn)生影響。

10 月 8 日發(fā)表于「ACS Publication」的論文。作者是來自夏威夷大學(xué)化學(xué)系的 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」,用來計算核磁共振圖譜的化學(xué)位移值。夏威夷大學(xué)的研究者發(fā)現(xiàn),在該腳本中,有一個模塊是根據(jù)文件的排序返回值,但 Python 并沒有定義查詢的文件順序。因此,該系統(tǒng)在不同的腳本上會有不同的返回值。

在運行這些腳本的時候,Luo 在不同的操作系統(tǒng)上得到了不同的結(jié)果。

他們在實驗中使用了相同的核磁共振數(shù)據(jù),但結(jié)果卻出現(xiàn)了顯著差異。在 macOS Mavericks 和 Windows 10 上運行該腳本都能得到正確的結(jié)果(173.2),但在 macOS Mojave 和 Ubuntu 上運行時,結(jié)果卻出現(xiàn)了差異(分別是 172.4 和 172.7),與正確結(jié)果相差近 1 個百分點。雖然看起來相差不大,但在精確的科研世界里,這一差別就很嚴重了。

產(chǎn)生這種差異的原因是該腳本使用 Python 的 glob 模塊來查找符合特定規(guī)則的文件路徑名——基于 glob 的結(jié)果去生成讀取文件列表。但是 glob 的結(jié)果又取決于操作系統(tǒng)的文件返回值。于是腳本的計算結(jié)果會受到文件處理順序的影響。夏威夷大學(xué)的 Rui Sun 和 Phillip Williams 編寫了用來解決這個問題的排序較正代碼以保證結(jié)果的一致性,代碼量達到上千行。

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

2014 年,《Nature》上發(fā)布了一篇名為《A guide to small-molecule structure assignment through computation of (1H and 13C) NMR chemical shifts》的化學(xué)論文,論文中包含了上文中提到的使用 Python 語言構(gòu)建的腳本。

2014 年發(fā)表于「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

現(xiàn)任美國里彭學(xué)院化學(xué)系助理教授的 Patrick Willoughby 認可了夏威夷大學(xué)研究者的發(fā)現(xiàn),并且在推特上展示了該團隊對腳本所做的更正:

他還提醒道,「如果你在做或依賴核磁共振化學(xué)位移方面的研究,那你一定要讀一下這篇論文?!?/p>

腳本的作者也在 twitter 上表示了對這一發(fā)現(xiàn)的贊賞,但他表示,當年寫代碼的時候,腳本是運行良好的。

他說,「Rui 和 Williams 教授的發(fā)現(xiàn)真的非常棒。6 年前我寫這個腳本的時候,操作系統(tǒng)能夠處理排序問題。Rui 和 Williams 添加了必要的排序代碼和函數(shù)來確保計算排序一致,給他們點贊!」

這篇 2014 年的論文至今已經(jīng)被瀏覽過 1900 多次。Williams 表示,可能有 150-160 項研究項目受到了該 bug 的影響。例如,如果 Williams 用這個腳本錯誤地計算了樣本中的成分,而化學(xué)家剛好要用這一結(jié)果合成新的分析來研發(fā)新藥,那他的研究可能從開始就是錯的。

雖然 Williams 等人及時發(fā)現(xiàn)了這個問題,避免了該 bug 對自己的研究造成的影響,但它可能對其他研究舉足輕重。他希望這篇論文能夠讓科學(xué)家們更加關(guān)注實驗的計算部分。由于已發(fā)表的論文中很少提及操作系統(tǒng),所以這一 bug 產(chǎn)生的影響目前還很難得出定論。

「學(xué)術(shù)原型代碼」VS「工業(yè)級別代碼」

一般來說,代碼并不是一篇學(xué)術(shù)論文中最被關(guān)注的點。所以說,計算機學(xué)界及其他領(lǐng)域?qū)W界往往不會對代碼質(zhì)量過分深究。這也導(dǎo)致,不管是學(xué)術(shù)研究者還是業(yè)界人士,都能感覺到「學(xué)術(shù)原型代碼」和「工業(yè)級別代碼」之間的巨大差異。

顯然,科研人員們暫時未能成為精于代碼的「程序員」。論文中的代碼往往存在易讀性差、注釋量不足等問題,在沒有對應(yīng)技術(shù)手冊的情況下也常常讓讀者摸不著頭腦。

許多網(wǎng)友也對這一現(xiàn)象進行過討論:「發(fā) paper 的代碼一般多是 quick and dirty, 如果說一個方法很好,希望把整個代碼做好做健壯,一般要經(jīng)歷哪些步驟?」

最多的回答是:「重寫?!?/p>

還有一種類似張無忌演習(xí)太極劍法的實現(xiàn)方式:「把 paper 看完然后丟在一邊,直到完全忘卻代碼,然后根據(jù)記憶,按照工業(yè)級標準重寫一遍?!?/p>

不過相比于工業(yè)界的代碼,學(xué)術(shù)論文中代碼 bug 的影響畢竟還是有限的。

新西蘭惠靈頓維多利亞大學(xué)化學(xué)系講師 Rob Keyzers 在今年的一項研究中引用了這篇論文,他表示自己當時確實并不知曉這個 bug。

Rob Keyzers 沒有太過擔心自己的成果,因為團隊在研究中沒有使用這項有 bug 的腳本。同時他也補充說:「我們會仔細檢查研究數(shù)據(jù),以確保沒有得出任何不嚴謹?shù)慕Y(jié)論。」

「Nature Protocols」的發(fā)言人在一份聲明中回應(yīng)道,他們正在調(diào)查夏威夷大學(xué)這項研究中所提出的問題,目前處于保密方面的考慮暫不發(fā)表評論。

參考鏈接:

https://arstechnica.com/information-technology/2019/10/chemists-discover-cross-platform-python-scripts-not-so-cross-platform/

https://www.vice.com/en_us/article/zmjwda/a-code-glitch-may-have-caused-errors-in-more-than-100-published-studies

總結(jié)

以上是生活随笔為你收集整理的Nature论文爆出千行Python代码Bug,或影响百篇学术论文的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。