Quale materiale devo includere in un articolo di rivista (o pubblicare online) per rendere riproducibile la mia ricerca computazionale?


23

La riproducibilità è diventata sempre più importante nella ricerca scientifica computazionale. (Ad esempio, vedi questo articolo di Roger Peng in Science ; sono a conoscenza anche di altri articoli e siti Web simili.) Tuttavia, non mi è chiaro quante informazioni dovrei includere in un articolo di giornale (o online) da fare la mia ricerca computazionale riproducibile (supponendo che non vi siano altri ostacoli, come gli accordi di proprietà intellettuale). Ci sono delle linee guida là fuori e, in caso contrario, le persone potrebbero suggerire quali passi i ricercatori dovrebbero prendere per rendere riproducibile la loro ricerca scientifica computazionale?

Di particolare utilità nelle risposte sarebbero possibili modi per attuare tali suggerimenti - flussi di lavoro, in sostanza. Sono preferibili flussi di lavoro indipendenti dal sistema o basati su Linux. Inoltre, sarebbe utile discutere di qualsiasi esperienza personale pertinente che hai avuto.

Nel mio caso particolare, sto scrivendo un documento teorico con un paio di calcoli di esempio che sono abbastanza semplici da poter essere eseguiti in MATLAB. Penserei che in questo caso, incluso lo script MATLAB, oltre a notare la versione specifica di MATLAB sulla mia macchina, sarebbe sufficiente per garantire la riproducibilità. Tuttavia, sono certo che ci sono scenari più complicati là fuori e consigli su come effettuare ricerche riproducibili sarebbero molto utili da sapere per progetti futuri.

Risposte:


17

In ordine approssimativo di importanza.

