Python腳本中的錯誤可能使150多個研究項目無效

Python腳本中的錯誤可能使150多個研究項目無效

一組用於計算分析的Python腳本中的編碼錯誤可能使150篇已發表的化學研究無效。

夏威夷大學最近發表的一篇研究文章顯示了Willoughby-Hoye腳本中的編程錯誤。

研究人員試圖檢查從藍細菌實驗獲得的結果,觀察到了使用類似的核磁共振波譜(NMR)數據獲得的結果的顯著變化。

傳播的錯誤取決於運行腳本的操作系統。發現這些腳本在Windows 10和macOS Mavericks上可提供準確的結果,但在macOS Mojave和Ubuntu上的準確率卻差了將近百分之一。

這些變體的來源來自腳本對Python的glob模塊的使用。

glob模塊查找與特定名稱模式相對應的文件,並且腳本根據glob結果生成要讀取的輸入文件列表。

但是,此模塊的輸出取決於用於排序和返回這些文件的操作系統。處理文件所採取的順序會影響這些腳本進行的計算結果。

由於輸出不準確,這個小細節可能會使許多以前的研究論文無效。

菲利普·威廉姆斯(Phillip Williams)和孫睿(Rui Sun)編寫了代碼,以解決此正確排序問題,現在可以保證結果一致。儘管這些變化對夏威夷大學團隊獲得的數據結果沒有任何影響,但可能會對其他已發表的研究項目產生實質性影響。

Willoughby-Hoye腳本以明尼蘇達大學的作者Patrick Willoughby和Thomas Hoye的名字命名。

帕特里克·威洛比(Patrick Willoughby)目前是Ripon大學化學系的助理教授,現在他對新發現以及對腳本的新更正表示認可。此更新在他在Twitter上的帖子中廣為人知:

“ Rui和Williams教授的偉大發現。六年前,當我編寫腳本時,操作系統能夠處理排序。 Rui和Williams添加了必要的排序代碼,並添加了一個函數以確保計算正確對齊。榮譽!” —帕特里克·威洛比(@pat_willoughby)

有時,信任外部腳本和庫可能會導致意外結果。

現在,您可能錯過了其他三個更新。

故事1. Salesforce“愛因斯坦分析”從Python更改為Google的Go語言

Salesforce將使用Google的Go編程語言來代替Einstein Analytics的C和Python。

通過在分析公司Tableau上花費超過157億美元來增強Einstein Analytics平臺,很明顯Salesforce認為分析是其未來的重要組成部分。

2017年,在推出Einstein Analytics之前,該公司使用Google的Golang進行了大修並重建了後端。

Salesforce首席架構師Guillaume Le Stum指出,數據集創建工具和查詢引擎使Einstein Analytics在C中“為提高性能”而創建,而Python包裝器提供了其他功能,如REST API服務器,解析查詢等。

Le Stum在有關Stack Overflow的帖子中說:

“從本質上講,該產品具有兩全其美的特點。

Python非常適合快速編寫更高級別的應用程序,但並不總是能夠提供企業級所需的高性能。 C會創建高性能的可執行文件,但是添加功能會花費更多時間。”

但在發佈前,Le Stum表示該平臺由於添加了最初不屬於其核心查詢引擎的新功能而開始出現性能下降。因此,即使具有開發和部署這些新功能的能力,Salesforce也可能正在考慮其長期計劃。

Le Stum補充說:“ Python不能很好地執行多線程,因此,要求包裝程序執行的越多,它的執行效果就越差。”

相比之下,Go適合適用於Google生產系統的大型應用程序,這也可能說明了從混合C-Python到Go平臺的轉變。

Le Stum進一步強調了Go的優勢,其中包括內置工具,輕鬆的故障排除,快速的編譯時間和部署,以及使編碼易於理解的方法。

Le Stum指出,在企業軟件中,工程師花費的時間比創建代碼花費的時間更多。

儘管如此,用Go編寫的概念證明仍使Salesforce可以隨著該平臺的Go版本在2018年全面上市而進一步發展。它的顯著優勢包括Go的跨平臺功能,該功能可輕鬆移植代碼。

Le Stum指出:“如果我們需要在移動應用程序中使用任何這些代碼,則可以將其交叉編譯到iOS或Android,並且可以正常工作。”

不是用Go編寫的Einstein Analytics平臺的唯一部分是它的集群管理器,它使用Java。

故事2。Microsoft推出了免費的Python編程課程

微軟最近發佈了一個YouTube視頻系列,稱為“ Python for Beginners”。新系列的目標是向有抱負的程序員講授Python的基礎知識。

蘇珊·伊巴赫(Susan Ibach)和克里斯托弗·哈里森(Christopher Harrison)也將主演該系列。 Susan是Microsoft的AI遊戲部門的業務開發經理之一,而Christopher目前是Microsoft的高級程序經理。

微軟說:

“儘管本課程不會涵蓋所有關於Python的知識,但我們還是要確保我們為您提供從Python編程的基礎,從日常的日常代碼和場景開始。”

該課程分為44個部分,將重點放在Python 3.X版本上,並針對具有JavaScript基本知識或參加某種形式的可視化編程語言的讀者。

該課程中提供的教程的視頻時長可能在三到十分鐘之間,涵蓋了Visual Studio Code的配置,處理循環以及執行錯誤處理等功能。

此外,Microsoft還在視頻旁邊發佈了一系列附加資源。增加的資源將包括幻燈片和編碼示例。

ZDNet的報告強調說,Microsoft可能會從其龐大的Python開發人員中受益,這些開發人員可以將Python應用到其Azure Machine Learning Studio中來構建應用程序。

故事3.帶有Walrus運算符的Python 3.8現在可用,並且僅支持位置參數

Python最近發佈了其最新版本Python 3.8,該版本具有一些新功能和改進。十月初,Python團隊公開了它的Python 3.8b2版本,這是四個計劃beta版本中的第二個版本。

Python 3.8新增了哪些功能?

從各個方面講,Python 3.8的新增功能都令人著迷。一些值得注意的補充包括:

新的功能參數(PEP 570)。

新的Walrus運算符(PEP 572)。

Pickle協議5支持帶外數據緩衝區(PEP 574)。

已驗證的打開掛鉤和審核掛鉤(PEP 578)。

用於配置Python初始化的新C API(PEP587)。

支持Vectorcall(PEP 590)。

值得一提的其他新功能包括:

格式化的字符串(f-strings)現在具有=說明符,新的元數據模塊(importlib.metadata)和並行文件系統緩存。

您可以在Python文檔中的新Python 3.8中看到其他改進的模塊,增加的內容和刪除的內容。另外,有關完整的詳細信息,請檢查變更日誌。


分享到:


相關文章: