Qual è il modo migliore per effettuare ricerche riproducibili se hai bisogno di librerie proprietarie?


19

La ricerca riproducibile nel calcolo mira a rendere il codice necessario per generare i risultati in un documento di calcolo disponibile per altri ricercatori in modo che possano eseguire questo codice per riprodurre i risultati in quel documento. Mi piacerebbe rendere riproducibili tutte le mie ricerche, ma sto incontrando un po 'di intoppo: un paio di articoli su cui sto lavorando usano un pacchetto di differenziazione automatica interno (chiamato DAEPACK ) su una libreria proprietaria ( CHEMKIN- II ; termini di licenza non chiari).

Sostituire questi componenti software con versioni open source richiederebbe troppo tempo. Esiste un sostituto open source per CHEMKIN-II chiamato Cantera , ma Cantera è in C ++, mentre CHEMKIN-II è in Fortran 77. Richiederebbe un grande sforzo per modificare abbastanza del codice Cantera in modo che potesse essere elaborato automaticamente strumenti di differenziazione per C ++.

Dato che ho bisogno di questi pacchetti proprietari, qual è il modo migliore per rendere la mia ricerca il più riproducibile possibile, supponendo che i ricercatori potrebbero non avere accesso a CHEMKIN-II? Poiché DAEPACK è un traduttore da fonte a fonte, non ho necessariamente bisogno di distribuire DAEPACK; Potrei essere in grado di includere il suo output, che sarebbe file sorgente Fortran che calcolano le derivate.

Più in generale, se nel tuo lavoro hai bisogno di software proprietario e quel software proprietario non è ampiamente disponibile (ovvero MATLAB, Mathematica, ecc.), Come rendi il tuo lavoro riproducibile?


DAEPACK modifica il codice sorgente CHEMKIN-II o usa semplicemente CHEMKIN-II internamente?
Dan

DAEPACK analizza il codice sorgente CHEMKIN-II e genera file sorgente Fortran che contengono subroutine che calcolano matrici giacobine, schemi di sparsità ed estensioni di intervallo. Non modifica il codice sorgente; è come un compilatore in quel senso.
Geoff Oxberry,

Se l'output di DAEPACK è modificato dalla sorgente CHEMKIN-II, perché è consentito distribuirlo?
Dan

È un lavoro derivato, ma non mi è chiaro se l'origine viene modificata. I nomi delle variabili vengono copiati, ma in base a tale argomento, molti dei programmi che ho scritto sono "sorgente CHEMKIN-II modificata". Dovrei controllare quel punto.
Geoff Oxberry,

La licenza CHEMKIN-II ti consente di distribuire liberamente fonti non modificate e di limitare il modo in cui distribuisci le modifiche? Non riesco a trovare una copia della sua licenza online.
Dan

Risposte:


13

Non credo che la definizione di "ricerca riproducibile" richieda che l'autore fornisca gratuitamente tutti gli strumenti necessari per riprodurre i risultati ottenuti. Se alcuni di essi sono proprietari, spetta al futuro utente, e non all'autore, prendere le disposizioni per acquisire il software necessario. (Non ti aspetteresti di dover costruire il software per qualcun altro per riprodurre i tuoi risultati, giusto?) Avresti la responsabilità, ovviamente, di specificare esattamente quale versione del software proprietario hai usato, ma è irragionevole aspettarsi per rendere un codice di ricerca compatibile con il software open source solo perché è open source.

