Reproductibilité#

La confiance dans les résultats de la recherche repose, entre autres, sur le fait que les expériences ou les calculs soient reproductibles.

Au niveau technique, par exemple, la reproductibilité d’une mesure avec un même instrument, une méthode identique et dans un contexte donné, est essentielle pour valider les résultats d’une expérience. Au niveau scientifique, la répétabilité permet la validation des résultats obtenus. Il s’agit alors, par un autre moyen, d’arriver à des résultats équivalents.

Cependant, en fonction des disciplines, il peut être très compliqué de reproduire ou répliquer des résultats. La section suivante est destinée à permettre de mieux appréhender les enjeux, les défis et aussi les différentes facettes de la reproductibilité et de la répétabilité en fonction des disciplines et des méthodes mises en oeuvre.

Comprendre les enjeux et défis#

Les présentations citées dans ce paragraphe concernent toutes divers aspects de la “reproductibilité” ou de la “répétabilité”, qu’elles concernent les mesures, les accès aux données, les traitements, les calculs etc… . Chacune développe un point de vue particulier. Elles sont complémentaires.

Konrad Hinsen présente ici les enjeux et les défis de la recherche reproductible appliqués au calcul scientifique. Il reprend les bases de ce qu’est un calcul et de l’environnement dans lequel on utilise les programmes pour bien détailler les différents points de difficulté.

Enjeux et défis de la recherche reproductible

Vidéo :
Konrad HINSEN, Centre de Biophysique Moléculaire Orléans et Synchrotron SOLEIL
Assemblée Aramis : La reproductibilité en pratique : méthodes et outils, 2019

David Hill fait ici la distinction entre reproductibilité et répétabilité et développe les difficultées de la répétabilité dans le calcul haute performance et en donne des exemples concrets dans différents domaines. Il propose des méthodes et des outils adaptés à chacun des points identifiés.

La présentation de Christophe Pouzat commence par un historique des raisons qui ont mené la communauté scientifique à prendre conscience, puis à prendre en compte le besoin de reproductibilité. La seconde partie de la présentation s’adresse plutôt aux développeurs qui produisent des codes.

Une brève histoire de la recherche reproductible et de ses outils

Christophe Pouzat, MAP5, Univ. Paris-Descartes et CNRS UMR 8145
CANUM 2016 : mini-symposium “Recherche reproductible”, 2016

L’exemple présenté par Thomas Denecker concerne la biologie computationnelle. Il a pour but de sélectionner des gènes qui ne se comportent pas de la même façon entre deux conditions expérimentales. Les fonctionnalités présentées ne sont pas dépendantes de cet exemple. En effet, elles peuvent être appliquées à n’importe quelle autre question biologique. Brièvement, il s’agit de récupérer les données depuis des bases de données publiques, de réaliser une analyse reproductible avec un système de workflow dans un environnement virtuel dont l’ensemble du code, versionné, est disponible en open source. La visualisation des résultats est dynamique et un rapport en pdf ou html est disponible. Il regroupe les résultats de l’analyse et détaille l’ensemble des paramètres choisis par l’utilisateur.

La reproductibilité au service de la Biologie Computationnelle

Vidéo :
Thomas Denecker
Assemblée Aramis : La reproductibilité en pratique : méthodes et outils, 2019

Utiliser des environnements et des outils qui favorisent la reproductibilité#

Parvenir à la reproductibilité peut être facilité par l’utilisation d’environnements et d’outils conçus ou adaptés dans cet objectif. De nombreuses équipes travaillent en ce sens depuis plusieurs années et plusieurs exemples sont présentés ici.

VIP, the “Virtual Imaging Platform”, est un portail qui permet à ses utilisateurs d’accéder simplement à leurs données, de les traiter facilement avec des logiciels pré-installés sur la plateforme. Traitements et données sont distribués sur l’infrastructure EGI.

Virtual Imaging Platform : pour une science ouverte et reproductible

Vidéo :
Sorina Camarasu-Pop, Frédéric Cervenansky, CREATIS
JoSy 2019

Etre capable de reproduire des campagnes de calcul nécessite de connaître et savoir utiliser des outils adéquats. La bibliothèque Python Execo et le logiciel OpenMole sont deux exemples permettant de réaliser des campagnes de calcul reproductibles pour des applications de modélisation, simulations paramétriques, benchmarking, analyses de données numériques ou expérimentales.

Execo

Matthieu Imbert, Laurent Pouilloux
Journées Campagnes de calcul reproductibles, 2018

Openmole (format tar)

Romain Reuillon, Mathieu Leclaire
Journées Campagnes de calcul reproductibles, 2018

Outils de packaging#

Il existe des gestionnaires de paquets qui utilisent une approche fonctionnelle, en particulier Nix et GNU Guix. Cette approche permet de gérer des environnements logiciels reproductibles et composables. Un séminaire introductif a été organisé sur le sujet en 2021 par MaiMosine, GRICAD, SARI dans le cadre des “Séminaire Recherche Reproductible”.

