Évaluer la reproductibilité des notebooks Jupyter dans la recherche biomédicale
Cette étude évalue à quel point les notebooks Jupyter sont reproductibles dans la recherche biomédicale.
― 7 min lire
Table des matières
Les notebooks Jupyter sont des outils super populaires en recherche pour partager du code, de la doc et des résultats. Ils sont particulièrement utiles en recherche biomédicale car ils permettent aux chercheurs de présenter leur travail de manière interactive. Mais il y a des inquiétudes sur la capacité à reproduire le code dans ces notebooks, c’est-à-dire si d'autres chercheurs peuvent exécuter le même code et obtenir les mêmes résultats.
Cet article examine à quel point les notebooks Jupyter sont reproductibles dans le domaine de la recherche biomédicale. On se concentre sur les notebooks disponibles via PubMed Central, une grande bibliothèque de littérature biomédicale. On veut voir combien de ces notebooks peuvent être exécutés avec succès et s'ils produisent les mêmes résultats que ceux rapportés dans les études originales.
Reproductibilité ?
Qu'est-ce que laLa reproductibilité en recherche signifie que lorsqu'une étude est répétée en utilisant les mêmes méthodes et données, elle devrait aboutir aux mêmes résultats. C’est crucial pour construire la confiance dans les découvertes scientifiques. Dans le contexte des notebooks Jupyter, ça veut dire que si un chercheur exécute un notebook, il devrait obtenir les mêmes résultats que l'auteur d'origine.
Il y a différents niveaux de reproductibilité :
- Reproductibilité des Méthodes : Ça veut dire que les détails sur comment l'étude a été réalisée sont suffisamment clairs pour que d'autres puissent le reproduire.
- Reproductibilité des Résultats : Ça veut dire que quand d'autres suivent les mêmes méthodes, ils obtiennent les mêmes résultats.
- Reproductibilité Inférentielle : Ça veut dire que des chercheurs indépendants arrivent aux mêmes conclusions à partir des données.
Cette étude se concentre sur la reproductibilité des méthodes, ce qui signifie qu'on vérifie si les notebooks peuvent être exécutés sans erreurs et s'ils donnent les mêmes résultats.
Aperçu de l'Étude
Pour évaluer la reproductibilité des notebooks Jupyter, on a suivi plusieurs étapes :
Recherche des Notebooks : On a cherché dans les publications de PubMed Central et on a trouvé des mentions de notebooks Jupyter et de dépôts GitHub. GitHub est une plateforme où de nombreux chercheurs partagent leur code.
Exécution des Notebooks : Une fois les notebooks identifiés, on a essayé de les exécuter dans un environnement le plus similaire possible à l'original. On a documenté les réussites et les échecs.
Analyse des Résultats : On a cherché des motifs dans les notebooks qui étaient reproductibles et ceux qui ne l'étaient pas. Cela comprenait l'examen des problèmes liés aux Dépendances, qui sont les autres pièces de logiciel ou bibliothèques nécessaires pour que les notebooks fonctionnent correctement.
Comparaison dans le Temps : On a répété les étapes ci-dessus sur différentes périodes pour vérifier s’il y avait des améliorations en matière de reproductibilité.
Recherche de Notebooks Jupyter
Pour trouver des notebooks pertinents, on a utilisé PubMed Central et on a cherché des articles mentionnant Jupyter et GitHub. Cette recherche a abouti à des milliers d'articles associés à des notebooks Jupyter. On s'est concentré sur un nombre spécifique de ces publications, en notant celles qui avaient des dépôts GitHub correspondants.
Analyse des Dépôts
De notre revue, on a trouvé beaucoup de dépôts GitHub liés à ces articles. On a cloné les dépôts et vérifié s'ils contenaient des notebooks Jupyter. Un nombre significatif de ces dépôts avait des notebooks basés sur Python, qui est le principal langage de programmation utilisé dans ces études.
Exécution des Notebooks
Une fois les notebooks identifiés, on a essayé de les exécuter. L'environnement Jupyter a été configuré pour installer automatiquement les dépendances nécessaires. Cependant, on a rencontré un grand nombre d'erreurs. Beaucoup de notebooks ne pouvaient pas être exécutés à cause de problèmes de déclarations de dépendances manquantes ou incorrectes.
Lors de notre analyse, on a trouvé qu'une fraction notable des notebooks s'exécutait sans erreurs. Cependant, beaucoup d'autres produisaient des exceptions, qui sont des erreurs survenues pendant l'exécution.
Problèmes Courants Rencontrés
Tout au long de notre analyse, on a noté plusieurs problèmes communs qui ont affecté la reproductibilité dans les notebooks :
Dépendances Manquantes : Beaucoup de notebooks manquaient d'instructions claires sur les bibliothèques nécessaires pour exécuter le code. Ça a rendu difficile la reproduction de l'environnement configuré par les auteurs originaux.
Variables Non Définies : Certains notebooks ont levé des erreurs à cause de variables qui n'étaient pas définies dans les cellules de code. Ça cause souvent de la confusion pour quiconque essaie de reproduire les résultats.
Fichiers Introuvables : Souvent, les notebooks essayaient d'accéder à des fichiers de données qui n'étaient pas inclus avec le dépôt GitHub. Ça rendait impossible l'exécution du code correctement.
Compatibilité des Versions : Différentes versions de Python ou de bibliothèques peuvent causer des problèmes aux notebooks. Ce problème survient souvent lorsque le code original a été écrit dans une version antérieure qui n'est plus supportée.
Exemples de Découvertes
Après avoir exécuté des milliers de notebooks, on a compilé les résultats. Un petit pourcentage de notebooks a été exécuté avec succès et a produit les mêmes résultats que ceux rapportés dans les articles originaux. Un plus grand nombre de notebooks soit a échoué à s'exécuter soit a généré des résultats différents de ceux attendus.
On a aussi observé que les notebooks plus récents avaient tendance à être plus reproductibles comparés aux plus anciens. Ça indique qu'il pourrait y avoir une prise de conscience croissante et des pratiques améliorées parmi les chercheurs concernant la reproductibilité.
Recommandations pour Améliorer la Reproductibilité
Pour aider à améliorer la reproductibilité des notebooks Jupyter en recherche biomédicale, on suggère plusieurs recommandations :
Documentation Claire des Dépendances : Les chercheurs devraient lister clairement toutes les bibliothèques requises et leurs versions spécifiques pour que d'autres puissent facilement configurer un environnement similaire.
Inclusion de Fichiers de Données : Chaque fois que les notebooks dépendent de fichiers de données, ceux-ci devraient être inclus dans le dépôt GitHub ou des instructions d'accès appropriées devraient être fournies.
Mises à Jour et Maintenance Régulières : Les auteurs devraient vérifier périodiquement que leurs notebooks s'exécutent toujours correctement à mesure que les dépendances logicielles changent dans le temps.
Formation et Sensibilisation : Les chercheurs devraient être formés sur les meilleures pratiques pour partager du code et des résultats. Des sessions de formation pourraient aider à sensibiliser l'importance de la reproductibilité.
Vérifications Automatisées : Mettre en place des outils automatisés pour vérifier les problèmes de reproductibilité courants avant la soumission des articles pourrait significativement améliorer la qualité des notebooks partagés.
Conclusion
Notre étude révèle que bien que les notebooks Jupyter gagnent en popularité dans la recherche biomédicale, il y a des défis significatifs concernant leur reproductibilité. Beaucoup de problèmes viennent des dépendances manquantes et d'une documentation inadéquate. Cependant, il y a un potentiel d'amélioration, surtout avec les nouveaux notebooks étant plus fiables que les anciens.
Pour aller de l'avant, les chercheurs doivent adopter les meilleures pratiques pour documenter leur travail et s'assurer que leurs résultats peuvent être reproduits par d'autres. Cela non seulement renforcera la crédibilité de leurs résultats mais contribuera aussi à l'avancement de la science en général. En se concentrant sur la reproductibilité, la communauté scientifique peut bâtir une base solide pour la recherche future.
Titre: Computational reproducibility of Jupyter notebooks from biomedical publications
Résumé: Jupyter notebooks facilitate the bundling of executable code with its documentation and output in one interactive environment, and they represent a popular mechanism to document and share computational workflows. The reproducibility of computational aspects of research is a key component of scientific reproducibility but has not yet been assessed at scale for Jupyter notebooks associated with biomedical publications. We address computational reproducibility at two levels: First, using fully automated workflows, we analyzed the computational reproducibility of Jupyter notebooks related to publications indexed in PubMed Central. We identified such notebooks by mining the articles full text, locating them on GitHub and re-running them in an environment as close to the original as possible. We documented reproduction success and exceptions and explored relationships between notebook reproducibility and variables related to the notebooks or publications. Second, this study represents a reproducibility attempt in and of itself, using essentially the same methodology twice on PubMed Central over two years. Out of 27271 notebooks from 2660 GitHub repositories associated with 3467 articles, 22578 notebooks were written in Python, including 15817 that had their dependencies declared in standard requirement files and that we attempted to re-run automatically. For 10388 of these, all declared dependencies could be installed successfully, and we re-ran them to assess reproducibility. Of these, 1203 notebooks ran through without any errors, including 879 that produced results identical to those reported in the original notebook and 324 for which our results differed from the originally reported ones. Running the other notebooks resulted in exceptions. We zoom in on common problems, highlight trends and discuss potential improvements to Jupyter-related workflows associated with biomedical publications.
Auteurs: Sheeba Samuel, Daniel Mietchen
Dernière mise à jour: 2023-08-10 00:00:00
Langue: English
Source URL: https://arxiv.org/abs/2308.07333
Source PDF: https://arxiv.org/pdf/2308.07333
Licence: https://creativecommons.org/licenses/by/4.0/
Changements: Ce résumé a été créé avec l'aide de l'IA et peut contenir des inexactitudes. Pour obtenir des informations précises, veuillez vous référer aux documents sources originaux dont les liens figurent ici.
Merci à arxiv pour l'utilisation de son interopérabilité en libre accès.
Liens de référence
- https://www.overleaf.com/latex/examples/simple-stylish-box-design/stzmmcshxdng
- https://doi.org/10.1109/MCSE.2023.3241105
- https://scholia.toolforge.org/Q120999953
- https://numpy.org/case-studies/blackhole-image/
- https://ieeexplore.ieee.org/iel7/5992/10124086/10040660.pdf
- https://www.ncbi.nlm.nih.gov/pmc/
- https://github.com/
- https://jupyter.org/
- https://posit.co/products/open-source/rstudio/
- https://plutojl.org/
- https://www.sqlite.org
- https://www.issn.org/
- https://www.iso.org
- https://www.ncbi.nlm.nih.gov/mesh
- https://id.nlm.nih.gov/mesh/sparql
- https://nbviewer.org/
- https://docs.github.com/en/rest/guides/getting-started-with-the-rest-api
- https://docs.python.org/3/library/ast.html
- https://github.com/s-weigand/flake8-nb
- https://www.python.org/dev/peps/pep-0008/
- https://pycodestyle.pycqa.org/en/latest/intro.html
- https://docs.conda.io/en/latest/
- https://docs.anaconda.com/anaconda/packages/pkg-docs/
- https://www.prisma-statement.org/
- https://texfaq.org/FAQ-ftncapt
- https://github.com/jupyter/nbdime
- https://numpy.org/
- https://pandas.pydata.org/
- https://plotly.com/python/
- https://matplotlib.org/stable/tutorials/introductory/pyplot.html
- https://wiki.uni-jena.de/pages/viewpage.action?pageId=22453005
- https://github.com/fusion-jena/computational-reproducibility-pmc/commits/main
- https://wiki.uni-jena.de/display/WIL/2023/04
- https://wiki.uni-jena.de/pages/viewpage.action?pageId=84544195
- https://wiki.uni-jena.de/pages/viewpage.action?pageId=68787746
- https://green-algorithms.org
- https://github.com/lhqing/mouse
- https://github.com/SIMEXP/cdip_human_phantom/blob/master/notebooks/stats_repro.ipynb
- https://docs.google.com/document/d/1aTniJN6PImtLz9mzryQAWt9WSATGzAXS3kS9XZD1u6E/edit
- https://tex.stackexchange.com/questions/306568/how-to-create-a-box-with-caption-and-label-like-a-float
- https://w.wiki/7D9d
- https://www.wikidata.org/wiki/Q70357595
- https://scholia.toolforge.org/topic/Q70357595
- https://scholia.toolforge.org/
- https://scholia.toolforge.org/software/Q70357595
- https://scholia.toolforge.org/software/Q99439688
- https://w.wiki/7CMw
- https://scholia.toolforge.org/use/Q70357595
- https://scholia.toolforge.org/uses/Q70357595,Q197520
- https://scholia.toolforge.org/organization/Q1341845
- https://scholia.toolforge.org/organization/Q1341845/use/Q70357595
- https://scholia.toolforge.org/topic/Q1425625
- https://scholia.toolforge.org/use/Q70357595/curation
- https://docs.google.com/presentation/d/1k9i032ujwHSvH2kqDKia7xWB0lEO2sxk-YUMlTDms_Q/edit
- https://scholia.toolforge.org/use/Q70357595#topics-of-works-using-the-resource
- https://pypi.org/project/pipdeptree/
- https://dephell.readthedocs.io/use-tree-git.html
- https://orcid.org/
- https://gitlab.com/mwoodbri/jupyter-ci
- https://docs.google.com/spreadsheets/d/11V2b2n7f8eCZazOY_5x4vMHpWWNoNMNMPQoiwKwud1g/edit
- https://elifesciences.org/collections/d72819a9/executable-research-articles
- https://elifesciences.org/labs/ad58f08d/introducing-elife-s-first-computationally-reproducible-article
- https://elifesciences.org/for-the-press/eb096af1/elife-launches-executable-research-articles-for-publishing-computationally-reproducible-results
- https://python-poetry.org/
- https://numpy.org/neps/nep-0029-deprecation_policy.html
- https://numpy.org/neps/nep-0029-deprecation
- https://endoflife.date/python
- https://rescience.github.io/
- https://doi.org/10.5281/zenodo.6802158
- https://doi.org/10.5281/zenodo.8226725
- https://github.com/fusion-jena/computational-reproducibility-pmc
- https://www.crossref.org/fundingdata/
- https://academic.oup.com/gigascience/pages/editorial_policies_and_reporting_standards
- https://docs.casrai.org/CRediT