Pythonスクリプトに悩まされた化学者:異なるOSがテスト数値計算で異なる結果を生み出す仕組み

Table of Contents

Pythonスクリプトに悩まされた化学者:異なるOSがテスト数値計算で異なる結果を生み出す仕組み

ハワイ大学の分析化学の専門家たちは、研究に使用されている特定の Python スクリプト セットを実行する異なるコンピューター オペレーティング システムでは、同じコードを実行しても異なる結果が生成される可能性があることを、かなり気がかりなことに発見しました。

学術誌「オーガニック・レターズ」に先週掲載された研究論文の中で、化学者のジャヤンティ・バンダリ・ニューパネ氏、ラム・ニューパネ氏、ユーヘン・ルオ氏、ウェスリー・ヨシダ氏、ルイ・サン氏、フィリップ・ウィリアムズ氏は、藍藻としてよく知られているシアノバクテリアに関する実験を検証する取り組みについて述べている。

ハワイ大学マノア校化学学部の副学部長兼教授であるウィリアムズ氏は、今週月曜日のレジスター紙との電話インタビューで、同氏の研究グループが、ガンやアルツハイマー病の治療に使用できるペニシリンなどの二次代謝産物を研究していると語った。

助教授のルイ・サン氏とともに研究する大学院生のユーヘン・ルオ氏は、同グループの実験結果の一部を検証しようとしたが、結果は使用されているオペレーティングシステムによって異なることがわかった。

「実はコードに問題があって、どのコンピューターを使っているかによって動作が変わってくるんです」とウィリアムズ氏は言う。

ルオ氏は、Maestro分子モデリング環境と連携するPythonスクリプト群を使用していました。2014年のNature Protocols誌の記事で紹介されているこれらのスクリプトは、パトリック・ウィロビー氏、マシュー・ヤンスマ氏、トーマス・ホイ氏によって、原子核周囲の局所磁場を評価するプロセスである核磁気共鳴分光法(NMR)を扱うために設計されました。

Luo氏がこれらの「Willoughby–Hoye」スクリプトを実行したところ、異なるオペレーティングシステムで異なる結果が得られました。macOS MavericksとWindows 10では予想通りの結果(173.2)でしたが、Ubuntu 16とmacOS Mojaveでは結果が異なり(それぞれ172.4と172.7)、これはそれほど大きな差ではないように思えるかもしれません。しかし、科学研究という厳密な世界では、これは大きな差です。

結局のところ、その理由はPythonに固有のものではなく、ディレクトリからファイルを読み取るための基盤となるシステムコールが、ファイルの読み取り順序をOSの個々の実装に委ねているためです。そのため、環境によってソート順序が異なります。

しかし、今回のケースでは、問題はPythonで解決されるべきでした。nmr-data_compilation.py例えば、Pythonスクリプトの1つには、globモジュールを使ってファイルを読み取る関数があります。

def read_gaussian_outputfiles(): list_of_files = [] ファイルの glob.glob('*.out'): list_of_files.append(file) 戻り値 list_of_files

Python のドキュメントでは、「glob モジュールは、Unix シェルで使用されるルールに従って、指定されたパターンに一致するすべてのパス名を検索しますが、結果は任意の順序で返されます。」と説明されています。

したがって、「Willoughby–Hoye」スクリプトの作成者は、一貫性を確保するために、コード内で目的のソート動作を定義する必要があります。

リポン大学の化学助教授パトリック・ウィロビー氏はツイッターへの投稿で、ウィリアムズ氏、サン氏、および同僚らにこの発見について感謝し、このスクリプトは過去には正常に動作していたと示唆した。

Pythonの攻撃

メガバイトのコード:Pythonがサイバー攻撃で1位に躍り出る

続きを読む

「6年前にスクリプトを書いたときは、OSがソート処理を処理できました。ルイとウィリアムズが必要なソートコードを追加し、計算結果が適切に整列されていることを確認する機能も追加しました」と彼は語った。

この特定の種類の計算では、ファイルの比較順序が結果に影響します。これは他の実験にも当てはまりますが、ウィリアムズ氏はその数は正確には把握していません。影響を受ける研究プロジェクトは最大で150~160件と推定していますが、昨年はこれらのスクリプトの使用を明示的に認めた論文が1件しかなかったと指摘しています。

同氏は、実験上の逸脱が同グループの研究結果に影響を与えなかったと述べたが、この種の誤りは状況が異なれば重大な影響を及ぼす可能性があることを認めた。

「この論文によって、私たちがやり取りするソフトウェアをどのように扱い、どのように見ているかについて、もう少し議論を深めるきっかけになればと思っています」とウィリアムズ氏は述べた。「コンピュータサイエンスの知識があまりない実験家である私たちは、なぜかこの方法がうまくいくとナイーブに思い込んでしまうのです。」®

コードの不具合を指摘した論文を最初に発見したフリーランスの科学ジャーナリスト、マディ・ベンダー氏に感謝します。

Discover More