LINUX.ORG.RU
ФорумTalks

Python подрывает мировую науку

 ,


0

1

Внезапно оказалось, что python-скрипт, который используется химиками с 2014 года, ведёт себя по-разному на разных ОС - там вызывается функция glob(), про которую автор скрипта подумал, что она всегда возвращает отсортированные по имени элементы, но на самом деле порядок вывода не гарантируется. Из-за этого на Ubuntu и macOS скрипт на тестовых данных выдавал значение 172.4 вместо 173.2

Точное число исследований, в которых использовался скрипт, неизвестно, но публикация с его кодом процитирована в 158 работах.

https://www.opennet.ru/opennews/art.shtml?num=51667

Deleted

Большего говнкода, чем у всяких ученых, в жизни не видел. Это я вам, как бывший химик говорю)

hippi90 ★★★★★
()

там вызывается функция glob(), про которую автор скрипта подумал, что она всегда возвращает отсортированные по имени элементы, но на самом деле порядок вывода не гарантируется

Криворук понадеялся на непонятно что, а виноват питон. Угу.

IPR ★★★★★
()
Последнее исправление: IPR (всего исправлений: 1)
Ответ на: комментарий от hippi90

Так и надо делать! А то куча внимания тратится на всякую фигню вроде красивого кода, архитектуры, еще чего-то. Лучше бы писали код в это время, реализовывали новые фичи :)

stevejobs ★★★★☆
()

Зато отступами всё отформатировано.

Exmor_RS ★★★
()

Т е это доказывает что никто не проверяет результаты исследований перед публикацией ?

Jopich1
()

А разве где-то функции, аналогичные os.listdir и glob.glob, гарантируют отсортированный список в результате?

WDWTFWW
()
Ответ на: комментарий от IPR

Посмотрел на archive.org, там в 2014 году действительно не было сказано про порядок. Только в 2016 году добавили «although results are returned in arbitrary order».

te111011010
()
Ответ на: комментарий от Jopich1

Точно так же как и с исходным кодом. Если код программы открытый, то это еще не значит, что он кем-то проверялся.

Leupold_cat ★★★★★
()
Ответ на: комментарий от TheAnonymous

Ага, и был бы тред по драматичности как РФВС.

Hertz ★★★★★
()
Ответ на: комментарий от deep-purple

Так то пых, а то протопых. Ну или джапопых на худой конец.

Hertz ★★★★★
()
Ответ на: комментарий от te111011010

А как вообще случилось, что в научных вычислениях важен порядок сортировки файлов? Может с этого надо начинать разбор полетов?

praseodim ★★★★★
()

Скачал

До сортировки:

['1b-nmr-conf-3.out', '1b-opt_freq-conf-18.out', '1b-nmr-conf-4.out', '1b-opt_freq-conf-16.out', '1b-opt_freq-conf-7.out', '1b-nmr-conf-13.out', '1b-nmr-conf-5.out', '1b-nmr-conf-2.out', '1b-nmr-conf-7.out', '1b-opt_freq-conf-17.out', '1b-nmr-conf-19.out', '1b-nmr-conf-8.out', '1b-opt_freq-conf-5.out', '1b-nmr-conf-12.out', '1b-opt_freq-conf-19.out', '1b-opt_freq-conf-13.out', '1b-nmr-conf-9.out', '1b-nmr-conf-16.out', '1b-nmr-conf-10.out', '1b-opt_freq-conf-4.out', '1b-opt_freq-conf-15.out', '1b-opt_freq-conf-12.out', '1b-opt_freq-conf-2.out', '1b-opt_freq-conf-3.out', '1b-opt_freq-conf-8.out', '1b-nmr-conf-6.out', '1b-opt_freq-conf-14.out', '1b-nmr-conf-14.out', '1b-nmr-conf-17.out', '1b-nmr-conf-11.out', '1b-nmr-conf-18.out', '1b-opt_freq-conf-6.out', '1b-opt_freq-conf-11.out', '1b-opt_freq-conf-9.out', '1b-opt_freq-conf-10.out', '1b-nmr-conf-15.out', '1b-nmr-conf-1.out', '1b-opt_freq-conf-1.out']

После сортировки:

['1b-nmr-conf-1.out', '1b-nmr-conf-10.out', '1b-nmr-conf-11.out', '1b-nmr-conf-12.out', '1b-nmr-conf-13.out', '1b-nmr-conf-14.out', '1b-nmr-conf-15.out', '1b-nmr-conf-16.out', '1b-nmr-conf-17.out', '1b-nmr-conf-18.out', '1b-nmr-conf-19.out', '1b-nmr-conf-2.out', '1b-nmr-conf-3.out', '1b-nmr-conf-4.out', '1b-nmr-conf-5.out', '1b-nmr-conf-6.out', '1b-nmr-conf-7.out', '1b-nmr-conf-8.out', '1b-nmr-conf-9.out', '1b-opt_freq-conf-1.out', '1b-opt_freq-conf-10.out', '1b-opt_freq-conf-11.out', '1b-opt_freq-conf-12.out', '1b-opt_freq-conf-13.out', '1b-opt_freq-conf-14.out', '1b-opt_freq-conf-15.out', '1b-opt_freq-conf-16.out', '1b-opt_freq-conf-17.out', '1b-opt_freq-conf-18.out', '1b-opt_freq-conf-19.out', '1b-opt_freq-conf-2.out', '1b-opt_freq-conf-3.out', '1b-opt_freq-conf-4.out', '1b-opt_freq-conf-5.out', '1b-opt_freq-conf-6.out', '1b-opt_freq-conf-7.out', '1b-opt_freq-conf-8.out', '1b-opt_freq-conf-9.out']

А точно лучше стало? М.б. в именах файлов ведущие нули сделать?