[A parte questo, oltre a parlare della riproducibilità del software quando alcuni di questi sono proprietari, penso che una domanda più fondamentale debba essere affrontata per prima: il software fornisce risultati riproducibili attraverso diverse installazioni (ad esempio, per architetture diverse e versioni del compilatore? Ad esempio, errori di arrotondamento e differenze nelle allocazioni a causa di numeri diversi di processori significa che molti calcoli di simulazione molecolare daranno risultati diversi semplicemente cambiando il numero di processori inclusi nell'allocazione (le medie statistiche dovrebbero raggiungere lo stesso luogo, ma le traiettorie potrebbero e probabilmente finiranno in modo molto diverso.)]


2
Sono certamente d'accordo sul fatto che la ricerca riproducibile non obbliga l'autore a fornire gratuitamente tutto il software richiesto. Tuttavia, il software che non è affatto pubblicamente disponibile pone un problema. Uno degli obiettivi del movimento di ricerca riproducibile è quello di aiutare a costruire una consapevolezza di questo problema nella comunità, incoraggiando le persone a rendere pubblico il codice di ricerca anche se non hanno intenzione di fornirgli alcun supporto, solo per motivi di riproducibilità.
Khinsen,

2
Il codice venduto commercialmente è ancora disponibile. Se non è più possibile ottenere una licenza, è ovviamente una questione diversa. Ma l'autore originale di un codice non dovrebbe dover riscrivere un codice per accogliere un'altra libreria solo a fini di riproducibilità. (C'è un argomento da fare per una maggiore fattibilità e utilizzo del codice, ma l'argomento della riproducibilità non è prima facie necessario - anche se potrebbe essere sostenuto come sufficiente.)
Eismail

4

Non sono mai stato dell'opinione che "ricerca riproducibile" significhi che i tuoi colleghi lettori e scienziati dovrebbero solo fare clic su "Esegui" (o compilare o cosa hai) per riprodurre interamente i tuoi risultati. Se non altro, ciò ucciderebbe la ricerca di chiunque utilizzi un pacchetto di analisi statistiche proprietario, o renderebbe le cose "non riproducibili" se fossero create per una piattaforma o un linguaggio che passasse di moda. O del resto, qualcuno vuole riprodurre il tuo codice, ma non capisce / usa la lingua che usi.

CrossValidated ha avuto una discussione simile sull'argomento: "riproducibile" significa che puoi replicare la mia analisi sui miei dati o che l'esperimento stesso può essere rieseguito da zero e fornire risultati di conferma. Il link è qui: /stats/14999/how-are-we-defining-reproducible-research

Penso che l'elemento più importante sia descrivere ciò che hai fatto a livello in cui potrebbe essere ricodificato da qualcuno che fosse sufficientemente interessato e, se fossero utilizzati strumenti commerciali, tali strumenti vengono menzionati. Perché ciò serve sia a replicare l'esperimento sia a ricontrollare gli errori del codice.


2

Nel tuo caso, dove potresti non avere nemmeno i diritti per distribuire il codice che hai usato, una descrizione molto approfondita dell'algoritmo potrebbe essere la migliore che puoi fare. A seconda di quanto sia complesso il tuo codice, qualcuno potrebbe essere in grado di riprodurre qualsiasi cosa gli interessi da qualunque strumento abbia a disposizione.

Altrimenti, chiedi in giro e vedi quanto del tuo lavoro è autorizzato a rilasciare, quindi rilascialo.


Molto di questo deriva da questa conversazione in chat.
Dan

1

Il modo migliore per fare ricerca riproducibile è non fare affidamento su qualcosa di breve durata come codici specifici su una piattaforma specifica. Ieri stavamo calcolando su schede perforate, oggi su elettroni in silicio, domani potrebbe essere su laser con proteine ​​o persino cellule viventi, dopodomani su punti quantici e chissà quale sarà la prossima settimana.

La ricerca riproducibile dovrebbe chiarire i suoi concetti e le sue idee e non promuovere gli strumenti attualmente disponibili come hardware o software a un prerequisito per riprodurre i risultati della ricerca. Gli algoritmi utilizzati dovrebbero essere dettagliati in una chiara forma universale; l'attuale versione di un pacchetto hardware, compilatore o software specifico può essere utilizzata solo come strumento per dimostrare i risultati della ricerca.


Penso che abbiamo bisogno di entrambi: i concetti e le idee per la comprensione umana e l'interpretazione a lungo termine e il codice per la verifica a breve termine.
Khinsen,

1

Pubblicare il codice Fortran generato sembra un'ottima soluzione nel tuo caso.

Come regola generale, penso che l'uso di software non pubblicato sia incompatibile con gli obiettivi della ricerca riproducibile. Questo è uno dei motivi per cui vedo la ricerca riproducibile come un obiettivo a lungo termine piuttosto che qualcosa che si potrebbe richiedere di applicare immediatamente.


1

Lavoro per Elsevier. La mia azienda ha iniziato a utilizzare il framework Collage (sviluppato in risposta all'Executable Paper Grand Challenge) nelle edizioni del diario per consentire agli autori di pubblicare pezzi di codice eseguibile con il loro articolo. Questa funzione semplifica ai lettori la riproduzione dei risultati riportati nell'articolo e il riutilizzo del materiale pubblicato per le proprie ricerche. Collage supporta un'ampia gamma di software proprietari, oltre al software open source; 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.