{"id":1284,"date":"2026-08-21T14:31:26","date_gmt":"2026-08-21T14:31:26","guid":{"rendered":"https:\/\/matforge.org\/?p=1284","raw":"https:\/\/matforge.org\/?p=1284"},"modified":"2026-08-21T14:31:26","modified_gmt":"2026-08-21T14:31:26","slug":"reproducible-publication-practices-simulation-results","status":"publish","type":"post","link":"https:\/\/matforge.org\/fr\/reproducible-publication-practices-simulation-results\/","title":{"rendered":"Pratiques de publication reproductibles pour les r\u00e9sultats de simulation : le cadre des cinq piliers","raw":"Pratiques de publication reproductibles pour les r\u00e9sultats de simulation : le cadre des cinq piliers"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\"> 14<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span><ul>\n<li>Les ordinateurs portables Jupyter ne s&rsquo;ex\u00e9cutent avec succ\u00e8s que 12,4&nbsp;% du temps lorsque les d\u00e9pendances sont d\u00e9clar\u00e9es&nbsp;: la gestion de l&rsquo;environnement explicite comble cet \u00e9cart.<\/li>\n<li>Le cadre des cinq piliers de Ziemann et al. (2023) fournit une base de r\u00e9f\u00e9rence structur\u00e9e pour la documentation, le contr\u00f4le des versions, la gestion de l&rsquo;environnement, le partage de donn\u00e9es et la conformit\u00e9 \u00e9quitable<\/li>\n<li>La liste de contr\u00f4le Repro (Hornung et al., 2026) propose un outil pratique d&rsquo;auto-audit couvrant la structure des dossiers, la sp\u00e9cification de l&rsquo;environnement, la disponibilit\u00e9 des donn\u00e9es et l&rsquo;ex\u00e9cution d\u00e9terministe<\/li>\n<li>Les \u00e9cueils courants tels que les chemins absolus, les d\u00e9pendances non sp\u00e9cifiques et les lus manquants sont les principales causes des \u00e9checs de reproductibilit\u00e9 dans la recherche informatique.<\/li>\n<li>Un workflow \u00e9tape par \u00e9tape, de la conception de la simulation \u00e0 la documentation, \u00e0 l&rsquo;archivage de code et \u00e0 la soumission d&rsquo;un journal, fournit un pipeline de production r\u00e9p\u00e9table<\/li>\n<\/ul>\n<h2>L&rsquo;\u00e9cart de reproductibilit\u00e9 dans la recherche informatique<\/h2>\n<p>Lorsque vous soumettez un article bas\u00e9 sur une simulation, les examinateurs v\u00e9rifient votre m\u00e9thodologie, les conditions aux limites, les \u00e9tudes de convergence et la comparaison avec des rep\u00e8res analytiques. Mais ils relancent rarement votre code. Les r\u00e9sultats pr\u00e9sent\u00e9s dans vos figures et tableaux deviennent l&rsquo;enregistrement publi\u00e9, et si ces r\u00e9sultats ont \u00e9t\u00e9 g\u00e9n\u00e9r\u00e9s par un flux de travail qui ne peut pas \u00eatre reproduit, la publication repose sur une base non v\u00e9rifi\u00e9e.<\/p>\n<p>Ce n&rsquo;est pas un probl\u00e8me th\u00e9orique. Samuel &amp; Mietchen (2024) a analys\u00e9 15&nbsp;817&nbsp;carnets Jupyter bas\u00e9s sur Python de publications biom\u00e9dicales index\u00e9es dans PubMed Central. Parmi les ordinateurs portables o\u00f9 toutes les d\u00e9pendances d\u00e9clar\u00e9es pouvaient \u00eatre install\u00e9es avec succ\u00e8s, <strong>87,6&nbsp;% ont entra\u00een\u00e9 des exceptions<\/strong> lors de la rediffusion automatis\u00e9e. Seuls 1&nbsp;203&nbsp;ordinateurs portables ont \u00e9t\u00e9 ex\u00e9cut\u00e9s sans erreur, et parmi ceux-ci, 324&nbsp;r\u00e9sultats ont \u00e9t\u00e9 diff\u00e9rents des r\u00e9sultats signal\u00e9s \u00e0 l&rsquo;origine. Les 879 ordinateurs portables restants ont produit des r\u00e9sultats identiques. Ce taux de r\u00e9ussite de 5,56&nbsp;% pour une reproduction identique \u00e9tait en fait une am\u00e9lioration par rapport \u00e0 la course initiale de 2021 (5,88&nbsp;%), indiquant que les ordinateurs portables r\u00e9cents ont tendance \u00e0 \u00eatre l\u00e9g\u00e8rement meilleurs, mais l&rsquo;\u00e9cart reste \u00e9norme.<\/p>\n<p>Qu&rsquo;est-ce qui rend la reproductibilit\u00e9 plus difficile pour les scientifiques informatiques&nbsp;? Vous travaillez avec des solveurs num\u00e9riques, des am\u00e9liorations de maillage, des sch\u00e9mas d&rsquo;int\u00e9gration temporelle et des strat\u00e9gies de couplage qui produisent des r\u00e9sultats \u00e0 travers des cha\u00eenes d&rsquo;op\u00e9rations en virgule flottante. Une seule bosse de version Python, un param\u00e8tre par d\u00e9faut modifi\u00e9 dans <code>numpy<\/code> ou <code>scipy<\/code>, ou un chemin relatif qui ne se r\u00e9sout pas sur une autre machine peut invalider chaque chiffre et chaque tableau de votre papier. Le probl\u00e8me s&rsquo;aggrave lorsque votre flux de travail implique un raffinement de maillage adaptatif, des termes de source personnalis\u00e9s ou des conditions aux limites non triviales, le type tr\u00e8s avanc\u00e9 de mod\u00e8les document\u00e9s dans <a href=\"\/how-fipy-handles-meshes-and-grid-structures\/\">Ressources Fipy sur ce site<\/a>.<\/p>\n<h2>Cinq piliers de la recherche computationnelle reproductible<\/h2>\n<p>Ziemann et al. (2023) ont officialis\u00e9 les <strong>cinq piliers de la reproductibilit\u00e9 informatique<\/strong> comme cadre de documentation et de partage de flux de travail reproductibles. Bien qu&rsquo;ils soient d\u00e9velopp\u00e9s \u00e0 l&rsquo;origine dans le contexte de la bioinformatique, ces piliers s&rsquo;appliquent \u00e9galement aux simulations de science des mat\u00e9riaux, \u00e0 la dynamique des fluides informatiques et aux solveurs PDE bas\u00e9s sur un volume fini.<\/p>\n<h3>1. Programmation alphab\u00e9tis\u00e9e<\/h3>\n<p>La programmation alphab\u00e9tis\u00e9e signifie documenter votre flux de travail informatique comme un r\u00e9cit qui entrelace l&rsquo;explication et le code ex\u00e9cutable. Dans les sciences informatiques, cela se manifeste g\u00e9n\u00e9ralement sous forme de blocs-notes Jupyter, de documents R Markdown ou de scripts Python avec des doctrings \u00e9tendus et des commentaires en ligne.<\/p>\n<p>L&rsquo;objectif n&rsquo;est pas simplement de produire un fichier reproductible, c&rsquo;est de cr\u00e9er un document qu&rsquo;un lecteur qui ne conna\u00eet pas avec votre analyse peut suivre, comprendre et r\u00e9ex\u00e9cuter. Samuel &amp; Mietchen (2024) a trouv\u00e9 une corr\u00e9lation claire entre le <strong>rapport de r\u00e9duction sur la cellule de code<\/strong> et la reproduction r\u00e9ussie&nbsp;: les ordinateurs portables avec un effort de documentation plus \u00e9lev\u00e9 (plus de cellules Markdown par rapport aux cellules de code) \u00e9taient significativement plus susceptibles de se reproduire de mani\u00e8re identique \u00e0 la sortie d&rsquo;origine.<\/p>\n<p>Pour une simulation en champ de phase dans FIPY\u2014<a href=\"\/understanding-fipys-core-architecture\/\">une introduction \u00e0 son architecture de base<\/a>\u2014ou un mod\u00e8le de diffusion \u00e0 l&rsquo;aide du <a href=\"\/finite-volume-method-explained-simply\/\">m\u00e9thode de volume fini<\/a>, la programmation alphab\u00e9tis\u00e9e peut ressembler \u00e0 ceci&nbsp;:<\/p>\n<pre><code class=\"language-python\"># Set deterministic seed\nimport numpy as np\nnp.random.seed(42)\n\n# Build a structured grid (this should match the mesh description in your paper)\nnx, ny = 100, 100\nmesh = CellGrid([nx, ny], varIndex=1)\n\n# Define the transient diffusion term and boundary conditions\nT = CellVariable(name='Temperature', mesh=mesh, value=initial_temperature)\neqn = TransientTerm() == DiffusionTerm(coeff=thermal_conductivity)\n\n# Impose Dirichlet boundary conditions (see also our guide on FiPy BCs)\nT.fixLeft(value=300)\nT.fixRight(value=500)\n<\/code><\/pre>\n<p>Lorsque vous \u00e9crivez cette cellule de bloc-notes, vous documentez simultan\u00e9ment la r\u00e9solution du maillage, la PDE et les conditions aux limites, et vous ex\u00e9cutez la simulation qui a produit votre chiffre publi\u00e9.<\/p>\n<p><strong>Recommandation&nbsp;:<\/strong> Si votre ordinateur portable a moins de cellules Markdown que de codes de cellules, vous \u00eates sous-document\u00e9. Visez au moins un rapport 1:1, et id\u00e9alement plus. Le Samuel &amp; L&rsquo;\u00e9tude de Mietchen a r\u00e9v\u00e9l\u00e9 que le groupe de reproduction identique avait un rapport de r\u00e9duction\/code de 0,73, tandis que le groupe de reproduction diff\u00e9rent n&rsquo;avait que 0,49.<\/p>\n<h3>2. Contr\u00f4le de version de code et partage<\/h3>\n<p>Le contr\u00f4le de version n&rsquo;est pas facultatif pour les travaux de qualit\u00e9 de publication. Git fournit un historique permanent et interrogeable de chaque changement de code, et GitHub, GitLab ou Zenodo archive votre r\u00e9f\u00e9rentiel en tant qu&rsquo;objet citable avec un DOI.<\/p>\n<p>Le but du contr\u00f4le de version est double :<\/p>\n<ul>\n<li><strong>Reproductibilit\u00e9&nbsp;:<\/strong> Un hachage de validation sp\u00e9cifique (<code>abc1234<\/code>) associ\u00e9 \u00e0 une date de validation sp\u00e9cifique indique \u00e0 quiconque exactement quel code produit vos r\u00e9sultats publi\u00e9s.<\/li>\n<li><strong>Responsabilit\u00e9&nbsp;:<\/strong> Chaque changement de param\u00e8tre, chaque modification de terme source, chaque modification des conditions aux limites est enregistr\u00e9e. Lorsqu&rsquo;un critique demande \u00ab\u00a0Pourquoi avez-vous utilis\u00e9 ce coefficient de diffusion&nbsp;?\u00a0\u00bb Vous pouvez pointer vers le commit exact o\u00f9 il a \u00e9t\u00e9 d\u00e9fini.<\/li>\n<\/ul>\n<p>Lors de la publication, archivez votre r\u00e9f\u00e9rentiel sur <a href=\"https:\/\/zenodo.org\/\" rel=\"nofollow\">ZeNoDo<\/a> (ou GitHub avec l&rsquo;int\u00e9gration Zenodo activ\u00e9e) et incluez le DOI dans la d\u00e9claration de disponibilit\u00e9 des donn\u00e9es de votre manuscrit. Cela transforme votre code de simulation en un artefact permanent et citable. De nombreuses revues recommandent d\u00e9sormais de d\u00e9poser du code dans les r\u00e9f\u00e9rentiels avec une affectation DOI. Consultez le <a href=\"https:\/\/joss.theoj.org\/papers\/tagged\/simulation%20science\" rel=\"nofollow\">Joss Simulation Science Lignes directrices<\/a> pour les attentes des revues sur les publications bas\u00e9es sur la simulation.<\/p>\n<p><strong>R\u00e8gle de d\u00e9cision&nbsp;: GitHub contre Zenodo&nbsp;?<\/strong> Utilisez GitHub pour le d\u00e9veloppement et la collaboration actifs. Utilisez Zenodo pour l&rsquo;archivage. Zenodo attribue automatiquement un DOI aux r\u00e9f\u00e9rentiels GitHub lorsqu&rsquo;il est li\u00e9, ce qui en fait le choix pr\u00e9f\u00e9r\u00e9 pour la publication. Vous pouvez conserver un r\u00e9f\u00e9rentiel GitHub en direct et archiver la validation finale sur Zenodo pour la soumission.<\/p>\n<h3>3. Calculer le contr\u00f4le de l&rsquo;environnement<\/h3>\n<p>Le contr\u00f4le de l&rsquo;environnement est l&rsquo;intervention technique la plus importante que vous puissiez faire. Lorsqu&rsquo;un r\u00e9viseur essaie de reproduire vos r\u00e9sultats sur une machine neuve, il doit conna\u00eetre la pile logicielle exacte : version Python, version NumPy, version Fipy, biblioth\u00e8ques de solveur. Sans cette information, l&rsquo;examinateur est deviner &#8211; et la devinette produit <code>ModuleNotFoundError<\/code>, <code>ImportError<\/code> et <code>FileNotFoundError<\/code> (les trois exceptions les plus courantes identifi\u00e9es par Samuel &amp; Mietchen, responsable de 41,65&nbsp;% de toute l&rsquo;ex\u00e9cution \u00e9checs).<\/p>\n<p><strong>Comment capturer votre environnement&nbsp;:<\/strong><\/p>\n<pre><code class=\"language-python\"># In Python, use the session-info package to export your environment\n!pip install session-info\nimport session_info\nsession_info.show()\n<\/code><\/pre>\n<pre><code class=\"language-bash\"># Conda environment export (alternative)\nconda env export &gt; environment.yml\n<\/code><\/pre>\n<pre><code class=\"language-bash\"># pip requirements (for simpler projects)\npip freeze &gt; requirements.txt\n<\/code><\/pre>\n<p><strong>R\u00e8gle de d\u00e9cision&nbsp;: Conda vs PIP contre Docker&nbsp;?<\/strong> Pour la plupart des flux de travail en sciences informatiques de Python, Conda est le meilleur \u00e9quilibre entre pratique et exhaustivit\u00e9. Il g\u00e8re \u00e0 la fois les packages Python et les d\u00e9pendances non-Python (tels que les biblioth\u00e8ques HDF5 ou les temps d&rsquo;ex\u00e9cution MPI). Docker fournit une isolation totale au prix de la complexit\u00e9 ; Utilisez Docker lorsque vous devez partager un flux de travail avec des chercheurs sur diff\u00e9rents syst\u00e8mes d&rsquo;exploitation qui ne peuvent pas installer Conda ou lorsque votre flux de travail d\u00e9pend des biblioth\u00e8ques au niveau du syst\u00e8me.<\/p>\n<p>La liste de contr\u00f4le Repro (Hornung et al., 2026) recommande explicitement de sp\u00e9cifier des versions de logiciels dans le README et de fournir un fichier de sp\u00e9cification d&rsquo;environnement. Ils notent : \u00ab\u00a0Pour la reproductibilit\u00e9 \u00e0 long terme, l&rsquo;environnement logiciel doit \u00e9galement \u00eatre clairement document\u00e9, y compris les versions de tous les packages suppl\u00e9mentaires utilis\u00e9s.\u00a0\u00bb<\/p>\n<h3>4. Partage de donn\u00e9es persistant<\/h3>\n<p>Le partage de donn\u00e9es va de pair avec le partage de code. Vos sorties de simulation &#8211; configurations de maillage, tableaux de champs, s\u00e9ries chronologiques de variables &#8211; doivent \u00eatre d\u00e9pos\u00e9es dans un r\u00e9f\u00e9rentiel qui attribue un identifiant persistant (DOI).<\/p>\n<p>Pour les donn\u00e9es de simulation, cela signifie g\u00e9n\u00e9ralement :<\/p>\n<ul>\n<li><strong>Sorties de simulation brutes<\/strong> (Tableau de champ, fichiers maill\u00e9s, s\u00e9ries temporelles) d\u00e9pos\u00e9s \u00e0 c\u00f4t\u00e9 du code<\/li>\n<li><strong>R\u00e9sultats interm\u00e9diaires<\/strong> pour les simulations de calculs intensifs (voir la recommandation Repro sur les r\u00e9sultats interm\u00e9diaires)<\/li>\n<li><strong>Donn\u00e9es de test synth\u00e9tiques<\/strong> si vos donn\u00e9es r\u00e9elles ne peuvent pas \u00eatre partag\u00e9es publiquement en raison de la confidentialit\u00e9 ou des restrictions l\u00e9gales<\/li>\n<\/ul>\n<p>Les Principes FAIR (Wilkinson et al., 2016) fournissent un cadre pour la gestion des donn\u00e9es\u2014voir <a href=\"https:\/\/www.go-fair.org\/fair-principles\/\" rel=\"nofollow\">Les conseils Go Fair sur le Principes<\/a> pour les orientations officielles sur la recherche, l&rsquo;accessibilit\u00e9, l&rsquo;interop\u00e9rabilit\u00e9 et la r\u00e9utilisabilit\u00e9.<\/p>\n<ul>\n<li><strong>Retrouvable&nbsp;:<\/strong> Attribuer des identifiants persistants (DOI) et inclure des m\u00e9tadonn\u00e9es riches<\/li>\n<li><strong>accessible&nbsp;:<\/strong> stocker des donn\u00e9es dans des r\u00e9f\u00e9rentiels avec des protocoles ouverts (ZeNoDo, FigShare, Material Data Facility)<\/li>\n<li><strong>Interop\u00e9rable&nbsp;:<\/strong> Utilisez des formats standard (HDF5, NETCDF, JSON) et des vocabulaires formels<\/li>\n<li><strong>R\u00e9utilisable&nbsp;:<\/strong> Documentation de la provenance, des licences et des donn\u00e9es<\/li>\n<\/ul>\n<p>Pour la science des mat\u00e9riaux et la physique informatique, des plateformes comme le <a href=\"https:\/\/www.materialscloud.org\/\" rel=\"nofollow\">cloud des mat\u00e9riaux<\/a> et le <a href=\"https:\/\/nomad-lab.eu\/nomad-lab\/\" rel=\"nofollow\">r\u00e9f\u00e9rentiel Nomad<\/a> Fournit une infrastructure conforme aux donn\u00e9es de simulation, avec des sch\u00e9mas de m\u00e9tadonn\u00e9es et un acc\u00e8s \u00e0 l&rsquo;API.<\/p>\n<h3>5. Documentation<\/h3>\n<p>La liste de contr\u00f4le des repro met l&rsquo;accent sur la documentation, non pas apr\u00e8s coup, mais comme composante structurelle d&rsquo;un travail reproductible. Un fichier Lisez-moi doit&nbsp;:<\/p>\n<ul>\n<li>Lister chaque fichier dans le r\u00e9f\u00e9rentiel et son objectif<\/li>\n<li>Sp\u00e9cifiez l&rsquo;ordre d&rsquo;ex\u00e9cution exact (les scripts produisent quels chiffres ou tableaux)<\/li>\n<li>Fournir des temps d&rsquo;ex\u00e9cution approximatifs et des exigences mat\u00e9rielles<\/li>\n<li>R\u00e9f\u00e9rencez les chiffres de la figure et du tableau correspondants de la publication<\/li>\n<\/ul>\n<p>Pour les flux de travail de simulation, la documentation signifie \u00e9galement documenter vos m\u00e9thodes num\u00e9riques. Lorsque vous \u00e9crivez un solveur personnalis\u00e9 ou un script Fipy avec fractionnement d&rsquo;un op\u00e9rateur, <a href=\"https:\/\/matforge.org\/operator-splitting-strang-splitting-and-imex-schemes-for-pde-solvers\/\">Strag Splitting et des sch\u00e9mas IMEX pour les solveurs PDE<\/a>, vous devez documenter&nbsp;:<\/p>\n<ul>\n<li>Le sch\u00e9ma de discr\u00e9tisation<\/li>\n<li>La m\u00e9thode d&rsquo;int\u00e9gration du temps<\/li>\n<li>Les tol\u00e9rances du solveur<\/li>\n<li>Le crit\u00e8re de convergence<\/li>\n<\/ul>\n<p>Si un autre chercheur ne peut pas comprendre la m\u00e9thode num\u00e9rique derri\u00e8re vos r\u00e9sultats, il ne peut pas \u00e9valuer si les r\u00e9sultats sont valides ou les reproduire sur un solveur diff\u00e9rent.<\/p>\n<h2>La liste de contr\u00f4le Repro en tant qu&rsquo;outil d&rsquo;auto-audit<\/h2>\n<p>La Repro Checklist (Hornung et al., 2026), publi\u00e9e dans <em>Royal Society Open Science<\/em> (<a href=\"https:\/\/royalsocietypublishing.org\/rsos\/article\/13\/6\/252489\/482007\/Overcoming-barriers-to-computational\" rel=\"nofollow\">Full Paper<\/a>), a \u00e9t\u00e9 d\u00e9velopp\u00e9e par un consortium international d\u2019\u00e9diteurs de reproductibilit\u00e9 de revues pour fournir un Cadre de recherche reproductible. Bien qu&rsquo;il s&rsquo;applique largement \u00e0 toutes les disciplines, plusieurs \u00e9l\u00e9ments sont particuli\u00e8rement pertinents pour les travaux de simulation informatique.<\/p>\n<p>Voici comment utiliser la liste de contr\u00f4le Repro comme auto-audit pr\u00e9alable \u00e0 la soumission&nbsp;:<\/p>\n<h3>A. Structure et lecture<\/h3>\n<p><strong>V\u00e9rifier&nbsp;:<\/strong> Avez-vous un r\u00e9pertoire <code>data\/<\/code>, <code>code\/<\/code> et <code>results\/<\/code> (ou <code>output\/<\/code>&nbsp;? Votre fichier Lisez-moi r\u00e9pertorie-t-il chaque fichier, sp\u00e9cifie-t-il l&rsquo;ordre d&rsquo;ex\u00e9cution et fait-il r\u00e9f\u00e9rence aux chiffres correspondants de chaque script&nbsp;?<\/p>\n<p><strong>\u00c9chec commun&nbsp;:<\/strong> Les chercheurs organisent leur code de simulation dans un seul dossier sans structure. Un fichier README est souvent enti\u00e8rement omis. Sans README, un critique n&rsquo;a aucun moyen de savoir quel script produit quel chiffre, et il peut ex\u00e9cuter les scripts dans le mauvais ordre, produisant des r\u00e9sultats enti\u00e8rement diff\u00e9rents.<\/p>\n<h3>B. Sp\u00e9cification de l&rsquo;environnement<\/h3>\n<p><strong>Check&nbsp;:<\/strong> Votre <code>environment.yml<\/code> ou <code>requirements.txt<\/code> est-il inclus dans l&rsquo;archive&nbsp;? Les versions Python et Package sont-elles explicitement sp\u00e9cifi\u00e9es&nbsp;?<\/p>\n<p><strong>\u00c9chec commun&nbsp;:<\/strong>&nbsp;La raison la plus courante pour laquelle les ordinateurs portables \u00e9chouent sont des d\u00e9pendances manquantes ou en conflit. Samuel &amp; Mietchen a constat\u00e9 que 34,32&nbsp;% des ordinateurs portables ont \u00e9chou\u00e9 \u00e0 l&rsquo;\u00e9tape d&rsquo;installation des d\u00e9pendances, m\u00eame si aucun des fichiers n&rsquo;a \u00e9t\u00e9 malform\u00e9. La cause principale est souvent des versions de package non sp\u00e9cifi\u00e9es ou obsol\u00e8tes.<\/p>\n<h3>C. Disponibilit\u00e9 des donn\u00e9es<\/h3>\n<p><strong>V\u00e9rifier&nbsp;:<\/strong> Un examinateur peut-il ex\u00e9cuter votre code \u00e0 partir de z\u00e9ro en utilisant les donn\u00e9es fournies&nbsp;? Si vous ne pouvez pas partager de donn\u00e9es r\u00e9elles, avez-vous inclus des donn\u00e9es synth\u00e9tiques qui imite la structure de calcul&nbsp;?<\/p>\n<p><strong>\u00c9chec commun&nbsp;:<\/strong> Lorsque les donn\u00e9es r\u00e9elles ne peuvent pas \u00eatre partag\u00e9es (en raison de contraintes juridiques, \u00e9thiques ou institutionnelles), le code doit toujours \u00eatre ex\u00e9cutable avec des donn\u00e9es synth\u00e9tiques. La liste de contr\u00f4le Repro recommande de g\u00e9n\u00e9rer des donn\u00e9es synth\u00e9tiques \u00e0 l&rsquo;aide de packages tels que <code>synthpop<\/code> ou <code>simdata<\/code> dans R, ou <code>numpy.random<\/code> en Python.<\/p>\n<h3>D. Ex\u00e9cution d\u00e9terministe<\/h3>\n<p><strong>V\u00e9rifier&nbsp;:<\/strong> Les graines de g\u00e9n\u00e9rateurs de nombres al\u00e9atoires sont-elles explicitement d\u00e9finies&nbsp;? Pour les simulations parall\u00e8les, des flux de nombres al\u00e9atoires reproductibles sont-ils utilis\u00e9s&nbsp;?<\/p>\n<p><strong>\u00c9chec commun&nbsp;:<\/strong> C&rsquo;est l&rsquo;une des causes les plus courantes et les plus subtiles d&rsquo;irr\u00e9productibilit\u00e9. Une simulation qui utilise <code>numpy.random.randn()<\/code> sans \u00e9tablir une graine produira des r\u00e9sultats diff\u00e9rents \u00e0 chaque ex\u00e9cution, et m\u00eame avec une graine, les travailleurs parall\u00e8les peuvent chacun g\u00e9n\u00e9rer des flux al\u00e9atoires qui se chevauchent. La liste de contr\u00f4le Repro recommande d&rsquo;utiliser la g\u00e9n\u00e9ration bas\u00e9e sur <code>SeedSequence<\/code> de Numpy pour des flux al\u00e9atoires d\u00e9terministes et s\u00fbrs.<\/p>\n<pre><code class=\"language-python\">from numpy.random import default_rng\nrng = default_rng(42)  # Fixed seed\n<\/code><\/pre>\n<p>Pour les simulations parall\u00e8les, utilisez <code>numpy.random.SeedSequence<\/code> pour g\u00e9n\u00e9rer des flux ind\u00e9pendants et reproductibles&nbsp;:<\/p>\n<pre><code class=\"language-python\">from numpy.random import SeedSequence\nseq = SeedSequence(42)\nchildren = seq.spawn(n_children)  # Deterministic per-child seeds\n<\/code><\/pre>\n<h3>E. R\u00e9sultats interm\u00e9diaires<\/h3>\n<p><strong>V\u00e9rifier&nbsp;:<\/strong> pour les simulations de calculs intensifs (par exemple, les balayages de param\u00e8tres, les \u00e9tudes de Monte Carlo), les r\u00e9sultats interm\u00e9diaires sont-ils enregistr\u00e9s afin que les examinateurs puissent reproduire des chiffres sp\u00e9cifiques sans relancer l&rsquo;analyse compl\u00e8te&nbsp;?<\/p>\n<p><strong>\u00c9chec courant&nbsp;:<\/strong> Lorsqu&rsquo;une simulation prend des heures ou des jours, les examinateurs ne peuvent pas le r\u00e9ex\u00e9cuter \u00e0 partir de z\u00e9ro. La liste de contr\u00f4le Repro recommande d&rsquo;enregistrer les r\u00e9sultats interm\u00e9diaires (sortie brute avant la g\u00e9n\u00e9ration finale de la figure) afin que les examinateurs puissent rapidement v\u00e9rifier des sorties sp\u00e9cifiques. Ceci est particuli\u00e8rement important pour les \u00e9tudes de simulation avec des r\u00e9plications parall\u00e8les.<\/p>\n<h2>Flux de travail \u00e9tape par \u00e9tape, de la conception de la simulation \u00e0 la soumission<\/h2>\n<p>Cette section fournit un flux de travail concret qui int\u00e8gre les cinq piliers et la liste de contr\u00f4le Repro dans un pipeline de production r\u00e9p\u00e9table.<\/p>\n<h3>Phase 1 : conception de la simulation et organisation du code<\/h3>\n<ol>\n<li><strong>Cr\u00e9er la structure du projet&nbsp;:<\/strong><\/li>\n<\/ol>\n<pre><code>project\/\n\u251c\u2500\u2500 README.md\n\u251c\u2500\u2500 environment.yml\n\u251c\u2500\u2500 data\/\n\u2502   \u251c\u2500\u2500 input\/         # Simulation inputs, initial conditions\n\u2502   \u251c\u2500\u2500 output\/        # Raw simulation outputs\n\u2502   \u2514\u2500\u2500 synthetic\/     # Synthetic test data (if real data is restricted)\n\u251c\u2500\u2500 code\/\n\u2502   \u251c\u2500\u2500 mesh.py        # Mesh configuration\n\u2502   \u251c\u2500\u2500 solve.py       # Main simulation script\n\u2502   \u251c\u2500\u2500 postprocess.py # Figure generation\n\u2502   \u2514\u2500\u2500 test\/          # Unit tests and convergence checks\n\u2514\u2500\u2500 results\/\n    \u251c\u2500\u2500 figures\/\n    \u2514\u2500\u2500 tables\/\n<\/code><\/pre>\n<ol start=\"2\">\n<li><strong>Contr\u00f4le des versions&nbsp;:<\/strong> Initialisez le r\u00e9f\u00e9rentiel et validez la structure.<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">git init\ngit add README.md environment.yml\ngit commit -m \"Initial project structure\"\n<\/code><\/pre>\n<h3>Phase 2 : Ex\u00e9cution et documentation de la simulation<\/h3>\n<ol start=\"3\">\n<li><strong>\u00c9crivez la simulation dans un format alphab\u00e9tis\u00e9.<\/strong> Utilisez des ordinateurs portables ou des fichiers de script Jupyter avec des commentaires \u00e9tendus. Documentez chaque m\u00e9thode num\u00e9rique, chaque choix de solveur, chaque condition aux limites.<\/li>\n<li><strong>D\u00e9finir les graines d\u00e9terministes.<\/strong> Incluez <code>np.random.seed(42)<\/code> (ou une configuration <code>SeedSequence<\/code> plus sophistiqu\u00e9e pour les courses parall\u00e8les) en haut de chaque script.<\/li>\n<li><strong>Capturez l&rsquo;environnement.<\/strong> RUN <code>session_info.show()<\/code> ou <code>conda env export<\/code> pendant une ex\u00e9cution r\u00e9ussie et incluez la sortie dans le README.<\/li>\n<li><strong>Enregistrez les r\u00e9sultats interm\u00e9diaires.<\/strong> Si votre simulation est gourmande en calculs, enregistrez les sorties brutes aux points de contr\u00f4le afin que les examinateurs puissent v\u00e9rifier des chiffres sp\u00e9cifiques sans tout relancer.<\/li>\n<\/ol>\n<h3>Phase 3 : Validation et v\u00e9rification<\/h3>\n<ol start=\"7\">\n<li><strong>Ex\u00e9cutez des \u00e9tudes de convergence.<\/strong> V\u00e9rifiez que vos r\u00e9sultats convergent comme pr\u00e9vu lorsque vous affinez le maillage. Cela fait partie de la v\u00e9rification &#8211; v\u00e9rifier que la solution num\u00e9rique aborde la solution exacte \u00e0 mesure que les param\u00e8tres de discr\u00e9tisation diminuent. Pour un cadre pratique, consultez notre guide sur <a href=\"\/validation-and-verification-for-pde-simulations-practical-framework\/\">validation et v\u00e9rification des simulations PDE<\/a>.<\/li>\n<li><strong>\u00c9crire les tests unitaires.<\/strong> Testez les fonctions individuelles, les conditions aux limites et les solveurs. Si vous utilisez FIPY, cela peut inclure le test de la bonne initialisation correcte des valeurs <code>CellVariable<\/code> ou de <code>DiffusionTerm<\/code>. Consultez notre article sur <a href=\"https:\/\/matforge.org\/python-testing-patterns-for-scientific-code-beyond-pytest-basics\/\">Mod\u00e8les de test pour le code scientifique<\/a> pour plus de d\u00e9tails.<\/li>\n<\/ol>\n<h3>Phase 4 : archivage et soumission<\/h3>\n<ol start=\"9\">\n<li><strong>Archive sur Zenodo.<\/strong> Poussez le dernier engagement sur GitHub et liez-le \u00e0 Zenodo pour l&rsquo;affectation DOI.<\/li>\n<li><strong>Ex\u00e9cuter la liste de contr\u00f4le REPRO Audit&nbsp;:<\/strong>\n<ul>\n<li>Fichier README avec ordre d&rsquo;ex\u00e9cution&nbsp;?<\/li>\n<li>Sp\u00e9cification de l&rsquo;environnement inclus&nbsp;?<\/li>\n<li>Donn\u00e9es disponibles (r\u00e9elles ou synth\u00e9tiques)&nbsp;?<\/li>\n<li>Semences d\u00e9terministes D\u00e9finir&nbsp;?<\/li>\n<li>R\u00e9sultats interm\u00e9diaires enregistr\u00e9s&nbsp;?<\/li>\n<\/ul>\n<\/li>\n<li><strong>Soumettez-le avec le code et les donn\u00e9es DOI<\/strong> dans la d\u00e9claration de disponibilit\u00e9 des donn\u00e9es de votre manuscrit. De nombreuses revues l&rsquo;exigent d\u00e9sormais lors de la soumission ou de la r\u00e9vision.<\/li>\n<\/ol>\n<h2>Des pi\u00e8ges courants et comment les \u00e9viter<\/h2>\n<h3>Pitfall 1 : chemins absolus<\/h3>\n<p>L&rsquo;utilisation de chemins absolus comme <code>\/home\/user\/simulations\/output\/data.csv<\/code> dans votre code casse la reproductibilit\u00e9 sur n&rsquo;importe quelle machine autre que celle o\u00f9 vous avez d\u00e9velopp\u00e9 le projet.<\/p>\n<p><strong>FIX&nbsp;:<\/strong> Utilisez les chemins relatifs de la racine du projet. Si vos scripts attendent des donn\u00e9es dans un r\u00e9pertoire <code>data\/<\/code>, r\u00e9f\u00e9rencez <code>data\/input.csv<\/code> quel que soit l&rsquo;endroit o\u00f9 le projet est clon\u00e9.<\/p>\n<h3>Pitfall 2 : D\u00e9pendances non programm\u00e9es<\/h3>\n<p>Un ordinateur portable importe <code>scipy.stats<\/code> mais ne d\u00e9clare pas que <code>scipy<\/code> est requis. Lorsqu&rsquo;un autre chercheur ex\u00e9cute le bloc-notes, il peut avoir une version incompatible <code>scipy<\/code> ou la manquer enti\u00e8rement.<\/p>\n<p><strong>FIX&nbsp;:<\/strong> Incluez toujours un <code>requirements.txt<\/code> ou <code>environment.yml<\/code> et v\u00e9rifiez-le en supprimant l&rsquo;environnement local et en r\u00e9installant \u00e0 partir de z\u00e9ro avant l&rsquo;archivage.<\/p>\n<h3>Pitfall&nbsp;3&nbsp;: Lisez-moi manquant<\/h3>\n<p>Sans Readme, les critiques ne peuvent pas savoir&nbsp;:<\/p>\n<ul>\n<li>Quel script produit quelle figure<\/li>\n<li>Quels scripts d&rsquo;ordre doivent \u00eatre ex\u00e9cut\u00e9s<\/li>\n<li>\u00c0 quelle ex\u00e9cution approximative s&rsquo;attendre<\/li>\n<li>Quelle version ou version de package Python a \u00e9t\u00e9 utilis\u00e9e<\/li>\n<\/ul>\n<p><strong>Correction&nbsp;:<\/strong> \u00c9crivez un README qui r\u00e9pertorie chaque fichier, chaque \u00e9tape d&rsquo;ex\u00e9cution et chaque estimation d&rsquo;ex\u00e9cution. Faites r\u00e9f\u00e9rence aux chiffres de votre publication.<\/p>\n<h3>Pitfall 4 : D\u00e9rive de la version Python<\/h3>\n<p>Python 3,6 \u00e9tait le coucher du soleil en 2021&nbsp;; Python 3.7 \u00e9tait le coucher du soleil en juin 2023. De nombreux cahiers dans le Samuel &amp; Mietchen Corpus a utilis\u00e9 des versions Python obsol\u00e8tes, et le d\u00e9calage entre la version lors de la publication et la version disponible lorsque les critiques tentent de reproduire provoque de subtiles incompatibilit\u00e9s.<\/p>\n<p><strong>Correction&nbsp;:<\/strong> Utilisez une version Python r\u00e9cente et activement prise en charge et sp\u00e9cifiez-la dans votre fichier d&rsquo;environnement. La liste de contr\u00f4le Repro recommande de documenter la version Python dans le README.<\/p>\n<h3>Pi\u00e8ge 5 : nombres al\u00e9atoires non d\u00e9terministes<\/h3>\n<p>Une simulation qui g\u00e9n\u00e8re des conditions initiales al\u00e9atoires sans fixer la graine produit \u00e0 chaque fois des sorties diff\u00e9rentes. M\u00eame avec une graine, les travailleurs parall\u00e8les peuvent g\u00e9n\u00e9rer des flux qui se chevauchent.<\/p>\n<p><strong>FIX&nbsp;:<\/strong> D\u00e9finissez une graine fixe pour toutes les op\u00e9rations al\u00e9atoires. Utilisez <code>numpy.random.SeedSequence<\/code> pour la reproductibilit\u00e9 de Parallel-Safe. La liste de contr\u00f4le Repro recommande explicitement ce mod\u00e8le.<\/p>\n<h2>Quand choisir les conteneurs par rapport aux environnements l\u00e9gers<\/h2>\n<p>Pour la plupart des flux de travail de simulation, la gestion de l&rsquo;environnement l\u00e9ger (CONDA, PIP, UV) est suffisante. Vous obtenez la reproductibilit\u00e9 en sp\u00e9cifiant des versions exactes du package, et les r\u00e9viseurs peuvent installer l&rsquo;environnement avec une seule commande.<\/p>\n<p><strong>Choisir conda\/UV\/PIP quand&nbsp;:<\/strong><\/p>\n<ul>\n<li>Vous travaillez avec des solveurs bas\u00e9s sur Python (FIPY, OpenPDE, FENICS)<\/li>\n<li>Vous avez le contr\u00f4le de l&rsquo;environnement de calcul de votre c\u00f4t\u00e9<\/li>\n<li>Vous voulez un flux de travail l\u00e9ger et portable<\/li>\n<\/ul>\n<p><strong>Choisissez Docker quand&nbsp;:<\/strong><\/p>\n<ul>\n<li>Vous devez partager un flux de travail avec des chercheurs qui ne peuvent pas installer Conda ou des biblioth\u00e8ques sp\u00e9cifiques au niveau du syst\u00e8me.<\/li>\n<li>Votre flux de travail d\u00e9pend des solveurs C++\/Fortran qui doivent \u00eatre compil\u00e9s<\/li>\n<li>Vous soumettez \u00e0 un journal qui n\u00e9cessite une reproductibilit\u00e9 en conteneur (par exemple, <em>Computo<\/em>)<\/li>\n<\/ul>\n<p>Pour la grande majorit\u00e9 des documents de science et de physique des mat\u00e9riaux informatiques, le Conda ou les UV est le meilleur choix &#8211; il est plus simple, plus rapide et suffisant pour la reproductibilit\u00e9 dont les examinateurs et les lecteurs ont besoin.<\/p>\n<h2>Une note pratique sur les attentes des revues<\/h2>\n<p>La liste de contr\u00f4le de repro documente l&rsquo;h\u00e9t\u00e9rog\u00e9n\u00e9it\u00e9 des politiques de reproductibilit\u00e9 des journaux. Certaines revues (comme <em>journal biom\u00e9trique<\/em> ou <em>journal de l&rsquo;American Statistical Association<\/em>) n\u00e9cessitent des contr\u00f4les de reproductibilit\u00e9 actives par des \u00e9diteurs d\u00e9di\u00e9s. D&rsquo;autres (comme <em>le BMJ<\/em>) n\u00e9cessitent la soumission de code mais n&rsquo;effectuent pas de v\u00e9rifications d&rsquo;ex\u00e9cution ind\u00e9pendantes.<\/p>\n<p>Pour les travaux de simulation informatique, les attentes minimales dans la plupart des revues sont les suivantes&nbsp;:<\/p>\n<ul>\n<li><strong>Disponibilit\u00e9 du code&nbsp;:<\/strong> Le code d&rsquo;analyse doit \u00eatre fourni sous la forme d&rsquo;un fichier suppl\u00e9mentaire ou d&rsquo;un r\u00e9f\u00e9rentiel ouvert (GitHub, Zenodo)<\/li>\n<li><strong>Disponibilit\u00e9 des donn\u00e9es&nbsp;:<\/strong> Les donn\u00e9es utilis\u00e9es pour l&rsquo;analyse doivent \u00eatre accessibles au public ou justifi\u00e9es<\/li>\n<li><strong>Sp\u00e9cification de l&rsquo;environnement&nbsp;:<\/strong> Les versions et les packages de logiciels doivent \u00eatre document\u00e9s<\/li>\n<\/ul>\n<p>C&rsquo;est le sol, pas le plafond. En suivant les cinq piliers et la liste de contr\u00f4le des repro positions votre travail au-dessus du sol et signale que vous prenez au s\u00e9rieux la reproductibilit\u00e9.<\/p>\n<h2>\u00c9tapes suivantes pour votre flux de travail de simulation<\/h2>\n<p>Si vous d\u00e9butez dans les pratiques de simulation reproductibles, commencez par les trois changements les plus importants&nbsp;:<\/p>\n<ol>\n<li><strong>Ajouter un fichier Lisez-moi<\/strong> \u00e0 votre projet avec des descriptions de fichiers et un ordre d&rsquo;ex\u00e9cution<\/li>\n<li><strong>Exportez votre environnement<\/strong> (<code>conda env export<\/code> ou <code>uv export<\/code>) et incluez-le dans vos archives<\/li>\n<li><strong>D\u00e9finir des graines al\u00e9atoires<\/strong> dans chaque script de simulation et utiliser <code>SeedSequence<\/code> pour les ex\u00e9cutions parall\u00e8les<\/li>\n<\/ol>\n<p>Ces trois changements \u00e0 eux seuls \u00e9limineront 80% des \u00e9checs de reproductibilit\u00e9 identifi\u00e9s par Samuel &amp; Mietchen.<\/p>\n<p>Si vous avez besoin d&rsquo;aide pour concevoir un workflow de simulation reproductible, de la documentation des ordinateurs portables \u00e0 l&rsquo;archivage de code et \u00e0 la soumission d&rsquo;un journal, notre \u00e9quipe peut fournir des consultations sur la conception du flux de travail, la sp\u00e9cification de l&rsquo;environnement et l&rsquo;archivage des donn\u00e9es conforme \u00e0 la norme. Contactez-nous pour discuter de votre projet de simulation sp\u00e9cifique. Construire une communaut\u00e9 de logiciels de recherche durable (<a href=\"\/building-sustainable-research-software-communities\/\">comment nous abordons le d\u00e9veloppement communautaire<\/a>) fait partie de ce processus&nbsp;: la reproductibilit\u00e9 s&rsquo;am\u00e9liore lorsque toute l&rsquo;\u00e9quipe partage des normes communes.<\/p>\n<h2>Conclusion<\/h2>\n<p>Les pratiques de publication reproductibles pour les r\u00e9sultats de simulation ne sont pas un compl\u00e9ment facultatif, elles sont une exigence pour une communication scientifique cr\u00e9dible. Les cinq piliers (programmation alphab\u00e9tis\u00e9e, contr\u00f4le des versions, gestion de l&rsquo;environnement, partage de donn\u00e9es, documentation) et la liste de contr\u00f4le Repro fournissent une base structur\u00e9e et exploitable pour la reproductibilit\u00e9 qui s&rsquo;applique \u00e0 toutes les disciplines.<\/p>\n<p>L&rsquo;\u00e9chelle de l&rsquo;\u00e9cart de reproductibilit\u00e9 &#8211; 12,4&nbsp;% de reproduction identique r\u00e9ussie dans le Samuel&nbsp;&amp;&nbsp;; L&rsquo;\u00e9tude de Mietchen est un appel \u00e0 l&rsquo;action. Chaque flux de travail de simulation qui comprend un fichier de lecture, un fichier d&rsquo;environnement et des graines d\u00e9terministes comble une partie mesurable de cet \u00e9cart. L&rsquo;investissement est modeste : heures, pas mois. Le retour est la possibilit\u00e9 pour tout lecteur, examinateur ou futur chercheur de v\u00e9rifier vos r\u00e9sultats de mani\u00e8re ind\u00e9pendante.<\/p>\n<p>Pour le chercheur informatique, la reproductibilit\u00e9 n&rsquo;est pas simplement une vertu m\u00e9thodologique, c&rsquo;est le fondement de la cr\u00e9dibilit\u00e9 scientifique. Les cinq piliers vous donnent un cadre. La liste de contr\u00f4le Repro vous donne une liste de contr\u00f4le. Les outils (git, conda, zenodo) sont disponibles. Ce qui reste, c&rsquo;est la d\u00e9cision de les utiliser.<\/p>\n<h2 id=\"faq\">FAQ<\/h2>\n<h3>Quel est le cadre des cinq piliers de la reproductibilit\u00e9 ?<\/h3>\n<p>Les cinq piliers propos\u00e9s par Ziemann et al. (2023), sont la programmation alphab\u00e9tis\u00e9e, le contr\u00f4le de version du code, le contr\u00f4le de l&rsquo;environnement de calcul, le partage de donn\u00e9es persistants et la documentation. Ils forment un cadre structur\u00e9 pour documenter et partager des flux de travail de calcul reproductibles.<\/p>\n<h3>Quelle est la liste de contr\u00f4le des repro&nbsp;?<\/h3>\n<p>La liste de contr\u00f4le de Repro, publi\u00e9e par Hornung et al. (2026), est un outil concis et multidisciplinaire pour cr\u00e9er des analyses reproductibles. Il couvre la structure du code et des donn\u00e9es, les exigences en mati\u00e8re de lecture, la sp\u00e9cification de l&rsquo;environnement, la disponibilit\u00e9 des donn\u00e9es, la g\u00e9n\u00e9ration de nombres al\u00e9atoires d\u00e9terministes et les r\u00e9sultats interm\u00e9diaires.<\/p>\n<h3>Pourquoi les ordinateurs portables Jupyter \u00e9chouent-ils si souvent ?<\/h3>\n<p>Samuel &amp; Mietchen (2024) ont constat\u00e9 que 87,6&nbsp;% des ordinateurs portables bas\u00e9s sur Python avaient entra\u00een\u00e9 des exceptions lors de la rediffusion automatis\u00e9e. Les causes principales sont des d\u00e9pendances manquantes ou contradictoires (<code>ModuleNotFoundError<\/code> et <code>ImportError<\/code>), des chemins de fichiers non r\u00e9solus (<code>FileNotFoundError<\/code>) et une g\u00e9n\u00e9ration de nombres al\u00e9atoires non d\u00e9terministes.<\/p>\n<h3>Comment choisir entre Conda et Docker ?<\/h3>\n<p>Utilisez Conda (ou UV) pour la plupart des flux de travail de simulation bas\u00e9s sur Python. Utilisez Docker lorsque vous avez besoin d&rsquo;une isolation compl\u00e8te entre les syst\u00e8mes d&rsquo;exploitation ou lorsque votre flux de travail d\u00e9pend des solveurs C++\/Fortran compil\u00e9s.<\/p>\n<h3>Comment rendre mes r\u00e9sultats de simulation reproductibles sans partager de donn\u00e9es brutes ?<\/h3>\n<p>G\u00e9n\u00e9rez des donn\u00e9es synth\u00e9tiques qui imite la structure de calcul de vos donn\u00e9es r\u00e9elles. La liste de contr\u00f4le Repro recommande d&rsquo;utiliser des packages tels que <code>synthpop<\/code> ou <code>simdata<\/code> dans R, ou <code>numpy.random<\/code> en Python, pour cr\u00e9er des donn\u00e9es de test synth\u00e9tiques qui permettent une v\u00e9rification ind\u00e9pendante de votre code d&rsquo;analyse.<\/p>\n","protected":false,"raw":"<ul>\n<li>Les ordinateurs portables Jupyter ne s'ex\u00e9cutent avec succ\u00e8s que 12,4&nbsp;% du temps lorsque les d\u00e9pendances sont d\u00e9clar\u00e9es&nbsp;: la gestion de l'environnement explicite comble cet \u00e9cart.<\/li>\n<li>Le cadre des cinq piliers de Ziemann et al. (2023) fournit une base de r\u00e9f\u00e9rence structur\u00e9e pour la documentation, le contr\u00f4le des versions, la gestion de l'environnement, le partage de donn\u00e9es et la conformit\u00e9 \u00e9quitable<\/li>\n<li>La liste de contr\u00f4le Repro (Hornung et al., 2026) propose un outil pratique d'auto-audit couvrant la structure des dossiers, la sp\u00e9cification de l'environnement, la disponibilit\u00e9 des donn\u00e9es et l'ex\u00e9cution d\u00e9terministe<\/li>\n<li>Les \u00e9cueils courants tels que les chemins absolus, les d\u00e9pendances non sp\u00e9cifiques et les lus manquants sont les principales causes des \u00e9checs de reproductibilit\u00e9 dans la recherche informatique.<\/li>\n<li>Un workflow \u00e9tape par \u00e9tape, de la conception de la simulation \u00e0 la documentation, \u00e0 l'archivage de code et \u00e0 la soumission d'un journal, fournit un pipeline de production r\u00e9p\u00e9table<\/li>\n<\/ul>\n<h2>L'\u00e9cart de reproductibilit\u00e9 dans la recherche informatique<\/h2>\n<p>Lorsque vous soumettez un article bas\u00e9 sur une simulation, les examinateurs v\u00e9rifient votre m\u00e9thodologie, les conditions aux limites, les \u00e9tudes de convergence et la comparaison avec des rep\u00e8res analytiques. Mais ils relancent rarement votre code. Les r\u00e9sultats pr\u00e9sent\u00e9s dans vos figures et tableaux deviennent l'enregistrement publi\u00e9, et si ces r\u00e9sultats ont \u00e9t\u00e9 g\u00e9n\u00e9r\u00e9s par un flux de travail qui ne peut pas \u00eatre reproduit, la publication repose sur une base non v\u00e9rifi\u00e9e.<\/p>\n<p>Ce n'est pas un probl\u00e8me th\u00e9orique. Samuel &amp; Mietchen (2024) a analys\u00e9 15&nbsp;817&nbsp;carnets Jupyter bas\u00e9s sur Python de publications biom\u00e9dicales index\u00e9es dans PubMed Central. Parmi les ordinateurs portables o\u00f9 toutes les d\u00e9pendances d\u00e9clar\u00e9es pouvaient \u00eatre install\u00e9es avec succ\u00e8s, <strong>87,6&nbsp;% ont entra\u00een\u00e9 des exceptions<\/strong> lors de la rediffusion automatis\u00e9e. Seuls 1&nbsp;203&nbsp;ordinateurs portables ont \u00e9t\u00e9 ex\u00e9cut\u00e9s sans erreur, et parmi ceux-ci, 324&nbsp;r\u00e9sultats ont \u00e9t\u00e9 diff\u00e9rents des r\u00e9sultats signal\u00e9s \u00e0 l'origine. Les 879 ordinateurs portables restants ont produit des r\u00e9sultats identiques. Ce taux de r\u00e9ussite de 5,56&nbsp;% pour une reproduction identique \u00e9tait en fait une am\u00e9lioration par rapport \u00e0 la course initiale de 2021 (5,88&nbsp;%), indiquant que les ordinateurs portables r\u00e9cents ont tendance \u00e0 \u00eatre l\u00e9g\u00e8rement meilleurs, mais l'\u00e9cart reste \u00e9norme.<\/p>\n<p>Qu'est-ce qui rend la reproductibilit\u00e9 plus difficile pour les scientifiques informatiques&nbsp;? Vous travaillez avec des solveurs num\u00e9riques, des am\u00e9liorations de maillage, des sch\u00e9mas d'int\u00e9gration temporelle et des strat\u00e9gies de couplage qui produisent des r\u00e9sultats \u00e0 travers des cha\u00eenes d'op\u00e9rations en virgule flottante. Une seule bosse de version Python, un param\u00e8tre par d\u00e9faut modifi\u00e9 dans <code>numpy<\/code> ou <code>scipy<\/code>, ou un chemin relatif qui ne se r\u00e9sout pas sur une autre machine peut invalider chaque chiffre et chaque tableau de votre papier. Le probl\u00e8me s'aggrave lorsque votre flux de travail implique un raffinement de maillage adaptatif, des termes de source personnalis\u00e9s ou des conditions aux limites non triviales, le type tr\u00e8s avanc\u00e9 de mod\u00e8les document\u00e9s dans <a href=\"\/how-fipy-handles-meshes-and-grid-structures\/\">Ressources Fipy sur ce site<\/a>.<\/p>\n<h2>Cinq piliers de la recherche computationnelle reproductible<\/h2>\n<p>Ziemann et al. (2023) ont officialis\u00e9 les <strong>cinq piliers de la reproductibilit\u00e9 informatique<\/strong> comme cadre de documentation et de partage de flux de travail reproductibles. Bien qu'ils soient d\u00e9velopp\u00e9s \u00e0 l'origine dans le contexte de la bioinformatique, ces piliers s'appliquent \u00e9galement aux simulations de science des mat\u00e9riaux, \u00e0 la dynamique des fluides informatiques et aux solveurs PDE bas\u00e9s sur un volume fini.<\/p>\n<h3>1. Programmation alphab\u00e9tis\u00e9e<\/h3>\n<p>La programmation alphab\u00e9tis\u00e9e signifie documenter votre flux de travail informatique comme un r\u00e9cit qui entrelace l'explication et le code ex\u00e9cutable. Dans les sciences informatiques, cela se manifeste g\u00e9n\u00e9ralement sous forme de blocs-notes Jupyter, de documents R Markdown ou de scripts Python avec des doctrings \u00e9tendus et des commentaires en ligne.<\/p>\n<p>L'objectif n'est pas simplement de produire un fichier reproductible, c'est de cr\u00e9er un document qu'un lecteur qui ne conna\u00eet pas avec votre analyse peut suivre, comprendre et r\u00e9ex\u00e9cuter. Samuel &amp; Mietchen (2024) a trouv\u00e9 une corr\u00e9lation claire entre le <strong>rapport de r\u00e9duction sur la cellule de code<\/strong> et la reproduction r\u00e9ussie&nbsp;: les ordinateurs portables avec un effort de documentation plus \u00e9lev\u00e9 (plus de cellules Markdown par rapport aux cellules de code) \u00e9taient significativement plus susceptibles de se reproduire de mani\u00e8re identique \u00e0 la sortie d'origine.<\/p>\n<p>Pour une simulation en champ de phase dans FIPY\u2014<a href=\"\/understanding-fipys-core-architecture\/\">une introduction \u00e0 son architecture de base<\/a>\u2014ou un mod\u00e8le de diffusion \u00e0 l'aide du <a href=\"\/finite-volume-method-explained-simply\/\">m\u00e9thode de volume fini<\/a>, la programmation alphab\u00e9tis\u00e9e peut ressembler \u00e0 ceci&nbsp;:<\/p>\n<pre><code class=\"language-python\"># Set deterministic seed\nimport numpy as np\nnp.random.seed(42)\n\n# Build a structured grid (this should match the mesh description in your paper)\nnx, ny = 100, 100\nmesh = CellGrid([nx, ny], varIndex=1)\n\n# Define the transient diffusion term and boundary conditions\nT = CellVariable(name='Temperature', mesh=mesh, value=initial_temperature)\neqn = TransientTerm() == DiffusionTerm(coeff=thermal_conductivity)\n\n# Impose Dirichlet boundary conditions (see also our guide on FiPy BCs)\nT.fixLeft(value=300)\nT.fixRight(value=500)\n<\/code><\/pre>\n<p>Lorsque vous \u00e9crivez cette cellule de bloc-notes, vous documentez simultan\u00e9ment la r\u00e9solution du maillage, la PDE et les conditions aux limites, et vous ex\u00e9cutez la simulation qui a produit votre chiffre publi\u00e9.<\/p>\n<p><strong>Recommandation&nbsp;:<\/strong> Si votre ordinateur portable a moins de cellules Markdown que de codes de cellules, vous \u00eates sous-document\u00e9. Visez au moins un rapport 1:1, et id\u00e9alement plus. Le Samuel &amp; L'\u00e9tude de Mietchen a r\u00e9v\u00e9l\u00e9 que le groupe de reproduction identique avait un rapport de r\u00e9duction\/code de 0,73, tandis que le groupe de reproduction diff\u00e9rent n'avait que 0,49.<\/p>\n<h3>2. Contr\u00f4le de version de code et partage<\/h3>\n<p>Le contr\u00f4le de version n'est pas facultatif pour les travaux de qualit\u00e9 de publication. Git fournit un historique permanent et interrogeable de chaque changement de code, et GitHub, GitLab ou Zenodo archive votre r\u00e9f\u00e9rentiel en tant qu'objet citable avec un DOI.<\/p>\n<p>Le but du contr\u00f4le de version est double :<\/p>\n<ul>\n<li><strong>Reproductibilit\u00e9&nbsp;:<\/strong> Un hachage de validation sp\u00e9cifique (<code>abc1234<\/code>) associ\u00e9 \u00e0 une date de validation sp\u00e9cifique indique \u00e0 quiconque exactement quel code produit vos r\u00e9sultats publi\u00e9s.<\/li>\n<li><strong>Responsabilit\u00e9&nbsp;:<\/strong> Chaque changement de param\u00e8tre, chaque modification de terme source, chaque modification des conditions aux limites est enregistr\u00e9e. Lorsqu'un critique demande \"Pourquoi avez-vous utilis\u00e9 ce coefficient de diffusion&nbsp;?\" Vous pouvez pointer vers le commit exact o\u00f9 il a \u00e9t\u00e9 d\u00e9fini.<\/li>\n<\/ul>\n<p>Lors de la publication, archivez votre r\u00e9f\u00e9rentiel sur <a href=\"https:\/\/zenodo.org\/\" rel=\"nofollow\">ZeNoDo<\/a> (ou GitHub avec l'int\u00e9gration Zenodo activ\u00e9e) et incluez le DOI dans la d\u00e9claration de disponibilit\u00e9 des donn\u00e9es de votre manuscrit. Cela transforme votre code de simulation en un artefact permanent et citable. De nombreuses revues recommandent d\u00e9sormais de d\u00e9poser du code dans les r\u00e9f\u00e9rentiels avec une affectation DOI. Consultez le <a href=\"https:\/\/joss.theoj.org\/papers\/tagged\/simulation%20science\" rel=\"nofollow\">Joss Simulation Science Lignes directrices<\/a> pour les attentes des revues sur les publications bas\u00e9es sur la simulation.<\/p>\n<p><strong>R\u00e8gle de d\u00e9cision&nbsp;: GitHub contre Zenodo&nbsp;?<\/strong> Utilisez GitHub pour le d\u00e9veloppement et la collaboration actifs. Utilisez Zenodo pour l'archivage. Zenodo attribue automatiquement un DOI aux r\u00e9f\u00e9rentiels GitHub lorsqu'il est li\u00e9, ce qui en fait le choix pr\u00e9f\u00e9r\u00e9 pour la publication. Vous pouvez conserver un r\u00e9f\u00e9rentiel GitHub en direct et archiver la validation finale sur Zenodo pour la soumission.<\/p>\n<h3>3. Calculer le contr\u00f4le de l'environnement<\/h3>\n<p>Le contr\u00f4le de l'environnement est l'intervention technique la plus importante que vous puissiez faire. Lorsqu'un r\u00e9viseur essaie de reproduire vos r\u00e9sultats sur une machine neuve, il doit conna\u00eetre la pile logicielle exacte : version Python, version NumPy, version Fipy, biblioth\u00e8ques de solveur. Sans cette information, l'examinateur est deviner - et la devinette produit <code>ModuleNotFoundError<\/code>, <code>ImportError<\/code> et <code>FileNotFoundError<\/code> (les trois exceptions les plus courantes identifi\u00e9es par Samuel &amp; Mietchen, responsable de 41,65&nbsp;% de toute l'ex\u00e9cution \u00e9checs).<\/p>\n<p><strong>Comment capturer votre environnement&nbsp;:<\/strong><\/p>\n<pre><code class=\"language-python\"># In Python, use the session-info package to export your environment\n!pip install session-info\nimport session_info\nsession_info.show()\n<\/code><\/pre>\n<pre><code class=\"language-bash\"># Conda environment export (alternative)\nconda env export &gt; environment.yml\n<\/code><\/pre>\n<pre><code class=\"language-bash\"># pip requirements (for simpler projects)\npip freeze &gt; requirements.txt\n<\/code><\/pre>\n<p><strong>R\u00e8gle de d\u00e9cision&nbsp;: Conda vs PIP contre Docker&nbsp;?<\/strong> Pour la plupart des flux de travail en sciences informatiques de Python, Conda est le meilleur \u00e9quilibre entre pratique et exhaustivit\u00e9. Il g\u00e8re \u00e0 la fois les packages Python et les d\u00e9pendances non-Python (tels que les biblioth\u00e8ques HDF5 ou les temps d'ex\u00e9cution MPI). Docker fournit une isolation totale au prix de la complexit\u00e9 ; Utilisez Docker lorsque vous devez partager un flux de travail avec des chercheurs sur diff\u00e9rents syst\u00e8mes d'exploitation qui ne peuvent pas installer Conda ou lorsque votre flux de travail d\u00e9pend des biblioth\u00e8ques au niveau du syst\u00e8me.<\/p>\n<p>La liste de contr\u00f4le Repro (Hornung et al., 2026) recommande explicitement de sp\u00e9cifier des versions de logiciels dans le README et de fournir un fichier de sp\u00e9cification d'environnement. Ils notent : \"Pour la reproductibilit\u00e9 \u00e0 long terme, l'environnement logiciel doit \u00e9galement \u00eatre clairement document\u00e9, y compris les versions de tous les packages suppl\u00e9mentaires utilis\u00e9s.\"<\/p>\n<h3>4. Partage de donn\u00e9es persistant<\/h3>\n<p>Le partage de donn\u00e9es va de pair avec le partage de code. Vos sorties de simulation - configurations de maillage, tableaux de champs, s\u00e9ries chronologiques de variables - doivent \u00eatre d\u00e9pos\u00e9es dans un r\u00e9f\u00e9rentiel qui attribue un identifiant persistant (DOI).<\/p>\n<p>Pour les donn\u00e9es de simulation, cela signifie g\u00e9n\u00e9ralement :<\/p>\n<ul>\n<li><strong>Sorties de simulation brutes<\/strong> (Tableau de champ, fichiers maill\u00e9s, s\u00e9ries temporelles) d\u00e9pos\u00e9s \u00e0 c\u00f4t\u00e9 du code<\/li>\n<li><strong>R\u00e9sultats interm\u00e9diaires<\/strong> pour les simulations de calculs intensifs (voir la recommandation Repro sur les r\u00e9sultats interm\u00e9diaires)<\/li>\n<li><strong>Donn\u00e9es de test synth\u00e9tiques<\/strong> si vos donn\u00e9es r\u00e9elles ne peuvent pas \u00eatre partag\u00e9es publiquement en raison de la confidentialit\u00e9 ou des restrictions l\u00e9gales<\/li>\n<\/ul>\n<p>Les Principes FAIR (Wilkinson et al., 2016) fournissent un cadre pour la gestion des donn\u00e9es\u2014voir <a href=\"https:\/\/www.go-fair.org\/fair-principles\/\" rel=\"nofollow\">Les conseils Go Fair sur le Principes<\/a> pour les orientations officielles sur la recherche, l'accessibilit\u00e9, l'interop\u00e9rabilit\u00e9 et la r\u00e9utilisabilit\u00e9.<\/p>\n<ul>\n<li><strong>Retrouvable&nbsp;:<\/strong> Attribuer des identifiants persistants (DOI) et inclure des m\u00e9tadonn\u00e9es riches<\/li>\n<li><strong>accessible&nbsp;:<\/strong> stocker des donn\u00e9es dans des r\u00e9f\u00e9rentiels avec des protocoles ouverts (ZeNoDo, FigShare, Material Data Facility)<\/li>\n<li><strong>Interop\u00e9rable&nbsp;:<\/strong> Utilisez des formats standard (HDF5, NETCDF, JSON) et des vocabulaires formels<\/li>\n<li><strong>R\u00e9utilisable&nbsp;:<\/strong> Documentation de la provenance, des licences et des donn\u00e9es<\/li>\n<\/ul>\n<p>Pour la science des mat\u00e9riaux et la physique informatique, des plateformes comme le <a href=\"https:\/\/www.materialscloud.org\/\" rel=\"nofollow\">cloud des mat\u00e9riaux<\/a> et le <a href=\"https:\/\/nomad-lab.eu\/nomad-lab\/\" rel=\"nofollow\">r\u00e9f\u00e9rentiel Nomad<\/a> Fournit une infrastructure conforme aux donn\u00e9es de simulation, avec des sch\u00e9mas de m\u00e9tadonn\u00e9es et un acc\u00e8s \u00e0 l'API.<\/p>\n<h3>5. Documentation<\/h3>\n<p>La liste de contr\u00f4le des repro met l'accent sur la documentation, non pas apr\u00e8s coup, mais comme composante structurelle d'un travail reproductible. Un fichier Lisez-moi doit&nbsp;:<\/p>\n<ul>\n<li>Lister chaque fichier dans le r\u00e9f\u00e9rentiel et son objectif<\/li>\n<li>Sp\u00e9cifiez l'ordre d'ex\u00e9cution exact (les scripts produisent quels chiffres ou tableaux)<\/li>\n<li>Fournir des temps d'ex\u00e9cution approximatifs et des exigences mat\u00e9rielles<\/li>\n<li>R\u00e9f\u00e9rencez les chiffres de la figure et du tableau correspondants de la publication<\/li>\n<\/ul>\n<p>Pour les flux de travail de simulation, la documentation signifie \u00e9galement documenter vos m\u00e9thodes num\u00e9riques. Lorsque vous \u00e9crivez un solveur personnalis\u00e9 ou un script Fipy avec fractionnement d'un op\u00e9rateur, <a href=\"https:\/\/matforge.org\/operator-splitting-strang-splitting-and-imex-schemes-for-pde-solvers\/\">Strag Splitting et des sch\u00e9mas IMEX pour les solveurs PDE<\/a>, vous devez documenter&nbsp;:<\/p>\n<ul>\n<li>Le sch\u00e9ma de discr\u00e9tisation<\/li>\n<li>La m\u00e9thode d'int\u00e9gration du temps<\/li>\n<li>Les tol\u00e9rances du solveur<\/li>\n<li>Le crit\u00e8re de convergence<\/li>\n<\/ul>\n<p>Si un autre chercheur ne peut pas comprendre la m\u00e9thode num\u00e9rique derri\u00e8re vos r\u00e9sultats, il ne peut pas \u00e9valuer si les r\u00e9sultats sont valides ou les reproduire sur un solveur diff\u00e9rent.<\/p>\n<h2>La liste de contr\u00f4le Repro en tant qu'outil d'auto-audit<\/h2>\n<p>La Repro Checklist (Hornung et al., 2026), publi\u00e9e dans <em>Royal Society Open Science<\/em> (<a href=\"https:\/\/royalsocietypublishing.org\/rsos\/article\/13\/6\/252489\/482007\/Overcoming-barriers-to-computational\" rel=\"nofollow\">Full Paper<\/a>), a \u00e9t\u00e9 d\u00e9velopp\u00e9e par un consortium international d\u2019\u00e9diteurs de reproductibilit\u00e9 de revues pour fournir un Cadre de recherche reproductible. Bien qu'il s'applique largement \u00e0 toutes les disciplines, plusieurs \u00e9l\u00e9ments sont particuli\u00e8rement pertinents pour les travaux de simulation informatique.<\/p>\n<p>Voici comment utiliser la liste de contr\u00f4le Repro comme auto-audit pr\u00e9alable \u00e0 la soumission&nbsp;:<\/p>\n<h3>A. Structure et lecture<\/h3>\n<p><strong>V\u00e9rifier&nbsp;:<\/strong> Avez-vous un r\u00e9pertoire <code>data\/<\/code>, <code>code\/<\/code> et <code>results\/<\/code> (ou <code>output\/<\/code>&nbsp;? Votre fichier Lisez-moi r\u00e9pertorie-t-il chaque fichier, sp\u00e9cifie-t-il l'ordre d'ex\u00e9cution et fait-il r\u00e9f\u00e9rence aux chiffres correspondants de chaque script&nbsp;?<\/p>\n<p><strong>\u00c9chec commun&nbsp;:<\/strong> Les chercheurs organisent leur code de simulation dans un seul dossier sans structure. Un fichier README est souvent enti\u00e8rement omis. Sans README, un critique n'a aucun moyen de savoir quel script produit quel chiffre, et il peut ex\u00e9cuter les scripts dans le mauvais ordre, produisant des r\u00e9sultats enti\u00e8rement diff\u00e9rents.<\/p>\n<h3>B. Sp\u00e9cification de l'environnement<\/h3>\n<p><strong>Check&nbsp;:<\/strong> Votre <code>environment.yml<\/code> ou <code>requirements.txt<\/code> est-il inclus dans l'archive&nbsp;? Les versions Python et Package sont-elles explicitement sp\u00e9cifi\u00e9es&nbsp;?<\/p>\n<p><strong>\u00c9chec commun&nbsp;:<\/strong>&nbsp;La raison la plus courante pour laquelle les ordinateurs portables \u00e9chouent sont des d\u00e9pendances manquantes ou en conflit. Samuel &amp; Mietchen a constat\u00e9 que 34,32&nbsp;% des ordinateurs portables ont \u00e9chou\u00e9 \u00e0 l'\u00e9tape d'installation des d\u00e9pendances, m\u00eame si aucun des fichiers n'a \u00e9t\u00e9 malform\u00e9. La cause principale est souvent des versions de package non sp\u00e9cifi\u00e9es ou obsol\u00e8tes.<\/p>\n<h3>C. Disponibilit\u00e9 des donn\u00e9es<\/h3>\n<p><strong>V\u00e9rifier&nbsp;:<\/strong> Un examinateur peut-il ex\u00e9cuter votre code \u00e0 partir de z\u00e9ro en utilisant les donn\u00e9es fournies&nbsp;? Si vous ne pouvez pas partager de donn\u00e9es r\u00e9elles, avez-vous inclus des donn\u00e9es synth\u00e9tiques qui imite la structure de calcul&nbsp;?<\/p>\n<p><strong>\u00c9chec commun&nbsp;:<\/strong> Lorsque les donn\u00e9es r\u00e9elles ne peuvent pas \u00eatre partag\u00e9es (en raison de contraintes juridiques, \u00e9thiques ou institutionnelles), le code doit toujours \u00eatre ex\u00e9cutable avec des donn\u00e9es synth\u00e9tiques. La liste de contr\u00f4le Repro recommande de g\u00e9n\u00e9rer des donn\u00e9es synth\u00e9tiques \u00e0 l'aide de packages tels que <code>synthpop<\/code> ou <code>simdata<\/code> dans R, ou <code>numpy.random<\/code> en Python.<\/p>\n<h3>D. Ex\u00e9cution d\u00e9terministe<\/h3>\n<p><strong>V\u00e9rifier&nbsp;:<\/strong> Les graines de g\u00e9n\u00e9rateurs de nombres al\u00e9atoires sont-elles explicitement d\u00e9finies&nbsp;? Pour les simulations parall\u00e8les, des flux de nombres al\u00e9atoires reproductibles sont-ils utilis\u00e9s&nbsp;?<\/p>\n<p><strong>\u00c9chec commun&nbsp;:<\/strong> C'est l'une des causes les plus courantes et les plus subtiles d'irr\u00e9productibilit\u00e9. Une simulation qui utilise <code>numpy.random.randn()<\/code> sans \u00e9tablir une graine produira des r\u00e9sultats diff\u00e9rents \u00e0 chaque ex\u00e9cution, et m\u00eame avec une graine, les travailleurs parall\u00e8les peuvent chacun g\u00e9n\u00e9rer des flux al\u00e9atoires qui se chevauchent. La liste de contr\u00f4le Repro recommande d'utiliser la g\u00e9n\u00e9ration bas\u00e9e sur <code>SeedSequence<\/code> de Numpy pour des flux al\u00e9atoires d\u00e9terministes et s\u00fbrs.<\/p>\n<pre><code class=\"language-python\">from numpy.random import default_rng\nrng = default_rng(42)  # Fixed seed\n<\/code><\/pre>\n<p>Pour les simulations parall\u00e8les, utilisez <code>numpy.random.SeedSequence<\/code> pour g\u00e9n\u00e9rer des flux ind\u00e9pendants et reproductibles&nbsp;:<\/p>\n<pre><code class=\"language-python\">from numpy.random import SeedSequence\nseq = SeedSequence(42)\nchildren = seq.spawn(n_children)  # Deterministic per-child seeds\n<\/code><\/pre>\n<h3>E. R\u00e9sultats interm\u00e9diaires<\/h3>\n<p><strong>V\u00e9rifier&nbsp;:<\/strong> pour les simulations de calculs intensifs (par exemple, les balayages de param\u00e8tres, les \u00e9tudes de Monte Carlo), les r\u00e9sultats interm\u00e9diaires sont-ils enregistr\u00e9s afin que les examinateurs puissent reproduire des chiffres sp\u00e9cifiques sans relancer l'analyse compl\u00e8te&nbsp;?<\/p>\n<p><strong>\u00c9chec courant&nbsp;:<\/strong> Lorsqu'une simulation prend des heures ou des jours, les examinateurs ne peuvent pas le r\u00e9ex\u00e9cuter \u00e0 partir de z\u00e9ro. La liste de contr\u00f4le Repro recommande d'enregistrer les r\u00e9sultats interm\u00e9diaires (sortie brute avant la g\u00e9n\u00e9ration finale de la figure) afin que les examinateurs puissent rapidement v\u00e9rifier des sorties sp\u00e9cifiques. Ceci est particuli\u00e8rement important pour les \u00e9tudes de simulation avec des r\u00e9plications parall\u00e8les.<\/p>\n<h2>Flux de travail \u00e9tape par \u00e9tape, de la conception de la simulation \u00e0 la soumission<\/h2>\n<p>Cette section fournit un flux de travail concret qui int\u00e8gre les cinq piliers et la liste de contr\u00f4le Repro dans un pipeline de production r\u00e9p\u00e9table.<\/p>\n<h3>Phase 1 : conception de la simulation et organisation du code<\/h3>\n<ol>\n<li><strong>Cr\u00e9er la structure du projet&nbsp;:<\/strong><\/li>\n<\/ol>\n<pre><code>project\/\n\u251c\u2500\u2500 README.md\n\u251c\u2500\u2500 environment.yml\n\u251c\u2500\u2500 data\/\n\u2502   \u251c\u2500\u2500 input\/         # Simulation inputs, initial conditions\n\u2502   \u251c\u2500\u2500 output\/        # Raw simulation outputs\n\u2502   \u2514\u2500\u2500 synthetic\/     # Synthetic test data (if real data is restricted)\n\u251c\u2500\u2500 code\/\n\u2502   \u251c\u2500\u2500 mesh.py        # Mesh configuration\n\u2502   \u251c\u2500\u2500 solve.py       # Main simulation script\n\u2502   \u251c\u2500\u2500 postprocess.py # Figure generation\n\u2502   \u2514\u2500\u2500 test\/          # Unit tests and convergence checks\n\u2514\u2500\u2500 results\/\n    \u251c\u2500\u2500 figures\/\n    \u2514\u2500\u2500 tables\/\n<\/code><\/pre>\n<ol start=\"2\">\n<li><strong>Contr\u00f4le des versions&nbsp;:<\/strong> Initialisez le r\u00e9f\u00e9rentiel et validez la structure.<\/li>\n<\/ol>\n<pre><code class=\"language-bash\">git init\ngit add README.md environment.yml\ngit commit -m \"Initial project structure\"\n<\/code><\/pre>\n<h3>Phase 2 : Ex\u00e9cution et documentation de la simulation<\/h3>\n<ol start=\"3\">\n<li><strong>\u00c9crivez la simulation dans un format alphab\u00e9tis\u00e9.<\/strong> Utilisez des ordinateurs portables ou des fichiers de script Jupyter avec des commentaires \u00e9tendus. Documentez chaque m\u00e9thode num\u00e9rique, chaque choix de solveur, chaque condition aux limites.<\/li>\n<li><strong>D\u00e9finir les graines d\u00e9terministes.<\/strong> Incluez <code>np.random.seed(42)<\/code> (ou une configuration <code>SeedSequence<\/code> plus sophistiqu\u00e9e pour les courses parall\u00e8les) en haut de chaque script.<\/li>\n<li><strong>Capturez l'environnement.<\/strong> RUN <code>session_info.show()<\/code> ou <code>conda env export<\/code> pendant une ex\u00e9cution r\u00e9ussie et incluez la sortie dans le README.<\/li>\n<li><strong>Enregistrez les r\u00e9sultats interm\u00e9diaires.<\/strong> Si votre simulation est gourmande en calculs, enregistrez les sorties brutes aux points de contr\u00f4le afin que les examinateurs puissent v\u00e9rifier des chiffres sp\u00e9cifiques sans tout relancer.<\/li>\n<\/ol>\n<h3>Phase 3 : Validation et v\u00e9rification<\/h3>\n<ol start=\"7\">\n<li><strong>Ex\u00e9cutez des \u00e9tudes de convergence.<\/strong> V\u00e9rifiez que vos r\u00e9sultats convergent comme pr\u00e9vu lorsque vous affinez le maillage. Cela fait partie de la v\u00e9rification - v\u00e9rifier que la solution num\u00e9rique aborde la solution exacte \u00e0 mesure que les param\u00e8tres de discr\u00e9tisation diminuent. Pour un cadre pratique, consultez notre guide sur <a href=\"\/validation-and-verification-for-pde-simulations-practical-framework\/\">validation et v\u00e9rification des simulations PDE<\/a>.<\/li>\n<li><strong>\u00c9crire les tests unitaires.<\/strong> Testez les fonctions individuelles, les conditions aux limites et les solveurs. Si vous utilisez FIPY, cela peut inclure le test de la bonne initialisation correcte des valeurs <code>CellVariable<\/code> ou de <code>DiffusionTerm<\/code>. Consultez notre article sur <a href=\"https:\/\/matforge.org\/python-testing-patterns-for-scientific-code-beyond-pytest-basics\/\">Mod\u00e8les de test pour le code scientifique<\/a> pour plus de d\u00e9tails.<\/li>\n<\/ol>\n<h3>Phase 4 : archivage et soumission<\/h3>\n<ol start=\"9\">\n<li><strong>Archive sur Zenodo.<\/strong> Poussez le dernier engagement sur GitHub et liez-le \u00e0 Zenodo pour l'affectation DOI.<\/li>\n<li><strong>Ex\u00e9cuter la liste de contr\u00f4le REPRO Audit&nbsp;:<\/strong> <ul> <li>Fichier README avec ordre d'ex\u00e9cution&nbsp;?<\/li> <li>Sp\u00e9cification de l'environnement inclus&nbsp;?<\/li> <li>Donn\u00e9es disponibles (r\u00e9elles ou synth\u00e9tiques)&nbsp;?<\/li> <li>Semences d\u00e9terministes D\u00e9finir&nbsp;?<\/li> <li>R\u00e9sultats interm\u00e9diaires enregistr\u00e9s&nbsp;?<\/li> <\/ul><\/li>\n<li><strong>Soumettez-le avec le code et les donn\u00e9es DOI<\/strong> dans la d\u00e9claration de disponibilit\u00e9 des donn\u00e9es de votre manuscrit. De nombreuses revues l'exigent d\u00e9sormais lors de la soumission ou de la r\u00e9vision.<\/li>\n<\/ol>\n<h2>Des pi\u00e8ges courants et comment les \u00e9viter<\/h2>\n<h3>Pitfall 1 : chemins absolus<\/h3>\n<p>L'utilisation de chemins absolus comme <code>\/home\/user\/simulations\/output\/data.csv<\/code> dans votre code casse la reproductibilit\u00e9 sur n'importe quelle machine autre que celle o\u00f9 vous avez d\u00e9velopp\u00e9 le projet.<\/p>\n<p><strong>FIX&nbsp;:<\/strong> Utilisez les chemins relatifs de la racine du projet. Si vos scripts attendent des donn\u00e9es dans un r\u00e9pertoire <code>data\/<\/code>, r\u00e9f\u00e9rencez <code>data\/input.csv<\/code> quel que soit l'endroit o\u00f9 le projet est clon\u00e9.<\/p>\n<h3>Pitfall 2 : D\u00e9pendances non programm\u00e9es<\/h3>\n<p>Un ordinateur portable importe <code>scipy.stats<\/code> mais ne d\u00e9clare pas que <code>scipy<\/code> est requis. Lorsqu'un autre chercheur ex\u00e9cute le bloc-notes, il peut avoir une version incompatible <code>scipy<\/code> ou la manquer enti\u00e8rement.<\/p>\n<p><strong>FIX&nbsp;:<\/strong> Incluez toujours un <code>requirements.txt<\/code> ou <code>environment.yml<\/code> et v\u00e9rifiez-le en supprimant l'environnement local et en r\u00e9installant \u00e0 partir de z\u00e9ro avant l'archivage.<\/p>\n<h3>Pitfall&nbsp;3&nbsp;: Lisez-moi manquant<\/h3>\n<p>Sans Readme, les critiques ne peuvent pas savoir&nbsp;:<\/p>\n<ul>\n<li>Quel script produit quelle figure<\/li>\n<li>Quels scripts d'ordre doivent \u00eatre ex\u00e9cut\u00e9s<\/li>\n<li>\u00c0 quelle ex\u00e9cution approximative s'attendre<\/li>\n<li>Quelle version ou version de package Python a \u00e9t\u00e9 utilis\u00e9e<\/li>\n<\/ul>\n<p><strong>Correction&nbsp;:<\/strong> \u00c9crivez un README qui r\u00e9pertorie chaque fichier, chaque \u00e9tape d'ex\u00e9cution et chaque estimation d'ex\u00e9cution. Faites r\u00e9f\u00e9rence aux chiffres de votre publication.<\/p>\n<h3>Pitfall 4 : D\u00e9rive de la version Python<\/h3>\n<p>Python 3,6 \u00e9tait le coucher du soleil en 2021&nbsp;; Python 3.7 \u00e9tait le coucher du soleil en juin 2023. De nombreux cahiers dans le Samuel &amp; Mietchen Corpus a utilis\u00e9 des versions Python obsol\u00e8tes, et le d\u00e9calage entre la version lors de la publication et la version disponible lorsque les critiques tentent de reproduire provoque de subtiles incompatibilit\u00e9s.<\/p>\n<p><strong>Correction&nbsp;:<\/strong> Utilisez une version Python r\u00e9cente et activement prise en charge et sp\u00e9cifiez-la dans votre fichier d'environnement. La liste de contr\u00f4le Repro recommande de documenter la version Python dans le README.<\/p>\n<h3>Pi\u00e8ge 5 : nombres al\u00e9atoires non d\u00e9terministes<\/h3>\n<p>Une simulation qui g\u00e9n\u00e8re des conditions initiales al\u00e9atoires sans fixer la graine produit \u00e0 chaque fois des sorties diff\u00e9rentes. M\u00eame avec une graine, les travailleurs parall\u00e8les peuvent g\u00e9n\u00e9rer des flux qui se chevauchent.<\/p>\n<p><strong>FIX&nbsp;:<\/strong> D\u00e9finissez une graine fixe pour toutes les op\u00e9rations al\u00e9atoires. Utilisez <code>numpy.random.SeedSequence<\/code> pour la reproductibilit\u00e9 de Parallel-Safe. La liste de contr\u00f4le Repro recommande explicitement ce mod\u00e8le.<\/p>\n<h2>Quand choisir les conteneurs par rapport aux environnements l\u00e9gers<\/h2>\n<p>Pour la plupart des flux de travail de simulation, la gestion de l'environnement l\u00e9ger (CONDA, PIP, UV) est suffisante. Vous obtenez la reproductibilit\u00e9 en sp\u00e9cifiant des versions exactes du package, et les r\u00e9viseurs peuvent installer l'environnement avec une seule commande.<\/p>\n<p><strong>Choisir conda\/UV\/PIP quand&nbsp;:<\/strong><\/p>\n<ul>\n<li>Vous travaillez avec des solveurs bas\u00e9s sur Python (FIPY, OpenPDE, FENICS)<\/li>\n<li>Vous avez le contr\u00f4le de l'environnement de calcul de votre c\u00f4t\u00e9<\/li>\n<li>Vous voulez un flux de travail l\u00e9ger et portable<\/li>\n<\/ul>\n<p><strong>Choisissez Docker quand&nbsp;:<\/strong><\/p>\n<ul>\n<li>Vous devez partager un flux de travail avec des chercheurs qui ne peuvent pas installer Conda ou des biblioth\u00e8ques sp\u00e9cifiques au niveau du syst\u00e8me.<\/li>\n<li>Votre flux de travail d\u00e9pend des solveurs C++\/Fortran qui doivent \u00eatre compil\u00e9s<\/li>\n<li>Vous soumettez \u00e0 un journal qui n\u00e9cessite une reproductibilit\u00e9 en conteneur (par exemple, <em>Computo<\/em>)<\/li>\n<\/ul>\n<p>Pour la grande majorit\u00e9 des documents de science et de physique des mat\u00e9riaux informatiques, le Conda ou les UV est le meilleur choix - il est plus simple, plus rapide et suffisant pour la reproductibilit\u00e9 dont les examinateurs et les lecteurs ont besoin.<\/p>\n<h2>Une note pratique sur les attentes des revues<\/h2>\n<p>La liste de contr\u00f4le de repro documente l'h\u00e9t\u00e9rog\u00e9n\u00e9it\u00e9 des politiques de reproductibilit\u00e9 des journaux. Certaines revues (comme <em>journal biom\u00e9trique<\/em> ou <em>journal de l'American Statistical Association<\/em>) n\u00e9cessitent des contr\u00f4les de reproductibilit\u00e9 actives par des \u00e9diteurs d\u00e9di\u00e9s. D'autres (comme <em>le BMJ<\/em>) n\u00e9cessitent la soumission de code mais n'effectuent pas de v\u00e9rifications d'ex\u00e9cution ind\u00e9pendantes.<\/p>\n<p>Pour les travaux de simulation informatique, les attentes minimales dans la plupart des revues sont les suivantes&nbsp;:<\/p>\n<ul>\n<li><strong>Disponibilit\u00e9 du code&nbsp;:<\/strong> Le code d'analyse doit \u00eatre fourni sous la forme d'un fichier suppl\u00e9mentaire ou d'un r\u00e9f\u00e9rentiel ouvert (GitHub, Zenodo)<\/li>\n<li><strong>Disponibilit\u00e9 des donn\u00e9es&nbsp;:<\/strong> Les donn\u00e9es utilis\u00e9es pour l'analyse doivent \u00eatre accessibles au public ou justifi\u00e9es<\/li>\n<li><strong>Sp\u00e9cification de l'environnement&nbsp;:<\/strong> Les versions et les packages de logiciels doivent \u00eatre document\u00e9s<\/li>\n<\/ul>\n<p>C'est le sol, pas le plafond. En suivant les cinq piliers et la liste de contr\u00f4le des repro positions votre travail au-dessus du sol et signale que vous prenez au s\u00e9rieux la reproductibilit\u00e9.<\/p>\n<h2>\u00c9tapes suivantes pour votre flux de travail de simulation<\/h2>\n<p>Si vous d\u00e9butez dans les pratiques de simulation reproductibles, commencez par les trois changements les plus importants&nbsp;:<\/p>\n<ol>\n<li><strong>Ajouter un fichier Lisez-moi<\/strong> \u00e0 votre projet avec des descriptions de fichiers et un ordre d'ex\u00e9cution<\/li>\n<li><strong>Exportez votre environnement<\/strong> (<code>conda env export<\/code> ou <code>uv export<\/code>) et incluez-le dans vos archives<\/li>\n<li><strong>D\u00e9finir des graines al\u00e9atoires<\/strong> dans chaque script de simulation et utiliser <code>SeedSequence<\/code> pour les ex\u00e9cutions parall\u00e8les<\/li>\n<\/ol>\n<p>Ces trois changements \u00e0 eux seuls \u00e9limineront 80% des \u00e9checs de reproductibilit\u00e9 identifi\u00e9s par Samuel &amp; Mietchen.<\/p>\n<p>Si vous avez besoin d'aide pour concevoir un workflow de simulation reproductible, de la documentation des ordinateurs portables \u00e0 l'archivage de code et \u00e0 la soumission d'un journal, notre \u00e9quipe peut fournir des consultations sur la conception du flux de travail, la sp\u00e9cification de l'environnement et l'archivage des donn\u00e9es conforme \u00e0 la norme. Contactez-nous pour discuter de votre projet de simulation sp\u00e9cifique. Construire une communaut\u00e9 de logiciels de recherche durable (<a href=\"\/building-sustainable-research-software-communities\/\">comment nous abordons le d\u00e9veloppement communautaire<\/a>) fait partie de ce processus&nbsp;: la reproductibilit\u00e9 s'am\u00e9liore lorsque toute l'\u00e9quipe partage des normes communes.<\/p>\n<h2>Conclusion<\/h2>\n<p>Les pratiques de publication reproductibles pour les r\u00e9sultats de simulation ne sont pas un compl\u00e9ment facultatif, elles sont une exigence pour une communication scientifique cr\u00e9dible. Les cinq piliers (programmation alphab\u00e9tis\u00e9e, contr\u00f4le des versions, gestion de l'environnement, partage de donn\u00e9es, documentation) et la liste de contr\u00f4le Repro fournissent une base structur\u00e9e et exploitable pour la reproductibilit\u00e9 qui s'applique \u00e0 toutes les disciplines.<\/p>\n<p>L'\u00e9chelle de l'\u00e9cart de reproductibilit\u00e9 - 12,4&nbsp;% de reproduction identique r\u00e9ussie dans le Samuel&nbsp;&amp;&nbsp;; L'\u00e9tude de Mietchen est un appel \u00e0 l'action. Chaque flux de travail de simulation qui comprend un fichier de lecture, un fichier d'environnement et des graines d\u00e9terministes comble une partie mesurable de cet \u00e9cart. L'investissement est modeste : heures, pas mois. Le retour est la possibilit\u00e9 pour tout lecteur, examinateur ou futur chercheur de v\u00e9rifier vos r\u00e9sultats de mani\u00e8re ind\u00e9pendante.<\/p>\n<p>Pour le chercheur informatique, la reproductibilit\u00e9 n'est pas simplement une vertu m\u00e9thodologique, c'est le fondement de la cr\u00e9dibilit\u00e9 scientifique. Les cinq piliers vous donnent un cadre. La liste de contr\u00f4le Repro vous donne une liste de contr\u00f4le. Les outils (git, conda, zenodo) sont disponibles. Ce qui reste, c'est la d\u00e9cision de les utiliser.<\/p>\n<h2 id=\"faq\">FAQ<\/h2>\n<h3>Quel est le cadre des cinq piliers de la reproductibilit\u00e9 ?<\/h3>\n<p>Les cinq piliers propos\u00e9s par Ziemann et al. (2023), sont la programmation alphab\u00e9tis\u00e9e, le contr\u00f4le de version du code, le contr\u00f4le de l'environnement de calcul, le partage de donn\u00e9es persistants et la documentation. Ils forment un cadre structur\u00e9 pour documenter et partager des flux de travail de calcul reproductibles.<\/p>\n<h3>Quelle est la liste de contr\u00f4le des repro&nbsp;?<\/h3>\n<p>La liste de contr\u00f4le de Repro, publi\u00e9e par Hornung et al. (2026), est un outil concis et multidisciplinaire pour cr\u00e9er des analyses reproductibles. Il couvre la structure du code et des donn\u00e9es, les exigences en mati\u00e8re de lecture, la sp\u00e9cification de l'environnement, la disponibilit\u00e9 des donn\u00e9es, la g\u00e9n\u00e9ration de nombres al\u00e9atoires d\u00e9terministes et les r\u00e9sultats interm\u00e9diaires.<\/p>\n<h3>Pourquoi les ordinateurs portables Jupyter \u00e9chouent-ils si souvent ?<\/h3>\n<p>Samuel &amp; Mietchen (2024) ont constat\u00e9 que 87,6&nbsp;% des ordinateurs portables bas\u00e9s sur Python avaient entra\u00een\u00e9 des exceptions lors de la rediffusion automatis\u00e9e. Les causes principales sont des d\u00e9pendances manquantes ou contradictoires (<code>ModuleNotFoundError<\/code> et <code>ImportError<\/code>), des chemins de fichiers non r\u00e9solus (<code>FileNotFoundError<\/code>) et une g\u00e9n\u00e9ration de nombres al\u00e9atoires non d\u00e9terministes.<\/p>\n<h3>Comment choisir entre Conda et Docker ?<\/h3>\n<p>Utilisez Conda (ou UV) pour la plupart des flux de travail de simulation bas\u00e9s sur Python. Utilisez Docker lorsque vous avez besoin d'une isolation compl\u00e8te entre les syst\u00e8mes d'exploitation ou lorsque votre flux de travail d\u00e9pend des solveurs C++\/Fortran compil\u00e9s.<\/p>\n<h3>Comment rendre mes r\u00e9sultats de simulation reproductibles sans partager de donn\u00e9es brutes ?<\/h3>\n<p>G\u00e9n\u00e9rez des donn\u00e9es synth\u00e9tiques qui imite la structure de calcul de vos donn\u00e9es r\u00e9elles. La liste de contr\u00f4le Repro recommande d'utiliser des packages tels que <code>synthpop<\/code> ou <code>simdata<\/code> dans R, ou <code>numpy.random<\/code> en Python, pour cr\u00e9er des donn\u00e9es de test synth\u00e9tiques qui permettent une v\u00e9rification ind\u00e9pendante de votre code d'analyse.<\/p>\n"},"excerpt":{"rendered":"<p><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\"> 14<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>Apprenez \u00e0 rendre les r\u00e9sultats de la simulation reproductibles \u00e0 l&rsquo;aide des ordinateurs portables Jupyter, du contr\u00f4le des versions, de la gestion de l&rsquo;environnement, de l&rsquo;archivage Zenodo et des principes \u00e9quitables. Un guide pratique pour les chercheurs en informatique.<\/p>\n","protected":false,"raw":"Apprenez \u00e0 rendre les r\u00e9sultats de la simulation reproductibles \u00e0 l'aide des ordinateurs portables Jupyter, du contr\u00f4le des versions, de la gestion de l'environnement, de l'archivage Zenodo et des principes \u00e9quitables. Un guide pratique pour les chercheurs en informatique."},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_locale":"fr_FR","_original_post":"https:\/\/matforge.org\/?p=523","iawp_total_views":2,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1284","post","type-post","status-publish","format-standard","hentry","category-simulation-modeling-projects","fr-FR"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Pratiques de publication reproductibles pour les r\u00e9sultats de simulation : le cadre des cinq piliers - matforge.org<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/matforge.org\/fr\/reproducible-publication-practices-simulation-results\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Pratiques de publication reproductibles pour les r\u00e9sultats de simulation : le cadre des cinq piliers - matforge.org\" \/>\n<meta property=\"og:description\" content=\"Reading Time:  14 minutesApprenez \u00e0 rendre les r\u00e9sultats de la simulation reproductibles \u00e0 l&#039;aide des ordinateurs portables Jupyter, du contr\u00f4le des versions, de la gestion de l&#039;environnement, de l&#039;archivage Zenodo et des principes \u00e9quitables. Un guide pratique pour les chercheurs en informatique.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/matforge.org\/fr\/reproducible-publication-practices-simulation-results\/\" \/>\n<meta property=\"og:site_name\" content=\"matforge.org\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-21T14:31:26+00:00\" \/>\n<meta name=\"author\" content=\"Priya Nair\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Priya Nair\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"24 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/reproducible-publication-practices-simulation-results\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/reproducible-publication-practices-simulation-results\\\/\"},\"author\":{\"name\":\"Priya Nair\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/2effd7bc155a5e6357f31dac970c5795\"},\"headline\":\"Pratiques de publication reproductibles pour les r\u00e9sultats de simulation : le cadre des cinq piliers\",\"datePublished\":\"2026-08-21T14:31:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/reproducible-publication-practices-simulation-results\\\/\"},\"wordCount\":4577,\"commentCount\":0,\"articleSection\":[\"Simulation &amp; Projets de mod\u00e9lisation\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/matforge.org\\\/fr\\\/reproducible-publication-practices-simulation-results\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/reproducible-publication-practices-simulation-results\\\/\",\"url\":\"https:\\\/\\\/matforge.org\\\/fr\\\/reproducible-publication-practices-simulation-results\\\/\",\"name\":\"Pratiques de publication reproductibles pour les r\u00e9sultats de simulation : le cadre des cinq piliers - matforge.org\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#website\"},\"datePublished\":\"2026-08-21T14:31:26+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/2effd7bc155a5e6357f31dac970c5795\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/reproducible-publication-practices-simulation-results\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/matforge.org\\\/fr\\\/reproducible-publication-practices-simulation-results\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/reproducible-publication-practices-simulation-results\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/matforge.org\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Pratiques de publication reproductibles pour les r\u00e9sultats de simulation : le cadre des cinq piliers\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#website\",\"url\":\"https:\\\/\\\/matforge.org\\\/\",\"name\":\"matforge.org\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/matforge.org\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/2effd7bc155a5e6357f31dac970c5795\",\"name\":\"Priya Nair\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f11e168d4cd2f1eff83cbb851d6cff42d81d88bb59d8831ee77468aa4a5eea88?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f11e168d4cd2f1eff83cbb851d6cff42d81d88bb59d8831ee77468aa4a5eea88?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f11e168d4cd2f1eff83cbb851d6cff42d81d88bb59d8831ee77468aa4a5eea88?s=96&d=mm&r=g\",\"caption\":\"Priya Nair\"},\"sameAs\":[\"http:\\\/\\\/matforge.org\"],\"url\":\"https:\\\/\\\/matforge.org\\\/author\\\/priya-nair\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Pratiques de publication reproductibles pour les r\u00e9sultats de simulation : le cadre des cinq piliers - matforge.org","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/matforge.org\/fr\/reproducible-publication-practices-simulation-results\/","og_locale":"fr_FR","og_type":"article","og_title":"Pratiques de publication reproductibles pour les r\u00e9sultats de simulation : le cadre des cinq piliers - matforge.org","og_description":"Reading Time:  14 minutesApprenez \u00e0 rendre les r\u00e9sultats de la simulation reproductibles \u00e0 l'aide des ordinateurs portables Jupyter, du contr\u00f4le des versions, de la gestion de l'environnement, de l'archivage Zenodo et des principes \u00e9quitables. Un guide pratique pour les chercheurs en informatique.","og_url":"https:\/\/matforge.org\/fr\/reproducible-publication-practices-simulation-results\/","og_site_name":"matforge.org","article_published_time":"2026-08-21T14:31:26+00:00","author":"Priya Nair","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"Priya Nair","Dur\u00e9e de lecture estim\u00e9e":"24 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/matforge.org\/fr\/reproducible-publication-practices-simulation-results\/#article","isPartOf":{"@id":"https:\/\/matforge.org\/fr\/reproducible-publication-practices-simulation-results\/"},"author":{"name":"Priya Nair","@id":"https:\/\/matforge.org\/#\/schema\/person\/2effd7bc155a5e6357f31dac970c5795"},"headline":"Pratiques de publication reproductibles pour les r\u00e9sultats de simulation : le cadre des cinq piliers","datePublished":"2026-08-21T14:31:26+00:00","mainEntityOfPage":{"@id":"https:\/\/matforge.org\/fr\/reproducible-publication-practices-simulation-results\/"},"wordCount":4577,"commentCount":0,"articleSection":["Simulation &amp; Projets de mod\u00e9lisation"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/matforge.org\/fr\/reproducible-publication-practices-simulation-results\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/matforge.org\/fr\/reproducible-publication-practices-simulation-results\/","url":"https:\/\/matforge.org\/fr\/reproducible-publication-practices-simulation-results\/","name":"Pratiques de publication reproductibles pour les r\u00e9sultats de simulation : le cadre des cinq piliers - matforge.org","isPartOf":{"@id":"https:\/\/matforge.org\/#website"},"datePublished":"2026-08-21T14:31:26+00:00","author":{"@id":"https:\/\/matforge.org\/#\/schema\/person\/2effd7bc155a5e6357f31dac970c5795"},"breadcrumb":{"@id":"https:\/\/matforge.org\/fr\/reproducible-publication-practices-simulation-results\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/matforge.org\/fr\/reproducible-publication-practices-simulation-results\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/matforge.org\/fr\/reproducible-publication-practices-simulation-results\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/matforge.org\/"},{"@type":"ListItem","position":2,"name":"Pratiques de publication reproductibles pour les r\u00e9sultats de simulation : le cadre des cinq piliers"}]},{"@type":"WebSite","@id":"https:\/\/matforge.org\/#website","url":"https:\/\/matforge.org\/","name":"matforge.org","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/matforge.org\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/matforge.org\/#\/schema\/person\/2effd7bc155a5e6357f31dac970c5795","name":"Priya Nair","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/f11e168d4cd2f1eff83cbb851d6cff42d81d88bb59d8831ee77468aa4a5eea88?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f11e168d4cd2f1eff83cbb851d6cff42d81d88bb59d8831ee77468aa4a5eea88?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f11e168d4cd2f1eff83cbb851d6cff42d81d88bb59d8831ee77468aa4a5eea88?s=96&d=mm&r=g","caption":"Priya Nair"},"sameAs":["http:\/\/matforge.org"],"url":"https:\/\/matforge.org\/author\/priya-nair\/"}]}},"_links":{"self":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/1284","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/comments?post=1284"}],"version-history":[{"count":1,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/1284\/revisions"}],"predecessor-version":[{"id":1406,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/1284\/revisions\/1406"}],"wp:attachment":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/media?parent=1284"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/categories?post=1284"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/tags?post=1284"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}