Какой материал я должен включить в журнальную статью (или опубликовать в Интернете), чтобы сделать мои вычислительные исследования воспроизводимыми?

23

Воспроизводимость становится все более важной в научных исследованиях в области вычислительной техники. (Например, см. Эту статью Роджера Пенга в журнале « Наука» ; мне известны и другие подобные статьи и веб-сайты.) Однако мне не ясно, сколько информации я должен включить в журнальную статью (или онлайн), чтобы сделать мои компьютерные исследования воспроизводимы (при условии, что нет никаких других препятствий, таких как соглашения об интеллектуальной собственности). Существуют ли какие-либо руководящие принципы, и если нет, могут ли люди предложить, какие шаги следует предпринять исследователям, чтобы сделать их исследования в области вычислительной техники воспроизводимыми?

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

В моем конкретном случае я пишу теоретическую статью с несколькими примерами расчетов, которые достаточно просты, чтобы их можно было сделать в MATLAB. Я думаю, что в этом случае, включая сценарий MATLAB, а также указание конкретной версии MATLAB на моем компьютере, будет достаточно для обеспечения воспроизводимости. Однако я уверен, что существуют более сложные сценарии, и советы о том, как проводить воспроизводимые исследования, было бы очень полезно знать для будущих проектов.

Джефф Оксберри
источник

Ответы:

17

В грубом порядке важности.

Исходный код

  1. Сделайте код, который реализует ключевые аспекты вашего алгоритма, доступным. Даже если пользователь не может построить или запустить его, он может прочитать именно то, что сделано. Я несколько раз замечал простые решения, которые не были документированы в документе, но на которые пару минут с исходным кодом ответили окончательно.
  2. Сделайте это работоспособным. Это включает в себя документирование версий зависимых библиотек и, как правило, требует написания несколько переносимого кода. Убедитесь, что он построен как минимум на одной машине, отличной от вашей (легко иметь скрытые зависимости, если вы никогда не создавали его в чистой среде).
  3. Укажите версию кода, который был использован. Если это не официально выпущенная версия (а иногда даже тогда), документируйте SHA1 версии. (Это наиболее естественно относится к DSCM, таким как Git и Mercurial, но может использоваться где угодно.) Это очень надежный способ гарантировать, что кто-то действительно имеет ту же версию кода.
  4. Включите конфигурацию и параметры хоста, включая производителя компилятора, версии и флаги оптимизации, системные библиотеки, такие как libc, тип процессора, а также тип и топологию памяти (особенно для исследований производительности).

Параметры времени выполнения / входные файлы

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

Скрипты для генерации рисунков и таблиц

Очень полезно включить эти сценарии, чтобы прояснить любые вопросы о том, что на самом деле показывают цифры, и позволить читателю поэкспериментировать с тем, как все меняется, если они изменяют параметры или модифицируют алгоритм.

Джед браун
источник
Насколько важно включить юнит-тесты? Насколько хорошо я должен документировать код, который я включаю для воспроизводимости?
Джефф Оксберри
Если вы просто хотите воспроизвести результаты, модульные тесты и справочные страницы / руководства пользователя не нужны. Если вы пытаетесь привлечь будущих соавторов или пользователей вашего программного обеспечения (цитаты ...), тогда стоит написать программное обеспечение для повторного использования и тщательно документировать его. Обратите внимание, что независимо от того, предназначено ли ваше программное обеспечение для использования другими людьми, тесты и документация могут в конечном итоге сэкономить ваше время, просто потому, что они позволяют вам двигаться и более уверенно экспериментировать.
Джед Браун
6

Большинство журналов не предназначены для этого каким-либо формальным образом, но мы недавно создали Архив цифрового программного обеспечения, специально предназначенный для того, чтобы иметь исходный код и все остальное, что необходимо, чтобы быть частью статьи. Проверьте это: http://journals.tdl.org/ans Материалы приветствуются!

Вольфганг Бангерт
источник
2
Предполагая, что вы используете проект программного обеспечения для домашних животных какого-то члена редколлегии . Я не могу не чувствовать, что это требование ухудшает целостность журнала.
Джек Поулсон,
1
@JackPoulson: Это вопрос, который мы подробно обсуждали среди редакторов, и который мы обсудили еще больше с другими членами сообщества. Я думаю, что мы все понимаем вашу точку зрения, но в то же время мы чувствовали, что не можем сделать это иначе по двум причинам: (i) мы не знаем, где найти рецензентов для случайного проекта X. (ii) В сообществе существует определенный консенсус относительно того, какие проекты являются высококачественными, а какие нет; мы не хотели, чтобы ANS стала выходом для каждого проекта подражателей. Как мы заявляем на веб-странице, мы хотели бы в конечном итоге включить все высококачественные пакеты.
Вольфганг Бангерт
2
По какой причине рецензент должен быть знаком с «случайным проектом X» вместо «случайного поля X»? Я поднял этот вопрос, потому что считаю, что в журнале отсутствует значительный класс статей, поскольку существуют серьезные ограничения на то, что можно реализовать с помощью данного списка пакетов. Например, не может быть никакого фундаментального вклада в параллельные вычисления, поскольку все, что связано с погружением в вызовы MPI, или, боже упаси, BLAS или LAPACK, может показаться нарушением стандартов журнала. Я был бы рад поговорить об этом дальше в автономном режиме.
Джек Поулсон,
@JackPoulson: Насколько я могу судить, если вы хотите внести фундаментальный вклад в параллельные вычисления, помимо написания статьи в другом журнале, вы также можете написать статью «Введение в библиотеку» в ANS, чтобы убедиться, что ваша библиотека добавлен в утвержденный список библиотек.
Джефф Оксберри
1
@GeoffOxberry: У нас с Вольфгангом была дружеская беседа, и общий вывод заключался в том, что список библиотек линейной алгебры должен быть значительно расширен, но цель журнала - для «высококачественных» библиотек, а не просто для воспроизводимости, и поэтому должен быть какой-то процесс проверки.
Джек Полсон,
3

В

Стодден, V. 2009. «Правовые рамки воспроизводимых научных исследований». CiSE .

Виктория Стодден рекомендует опубликовать полный «сборник исследований» и перечисляет следующие компоненты на с. 38:

  1. Исследовательская работа
  2. Данные - включая документацию и код для обработки данных
  3. Эксперимент - весь исходный код; документация, параметры, настройки и зависимости операционной системы
  4. Результаты эксперимента - рисунки, данные, иллюстрации исходных файлов; и документация и объяснение обработки результатов эксперимента
  5. Любой вспомогательный материал
Дэвид Кетчесон
источник
2

По крайней мере, исходный код и данные, которые вы использовали для проведения экспериментов, должны быть доступны где-то. Добавьте инструкции для сборки своего кода, если это необходимо. На самом деле журналов с открытым доступом так мало, что не существует открытого и установленного правила.

asmatic
источник
2

Я работаю на Elsevier. Моя компания начала использовать платформу Collage (разработанную в ответ на выполнимую заявку Grand Challenge) в журнальных выпусках, чтобы позволить авторам включать все данные и код, необходимые для воспроизведения результатов и рисунков в своих статьях. Эта функция позволяет читателям воспроизводить результаты, представленные в статье, и повторно использовать опубликованные материалы для своих собственных исследований. Collage поддерживает широкий спектр открытого и закрытого программного обеспечения; Более подробную информацию можно найти в информационном видео здесь и на веб-сайте Collage Authoring Environment .

Хыльке Коерс
источник