Jakie materiały powinienem dołączyć do artykułu w czasopiśmie (lub opublikować online), aby moje badania obliczeniowe były odtwarzalne?

23

Powtarzalność staje się coraz ważniejsza w badaniach w dziedzinie obliczeń. (Na przykład zobacz ten artykuł autorstwa Rogera Penga w nauce ; znam też inne tego rodzaju artykuły i strony internetowe.) Jednak nie jest dla mnie jasne, ile informacji powinienem podać w artykule w czasopiśmie (lub w Internecie), aby zrobić moje badania obliczeniowe są powtarzalne (zakładając, że nie ma innych przeszkód, takich jak umowy o własności intelektualnej). Czy istnieją jakieś wytyczne, a jeśli nie, czy ludzie mogliby zasugerować, jakie kroki powinni podjąć naukowcy, aby ich badania w dziedzinie nauk obliczeniowych były odtwarzalne?

Szczególnie przydatne w odpowiedziach byłyby możliwe sposoby wdrożenia tych sugestii - w zasadzie przepływów pracy. Preferowane są przepływy pracy niezależne od systemu lub oparte na systemie Linux. Pomocne byłoby również omówienie wszelkich istotnych doświadczeń osobistych.

W moim szczególnym przypadku piszę artykuł teoretyczny z kilkoma przykładowymi obliczeniami, które są na tyle proste, że można je wykonać w MATLAB. Myślę, że w tym przypadku, w tym skrypt MATLAB, a także odnotowanie konkretnej wersji MATLAB na moim komputerze, wystarczyłoby, aby zapewnić odtwarzalność. Jestem jednak pewien, że istnieją bardziej skomplikowane scenariusze, a porady dotyczące przeprowadzania powtarzalnych badań byłyby bardzo pomocne w przypadku przyszłych projektów.

Geoff Oxberry
źródło

Odpowiedzi:

17

W przybliżonej kolejności ważności.

Kod źródłowy

  1. Udostępnij kod, który implementuje kluczowe aspekty Twojego algorytmu. Nawet jeśli użytkownik nie może go zbudować ani uruchomić, może dokładnie przeczytać, co zostało zrobione. Kilka razy zauważyłem proste decyzje, które nie zostały udokumentowane w gazecie, ale na które kilka minut z kodem źródłowym odpowiedział jednoznacznie.
  2. Zrób to. Obejmuje to dokumentowanie wersji bibliotek zależnych i zwykle wymaga napisania nieco przenośnego kodu. Upewnij się, że opiera się on na co najmniej jednym komputerze innym niż twój (łatwo jest ukryć zależności, jeśli nigdy nie zbudowałeś go w czystym środowisku).
  3. Podaj wersję użytego kodu. Jeśli nie jest to wersja oficjalnie wydana (a czasem nawet wtedy), udokumentuj SHA1 wersji. (To najbardziej naturalnie dotyczy DSCM, takich jak Git i Mercurial, ale może być używane wszędzie). Jest to bardzo niezawodny sposób, aby zagwarantować, że ktoś naprawdę ma tę samą wersję kodu.
  4. Uwzględnij parametry konfiguracji i hosta, w tym producenta kompilatora, wersje i flagi optymalizacji, biblioteki systemowe, takie jak libc, typ procesora oraz typ i topologia pamięci (szczególnie do badań wydajności).

Parametry wykonawcze / pliki wejściowe

Dołącz pełną specyfikację wejściową. Jeśli został wygenerowany przez skrypt, dołącz ten skrypt. Jeśli są to ogromne dane, udokumentuj, jak je pozyskiwać i przetwarzać. Jeśli twój algorytm ma losowość, określ generator liczb losowych i użyte ziarno.

Skrypty do generowania liczb i tabel

Bardzo pomocne jest dołączenie tych skryptów, zarówno w celu wyjaśnienia wszelkich pytań dotyczących tego, co naprawdę pokazują liczby, jak i umożliwienia czytelnikowi eksperymentowania z tym, jak rzeczy się zmieniają, jeśli zmieniają parametry lub modyfikują algorytm.

Jed Brown
źródło
Jak ważne byłoby włączenie testów jednostkowych? Jak dobrze powinienem udokumentować kod, który chcę dołączyć w celu zapewnienia odtwarzalności?
Geoff Oxberry
Jeśli chcesz tylko odtwarzać wyniki, testy jednostkowe i strony instrukcji / podręczniki użytkownika nie są konieczne. Jeśli próbujesz przyciągnąć przyszłych współautorów lub użytkowników oprogramowania (cytaty ...), warto napisać oprogramowanie do ponownego użycia i dokładnie go udokumentować. Należy pamiętać, że niezależnie od tego, czy oprogramowanie jest przeznaczone dla innych użyć, testów i dokumentacji może dobrze save ciebie czas w dłuższej perspektywie, tylko dlatego, że pozwala poruszać się i eksperymentować z większą ufnością.
Jed Brown,
6

