Недоработка в Python-скрипте могла привести к неверным результатам в более 100 публикациях по химии

Аспирант гавайского университета обнаружил проблему в Python-скрипте, используемом для вычислений химического сдвига, определяющего химическое строение изучаемого вещества при спектральном анализе сигналов методом ядерного магнитного резонанса. В ходе верификации результатов исследований одного из своих профессоров аспирант заметил, что при выполнении скрипта в разных операционных системах над одним и тем же набором данных на выходе получался разный результат.

Например, при запуске в macOS 10.14 и Ubuntu 16.04 для протестированного набора данных скрипт выдавал некорректное значение 172.4 вместо 173.2. Скрипт включает около 1000 строк кода и используется химиками с 2014 года. Изучение кода показало, что вывод неверного значения обусловлен отличиями при сортировке файлов в разных операционных системах. Авторы скрипта полагали, что функция «glob()» всегда возвращает файлы, отcортированные по имени, в то время как в документации на glob указано, что порядок вывода не гарантируется. Исправление свелось к добавлению list_of_files.sort() после вызова glob().

Обнаруженная проблема поставила под сомнение корректность более 100 публикаций по химии, выводы в которых были сделаны на основе вычисленного скриптом химического сдвига. Точное число исследований, в которых использовался скрипт неизвестно, но публикация с его кодом процитирована в 158 работах. Авторам данных работ рекомендовано оценить корректность работы скрипта на применявшихся для вычисления операционных системах и провести перерасчёт для того, чтобы убедиться в правильности вычисленных значений. Инцидент является прекрасным примером того, что не только качество проведения эксперимента, но и корректность обработки полученных данных в программах, которые до этого повсеместно использовались, может повлиять на конечный результат.

Источник: http://www.opennet.ru/opennews/art.shtml?num=51667