Welches Material sollte ich einem Zeitschriftenartikel (oder einer Online-Veröffentlichung) beifügen, um meine Computerrecherche reproduzierbar zu machen?


23

Die Reproduzierbarkeit wird in der rechnerwissenschaftlichen Forschung immer wichtiger. (Siehe z. B. diesen Artikel von Roger Peng in Science ; mir sind auch andere Artikel und Websites dieser Art bekannt.) Es ist mir jedoch nicht klar, wie viele Informationen ich in einem Zeitschriftenartikel (oder online) machen soll meine rechnerrecherche reproduzierbar (sofern es keine anderen hindernisse gibt, wie zum beispiel vereinbarungen über geistiges eigentum). Gibt es da draußen Richtlinien, und wenn nicht, könnten die Leute vorschlagen, welche Schritte die Forscher unternehmen sollten, um ihre rechnerwissenschaftliche Forschung reproduzierbar zu machen?

Von besonderem Nutzen für Antworten wären mögliche Wege, um diese Vorschläge umzusetzen - im Grunde genommen Workflows. Workflows, die systemunabhängig oder Linux-basiert sind, sind vorzuziehen. Es wäre auch hilfreich, relevante persönliche Erfahrungen zu besprechen.

In meinem speziellen Fall schreibe ich eine theoretische Arbeit mit ein paar Beispielen für Berechnungen, die so einfach sind, dass sie in MATLAB durchgeführt werden können. Ich denke, dass in diesem Fall das Einschließen des MATLAB-Skripts sowie das Notieren der spezifischen Version von MATLAB auf meinem Computer ausreichen würde, um die Reproduzierbarkeit sicherzustellen. Ich bin mir jedoch sicher, dass es kompliziertere Szenarien gibt, und Ratschläge zur Durchführung reproduzierbarer Untersuchungen wären für zukünftige Projekte sehr hilfreich.

Antworten:


17

In grober Reihenfolge der Wichtigkeit.

Quellcode

  1. Stellen Sie den Code zur Verfügung, der die wichtigsten Aspekte Ihres Algorithmus implementiert. Auch wenn der Benutzer es nicht erstellen oder ausführen kann, kann er genau lesen, was getan wird. Ich habe mehrmals einfache Entscheidungen bemerkt, die nicht in einem Papier dokumentiert waren, die aber innerhalb weniger Minuten mit dem Quellcode schlüssig beantwortet wurden.
  2. Mach es lauffähig. Dies beinhaltet die Dokumentation der Versionen abhängiger Bibliotheken und erfordert normalerweise, dass Sie etwas portablen Code schreiben. Stellen Sie sicher, dass mindestens eine andere Maschine als Ihre eigene installiert ist (es ist einfach, versteckte Abhängigkeiten zu haben, wenn Sie sie noch nie in einer sauberen Umgebung installiert haben).
  3. Geben Sie die Version des verwendeten Codes an. Wenn es sich nicht um eine offiziell freigegebene Version handelt (und manchmal sogar dann), dokumentieren Sie den SHA1 der Version. (Dies gilt natürlich für DSCMs wie Git und Mercurial, kann jedoch überall verwendet werden.) Dies ist ein sehr zuverlässiger Weg, um sicherzustellen, dass jemand wirklich die gleiche Version des Codes hat.
  4. Schließen Sie Konfigurations- und Hostparameter ein, einschließlich Compilerhersteller, Versionen und Optimierungsflags, Systembibliotheken wie libc, CPU-Typ sowie Speichertyp und -topologie (insbesondere für Leistungsstudien).

Laufzeitparameter / Eingabedateien

Geben Sie die vollständige Eingabespezifikation an. Wenn es von einem Skript generiert wurde, schließen Sie dieses Skript ein. Wenn es sich um große Datenmengen handelt, dokumentieren Sie, wie die Daten abgerufen und verarbeitet werden. Wenn Ihr Algorithmus zufällig ist, geben Sie den Zufallszahlengenerator und den verwendeten Startwert an.

Skripte zur Generierung von Abbildungen und Tabellen

Es ist sehr hilfreich, diese Skripte einzuschließen, um Fragen zu klären, was die Abbildungen wirklich zeigen, und um den Leser zu testen, wie sich die Dinge ändern, wenn sie Parameter ändern oder den Algorithmus modifizieren.


Wie wichtig wäre es, Unit-Tests einzubeziehen? Wie gut sollte ich den Code dokumentieren, den ich zur Reproduzierbarkeit einbinde?
Geoff Oxberry

Wenn Sie nur die Reproduzierbarkeit der Ergebnisse wünschen, sind Unit-Tests und Manualpages / Benutzerhandbücher nicht erforderlich. Wenn Sie versuchen, zukünftige Mitautoren oder Benutzer Ihrer Software zu gewinnen (Zitate ...), lohnt es sich, die Software für die Wiederverwendung zu schreiben und gründlich zu dokumentieren. Beachten Sie, dass unabhängig davon , ob die Software für andere zu verwenden, Tests gedacht und Dokumentation kann auch sparen Sie Zeit auf lange Sicht, nur weil es Ihnen mehr bewegen und experimentieren zuversichtlich lässt.
Jed Brown

