Quel matériel dois-je inclure dans un article de revue (ou publier en ligne) afin de rendre mes recherches informatiques reproductibles?


23

La reproductibilité est devenue de plus en plus importante dans la recherche en science informatique. (Par exemple, consultez cet article de Roger Peng dans Science ; je connais également d'autres articles et sites Web de ce type.) Cependant, je ne sais pas exactement combien d'informations je devrais inclure avec un article de revue (ou en ligne) pour faire mes recherches informatiques reproductibles (en supposant qu'il n'y a pas d'autres obstacles, comme les accords de propriété intellectuelle). Existe-t-il des lignes directrices, et sinon, les gens pourraient-ils suggérer les mesures que les chercheurs devraient prendre pour rendre leur recherche en science informatique reproductible?

Il serait particulièrement utile dans les réponses de mettre en œuvre ces suggestions - des flux de travail, essentiellement. Les flux de travail indépendants du système ou basés sur Linux sont préférables. De plus, discuter de toute expérience personnelle pertinente que vous avez vécue serait également utile.

Dans mon cas particulier, j'écris un article théorique avec quelques exemples de calculs suffisamment simples pour pouvoir être effectués dans MATLAB. Je pense que dans ce cas, y compris le script MATLAB, ainsi que de noter la version spécifique de MATLAB sur ma machine, serait suffisant pour assurer la reproductibilité. Cependant, je suis certain qu'il existe des scénarios plus compliqués, et des conseils sur la façon d'effectuer des recherches reproductibles seraient très utiles à connaître pour de futurs projets.

Réponses:


17

Dans un ordre approximatif d'importance.

Code source

  1. Rendez disponible le code qui implémente les aspects clés de votre algorithme. Même si l'utilisateur ne peut pas le construire ou l'exécuter, il peut lire exactement ce qui est fait. J'ai remarqué à plusieurs reprises de simples décisions qui n'étaient pas documentées dans un document, mais auxquelles quelques minutes avec le code source ont répondu de manière concluante.
  2. Rendez-le exécutable. Cela implique de documenter les versions des bibliothèques dépendantes et vous oblige généralement à écrire du code quelque peu portable. Assurez-vous qu'il s'appuie sur au moins une machine autre que la vôtre (il est facile d'avoir des dépendances cachées si vous ne l'avez jamais construit dans un environnement propre).
  3. Spécifiez la version du code qui a été utilisée. S'il ne s'agit pas d'une version officiellement publiée (et parfois même alors), documentez le SHA1 de la version. (Cela s'applique tout naturellement aux DSCM comme Git et Mercurial, mais peut être utilisé n'importe où.) C'est un moyen très fiable de garantir que quelqu'un a vraiment la même version du code.
  4. Incluez les paramètres de configuration et d'hôte, y compris le fournisseur du compilateur, les versions et les indicateurs d'optimisation, les bibliothèques système comme libc, le type de processeur, le type de mémoire et la topologie (en particulier pour les études de performances).

Paramètres d'exécution / fichiers d'entrée

Inclure la spécification d'entrée complète. S'il a été généré par un script, incluez ce script. S'il s'agit de données volumineuses, documentez comment obtenir et traiter les données. Si votre algorithme est aléatoire, spécifiez le générateur de nombres aléatoires et la valeur de départ qui ont été utilisés.

Scripts pour générer des figures et des tableaux

Il est très utile d'inclure ces scripts, à la fois pour clarifier toutes les questions sur ce que les chiffres montrent réellement et pour permettre au lecteur d'expérimenter comment les choses changent s'ils changent des paramètres ou modifient l'algorithme.


Dans quelle mesure serait-il important d'inclure des tests unitaires? Dans quelle mesure dois-je documenter le code que j'inclus pour la reproductibilité?
Geoff Oxberry

Si vous voulez simplement la reproductibilité des résultats, les tests unitaires et les pages de manuel / manuels d'utilisation ne sont pas nécessaires. Si vous essayez d'attirer de futurs co-auteurs ou utilisateurs de votre logiciel (citations ...), alors écrire le logiciel pour le réutiliser et le documenter à fond vaut la peine. Notez que peu importe si votre logiciel est destiné à être utilisé par d'autres, les tests et la documentation peuvent vous faire gagner du temps à long terme, simplement parce qu'il vous permet de vous déplacer et d'expérimenter en toute confiance.
Jed Brown

6

La plupart des revues ne sont pas configurées pour cela de manière formelle, mais nous avons récemment fondé l'Archive of Numerical Software qui est spécifiquement destiné à inclure le code source et tout ce qui est nécessaire dans l'article. Vérifiez-le: http://journals.tdl.org/ans Les soumissions sont les bienvenues!


2
En supposant que vous utilisez le projet de logiciel pour animaux de compagnie d'un membre du comité de rédaction . Je ne peux pas m'empêcher de penser que cette exigence dégrade l'intégrité du journal.
Jack Poulson

1
@JackPoulson: C'est un point que nous avons longuement discuté entre les éditeurs et dont nous avons discuté encore plus longuement avec d'autres membres de la communauté. Je pense que nous voyons tous votre point, mais en même temps, nous avions l'impression que nous ne pouvions pas le faire autrement pour deux raisons: (i) Nous ne savons pas où trouver des examinateurs pour le projet aléatoire X. (ii) Il existe un certain consensus dans la communauté sur les projets de haute qualité et ceux qui ne le sont pas; nous ne voulions pas qu'ANS devienne un débouché pour chaque projet en herbe. Comme nous l'indiquons sur la page Web, nous aimerions éventuellement inclure tous les packages de haute qualité.
Wolfgang Bangerth

2
Pour quelle raison un réviseur doit-il être familier avec "projet aléatoire X" au lieu de "champ aléatoire X"? J'en parle parce que je pense que le journal manque une classe importante d'articles, car il y a de sérieuses limitations sur ce qui est possible de mettre en œuvre avec la liste donnée de paquets. Par exemple, il ne peut y avoir aucune contribution fondamentale au calcul parallèle, car tout ce qui implique de plonger dans des appels à MPI, ou, Dieu nous en préserve, BLAS ou LAPACK, semblerait violer les normes du journal. Je serais heureux d'en parler davantage hors ligne.
Jack Poulson

@JackPoulson: Autant que je sache, si vous voulez apporter une contribution fondamentale au calcul parallèle, en plus d'écrire un article dans un autre journal, vous pouvez également écrire un article "Introduction à la bibliothèque" dans ANS pour vous assurer que votre bibliothèque est ajouté à la liste approuvée des bibliothèques.
Geoff Oxberry

1
@GeoffOxberry: Wolfgang et moi avons eu une conversation amicale, et la conclusion commune était que la liste des bibliothèques d'algèbre linéaire devrait être considérablement élargie, mais que l'objectif de la revue est de créer des bibliothèques de "haute qualité" plutôt que simplement de reproductibilité, et il doit donc y avoir un processus de vérification.
Jack Poulson

3

Dans

Stodden, V. 2009. «Le cadre juridique de la recherche scientifique reproductible» . CiSE .

Victoria Stodden recommande de publier l'intégralité du "recueil de recherche" et énumère les éléments suivants à la p. 38:

  1. Le document de recherche
  2. Les données - y compris la documentation et le code pour le traitement des données
  3. L'expérience - tout le code source; documentation, paramètres, paramètres et dépendances du système d'exploitation
  4. Les résultats de l'expérience - chiffres, données, fichiers source d'illustration; et documentation et explication du traitement des résultats expérimentaux
  5. Tout matériel auxiliaire

2

Au moins, le code source et les données que vous avez utilisées pour effectuer vos expériences devraient être accessibles quelque part. Ajoutez des instructions pour créer votre code si nécessaire. Il y a vraiment si peu de revues en libre accès qu'il n'y a pas de règle ouverte et établie.


2

Je travaille pour Elsevier. Mon entreprise a commencé à utiliser le cadre Collage (développé en réponse au Grand défi du papier exécutable) dans les numéros de revues pour permettre aux auteurs d'inclure toutes les données et le code nécessaires pour reproduire les résultats et les chiffres dans leurs articles. Cette fonctionnalité permet aux lecteurs de reproduire plus facilement les résultats rapportés dans l'article et de réutiliser le matériel publié pour leurs propres recherches. Collage prend en charge une grande variété de logiciels libres et propriétaires; plus d'informations peuvent être trouvées dans la vidéo d'information ici et sur le site Web Collage Authoring Environment .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.