PS. я не учёный, обычная it-гопота

PPS. а, кажись допёр, данные по opt_freq должны были отдельно идти.

d_a ★★★★★
()
Последнее исправление: d_a (всего исправлений: 1)
Ответ на: комментарий от Jopich1

перед публикацией цензоры должны проверять результаты

цензоры

Это не цензоры, а рецензенты

должны проверять результаты

Не должны, они проверяют их на отсутствие совсем уж грубых ошибок и на правильность применения принятой методологии.

buddhist ★★★★★
()
Ответ на: комментарий от hippi90

Большего говнкода, чем у всяких ученых, в жизни не видел. Это я вам, как бывший химик говорю)

код по органической химии сам относится к органической химии

router ★★★★★
()
Ответ на: комментарий от buddhist

Это не цензоры, а рецензенты

Ну это от страны проживания зависит. :-D

atrus ★★★★★
()
Ответ на: комментарий от te111011010

Обратного там никогда не было сказано, это добавили для дебилов.

WitcherGeralt ★★
()
Ответ на: комментарий от te111011010

Посмотрел на archive.org, там в 2014 году действительно не было сказано про порядок. Только в 2016 году добавили «although results are returned in arbitrary order».

Если что-то не заявлено явно, значит это может работать как угодно.

IPR ★★★★★
()
Ответ на: комментарий от Im_not_a_robot

Ну так стандарт прочел и вперед норм проги делать.

Deleted
()
Ответ на: комментарий от Jopich1

Чтобы проверить результаты, нужно повторить исследование, что, очевидно, не делается. Рецензенты, как правило, оценивают статьи на наличие неких грубых и очевидных ошибок в умозаключениях и методах исследования, реже вникая в детали.

Leupold_cat ★★★★★
()
Ответ на: комментарий от buddhist

Не должны, они проверяют их на отсутствие совсем уж грубых ошибок и на правильность применения принятой методологии.

В более формализованных областях вроде рентгеноструктурного анализа могут прогнать последний этап вычислений. Чтобы самостоятельно вычислить все критерии оценки.

question4 ★★★★★
()

glob(), про которую автор скрипта подумал, что она всегда возвращает отсортированные по имени элементы

Ахахахахахаха хахахахахахахаахахаххххаааазхааа

хахахахахааааа!!

curufinwe ★★★★★
()
Ответ на: комментарий от praseodim

А как вообще случилось, что в научных вычислениях важен порядок сортировки файлов?

Не вникал, но там сортировались файлы, создаваемые Гауссианом.

Возможно, нужно было обрабатывать промежуточные данные в том же порядке, в котором они создавались, а они тасовались. Вместо 1-2-3-...9-10-11-... было 1-10-11-...-19-2-20-...

question4 ★★★★★
()

И ошибка в 3-4 знаке обычно несущественна. Неприятна, но качественный ответ меняет редко.

question4 ★★★★★
()
Ответ на: комментарий от question4

Не вникал, но там сортировались файлы, создаваемые Гауссианом.

Лол, серьёзно? Шёл 2019 год, а они гауссианом считают. Водовка, картофанчик.

Pacmu3ka
()
Ответ на: комментарий от question4

Лол, я двадцать лет назад всяких говноедов от «этой программы» отучал. А они даже не понимают, в чём проблема. Родина им дала NWChem, Dalton, ABINIT, да хоть сраный GAMESS - пользуйся! Не хочу, хочу жрать говно.

Pacmu3ka
()
Ответ на: комментарий от hippi90

Подтверждаю для физиков. А тут ещё и питон, который только усугубляет ситуацию.

DawnCaster ★★
()
Ответ на: комментарий от hippi90

+1, это я как автор говнокода говорю.

Мировая наука на Python держится, как наркоман на веществах.

t184256 ★★★★★
()
Ответ на: комментарий от WDWTFWW

Да, где-то читал, что в пыхе возвращают в алфавитном и кого-то это не устраивало.

t184256 ★★★★★
()

это пропаганда ноды?

af5 ★★★★★
()

Странно, я в своём питоноговнокоде принудительно сортирую вывод glob...

Shadow ★★★★★
()
Ответ на: комментарий от Pacmu3ka

Да, авторы сволочи. Были. Баны поснимали, новых не вводили, поэтому сайт поддерживать перестали.

Что плохого в самой программе? Врёт и не выдаёт правды? Вносит искажения в качестве защиты от копирования?

И кстати, за что Abinit выбросили из Дженту?

question4 ★★★★★
()
Последнее исправление: question4 (всего исправлений: 1)

А с чего он считал, что глоб сортирует? Еслиб сортировал, то орали бы, что он на это тратит процессорное время.

dem ★★
()
Ответ на: комментарий от IPR

Надо чтобы как в С, при попытке использовать что-то не разбираясь – отрывало ноги нафиг :)

andalevor ★★★
()
Ответ на: комментарий от Jopich1

Ну вообщето перед публикацией цензоры должны проверять результаты

Это как правило невозможно потому что чаще всего авторы не выкладывают в открытый доступ все сырые данные. Сейчас идёт движуха что это всё-таки надо делать (по крайней мере, в биологии, про остальные области не знаю), но пока что далеко не все журналы предоставляют такую возможность, и уж совсем единицы это требуют в обязательном порядке.

Axon ★★★★★
()
Ответ на: комментарий от TheAnonymous

правильный заголовок: «Linux подрывает мировую науку» на винде же правильно считает

А вот если бы автор скрипта был линуксоидом, то при первом же запуске получил бы кашу вместо сортировки, обнаружил ошибку, и исправил её. Вывод: Windows подрывает мировую науку.

Axon ★★★★★
()
Последнее исправление: Axon (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.