Quelle est la meilleure façon de faire des recherches reproductibles si vous avez besoin de bibliothèques propriétaires?

19

La recherche reproductible en calcul vise à mettre le code nécessaire pour générer les résultats dans un document de calcul à la disposition d'autres chercheurs afin qu'ils puissent exécuter ce code pour reproduire les résultats dans ce document. Je voudrais que toutes mes recherches soient reproductibles, mais je me heurte à un problème : quelques documents sur lesquels je travaille utilisent un package de différenciation automatique interne (appelé DAEPACK ) sur une bibliothèque propriétaire ( CHEMKIN- II ; conditions de licence peu claires).

Il serait trop long de remplacer ces composants logiciels par des versions open source. Il existe un remplacement open-source pour CHEMKIN-II appelé Cantera , mais Cantera est en C ++, tandis que CHEMKIN-II est en Fortran 77. Il faudrait beaucoup d'efforts pour modifier suffisamment le code Cantera afin qu'il puisse être traité par automatique outils de différenciation pour C ++.

Étant donné que j'ai besoin de ces packages propriétaires, quelle est la meilleure façon de rendre mes recherches aussi reproductibles que possible, en supposant que les chercheurs n'aient pas accès à CHEMKIN-II? Étant donné que DAEPACK est un traducteur de source à source, je n'ai pas nécessairement besoin de distribuer DAEPACK; Je pourrais peut-être inclure sa sortie, qui serait des fichiers source Fortran qui calculent les dérivés.

Plus généralement, si vous avez besoin d'un logiciel propriétaire dans votre travail et que ce logiciel propriétaire n'est pas largement disponible (c.-à-d. MATLAB, Mathematica, etc.), comment rendre votre travail reproductible?

Geoff Oxberry
la source
DAEPACK modifie-t-il le code source de CHEMKIN-II ou utilise-t-il simplement CHEMKIN-II en interne?
Dan
DAEPACK analyse le code source de CHEMKIN-II et génère des fichiers source Fortran qui contiennent des sous-programmes qui calculent les matrices jacobiennes, les modèles de rareté et les extensions d'intervalle. Il ne modifie pas le code source; c'est comme un compilateur dans ce sens.
Geoff Oxberry
Si la sortie de DAEPACK est une source CHEMKIN-II modifiée, pourquoi êtes-vous autorisé à la distribuer?
Dan
C'est un travail dérivé, mais je ne sais pas si la source est modifiée. Les noms de variables sont copiés, mais selon cet argument, la plupart des programmes que j'ai écrits sont des "sources CHEMKIN-II modifiées". Il faudrait que je vérifie ce point.
Geoff Oxberry
La licence CHEMKIN-II vous permet-elle de distribuer librement des sources non modifiées et de restreindre la façon dont vous distribuez les modifications? Je ne trouve pas de copie de sa licence en ligne.
Dan

Réponses:

13