Większość czasopism nie jest skonfigurowana do tego w żaden formalny sposób, ale niedawno założyliśmy Archiwum oprogramowania numerycznego, które specjalnie ma zawierać kod źródłowy i wszystko, co niezbędne, musi być częścią artykułu. Sprawdź to: http://journals.tdl.org/ans Zgłoszenia są mile widziane!

Wolfgang Bangerth
źródło
2
Zakładając, że korzystasz z projektu oprogramowania dla zwierząt domowych jakiegoś członka redakcji . Nie mogę się powstrzymać, ale czuję, że ten wymóg pogarsza integralność czasopisma.
Jack Poulson,
1
@JackPoulson: Jest to kwestia, którą szczegółowo omawialiśmy wśród redaktorów, i którą omawialiśmy jeszcze bardziej z innymi członkami społeczności. Myślę, że wszyscy rozumiemy twój punkt widzenia, ale jednocześnie czuliśmy, że nie możemy tego zrobić inaczej z dwóch powodów: (i) Nie wiemy, gdzie znaleźć recenzentów dla losowego projektu X. (ii) W społeczności panuje pewien konsensus, które projekty są wysokiej jakości, a które nie; nie chcieliśmy, aby ANS stał się rynkiem zbytu dla każdego niedoszłego projektu. Jak podajemy na stronie, chcielibyśmy ostatecznie dołączyć wszystkie pakiety wysokiej jakości.
Wolfgang Bangerth,
2
Z jakiego powodu recenzent musi znać „losowy projekt X” zamiast „losowe pole X”? Podnoszę tę kwestię, ponieważ myślę, że w dzienniku brakuje znacznej klasy artykułów, ponieważ istnieją poważne ograniczenia co do możliwych do wdrożenia z podaną listą pakietów. Na przykład nie można wnieść fundamentalnego wkładu w obliczenia równoległe, ponieważ wszystko, co wiąże się z zanurzaniem się w wywołaniach MPI, lub, nie daj Boże, BLAS lub LAPACK, wydaje się naruszać standardy czasopisma. Z przyjemnością porozmawiam o tym w trybie offline.
Jack Poulson,
@JackPoulson: O ile mogę stwierdzić, jeśli chcesz wnieść zasadniczy wkład w obliczenia równoległe, oprócz napisania artykułu w innym czasopiśmie, możesz również napisać artykuł „Wprowadzenie do biblioteki” w ANS, aby upewnić się, że twoja biblioteka jest dodano do zatwierdzonej listy bibliotek.
Geoff Oxberry
1
@GeoffOxberry: Wolfgang i ja przeprowadziliśmy polubowną rozmowę, a wspólny wniosek był taki, że lista bibliotek algebry liniowej powinna zostać znacznie rozszerzona, ale celem czasopisma jest raczej tworzenie bibliotek „wysokiej jakości”, a nie tylko odtwarzalność, oraz dlatego musi być jakiś proces weryfikacji.
Jack Poulson,
3

W

Stodden, V. 2009. „Ramy prawne dla powtarzalnych badań naukowych.” CiSE .

Victoria Stodden zaleca opublikowanie pełnego „kompendium badawczego” i wymienia następujące elementy na str. 38:

  1. Artykuł badawczy
  2. Dane - w tym dokumentacja i kod do przetwarzania danych
  3. Eksperyment - cały kod źródłowy; dokumentacja, parametry, ustawienia i zależności systemu operacyjnego
  4. Wyniki eksperymentu - liczby, dane, pliki źródłowe ilustracji; oraz dokumentację i wyjaśnienie przetwarzania wyników eksperymentalnych
  5. Wszelkie materiały pomocnicze
David Ketcheson
źródło
2

Przynajmniej kod źródłowy i dane użyte do eksperymentów powinny być gdzieś dostępne. W razie potrzeby dodaj instrukcje, aby zbudować kod. Naprawdę jest tak mało czasopism o otwartym dostępie, że nie ma otwartej i ustalonej reguły.

asmatic
źródło
2

Pracuję dla Elseviera. Moja firma zaczęła używać frameworku Collage (opracowanego w odpowiedzi na Wielkie Wyzwanie Papieru Wykonywalnego) w wydaniach czasopism, aby umożliwić autorom uwzględnienie wszystkich danych i kodu potrzebnego do odtworzenia wyników i liczb w swoich pracach. Ta funkcja ułatwia czytelnikom odtwarzanie wyników zgłoszonych w artykule i ponowne wykorzystanie opublikowanych materiałów do własnych badań. Collage obsługuje szeroką gamę oprogramowania typu open source i zastrzeżonego; więcej informacji można znaleźć w wideo informacyjnym tutaj oraz na stronie internetowej środowiska tworzenia kolaży .

Hylke Koers
źródło