Reproductibilité: apport des gestionnaires de paquet fonctionnels

vidéo Olivier Richard, LIG Séminaire Recherche Reproductible du 25 novembre 2021 (MaiMosine, GRICAD, SARI)

La reproductibilité logicielle en pratique avec GUIX

vidéo Pierre-Antoine Bouttier, GRICAD Séminaire Recherche Reproductible du 25 novembre 2021 (MaiMosine, GRICAD, SARI)

Le gestionnaire de paquets NIX

vidéo Bruno Bzeznik, GRICAD Séminaire Recherche Reproductible du 25 novembre 2021 (MaiMosine, GRICAD, SARI)

Ludovic Courtès explique comment utiliser Guix et Jupyter pour la science reproductible. Guix est utilisé pour rendre l’environnement logiciel du notebook reproductible et déployé de façon automatique et reproductible. Nous vous conseillons de visionner la vidéo très didactique !

Pour aller plus loin sur Guix sont organisés des “cafés Guix” qui permettent d’aborder différents sujets.

Développement open source et reproductibilité#

Ces dernières années, les journées, ateliers traitant de la reproductibilité et du développement logiciel ont été nombreuses. Il est difficile d’isoler quelques présentations de ces ensembles pensés pour traiter d’une thématique d’ensemble. Aussi, dans cette section, plusieurs événements organisés par différents réseaux sont présentés globalement.

Lorsqu’on développe un code de calcul, seul ou à plusieurs, il est primordial de vérifier que chaque modification ne produit pas de régression dans l’ensemble de l’application. Il est donc nécessaire d’employer des tests unitaires, des tests d’intégration ou des tests du système complet. Ces tests s’intègrent dans un système de gestion de versions pour sauvegarder les modifications.

L’intégration continue fournit des outils permettant de valider l’intégrité du code à chaque soumission de modifications via github, gitlab, etc. Si, auparavant, il était assez fastidieux de mettre en oeuvre et d’administrer une chaîne d’intégration continue, les outils actuels sont très faciles à déployer. Ils offrent de plus des fonctionnalités qui permettent d’aller bien plus loin que la simple exécution de tests : la couverture du code, la validation syntaxique, la construction d’images de conteneurs et leur déploiement sur un dépôt, etc.

En 2017, le réseau “calcul” a organisé un “Atelier intégration continue” visant à se familiariser à trois outils d’intégration continue : Jenkins, Travis CI et Gitlab CI, en commençant par une introduction à deux outils couramment utilisés dans une chaîne d’intégration continue : “Git” pour gérer les versions et les publier vers un dépôt distant, puis “Docker” pour exécuter les tâches de compilation et de tests.

Les utilisateurs du langage de programmation “Julia” sont bien sûr également concernés par la reproductibilité. Ils trouveront dans la présentation de Mathieu Besançon à l’atelier “JuliaNantes”, les réponses aux questions qu’ils peuvent se poser sur les raisons de veiller à la reproductibilité de leurs travaux et comment utiliser les outils Julia pour la science reproductible.

Getting started with Julia tools for reproducible science

Mathieu Besançon, Centrale Lille et Polytechnique Montréal
Atelier JuliaNantes, 2019

Les questions de portabilité, performance et reproductibilité sont étudiées dans cette présentation qui donnera aux développeurs des éléments concrets pour choisir les bibliothèques qui répondent le mieux à ce dilemne.

Lorsque la reproductibilité n’est pas garantie, la validation, la vérification des logiciels, le processus de développement doivent être abordés différemment. On doit être en mesure d’estimer la précision des résultats numériques d’un logiciel et mettre en place des solutions pour contenir les sources d’imprécision. Lors de l’école Précisions, Reproductibilité en Calcul et Informatique Scientifique quatre thèmes en lien avec ces problématiques ont été abordés :

  • Arithmétique flottante

  • Mesurer la précision

  • Recherche reproductible et calcul numérique

  • Le calcul parallèle et le HPC sont-ils compatibles avec les enjeux de la recherche reproductible ? Pour chaque thème, des cours, présentations et TPs ont été organisés. Ces contenus répondront aux besoins des professionnels du calcul scientifique.

Les usines logicielles et les outils de production de code comme supports des bonnes pratiques de génie logiciel est une thématique importante des JDEV 2020. Au cours de son exposé, Arnaud Legrand présente les différents enjeux, les solutions émergentes, les outils et standards, les plateformes qui permettent de tracer les codes, les simulations, les données…

Pour aller plus loin il peut être utile de consulter l’ouvrage collectif “Vers une recherche reproductible : Faire évoluer ses pratiques” cité dans la section Autres guides de bonnes pratiques de ce guide.