Codice sorgente

  1. Rendi disponibile il codice che implementa gli aspetti chiave del tuo algoritmo. Anche se l'utente non può crearlo o eseguirlo, può leggere esattamente ciò che viene fatto. Ho notato diverse volte semplici decisioni che non sono state documentate in un documento, ma a cui un paio di minuti con il codice sorgente hanno risposto in modo conclusivo.
  2. Renderlo eseguibile. Ciò comporta la documentazione delle versioni delle librerie dipendenti e di solito richiede la scrittura di codice in qualche modo portatile. Assicurati che si basi su almeno una macchina diversa dalla tua (è facile avere dipendenze nascoste se non l'hai mai costruita in un ambiente pulito).
  3. Specifica la versione del codice che è stato utilizzato. Se non una versione rilasciata formalmente (e talvolta anche allora), documentare l'SHA1 della versione. (Questo vale naturalmente per DSCM come Git e Mercurial, ma può essere utilizzato ovunque.) Questo è un modo molto affidabile per garantire che qualcuno abbia davvero la stessa versione del codice.
  4. Includi i parametri di configurazione e host, inclusi il fornitore del compilatore, le versioni e i flag di ottimizzazione, le librerie di sistema come libc, il tipo di CPU, il tipo di memoria e la topologia (specialmente per gli studi sulle prestazioni).

Parametri di runtime / file di input

Includi la specifica di input completa. Se è stato generato da uno script, includilo. Se si tratta di dati enormi, documentare come ottenere ed elaborare i dati. Se il tuo algoritmo ha casualità, specifica il generatore di numeri casuali e il seme utilizzato.

Script per generare figure e tabelle

È molto utile includere questi script, sia per chiarire eventuali domande su ciò che le figure mostrano realmente sia per consentire al lettore di sperimentare come cambiano le cose se cambiano i parametri o modificano l'algoritmo.


Quanto sarebbe importante includere test unitari? Quanto bene dovrei documentare il codice che includo per la riproducibilità?
Geoff Oxberry,

Se si desidera solo la riproducibilità dei risultati, non sono necessari test unitari e pagine di manuale / manuali dell'utente. Se stai cercando di attirare futuri coautori o utenti del tuo software (citazioni ...), vale la pena scrivere il software per il riutilizzo e documentarlo a fondo. Nota che, indipendentemente dal fatto che il tuo software sia destinato ad essere utilizzato da altri, i test e la documentazione potrebbero farti risparmiare tempo a lungo termine, solo perché ti consente di spostarti e sperimentare in modo più sicuro.
Jed Brown,

6

La maggior parte delle riviste non è predisposta per questo in alcun modo formale, ma di recente abbiamo fondato l'Archivio del software numerico che ha lo scopo specifico di avere il codice sorgente e tutto ciò che è necessario per far parte dell'articolo. Dai un'occhiata: http://journals.tdl.org/ans Le iscrizioni sono benvenute!


2
Supponendo di utilizzare il progetto software per animali domestici di alcuni membri del comitato editoriale . Non posso fare a meno di sentire che questo requisito degrada l'integrità del giornale.
Jack Poulson,

1
@JackPoulson: questo è un punto che abbiamo discusso a lungo tra i redattori e di cui abbiamo discusso ancora più a lungo con gli altri membri della comunità. Penso che tutti vediamo il tuo punto, ma allo stesso tempo, ci siamo sentiti come se non potessimo farlo in nessun altro modo per due motivi: (i) Non sappiamo dove trovare revisori per il progetto casuale X. (ii) C'è un certo consenso nella comunità su quali progetti siano di alta qualità e quali no; non volevamo che ANS diventasse uno sbocco per ogni aspirante progetto. Come indicato sulla pagina Web, vorremmo includere tutti i pacchetti di alta qualità alla fine.
Wolfgang Bangerth,

2
Per quale motivo un revisore deve avere familiarità con "progetto casuale X" anziché "campo casuale X"? Lo sostengo perché penso che il giornale stia perdendo una significativa classe di articoli, in quanto vi sono gravi limitazioni su ciò che è possibile implementare con il dato elenco di pacchetti. Ad esempio, non possono esserci contributi fondamentali all'elaborazione parallela, in quanto qualsiasi cosa implichi di immergersi nelle chiamate verso MPI, o, cielo proibito, BLAS o LAPACK, sembrerebbe violare gli standard del giornale. Sarei felice di parlarne ulteriormente offline.
Jack Poulson,

@JackPoulson: Per quanto ne so, se vuoi dare un contributo fondamentale al calcolo parallelo, oltre a scrivere un articolo su un altro giornale, puoi anche scrivere un documento "Introduzione alla Biblioteca" in ANS per assicurarti che la tua biblioteca sia aggiunto all'elenco approvato delle librerie.
Geoff Oxberry,

1
@GeoffOxberry: Wolfgang e io abbiamo avuto una conversazione amichevole, e la conclusione di base comune è stata che l'elenco delle librerie di algebra lineare dovrebbe essere notevolmente ampliato, ma che l'obiettivo del giornale è per biblioteche "di alta qualità" piuttosto che semplicemente riproducibilità, e pertanto deve esserci un processo di verifica.
Jack Poulson,

3

Nel

Stodden, V. 2009. "Il quadro giuridico per la ricerca scientifica riproducibile." CiSE .

Victoria Stodden raccomanda di pubblicare l'intero "compendio di ricerca" ed elenca i seguenti componenti a pag. 38:

  1. Il documento di ricerca
  2. I dati , inclusi documentazione e codice per l'elaborazione dei dati
  3. L'esperimento - tutto il codice sorgente; documentazione, parametri, impostazioni e dipendenze del sistema operativo
  4. I risultati dell'esperimento : figure, dati, file sorgente delle illustrazioni; e documentazione e spiegazione del trattamento dei risultati sperimentali
  5. Qualsiasi materiale ausiliario

2

Almeno, il codice sorgente e i dati che hai usato per eseguire i tuoi esperimenti dovrebbero essere accessibili da qualche parte. Aggiungi le istruzioni per creare il tuo codice, se necessario. In realtà ci sono così poche riviste ad accesso aperto che non esiste una regola aperta e stabilita.


2

Lavoro per Elsevier. La mia azienda ha iniziato a utilizzare il framework Collage (sviluppato in risposta all'Executable Paper Grand Challenge) nelle edizioni di riviste per consentire agli autori di includere tutti i dati e il codice necessari per riprodurre i risultati e le figure nei loro articoli. Questa funzione semplifica la riproduzione da parte dei lettori dei risultati riportati nell'articolo e il riutilizzo del materiale pubblicato per le proprie ricerche. Collage supporta un'ampia gamma di software open source e proprietari; ulteriori informazioni sono disponibili nel video informativo qui e nel sito Web Collage Authoring Environment .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.