Je ne pense pas que la définition de «recherche reproductible» exige que l'auteur fournisse gratuitement tous les outils nécessaires pour reproduire les résultats obtenus. Si une partie est propriétaire, il appartient au futur utilisateur, et non à l'auteur, de prendre les dispositions nécessaires pour acquérir le logiciel nécessaire. (Vous ne vous attendriez pas à devoir créer le logiciel pour que quelqu'un d'autre reproduise vos résultats, n'est-ce pas?) Il vous incomberait, bien sûr, de spécifier exactement quelle version du logiciel propriétaire vous avez utilisé, mais il n'est pas raisonnable de s'attendre à ce que vous faire un code de recherche compatible avec les logiciels open source simplement parce qu'il est open source.

[Soit dit en passant, en plus de parler de la reproductibilité des logiciels quand certains sont propriétaires, je pense qu'une question plus fondamentale doit être abordée en premier: le logiciel donne-t-il des résultats reproductibles sur différentes installations (par exemple, pour différentes architectures et Par exemple, les erreurs d'arrondi et les différences d'allocations résultant du nombre différent de processeurs signifient que de nombreux calculs de simulation moléculaire donneront des résultats différents simplement en changeant le nombre de processeurs inclus dans l'allocation (les moyennes statistiques devraient atteindre les mêmes place, mais les trajectoires peuvent et vont probablement finir très différentes.)]

aeismail
la source
2
Je suis certainement d'accord que la recherche reproductible n'oblige pas l'auteur à fournir gratuitement tous les logiciels requis. Cependant, les logiciels qui ne sont pas du tout accessibles au public posent problème. L'un des objectifs du mouvement de la recherche reproductible est d'aider à faire prendre conscience de ce problème dans la communauté, en encourageant les gens à rendre le code de la recherche public même s'ils ne prévoient pas de le soutenir, juste pour la reproductibilité.
khinsen
2
Le code vendu dans le commerce est toujours disponible. S'il n'est plus possible d'obtenir une licence, c'est bien entendu différent. Mais l'auteur original d'un code ne devrait pas avoir à réécrire un code pour héberger une autre bibliothèque uniquement à des fins de reproductibilité. (Il y a un argument à faire pour une plus grande viabilité et utilisation du code, mais l'argument de la reproductibilité n'est pas nécessaire à première vue - bien qu'il puisse être argumenté comme suffisant.)
aeismail
4

Je n'ai jamais été d'avis que la «recherche reproductible» signifie que vos collègues lecteurs et scientifiques ne devraient avoir qu'à cliquer sur «Exécuter» (ou compiler ou ce que vous avez) pour reproduire entièrement vos résultats. Si rien d'autre, cela tuerait la recherche de quiconque utilise un progiciel d'analyse statistique propriétaire, ou rendrait les choses "non reproductibles" si elles étaient conçues pour une plate-forme ou un langage tombé en désuétude. Ou d'ailleurs, est-ce que quelqu'un veut reproduire votre code, mais ne comprend pas / n'utilise pas la langue que vous utilisez.

CrossValidated a eu une discussion similaire sur le sujet - «reproductible» signifie-t-il que vous pouvez reproduire mon analyse sur mes données, ou que l'expérience elle-même peut être relancée à partir de zéro et fournir des résultats de confirmation. Le lien est ici: /stats/14999/how-are-we-defining-reproducible-research

Je pense que l'élément le plus important est de décrire ce que vous avez fait au niveau où cela pourrait être recodé par quelqu'un qui était suffisamment intéressé, et si des outils commerciaux étaient utilisés, ces outils sont mentionnés. Parce que cela sert à la fois la réplication de l'expérience et la double vérification des erreurs de code.

Fomite
la source
2

Dans votre cas, où vous n'avez même pas le droit de distribuer le code que vous avez utilisé, une description très approfondie de l'algorithme pourrait être la meilleure que vous puissiez faire. Selon la complexité de votre code, quelqu'un peut être en mesure de reproduire tout ce qui l'intéresse à partir des outils dont il dispose.

Sinon, demandez autour de vous et voyez combien de votre travail vous êtes autorisé à publier, puis libérez-le.

Dan
la source
Cela vient en grande partie de cette conversation par chat.
Dan
1

La meilleure façon de faire une recherche reproductible est de ne pas s'appuyer sur quoi que ce soit de courte durée comme des codes spécifiques sur une plateforme spécifique. Hier, nous calculions sur des cartes perforées, aujourd'hui sur des électrons dans le silicium, demain ce sera peut-être sur des lasers à protéines ou même des cellules vivantes, après-demain sur des points quantiques, et qui sait ce qui se passera la semaine prochaine.

La recherche reproductible doit clarifier ses concepts et ses idées et ne pas promouvoir les outils actuellement disponibles comme le matériel ou les logiciels comme condition préalable à la reproduction des résultats de la recherche. Les algorithmes utilisés doivent être détaillés sous une forme universelle claire; la version actuelle d'un matériel, d'un compilateur ou d'un progiciel spécifique ne peut être utilisée que comme un outil pour démontrer les résultats de la recherche.

Dominik Lark
la source
Je pense que nous avons besoin des deux - les concepts et les idées pour la compréhension humaine et l'interprétabilité à long terme, et le code pour la vérification à court terme.
khinsen
1

La publication du code Fortran généré semble être une très bonne solution dans votre cas.

En règle générale, je pense que l'utilisation de logiciels non publiés est incompatible avec les objectifs de la recherche reproductible. C'est l'une des raisons pour lesquelles je considère la recherche reproductible comme un objectif à long terme plutôt que comme quelque chose dont on pourrait exiger l'application immédiate.

Khinsen
la source
1

Je travaille pour Elsevier. Mon entreprise a commencé à utiliser le cadre Collage (développé en réponse à l'Executable Paper Grand Challenge) dans des numéros de revues pour permettre aux auteurs de publier des morceaux de code exécutable avec leur article. 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 propriétaires, en plus des logiciels open source; plus d'informations peuvent être trouvées dans la vidéo d'information ici et sur le site Web Collage Authoring Environment .

Hylke Koers
la source