6

Die meisten Journale sind nicht für diese formale Art eingerichtet, aber wir haben kürzlich das Archiv für numerische Software gegründet, das speziell den Quellcode und alles andere, was notwendig ist, als Teil des Artikels enthalten soll. Check it out: http://journals.tdl.org/ans Einreichungen sind willkommen!


2
Angenommen, Sie verwenden das Haustier-Software-Projekt eines Mitglieds der Redaktion . Ich kann nicht anders, als das Gefühl zu haben, dass diese Anforderung die Integrität des Journals beeinträchtigt.
Jack Poulson

1
@JackPoulson: Dies ist ein Punkt, den wir ausführlich unter den Redakteuren besprochen haben und den wir noch ausführlicher mit anderen in der Community besprochen haben. Ich denke, wir alle verstehen Ihren Standpunkt, aber gleichzeitig hatten wir das Gefühl, dass wir es aus zwei Gründen nicht anders können: (i) Wir wissen nicht, wo wir Gutachter für das zufällige Projekt X finden können. (Ii) In der Gemeinschaft besteht ein gewisser Konsens darüber, welche Projekte von hoher Qualität sind und welche nicht; Wir wollten nicht, dass ANS ein Outlet für jedes Möchtegern-Projekt wird. Wie auf der Webseite angegeben, möchten wir eventuell alle hochwertigen Pakete einbeziehen.
Wolfgang Bangerth

2
Aus welchem ​​Grund muss ein Prüfer mit "Zufallsprojekt X" anstelle von "Zufallsfeld X" vertraut sein? Ich erwähne dies, weil ich denke, dass dem Journal eine bedeutende Klasse von Artikeln fehlt, da es strenge Einschränkungen gibt, was mit der gegebenen Liste von Paketen implementiert werden kann. Zum Beispiel kann es keine grundlegenden Beiträge zum parallelen Rechnen geben, da alles, was das Eintauchen in Anrufe an MPI oder BLAS oder LAPACK betrifft, gegen die Standards des Journals zu verstoßen scheint. Ich würde gerne offline darüber weiter sprechen.
Jack Poulson

@ JackPoulson: Soweit ich weiß, können Sie, wenn Sie einen grundlegenden Beitrag zum parallelen Rechnen leisten möchten, zusätzlich zum Schreiben eines Papiers in einer anderen Zeitschrift auch ein "Library Introduction" -Papier in ANS schreiben, um sicherzustellen, dass Ihre Bibliothek vorhanden ist zur Liste der genehmigten Bibliotheken hinzugefügt.
Geoff Oxberry

1
@GeoffOxberry: Wolfgang und ich hatten ein freundschaftliches Gespräch, und die gemeinsame Schlussfolgerung war, dass die Liste der Bibliotheken für lineare Algebra stark erweitert werden sollte, dass das Ziel der Zeitschrift jedoch "qualitativ hochwertige" Bibliotheken und nicht nur einfache Reproduzierbarkeit ist Daher muss es einen gewissen Überprüfungsprozess geben.
Jack Poulson

3

Im

Stodden, V. 2009. „Der rechtliche Rahmen für reproduzierbare wissenschaftliche Forschung.“ CiSE .

Victoria Stodden empfiehlt, das vollständige "Forschungskompendium" zu veröffentlichen, und listet die folgenden Komponenten auf. 38

  1. Das Forschungspapier
  2. Die Daten - einschließlich Dokumentation und Code zur Verarbeitung der Daten
  3. Das Experiment - alles Quellcode; Dokumentation, Parameter, Einstellungen und Betriebssystemabhängigkeiten
  4. Die Ergebnisse des Experiments - Abbildungen, Daten, Illustrationsquelldateien; Dokumentation und Erläuterung der Aufbereitung der Versuchsergebnisse
  5. Beliebiges Hilfsmaterial

2

Zumindest sollten der Quellcode und die Daten, die Sie zur Durchführung Ihrer Experimente verwendet haben, irgendwo zugänglich sein. Fügen Sie bei Bedarf Anweisungen zum Erstellen des Codes hinzu. In Wirklichkeit gibt es so wenige Open Access-Zeitschriften, dass es keine offene und etablierte Regel gibt.


2

Ich arbeite für Elsevier. Mein Unternehmen hat damit begonnen, das Collage-Framework (das als Reaktion auf die Executable Paper Grand Challenge entwickelt wurde) in Zeitschriftenausgaben zu verwenden, damit Autoren alle Daten und den Code, die für die Reproduktion der Ergebnisse und Zahlen erforderlich sind, in ihre Arbeiten einbeziehen können. Diese Funktion erleichtert es den Lesern, die im Artikel gemeldeten Ergebnisse zu reproduzieren und veröffentlichtes Material für ihre eigene Forschung wiederzuverwenden. Collage unterstützt eine Vielzahl von Open-Source- und proprietären Programmen. Weitere Informationen finden Sie im Informationsvideo hier und auf der Collage Authoring Environment-Website .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.