{"id":1243,"date":"2026-08-21T14:28:34","date_gmt":"2026-08-21T14:28:34","guid":{"rendered":"https:\/\/matforge.org\/?p=1243","raw":"https:\/\/matforge.org\/?p=1243"},"modified":"2026-08-21T14:28:34","modified_gmt":"2026-08-21T14:28:34","slug":"reproducibility-workflows-beyond-containers-data-versioning-and-provenance-tracking","status":"publish","type":"post","link":"https:\/\/matforge.org\/fr\/reproducibility-workflows-beyond-containers-data-versioning-and-provenance-tracking\/","title":{"rendered":"Flux de travail de reproductibilit\u00e9 au-del\u00e0 des conteneurs\u00a0: versionnement des donn\u00e9es et suivi de la provenance","raw":"Flux de travail de reproductibilit\u00e9 au-del\u00e0 des conteneurs\u00a0: versionnement des donn\u00e9es et suivi de la provenance"},"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\"> 10<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span><h2>Points \u00e0 retenir cl\u00e9s<\/h2>\n<ul>\n<li>Les conteneurs r\u00e9solvent un probl\u00e8me. Ils gelent l&rsquo;environnement logiciel, mais ils ne suivent pas ce qui a chang\u00e9 dans vos donn\u00e9es ni l&rsquo;\u00e9volution de votre analyse.<\/li>\n<li>Le versionnement des donn\u00e9es ajoute une couche manquante. Des outils tels que DVC et DataLad apportent un contr\u00f4le de version de style Git aux jeux de donn\u00e9es, ce qui facilite la reproduction des r\u00e9sultats avec des entr\u00e9es exactes, des fichiers de param\u00e8tres et des sorties s\u00e9lectionn\u00e9es.<\/li>\n<li>La provenance est la piste d&rsquo;audit. Il enregistre toutes les transformations qui sont arriv\u00e9es \u00e0 vos donn\u00e9es, des fichiers bruts aux chiffres finaux.<\/li>\n<li>Les conteneurs, la gestion des versions de donn\u00e9es et le suivi de provenance sont compl\u00e9mentaires. Ensemble, ils couvrent le code, l&rsquo;environnement, les donn\u00e9es et la lign\u00e9e.<\/li>\n<\/ul>\n<h2>Ce qu&rsquo;il faut savoir d&rsquo;abord<\/h2>\n<p>Des conteneurs comme Docker et Singularity sont devenus une partie quasi obligatoire de la recherche reproductible. Ils r\u00e9solvent un probl\u00e8me r\u00e9el&nbsp;: si vous envoyez une image Docker \u00e0 quelqu&rsquo;un, cette personne devrait pouvoir ex\u00e9cuter le code et obtenir les m\u00eames r\u00e9sultats sur une autre machine.<\/p>\n<p>C&rsquo;est pourquoi les revues et les r\u00e9viseurs demandent de plus en plus des images de conteneurs \u00e0 c\u00f4t\u00e9 des articles. Mais les conteneurs laissent deux lacunes critiques ouvertes.<\/p>\n<p>Premi\u00e8rement, les conteneurs ne suivent pas les modifications apport\u00e9es \u00e0 vos donn\u00e9es. Un ensemble de donn\u00e9es \u00e9volue au fil du temps au fur et \u00e0 mesure que vous nettoyez, filtrez et retraitez. Lorsque vous reproduisez un r\u00e9sultat six mois plus tard, vous devez savoir quelle version des donn\u00e9es produite ce chiffre. Les conteneurs n&rsquo;enregistrent pas cela par d\u00e9faut.<\/p>\n<p>Deuxi\u00e8mement, les conteneurs ne capturent pas la lign\u00e9e. Si un script d&rsquo;analyse est erron\u00e9, un param\u00e8tre a \u00e9t\u00e9 modifi\u00e9 accidentellement ou une \u00e9tape de pr\u00e9traitement a \u00e9t\u00e9 appliqu\u00e9e de mani\u00e8re incoh\u00e9rente, il se peut qu&rsquo;il n&rsquo;y ait pas d&rsquo;enregistrement automatis\u00e9 de ce qui s&rsquo;est pass\u00e9. Il vous reste \u00e0 compter sur la m\u00e9moire, les notes manuelles ou la chance.<\/p>\n<p>Cet article explique comment les workflows scientifiques modernes r\u00e9solvent ces lacunes gr\u00e2ce \u00e0 la gestion des versions des donn\u00e9es et au suivi de la provenance. Le contr\u00f4le des donn\u00e9es permet de suivre les changements de l&rsquo;ensemble de donn\u00e9es au fil du temps. Le suivi de la provenance enregistre chaque transformation appliqu\u00e9e aux donn\u00e9es.<\/p>\n<h2>Les conteneurs ne suffisent pas<\/h2>\n<p>Avant de discuter de la gestion des donn\u00e9es, il est utile de comprendre ce que font et ne font pas les conteneurs.<\/p>\n<p>Un conteneur capture :<\/p>\n<ul>\n<li>Le syst\u00e8me d&rsquo;exploitation, g\u00e9n\u00e9ralement une distribution Linux.<\/li>\n<li>Packages install\u00e9s et leurs versions.<\/li>\n<li>Vos fichiers de code et de configuration.<\/li>\n<li>La commande utilis\u00e9e pour ex\u00e9cuter l&rsquo;analyse.<\/li>\n<\/ul>\n<p>Un conteneur ne capture pas automatiquement&nbsp;:<\/p>\n<ul>\n<li>Les fichiers exacts utilis\u00e9s comme entr\u00e9es, \u00e0 moins qu&rsquo;ils ne soient int\u00e9gr\u00e9s \u00e0 l&rsquo;image.<\/li>\n<li>Param\u00e8tres d&rsquo;ex\u00e9cution, \u00e0 moins qu&rsquo;ils ne soient explicitement enregistr\u00e9s.<\/li>\n<li>Sorties interm\u00e9diaires g\u00e9n\u00e9r\u00e9es lors d&rsquo;un pipeline.<\/li>\n<li>L&rsquo;ordre et la logique des transformations appliqu\u00e9es aux donn\u00e9es.<\/li>\n<\/ul>\n<p>La cons\u00e9quence pratique est simple. Vous pouvez ex\u00e9cuter un conteneur sur une autre machine et obtenir la m\u00eame sortie uniquement si les entr\u00e9es et le contexte d&rsquo;ex\u00e9cution sont \u00e9galement contr\u00f4l\u00e9s. Si vous souhaitez reproduire une analyse sp\u00e9cifique d&rsquo;il y a des mois, en particulier une analyse avec plusieurs \u00e9tapes et un ensemble de donn\u00e9es changeant, vous avez besoin de plus qu&rsquo;un conteneur.<\/p>\n<p>Envisagez un sc\u00e9nario commun. Vous entra\u00eenez une simulation de champ de phase sur des images de microstructure exp\u00e9rimentales. Les images sont nettoy\u00e9es pendant le pr\u00e9traitement, puis divis\u00e9es en ensembles de formation et de validation. Six mois plus tard, quelqu&rsquo;un vous demande de reproduire la simulation.<\/p>\n<p>Vous ouvrez le conteneur, ex\u00e9cutez la commande et obtenez le mauvais r\u00e9sultat. La raison peut \u00eatre que l&rsquo;ensemble de donn\u00e9es a \u00e9t\u00e9 r\u00e9organis\u00e9, que de nouveaux \u00e9chantillons ont \u00e9t\u00e9 ajout\u00e9s ou que le point d&rsquo;entr\u00e9e a utilis\u00e9 quel que soit le fichier dans un r\u00e9pertoire. Sans entr\u00e9es versionn\u00e9es et sans piste d&rsquo;audit, le conteneur seul ne peut pas prouver ce qui s&rsquo;est pass\u00e9.<\/p>\n<p>C&rsquo;est l\u00e0 que le versionnement des donn\u00e9es et le suivi de provenance deviennent n\u00e9cessaires.<\/p>\n<h2>Qu&rsquo;est-ce que le versionnage des donn\u00e9es&nbsp;?<\/h2>\n<p>Le versionnement des donn\u00e9es apporte la m\u00eame id\u00e9e qui rend Git utile pour le code dans le monde des ensembles de donn\u00e9es. Au lieu de suivre directement chaque fichier binaire volumineux, il cr\u00e9e des instantan\u00e9s l\u00e9gers ou des pointeurs vers des \u00e9tats sp\u00e9cifiques de donn\u00e9es \u00e0 des moments sp\u00e9cifiques.<\/p>\n<p>L&rsquo;id\u00e9e de base est simple :<\/p>\n<ol>\n<li>Vous modifiez le jeu de donn\u00e9es, comme l&rsquo;ajout de fichiers, la modification ou la r\u00e9organisation de dossiers.<\/li>\n<li>Vous validez un snapshot qui enregistre ce qui a chang\u00e9 et o\u00f9 vivent les donn\u00e9es actuelles.<\/li>\n<li>Plus tard, vous pouvez v\u00e9rifier ce snapshot pour restaurer l&rsquo;\u00e9tat exact des donn\u00e9es qui a produit un r\u00e9sultat sp\u00e9cifique.<\/li>\n<\/ol>\n<p>Les deux principaux outils de l&rsquo;\u00e9cosyst\u00e8me scientifique Python sont DVC et DataLad.<\/p>\n<h3>DVC : contr\u00f4le de version de donn\u00e9es<\/h3>\n<p>DVC est un outil de gestion des donn\u00e9es largement adopt\u00e9 pour les flux de travail bas\u00e9s sur Python. Il fonctionne en g\u00e9n\u00e9rant de petits fichiers de m\u00e9tadonn\u00e9es qui suivent les emplacements de donn\u00e9es et les sommes de contr\u00f4le tandis que les donn\u00e9es r\u00e9elles se trouvent dans le stockage \u00e0 distance, tels que les buckets cloud, les disques locaux ou les r\u00e9seaux partag\u00e9s.<\/p>\n<p>Plusieurs fonctionnalit\u00e9s DVC comptent pour les flux de travail scientifiques :<\/p>\n<ul>\n<li>D\u00e9finition du pipeline <code>dvc.yaml<\/code> Les fichiers vous permettent de d\u00e9crire le pipeline d&rsquo;analyse, y compris les entr\u00e9es, les sorties, les \u00e9tapes de traitement et les d\u00e9pendances.<\/li>\n<li>Suivi des exp\u00e9riences. <code>dvc exp run<\/code> cr\u00e9e des espaces de noms d&rsquo;exp\u00e9rience isol\u00e9s afin que vous puissiez tester les configurations de param\u00e8tres sans encombrer l&rsquo;historique des Git.<\/li>\n<li>Stockage \u00e0 distance. DVC peut transf\u00e9rer des donn\u00e9es sur des t\u00e9l\u00e9commandes configur\u00e9es telles que S3, Google Cloud Storage, Azure, SSH Servers ou des syst\u00e8mes de fichiers partag\u00e9s.<\/li>\n<li>Voyage dans le temps. Vous pouvez extraire un commit git, ex\u00e9cuter <code>dvc pull<\/code> et <code>dvc checkout<\/code> et restaurer l&rsquo;\u00e9tat des donn\u00e9es \u00e0 partir de ce point.<\/li>\n<\/ul>\n<p>Un flux de travail scientifique typique peut ressembler \u00e0 ceci :<\/p>\n<pre><code class=\"language-bash\"># Initialize DVC in your project\ndvc init\n\n# Add your dataset\ndvc add data\/raw_microstructures\/\n\n# Commit only the lightweight metadata\ngit add data\/raw_microstructures.dvc\ngit commit -m \"Initial microstructure dataset\"\n\n# Define a processing pipeline\ndvc run -d data\/raw_microstructures.dvc -o data\/cleaned\/ \n    python src\/preprocess.py\n\n# Run experiments\ndvc exp run --set-param preprocessing.threshold=0.5\n<\/code><\/pre>\n<h3>datalad<\/h3>\n<p>Datalad est con\u00e7u pour les ensembles de donn\u00e9es scientifiques et utilise Git-Annex sous le capot. Il est particuli\u00e8rement utile pour les grands ensembles de donn\u00e9es qui peuvent couvrir de nombreux fichiers, tels que des simulations, des mesures exp\u00e9rimentales, des donn\u00e9es d&rsquo;imagerie ou des collections de recherche institutionnelle.<\/p>\n<p>DataLad offre plusieurs avantages sp\u00e9cifiques \u00e0 des donn\u00e9es scientifiques :<\/p>\n<ul>\n<li>Conception centr\u00e9e sur l&rsquo;ensemble de donn\u00e9es. Datalad traite chaque r\u00e9pertoire comme un jeu de donn\u00e9es avec un historique de versions.<\/li>\n<li>R\u00e9cup\u00e9ration de donn\u00e9es sur demande. Au lieu de tout tirer, DataLad peut r\u00e9cup\u00e9rer des fichiers ou des sous-r\u00e9pertoires sp\u00e9cifiques en cas de besoin.<\/li>\n<li>R\u00e9plication int\u00e9gr\u00e9e. Datalad peut g\u00e9rer les d\u00e9p\u00f4ts de s\u0153urs dans toutes les institutions pour des raisons de redondance et de conformit\u00e9.<\/li>\n<li>Int\u00e9gration HPC. Les extensions peuvent prendre en charge les syst\u00e8mes de planification par lots tels que Slurm et PBS.<\/li>\n<\/ul>\n<p>Un workflow de base de DataLad ressemble \u00e0 ceci :<\/p>\n<pre><code class=\"language-bash\"># Initialize a dataset\ndatalad create -s my-dataset\n\n# Add data using git-annex under the hood\ndatalad add data\/raw_images\/\n\n# Record a provenance-rich commit\ndatalad save -m \"Add raw imaging data, batch 2024-01\"\n\n# Clone to another machine and fetch data on demand\ndatalad clone my-dataset\ndatalad get data\/processed_results\/\n<\/code><\/pre>\n<h3>Quand utiliser lequel<\/h3>\n<p>DVC est souvent mieux pour les \u00e9quipes travaillant dans des environnements de science des donn\u00e9es Python qui n\u00e9cessitent un suivi des pipelines et une gestion des exp\u00e9riences. Il s&rsquo;int\u00e8gre naturellement \u00e0 des outils tels que Scikit-Learn, PyTorch et d&rsquo;autres flux de travail Python.<\/p>\n<p>DataLad est souvent meilleur pour les projets de conservation des donn\u00e9es \u00e0 long terme, en particulier lorsque les ensembles de donn\u00e9es sont volumineux, r\u00e9partis entre les institutions ou devraient survivre pendant de nombreuses ann\u00e9es.<\/p>\n<p>Ils ne s&rsquo;excluent pas mutuellement. Les deux utilisent Git dans le cadre de leur dorsale de contr\u00f4le de version, et les deux peuvent \u00eatre combin\u00e9s avec des environnements d&rsquo;ex\u00e9cution conteneuris\u00e9s.<\/p>\n<h2>Qu&rsquo;est-ce que le suivi de provenance ?<\/h2>\n<p>La provenance est l&rsquo;enregistrement syst\u00e9matique de la provenance des donn\u00e9es et de ce qui leur est arriv\u00e9. Dans les flux de travail scientifiques, Provenance r\u00e9pond \u00e0 des questions pratiques :<\/p>\n<ul>\n<li>Quelle version des donn\u00e9es d&rsquo;entr\u00e9e a \u00e9t\u00e9 utilis\u00e9e&nbsp;?<\/li>\n<li>Quels param\u00e8tres ont \u00e9t\u00e9 appliqu\u00e9s lors du traitement ?<\/li>\n<li>Quels fichiers interm\u00e9diaires ont \u00e9t\u00e9 g\u00e9n\u00e9r\u00e9s&nbsp;?<\/li>\n<li>Quelles versions de logiciels \u00e9taient actives lors de la production de la sortie&nbsp;?<\/li>\n<li>Qui a ex\u00e9cut\u00e9 le flux de travail et quand&nbsp;?<\/li>\n<\/ul>\n<p>Deux types de provenance dans les flux de travail scientifiques.<\/p>\n<p>La provenance prospective d\u00e9crit ce qui va se passer. Il s&rsquo;agit de la sp\u00e9cification de flux de travail planifi\u00e9&nbsp;: la recette de la fa\u00e7on dont les donn\u00e9es doivent passer \u00e0 travers l&rsquo;analyse. Des outils tels que CWL et WDL utilisent des formats d\u00e9claratifs pour sp\u00e9cifier ce qui devrait se produire lors de l&rsquo;ex\u00e9cution d&rsquo;un workflow.<\/p>\n<p>La provenance r\u00e9trospective d\u00e9crit ce qui s&rsquo;est r\u00e9ellement pass\u00e9. Il enregistre les journaux d&rsquo;ex\u00e9cution, les instantan\u00e9s d&rsquo;environnement, les sommes de contr\u00f4le des donn\u00e9es et les fichiers d&rsquo;ex\u00e9cution exacts. Il s&rsquo;agit de la piste d&rsquo;audit qui prend en charge la reproductibilit\u00e9.<\/p>\n<h3>RO-crate : artefacts de recherche sur l&#8217;emballage avec provenance<\/h3>\n<p>RO-Crate est un standard pour l&#8217;emballage des r\u00e9sultats de recherche, des fichiers de donn\u00e9es, des d\u00e9finitions de flux de travail, des param\u00e8tres et des enregistrements dans une archive lisible par machine.<\/p>\n<p>Une archive RO-Crate est g\u00e9n\u00e9ralement un r\u00e9pertoire ou un fichier ZIP qui contient :<\/p>\n<ul>\n<li>Fichiers de donn\u00e9es et sorties d&rsquo;analyse.<\/li>\n<li>Un fichier <code>ro-crate-metadata.json<\/code> avec des m\u00e9tadonn\u00e9es JSON-LD.<\/li>\n<li>D\u00e9finitions de workflow telles que CWL, NextFlow ou SnakeMake.<\/li>\n<li>Journaux d&rsquo;ex\u00e9cution et captures d&rsquo;environnement.<\/li>\n<\/ul>\n<p>RO-crate est utile car il est l\u00e9ger et portable. Vous n&rsquo;avez pas besoin d&rsquo;une base de donn\u00e9es ou d&rsquo;un service sp\u00e9cial pour l&rsquo;inspecter. Toute personne disposant des fichiers peut lire les m\u00e9tadonn\u00e9es et comprendre la provenance.<\/p>\n<p>Le format prend en charge \u00e0 la fois la provenance prospective, qui d\u00e9crit ce que le flux de travail pr\u00e9voit de faire, et la provenance r\u00e9trospective, qui enregistre ce qui fonctionnait r\u00e9ellement.<\/p>\n<p>RO-crate gagne du terrain dans le calcul scientifique. Des plates-formes telles que Galaxy, WorkflowHub et Zenodo prennent en charge les exportations de RO-crate, ce qui le rend utile pour les artefacts de recherche pr\u00eats \u00e0 l&#8217;emploi.<\/p>\n<h2>Mettre le tout en place&nbsp;: un mod\u00e8le de flux de travail pratique<\/h2>\n<p>Les conteneurs, la gestion des versions de donn\u00e9es et le suivi de provenance fonctionnent mieux lorsqu&rsquo;ils sont utilis\u00e9s ensemble. Chacun couvre une couche de reproductibilit\u00e9 diff\u00e9rente.<\/p>\n<h3>\u00c9tape&nbsp;1&nbsp;: Versez vos donn\u00e9es avec DVC ou DataLad<\/h3>\n<p>Commencez par mettre \u00e0 jour les entr\u00e9es brutes. Utilisez <code>dvc add<\/code> ou <code>datalad add<\/code> pour chaque jeu de donn\u00e9es qui alimente l&rsquo;analyse. Validez les fichiers de m\u00e9tadonn\u00e9es DVC ou Git-annex \u00e0 Git \u00e0 c\u00f4t\u00e9 du code.<\/p>\n<h3>\u00c9tape&nbsp;2&nbsp;: D\u00e9finissez votre pipeline<\/h3>\n<p>Si vous utilisez DVC, \u00e9crivez un fichier <code>dvc.yaml<\/code> qui d\u00e9crit chaque \u00e9tape de traitement comme une \u00e9tape. Si vous utilisez Datalad, utilisez des scripts document\u00e9s, des fichiers de param\u00e8tres coh\u00e9rents et des r\u00e9f\u00e9rentiels de s\u0153urs si n\u00e9cessaire.<\/p>\n<h3>\u00c9tape&nbsp;3&nbsp;: Contenez l&rsquo;ex\u00e9cution<\/h3>\n<p>Enveloppez les scripts d&rsquo;analyse dans un conteneur qui peut s&rsquo;ex\u00e9cuter sur des machines. Le conteneur maintient la coh\u00e9rence des packages Python, des biblioth\u00e8ques C++ et des fichiers binaires. Il ne remplace pas les entr\u00e9es versionn\u00e9es.<\/p>\n<h3>\u00c9tape&nbsp;4&nbsp;: Capturez la provenance avec RO-crate ou CWLProv.<\/h3>\n<p>\u00c0 la fin de chaque ex\u00e9cution de workflow, les artefacts d&#8217;empaqueter dans une archive RO-Crate. Cela vous donne :<\/p>\n<ul>\n<li>Un seul r\u00e9pertoire ou fichier ZIP contenant des donn\u00e9es, du code, des journaux et des m\u00e9tadonn\u00e9es.<\/li>\n<li>Provenance lisible par machine li\u00e9e \u00e0 des ensembles de donn\u00e9es.<\/li>\n<li>Identifiants persistants lorsqu&rsquo;ils sont d\u00e9pos\u00e9s dans des r\u00e9f\u00e9rentiels tels que Zenodo ou FigShare.<\/li>\n<\/ul>\n<h3>Le flux de travail en pratique<\/h3>\n<pre><code>Your Project Directory\n\u251c\u2500\u2500 .git\/                     # Code and metadata\n\u251c\u2500\u2500 .dvc\/                     # DVC pipeline state\n\u251c\u2500\u2500 src\/                      # Analysis scripts\n\u251c\u2500\u2500 data\/                     # Versioned datasets\n\u251c\u2500\u2500 results\/                  # Output data\n\u251c\u2500\u2500 dvc.yaml                  # Pipeline definition\n\u251c\u2500\u2500 params.yaml               # Parameter file\n\u2514\u2500\u2500 Dockerfile                # Container definition\n<\/code><\/pre>\n<p>L&rsquo;ex\u00e9cution du workflow peut ressembler \u00e0 ceci&nbsp;:<\/p>\n<pre><code class=\"language-bash\"># Restore exact data state\ndvc checkout\n\n# Run with pinned container\ndocker run -v $(pwd):\/workspace my-analysis:1.2 python src\/run.py\n\n# Package results with provenance\nro-crate add data\/results.csv params.yaml results\/\n<\/code><\/pre>\n<h2>erreurs courantes<\/h2>\n<p>Ce sont des pi\u00e8ges courants lorsque les chercheurs adoptent le contr\u00f4le de version des donn\u00e9es et le suivi de la provenance.<\/p>\n<h3>1. Suivi de chaque fichier interm\u00e9diaire<\/h3>\n<p>La gestion des versions de chaque fichier interm\u00e9diaire est g\u00e9n\u00e9ralement inutile et peut devenir nuisible. Il gonfle le stockage et les m\u00e9tadonn\u00e9es sans am\u00e9liorer la reproductibilit\u00e9.<\/p>\n<p>Piste uniquement&nbsp;:<\/p>\n<ul>\n<li>Les entr\u00e9es brutes, qui sont les fichiers d&rsquo;origine acquises.<\/li>\n<li>Donn\u00e9es pr\u00e9trait\u00e9es, qui est la version s\u00e9lectionn\u00e9e r\u00e9ellement utilis\u00e9e pour l&rsquo;analyse.<\/li>\n<li>Fichiers de sortie finaux, tels que les chiffres, les tableaux et les sorties de simulation publi\u00e9es.<\/li>\n<\/ul>\n<p>Ne versionnez pas chaque fichier CSV ou Scratch temporaire, sauf s&rsquo;il est n\u00e9cessaire de reproduire le r\u00e9sultat final.<\/p>\n<h3>2. Oublier les fichiers de param\u00e8tres de version<\/h3>\n<p>Si les param\u00e8tres sont pass\u00e9s uniquement en tant qu&rsquo;arguments de ligne de commande, ils peuvent ne pas \u00eatre r\u00e9cup\u00e9rables \u00e0 partir de Git seul. Les fichiers de param\u00e8tres sont tout aussi importants que les fichiers de donn\u00e9es.<\/p>\n<p>Versionnez-les explicitement&nbsp;:<\/p>\n<pre><code class=\"language-bash\">dvc add configs\/params.yaml\ngit add configs\/params.yaml.dvc\n<\/code><\/pre>\n<h3>3. En supposant que les conteneurs r\u00e9solvent tout<\/h3>\n<p>Les conteneurs sont pr\u00e9cieux, mais ils ne sont qu&rsquo;une seule couche. Un conteneur sans entr\u00e9es et provenance versionn\u00e9e ne suffit pas pour prouver comment un r\u00e9sultat sp\u00e9cifique a \u00e9t\u00e9 produit.<\/p>\n<p>Consid\u00e9rez les conteneurs comme la couche d&rsquo;environnement. Vous avez toujours besoin d&rsquo;un versionnement des donn\u00e9es pour les entr\u00e9es et le suivi de provenance pour l&rsquo;historique du flux de travail.<\/p>\n<h3>4. Ignorer la configuration du stockage \u00e0 distance<\/h3>\n<p>DVC et DataLad fonctionnent mieux lorsque le stockage \u00e0 distance est configur\u00e9 t\u00f4t. Sans t\u00e9l\u00e9commande, les fichiers de m\u00e9tadonn\u00e9es peuvent pointer vers des chemins locaux qui disparaissent lorsque vous passez \u00e0 un cluster ou \u00e0 un environnement cloud.<\/p>\n<p>Configurez les t\u00e9l\u00e9commandes au d\u00e9but du projet, et non lors d&rsquo;une p\u00e9riode de crise.<\/p>\n<h2>Choisir le bon outil pour votre projet<\/h2>\n<p>Le paysage des outils est diversifi\u00e9. Utilisez ce cadre de d\u00e9cision comme point de d\u00e9part.<\/p>\n<table class=\"custom-table\">\n<tbody>\n<tr>\n<th>Sc\u00e9nario<\/th>\n<th>Outil recommand\u00e9<\/th>\n<th>Pourquoi<\/th>\n<\/tr>\n<tr>\n<td>Pipeline d&rsquo;apprentissage automatique Python avec des exp\u00e9riences<\/td>\n<td>PDV<\/td>\n<td>Prise en charge native <code>dvc exp run<\/code> pour le suivi des exp\u00e9riences<\/td>\n<\/tr>\n<tr>\n<td>Grands ensembles de donn\u00e9es scientifiques dans les institutions<\/td>\n<td>datalad<\/td>\n<td>R\u00e9cup\u00e9ration \u00e0 la demande et r\u00e9plication des fr\u00e8res et s\u0153urs<\/td>\n<\/tr>\n<tr>\n<td>Publication &#8211; Emballage d&rsquo;artefacts pr\u00eat \u00e0 \u00eatre publi\u00e9<\/td>\n<td>ro-caisse<\/td>\n<td>L\u00e9ger, portable et adapt\u00e9 au r\u00e9f\u00e9rentiel<\/td>\n<\/tr>\n<tr>\n<td>Pipeline en plusieurs \u00e9tapes avec mise en cache<\/td>\n<td>DVC avec <code>dvc.yaml<\/code> ou Snakemake<\/td>\n<td>R\u00e9solution de d\u00e9pendance automatique et logique de r\u00e9ex\u00e9cution<\/td>\n<\/tr>\n<tr>\n<td>Archivage \u00e0 long terme pendant plus de 10&nbsp;ans<\/td>\n<td>Datalad plus Zenodo<\/td>\n<td>Historique des gits et identifiants persistants<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Vous pouvez \u00e9galement combiner des outils. Par exemple, utilisez DVC pour le versionnement des donn\u00e9es, Docker pour la reproductibilit\u00e9 de l&rsquo;environnement et RO-Crate pour regrouper le flux de travail final pour publication.<\/p>\n<h2>Que faire ensuite<\/h2>\n<p>Si vous lancez un nouveau projet, le chemin est simple :<\/p>\n<ol>\n<li>Initialisez un r\u00e9f\u00e9rentiel Git pour le code.<\/li>\n<li>Ajoutez DVC avec <code>dvc init<\/code> et les jeux de donn\u00e9es brutes de version.<\/li>\n<li>\u00c9crivez des scripts d&rsquo;analyse sous forme de fichiers Python ou de scripts bash.<\/li>\n<li>Containez le workflow avec Docker ou Singularity.<\/li>\n<li>R\u00e9sultats du package avec RO-crate \u00e0 chaque \u00e9tape majeure.<\/li>\n<\/ol>\n<p>Si vous travaillez sur un projet existant, commencez petit :<\/p>\n<ol>\n<li>Ajoutez DVC aux ensembles de donn\u00e9es de r\u00e9f\u00e9rentiel et de cl\u00e9 de version.<\/li>\n<li>\u00c9crivez un fichier <code>dvc.yaml<\/code> qui d\u00e9crit le pipeline.<\/li>\n<li>Containerisez l&rsquo;\u00e9tape d&rsquo;ex\u00e9cution principale.<\/li>\n<li>Cr\u00e9ez une archive RO-crate pour le r\u00e9sultat le plus important.<\/li>\n<\/ol>\n<p>Cette approche incr\u00e9mentale vous permet d&rsquo;ajouter des couches de reproductibilit\u00e9 sans r\u00e9\u00e9crire l&rsquo;ensemble du projet.<\/p>\n<h2>Guides connexes<\/h2>\n<ul>\n<li><a href=\"https:\/\/matforge.org\/versioning-reproducibility-and-why-research-software-teams-face-integrity-issues-too\/\">Version et int\u00e9grit\u00e9 dans les logiciels de recherche<\/a> \u2014 un aper\u00e7u plus large du contr\u00f4le des versions, de la reproductibilit\u00e9 et de la tra\u00e7abilit\u00e9 des flux de travail pour les \u00e9quipes de logiciels de recherche.<\/li>\n<li><a href=\"https:\/\/matforge.org\/python-debugging-scientific-code-print-statements-profiling\/\">d\u00e9bogage de Python pour le code scientifique<\/a> &#8211; des mod\u00e8les de d\u00e9bogage qui fonctionnent avec des flux de travail reproductibles.<\/li>\n<\/ul>\n<p>Cet article couvre le versionnement des donn\u00e9es et le suivi de la provenance en tant qu&rsquo;outils pratiques pour des flux de travail scientifiques reproductibles. DVC, Datalad et Ro-Crate sont activement maintenus et largement utilis\u00e9s dans l&rsquo;\u00e9cosyst\u00e8me scientifique Python. Pour conna\u00eetre les derniers d\u00e9tails de la configuration, reportez-vous toujours \u00e0 la documentation officielle de chaque outil.<\/p>\n","protected":false,"raw":"<h2>Points \u00e0 retenir cl\u00e9s<\/h2>\n<ul>\n<li>Les conteneurs r\u00e9solvent un probl\u00e8me. Ils gelent l'environnement logiciel, mais ils ne suivent pas ce qui a chang\u00e9 dans vos donn\u00e9es ni l'\u00e9volution de votre analyse.<\/li>\n<li>Le versionnement des donn\u00e9es ajoute une couche manquante. Des outils tels que DVC et DataLad apportent un contr\u00f4le de version de style Git aux jeux de donn\u00e9es, ce qui facilite la reproduction des r\u00e9sultats avec des entr\u00e9es exactes, des fichiers de param\u00e8tres et des sorties s\u00e9lectionn\u00e9es.<\/li>\n<li>La provenance est la piste d'audit. Il enregistre toutes les transformations qui sont arriv\u00e9es \u00e0 vos donn\u00e9es, des fichiers bruts aux chiffres finaux.<\/li>\n<li>Les conteneurs, la gestion des versions de donn\u00e9es et le suivi de provenance sont compl\u00e9mentaires. Ensemble, ils couvrent le code, l'environnement, les donn\u00e9es et la lign\u00e9e.<\/li>\n<\/ul>\n<h2>Ce qu'il faut savoir d'abord<\/h2>\n<p>Des conteneurs comme Docker et Singularity sont devenus une partie quasi obligatoire de la recherche reproductible. Ils r\u00e9solvent un probl\u00e8me r\u00e9el&nbsp;: si vous envoyez une image Docker \u00e0 quelqu'un, cette personne devrait pouvoir ex\u00e9cuter le code et obtenir les m\u00eames r\u00e9sultats sur une autre machine.<\/p>\n<p>C'est pourquoi les revues et les r\u00e9viseurs demandent de plus en plus des images de conteneurs \u00e0 c\u00f4t\u00e9 des articles. Mais les conteneurs laissent deux lacunes critiques ouvertes.<\/p>\n<p>Premi\u00e8rement, les conteneurs ne suivent pas les modifications apport\u00e9es \u00e0 vos donn\u00e9es. Un ensemble de donn\u00e9es \u00e9volue au fil du temps au fur et \u00e0 mesure que vous nettoyez, filtrez et retraitez. Lorsque vous reproduisez un r\u00e9sultat six mois plus tard, vous devez savoir quelle version des donn\u00e9es produite ce chiffre. Les conteneurs n'enregistrent pas cela par d\u00e9faut.<\/p>\n<p>Deuxi\u00e8mement, les conteneurs ne capturent pas la lign\u00e9e. Si un script d'analyse est erron\u00e9, un param\u00e8tre a \u00e9t\u00e9 modifi\u00e9 accidentellement ou une \u00e9tape de pr\u00e9traitement a \u00e9t\u00e9 appliqu\u00e9e de mani\u00e8re incoh\u00e9rente, il se peut qu'il n'y ait pas d'enregistrement automatis\u00e9 de ce qui s'est pass\u00e9. Il vous reste \u00e0 compter sur la m\u00e9moire, les notes manuelles ou la chance.<\/p>\n<p>Cet article explique comment les workflows scientifiques modernes r\u00e9solvent ces lacunes gr\u00e2ce \u00e0 la gestion des versions des donn\u00e9es et au suivi de la provenance. Le contr\u00f4le des donn\u00e9es permet de suivre les changements de l'ensemble de donn\u00e9es au fil du temps. Le suivi de la provenance enregistre chaque transformation appliqu\u00e9e aux donn\u00e9es.<\/p>\n<h2>Les conteneurs ne suffisent pas<\/h2>\n<p>Avant de discuter de la gestion des donn\u00e9es, il est utile de comprendre ce que font et ne font pas les conteneurs.<\/p>\n<p>Un conteneur capture :<\/p>\n<ul>\n<li>Le syst\u00e8me d'exploitation, g\u00e9n\u00e9ralement une distribution Linux.<\/li>\n<li>Packages install\u00e9s et leurs versions.<\/li>\n<li>Vos fichiers de code et de configuration.<\/li>\n<li>La commande utilis\u00e9e pour ex\u00e9cuter l'analyse.<\/li>\n<\/ul>\n<p>Un conteneur ne capture pas automatiquement&nbsp;:<\/p>\n<ul>\n<li>Les fichiers exacts utilis\u00e9s comme entr\u00e9es, \u00e0 moins qu'ils ne soient int\u00e9gr\u00e9s \u00e0 l'image.<\/li>\n<li>Param\u00e8tres d'ex\u00e9cution, \u00e0 moins qu'ils ne soient explicitement enregistr\u00e9s.<\/li>\n<li>Sorties interm\u00e9diaires g\u00e9n\u00e9r\u00e9es lors d'un pipeline.<\/li>\n<li>L'ordre et la logique des transformations appliqu\u00e9es aux donn\u00e9es.<\/li>\n<\/ul>\n<p>La cons\u00e9quence pratique est simple. Vous pouvez ex\u00e9cuter un conteneur sur une autre machine et obtenir la m\u00eame sortie uniquement si les entr\u00e9es et le contexte d'ex\u00e9cution sont \u00e9galement contr\u00f4l\u00e9s. Si vous souhaitez reproduire une analyse sp\u00e9cifique d'il y a des mois, en particulier une analyse avec plusieurs \u00e9tapes et un ensemble de donn\u00e9es changeant, vous avez besoin de plus qu'un conteneur.<\/p>\n<p>Envisagez un sc\u00e9nario commun. Vous entra\u00eenez une simulation de champ de phase sur des images de microstructure exp\u00e9rimentales. Les images sont nettoy\u00e9es pendant le pr\u00e9traitement, puis divis\u00e9es en ensembles de formation et de validation. Six mois plus tard, quelqu'un vous demande de reproduire la simulation.<\/p>\n<p>Vous ouvrez le conteneur, ex\u00e9cutez la commande et obtenez le mauvais r\u00e9sultat. La raison peut \u00eatre que l'ensemble de donn\u00e9es a \u00e9t\u00e9 r\u00e9organis\u00e9, que de nouveaux \u00e9chantillons ont \u00e9t\u00e9 ajout\u00e9s ou que le point d'entr\u00e9e a utilis\u00e9 quel que soit le fichier dans un r\u00e9pertoire. Sans entr\u00e9es versionn\u00e9es et sans piste d'audit, le conteneur seul ne peut pas prouver ce qui s'est pass\u00e9.<\/p>\n<p>C'est l\u00e0 que le versionnement des donn\u00e9es et le suivi de provenance deviennent n\u00e9cessaires.<\/p>\n<h2>Qu'est-ce que le versionnage des donn\u00e9es&nbsp;?<\/h2>\n<p>Le versionnement des donn\u00e9es apporte la m\u00eame id\u00e9e qui rend Git utile pour le code dans le monde des ensembles de donn\u00e9es. Au lieu de suivre directement chaque fichier binaire volumineux, il cr\u00e9e des instantan\u00e9s l\u00e9gers ou des pointeurs vers des \u00e9tats sp\u00e9cifiques de donn\u00e9es \u00e0 des moments sp\u00e9cifiques.<\/p>\n<p>L'id\u00e9e de base est simple :<\/p>\n<ol>\n<li>Vous modifiez le jeu de donn\u00e9es, comme l'ajout de fichiers, la modification ou la r\u00e9organisation de dossiers.<\/li>\n<li>Vous validez un snapshot qui enregistre ce qui a chang\u00e9 et o\u00f9 vivent les donn\u00e9es actuelles.<\/li>\n<li>Plus tard, vous pouvez v\u00e9rifier ce snapshot pour restaurer l'\u00e9tat exact des donn\u00e9es qui a produit un r\u00e9sultat sp\u00e9cifique.<\/li>\n<\/ol>\n<p>Les deux principaux outils de l'\u00e9cosyst\u00e8me scientifique Python sont DVC et DataLad.<\/p>\n<h3>DVC : contr\u00f4le de version de donn\u00e9es<\/h3>\n<p>DVC est un outil de gestion des donn\u00e9es largement adopt\u00e9 pour les flux de travail bas\u00e9s sur Python. Il fonctionne en g\u00e9n\u00e9rant de petits fichiers de m\u00e9tadonn\u00e9es qui suivent les emplacements de donn\u00e9es et les sommes de contr\u00f4le tandis que les donn\u00e9es r\u00e9elles se trouvent dans le stockage \u00e0 distance, tels que les buckets cloud, les disques locaux ou les r\u00e9seaux partag\u00e9s.<\/p>\n<p>Plusieurs fonctionnalit\u00e9s DVC comptent pour les flux de travail scientifiques :<\/p>\n<ul>\n<li>D\u00e9finition du pipeline <code>dvc.yaml<\/code> Les fichiers vous permettent de d\u00e9crire le pipeline d'analyse, y compris les entr\u00e9es, les sorties, les \u00e9tapes de traitement et les d\u00e9pendances.<\/li>\n<li>Suivi des exp\u00e9riences. <code>dvc exp run<\/code> cr\u00e9e des espaces de noms d'exp\u00e9rience isol\u00e9s afin que vous puissiez tester les configurations de param\u00e8tres sans encombrer l'historique des Git.<\/li>\n<li>Stockage \u00e0 distance. DVC peut transf\u00e9rer des donn\u00e9es sur des t\u00e9l\u00e9commandes configur\u00e9es telles que S3, Google Cloud Storage, Azure, SSH Servers ou des syst\u00e8mes de fichiers partag\u00e9s.<\/li>\n<li>Voyage dans le temps. Vous pouvez extraire un commit git, ex\u00e9cuter <code>dvc pull<\/code> et <code>dvc checkout<\/code> et restaurer l'\u00e9tat des donn\u00e9es \u00e0 partir de ce point.<\/li>\n<\/ul>\n<p>Un flux de travail scientifique typique peut ressembler \u00e0 ceci :<\/p>\n<pre><code class=\"language-bash\"># Initialize DVC in your project\ndvc init\n\n# Add your dataset\ndvc add data\/raw_microstructures\/\n\n# Commit only the lightweight metadata\ngit add data\/raw_microstructures.dvc\ngit commit -m \"Initial microstructure dataset\"\n\n# Define a processing pipeline\ndvc run -d data\/raw_microstructures.dvc -o data\/cleaned\/ \n    python src\/preprocess.py\n\n# Run experiments\ndvc exp run --set-param preprocessing.threshold=0.5\n<\/code><\/pre>\n<h3>datalad<\/h3>\n<p>Datalad est con\u00e7u pour les ensembles de donn\u00e9es scientifiques et utilise Git-Annex sous le capot. Il est particuli\u00e8rement utile pour les grands ensembles de donn\u00e9es qui peuvent couvrir de nombreux fichiers, tels que des simulations, des mesures exp\u00e9rimentales, des donn\u00e9es d'imagerie ou des collections de recherche institutionnelle.<\/p>\n<p>DataLad offre plusieurs avantages sp\u00e9cifiques \u00e0 des donn\u00e9es scientifiques :<\/p>\n<ul>\n<li>Conception centr\u00e9e sur l'ensemble de donn\u00e9es. Datalad traite chaque r\u00e9pertoire comme un jeu de donn\u00e9es avec un historique de versions.<\/li>\n<li>R\u00e9cup\u00e9ration de donn\u00e9es sur demande. Au lieu de tout tirer, DataLad peut r\u00e9cup\u00e9rer des fichiers ou des sous-r\u00e9pertoires sp\u00e9cifiques en cas de besoin.<\/li>\n<li>R\u00e9plication int\u00e9gr\u00e9e. Datalad peut g\u00e9rer les d\u00e9p\u00f4ts de s\u0153urs dans toutes les institutions pour des raisons de redondance et de conformit\u00e9.<\/li>\n<li>Int\u00e9gration HPC. Les extensions peuvent prendre en charge les syst\u00e8mes de planification par lots tels que Slurm et PBS.<\/li>\n<\/ul>\n<p>Un workflow de base de DataLad ressemble \u00e0 ceci :<\/p>\n<pre><code class=\"language-bash\"># Initialize a dataset\ndatalad create -s my-dataset\n\n# Add data using git-annex under the hood\ndatalad add data\/raw_images\/\n\n# Record a provenance-rich commit\ndatalad save -m \"Add raw imaging data, batch 2024-01\"\n\n# Clone to another machine and fetch data on demand\ndatalad clone my-dataset\ndatalad get data\/processed_results\/\n<\/code><\/pre>\n<h3>Quand utiliser lequel<\/h3>\n<p>DVC est souvent mieux pour les \u00e9quipes travaillant dans des environnements de science des donn\u00e9es Python qui n\u00e9cessitent un suivi des pipelines et une gestion des exp\u00e9riences. Il s'int\u00e8gre naturellement \u00e0 des outils tels que Scikit-Learn, PyTorch et d'autres flux de travail Python.<\/p>\n<p>DataLad est souvent meilleur pour les projets de conservation des donn\u00e9es \u00e0 long terme, en particulier lorsque les ensembles de donn\u00e9es sont volumineux, r\u00e9partis entre les institutions ou devraient survivre pendant de nombreuses ann\u00e9es.<\/p>\n<p>Ils ne s'excluent pas mutuellement. Les deux utilisent Git dans le cadre de leur dorsale de contr\u00f4le de version, et les deux peuvent \u00eatre combin\u00e9s avec des environnements d'ex\u00e9cution conteneuris\u00e9s.<\/p>\n<h2>Qu'est-ce que le suivi de provenance ?<\/h2>\n<p>La provenance est l'enregistrement syst\u00e9matique de la provenance des donn\u00e9es et de ce qui leur est arriv\u00e9. Dans les flux de travail scientifiques, Provenance r\u00e9pond \u00e0 des questions pratiques :<\/p>\n<ul>\n<li>Quelle version des donn\u00e9es d'entr\u00e9e a \u00e9t\u00e9 utilis\u00e9e&nbsp;?<\/li>\n<li>Quels param\u00e8tres ont \u00e9t\u00e9 appliqu\u00e9s lors du traitement ?<\/li>\n<li>Quels fichiers interm\u00e9diaires ont \u00e9t\u00e9 g\u00e9n\u00e9r\u00e9s&nbsp;?<\/li>\n<li>Quelles versions de logiciels \u00e9taient actives lors de la production de la sortie&nbsp;?<\/li>\n<li>Qui a ex\u00e9cut\u00e9 le flux de travail et quand&nbsp;?<\/li>\n<\/ul>\n<p>Deux types de provenance dans les flux de travail scientifiques.<\/p>\n<p>La provenance prospective d\u00e9crit ce qui va se passer. Il s'agit de la sp\u00e9cification de flux de travail planifi\u00e9&nbsp;: la recette de la fa\u00e7on dont les donn\u00e9es doivent passer \u00e0 travers l'analyse. Des outils tels que CWL et WDL utilisent des formats d\u00e9claratifs pour sp\u00e9cifier ce qui devrait se produire lors de l'ex\u00e9cution d'un workflow.<\/p>\n<p>La provenance r\u00e9trospective d\u00e9crit ce qui s'est r\u00e9ellement pass\u00e9. Il enregistre les journaux d'ex\u00e9cution, les instantan\u00e9s d'environnement, les sommes de contr\u00f4le des donn\u00e9es et les fichiers d'ex\u00e9cution exacts. Il s'agit de la piste d'audit qui prend en charge la reproductibilit\u00e9.<\/p>\n<h3>RO-crate : artefacts de recherche sur l'emballage avec provenance<\/h3>\n<p>RO-Crate est un standard pour l'emballage des r\u00e9sultats de recherche, des fichiers de donn\u00e9es, des d\u00e9finitions de flux de travail, des param\u00e8tres et des enregistrements dans une archive lisible par machine.<\/p>\n<p>Une archive RO-Crate est g\u00e9n\u00e9ralement un r\u00e9pertoire ou un fichier ZIP qui contient :<\/p>\n<ul>\n<li>Fichiers de donn\u00e9es et sorties d'analyse.<\/li>\n<li>Un fichier <code>ro-crate-metadata.json<\/code> avec des m\u00e9tadonn\u00e9es JSON-LD.<\/li>\n<li>D\u00e9finitions de workflow telles que CWL, NextFlow ou SnakeMake.<\/li>\n<li>Journaux d'ex\u00e9cution et captures d'environnement.<\/li>\n<\/ul>\n<p>RO-crate est utile car il est l\u00e9ger et portable. Vous n'avez pas besoin d'une base de donn\u00e9es ou d'un service sp\u00e9cial pour l'inspecter. Toute personne disposant des fichiers peut lire les m\u00e9tadonn\u00e9es et comprendre la provenance.<\/p>\n<p>Le format prend en charge \u00e0 la fois la provenance prospective, qui d\u00e9crit ce que le flux de travail pr\u00e9voit de faire, et la provenance r\u00e9trospective, qui enregistre ce qui fonctionnait r\u00e9ellement.<\/p>\n<p>RO-crate gagne du terrain dans le calcul scientifique. Des plates-formes telles que Galaxy, WorkflowHub et Zenodo prennent en charge les exportations de RO-crate, ce qui le rend utile pour les artefacts de recherche pr\u00eats \u00e0 l'emploi.<\/p>\n<h2>Mettre le tout en place&nbsp;: un mod\u00e8le de flux de travail pratique<\/h2>\n<p>Les conteneurs, la gestion des versions de donn\u00e9es et le suivi de provenance fonctionnent mieux lorsqu'ils sont utilis\u00e9s ensemble. Chacun couvre une couche de reproductibilit\u00e9 diff\u00e9rente.<\/p>\n<h3>\u00c9tape&nbsp;1&nbsp;: Versez vos donn\u00e9es avec DVC ou DataLad<\/h3>\n<p>Commencez par mettre \u00e0 jour les entr\u00e9es brutes. Utilisez <code>dvc add<\/code> ou <code>datalad add<\/code> pour chaque jeu de donn\u00e9es qui alimente l'analyse. Validez les fichiers de m\u00e9tadonn\u00e9es DVC ou Git-annex \u00e0 Git \u00e0 c\u00f4t\u00e9 du code.<\/p>\n<h3>\u00c9tape&nbsp;2&nbsp;: D\u00e9finissez votre pipeline<\/h3>\n<p>Si vous utilisez DVC, \u00e9crivez un fichier <code>dvc.yaml<\/code> qui d\u00e9crit chaque \u00e9tape de traitement comme une \u00e9tape. Si vous utilisez Datalad, utilisez des scripts document\u00e9s, des fichiers de param\u00e8tres coh\u00e9rents et des r\u00e9f\u00e9rentiels de s\u0153urs si n\u00e9cessaire.<\/p>\n<h3>\u00c9tape&nbsp;3&nbsp;: Contenez l'ex\u00e9cution<\/h3>\n<p>Enveloppez les scripts d'analyse dans un conteneur qui peut s'ex\u00e9cuter sur des machines. Le conteneur maintient la coh\u00e9rence des packages Python, des biblioth\u00e8ques C++ et des fichiers binaires. Il ne remplace pas les entr\u00e9es versionn\u00e9es.<\/p>\n<h3>\u00c9tape&nbsp;4&nbsp;: Capturez la provenance avec RO-crate ou CWLProv.<\/h3>\n<p>\u00c0 la fin de chaque ex\u00e9cution de workflow, les artefacts d'empaqueter dans une archive RO-Crate. Cela vous donne :<\/p>\n<ul>\n<li>Un seul r\u00e9pertoire ou fichier ZIP contenant des donn\u00e9es, du code, des journaux et des m\u00e9tadonn\u00e9es.<\/li>\n<li>Provenance lisible par machine li\u00e9e \u00e0 des ensembles de donn\u00e9es.<\/li>\n<li>Identifiants persistants lorsqu'ils sont d\u00e9pos\u00e9s dans des r\u00e9f\u00e9rentiels tels que Zenodo ou FigShare.<\/li>\n<\/ul>\n<h3>Le flux de travail en pratique<\/h3>\n<pre><code>Your Project Directory\n\u251c\u2500\u2500 .git\/                     # Code and metadata\n\u251c\u2500\u2500 .dvc\/                     # DVC pipeline state\n\u251c\u2500\u2500 src\/                      # Analysis scripts\n\u251c\u2500\u2500 data\/                     # Versioned datasets\n\u251c\u2500\u2500 results\/                  # Output data\n\u251c\u2500\u2500 dvc.yaml                  # Pipeline definition\n\u251c\u2500\u2500 params.yaml               # Parameter file\n\u2514\u2500\u2500 Dockerfile                # Container definition\n<\/code><\/pre>\n<p>L'ex\u00e9cution du workflow peut ressembler \u00e0 ceci&nbsp;:<\/p>\n<pre><code class=\"language-bash\"># Restore exact data state\ndvc checkout\n\n# Run with pinned container\ndocker run -v $(pwd):\/workspace my-analysis:1.2 python src\/run.py\n\n# Package results with provenance\nro-crate add data\/results.csv params.yaml results\/\n<\/code><\/pre>\n<h2>erreurs courantes<\/h2>\n<p>Ce sont des pi\u00e8ges courants lorsque les chercheurs adoptent le contr\u00f4le de version des donn\u00e9es et le suivi de la provenance.<\/p>\n<h3>1. Suivi de chaque fichier interm\u00e9diaire<\/h3>\n<p>La gestion des versions de chaque fichier interm\u00e9diaire est g\u00e9n\u00e9ralement inutile et peut devenir nuisible. Il gonfle le stockage et les m\u00e9tadonn\u00e9es sans am\u00e9liorer la reproductibilit\u00e9.<\/p>\n<p>Piste uniquement&nbsp;:<\/p>\n<ul>\n<li>Les entr\u00e9es brutes, qui sont les fichiers d'origine acquises.<\/li>\n<li>Donn\u00e9es pr\u00e9trait\u00e9es, qui est la version s\u00e9lectionn\u00e9e r\u00e9ellement utilis\u00e9e pour l'analyse.<\/li>\n<li>Fichiers de sortie finaux, tels que les chiffres, les tableaux et les sorties de simulation publi\u00e9es.<\/li>\n<\/ul>\n<p>Ne versionnez pas chaque fichier CSV ou Scratch temporaire, sauf s'il est n\u00e9cessaire de reproduire le r\u00e9sultat final.<\/p>\n<h3>2. Oublier les fichiers de param\u00e8tres de version<\/h3>\n<p>Si les param\u00e8tres sont pass\u00e9s uniquement en tant qu'arguments de ligne de commande, ils peuvent ne pas \u00eatre r\u00e9cup\u00e9rables \u00e0 partir de Git seul. Les fichiers de param\u00e8tres sont tout aussi importants que les fichiers de donn\u00e9es.<\/p>\n<p>Versionnez-les explicitement&nbsp;:<\/p>\n<pre><code class=\"language-bash\">dvc add configs\/params.yaml\ngit add configs\/params.yaml.dvc\n<\/code><\/pre>\n<h3>3. En supposant que les conteneurs r\u00e9solvent tout<\/h3>\n<p>Les conteneurs sont pr\u00e9cieux, mais ils ne sont qu'une seule couche. Un conteneur sans entr\u00e9es et provenance versionn\u00e9e ne suffit pas pour prouver comment un r\u00e9sultat sp\u00e9cifique a \u00e9t\u00e9 produit.<\/p>\n<p>Consid\u00e9rez les conteneurs comme la couche d'environnement. Vous avez toujours besoin d'un versionnement des donn\u00e9es pour les entr\u00e9es et le suivi de provenance pour l'historique du flux de travail.<\/p>\n<h3>4. Ignorer la configuration du stockage \u00e0 distance<\/h3>\n<p>DVC et DataLad fonctionnent mieux lorsque le stockage \u00e0 distance est configur\u00e9 t\u00f4t. Sans t\u00e9l\u00e9commande, les fichiers de m\u00e9tadonn\u00e9es peuvent pointer vers des chemins locaux qui disparaissent lorsque vous passez \u00e0 un cluster ou \u00e0 un environnement cloud.<\/p>\n<p>Configurez les t\u00e9l\u00e9commandes au d\u00e9but du projet, et non lors d'une p\u00e9riode de crise.<\/p>\n<h2>Choisir le bon outil pour votre projet<\/h2>\n<p>Le paysage des outils est diversifi\u00e9. Utilisez ce cadre de d\u00e9cision comme point de d\u00e9part.<\/p>\n<table class=\"custom-table\">\n<tbody><tr>\n<th>Sc\u00e9nario<\/th>\n<th>Outil recommand\u00e9<\/th>\n<th>Pourquoi<\/th>\n<\/tr>\n<tr>\n<td>Pipeline d'apprentissage automatique Python avec des exp\u00e9riences<\/td>\n<td>PDV<\/td>\n<td>Prise en charge native <code>dvc exp run<\/code> pour le suivi des exp\u00e9riences<\/td>\n<\/tr>\n<tr>\n<td>Grands ensembles de donn\u00e9es scientifiques dans les institutions<\/td>\n<td>datalad<\/td>\n<td>R\u00e9cup\u00e9ration \u00e0 la demande et r\u00e9plication des fr\u00e8res et s\u0153urs<\/td>\n<\/tr>\n<tr>\n<td>Publication - Emballage d'artefacts pr\u00eat \u00e0 \u00eatre publi\u00e9<\/td>\n<td>ro-caisse<\/td>\n<td>L\u00e9ger, portable et adapt\u00e9 au r\u00e9f\u00e9rentiel<\/td>\n<\/tr>\n<tr>\n<td>Pipeline en plusieurs \u00e9tapes avec mise en cache<\/td>\n<td>DVC avec <code>dvc.yaml<\/code> ou Snakemake<\/td>\n<td>R\u00e9solution de d\u00e9pendance automatique et logique de r\u00e9ex\u00e9cution<\/td>\n<\/tr>\n<tr>\n<td>Archivage \u00e0 long terme pendant plus de 10&nbsp;ans<\/td>\n<td>Datalad plus Zenodo<\/td>\n<td>Historique des gits et identifiants persistants<\/td>\n<\/tr>\n<\/tbody><\/table>\n<p>Vous pouvez \u00e9galement combiner des outils. Par exemple, utilisez DVC pour le versionnement des donn\u00e9es, Docker pour la reproductibilit\u00e9 de l'environnement et RO-Crate pour regrouper le flux de travail final pour publication.<\/p>\n<h2>Que faire ensuite<\/h2>\n<p>Si vous lancez un nouveau projet, le chemin est simple :<\/p>\n<ol>\n<li>Initialisez un r\u00e9f\u00e9rentiel Git pour le code.<\/li>\n<li>Ajoutez DVC avec <code>dvc init<\/code> et les jeux de donn\u00e9es brutes de version.<\/li>\n<li>\u00c9crivez des scripts d'analyse sous forme de fichiers Python ou de scripts bash.<\/li>\n<li>Containez le workflow avec Docker ou Singularity.<\/li>\n<li>R\u00e9sultats du package avec RO-crate \u00e0 chaque \u00e9tape majeure.<\/li>\n<\/ol>\n<p>Si vous travaillez sur un projet existant, commencez petit :<\/p>\n<ol>\n<li>Ajoutez DVC aux ensembles de donn\u00e9es de r\u00e9f\u00e9rentiel et de cl\u00e9 de version.<\/li>\n<li>\u00c9crivez un fichier <code>dvc.yaml<\/code> qui d\u00e9crit le pipeline.<\/li>\n<li>Containerisez l'\u00e9tape d'ex\u00e9cution principale.<\/li>\n<li>Cr\u00e9ez une archive RO-crate pour le r\u00e9sultat le plus important.<\/li>\n<\/ol>\n<p>Cette approche incr\u00e9mentale vous permet d'ajouter des couches de reproductibilit\u00e9 sans r\u00e9\u00e9crire l'ensemble du projet.<\/p>\n<h2>Guides connexes<\/h2>\n<ul>\n<li><a href=\"https:\/\/matforge.org\/versioning-reproducibility-and-why-research-software-teams-face-integrity-issues-too\/\">Version et int\u00e9grit\u00e9 dans les logiciels de recherche<\/a> \u2014 un aper\u00e7u plus large du contr\u00f4le des versions, de la reproductibilit\u00e9 et de la tra\u00e7abilit\u00e9 des flux de travail pour les \u00e9quipes de logiciels de recherche.<\/li>\n<li><a href=\"https:\/\/matforge.org\/python-debugging-scientific-code-print-statements-profiling\/\">d\u00e9bogage de Python pour le code scientifique<\/a> - des mod\u00e8les de d\u00e9bogage qui fonctionnent avec des flux de travail reproductibles.<\/li>\n<\/ul>\n<p>Cet article couvre le versionnement des donn\u00e9es et le suivi de la provenance en tant qu'outils pratiques pour des flux de travail scientifiques reproductibles. DVC, Datalad et Ro-Crate sont activement maintenus et largement utilis\u00e9s dans l'\u00e9cosyst\u00e8me scientifique Python. Pour conna\u00eetre les derniers d\u00e9tails de la configuration, reportez-vous toujours \u00e0 la documentation officielle de chaque outil.<\/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\"> 10<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>Points \u00e0 retenir cl\u00e9s Les conteneurs r\u00e9solvent un probl\u00e8me. Ils gelent l&rsquo;environnement logiciel, mais ils ne suivent pas ce qui a chang\u00e9 dans vos donn\u00e9es ni l&rsquo;\u00e9volution de votre analyse. Le versionnement des donn\u00e9es ajoute une couche manquante. Des outils tels que DVC et DataLad apportent un contr\u00f4le de version de style Git aux jeux [&hellip;]<\/p>\n","protected":false,"raw":""},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_locale":"fr_FR","_original_post":"https:\/\/matforge.org\/?p=366","iawp_total_views":1,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1243","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>Reproductibilit\u00e9 au-del\u00e0 des conteneurs<\/title>\n<meta name=\"description\" content=\"D\u00e9couvrez comment la gestion des versions des donn\u00e9es et le suivi de la provenance am\u00e9liorent les flux de travail scientifiques reproductibles au-del\u00e0 des conteneurs Docker et Singularity.\" \/>\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\/reproducibility-workflows-beyond-containers-data-versioning-and-provenance-tracking\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Reproductibilit\u00e9 au-del\u00e0 des conteneurs\" \/>\n<meta property=\"og:description\" content=\"D\u00e9couvrez comment la gestion des versions des donn\u00e9es et le suivi de la provenance am\u00e9liorent les flux de travail scientifiques reproductibles au-del\u00e0 des conteneurs Docker et Singularity.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/matforge.org\/fr\/reproducibility-workflows-beyond-containers-data-versioning-and-provenance-tracking\/\" \/>\n<meta property=\"og:site_name\" content=\"matforge.org\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-21T14:28:34+00:00\" \/>\n<meta name=\"author\" content=\"Elena Markovska\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Elena Markovska\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/reproducibility-workflows-beyond-containers-data-versioning-and-provenance-tracking\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/reproducibility-workflows-beyond-containers-data-versioning-and-provenance-tracking\\\/\"},\"author\":{\"name\":\"Elena Markovska\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/980162bb5de46742daece973661d93da\"},\"headline\":\"Flux de travail de reproductibilit\u00e9 au-del\u00e0 des conteneurs\u00a0: versionnement des donn\u00e9es et suivi de la provenance\",\"datePublished\":\"2026-08-21T14:28:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/reproducibility-workflows-beyond-containers-data-versioning-and-provenance-tracking\\\/\"},\"wordCount\":2942,\"commentCount\":0,\"articleSection\":[\"Simulation &amp; Projets de mod\u00e9lisation\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/matforge.org\\\/fr\\\/reproducibility-workflows-beyond-containers-data-versioning-and-provenance-tracking\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/reproducibility-workflows-beyond-containers-data-versioning-and-provenance-tracking\\\/\",\"url\":\"https:\\\/\\\/matforge.org\\\/fr\\\/reproducibility-workflows-beyond-containers-data-versioning-and-provenance-tracking\\\/\",\"name\":\"Reproductibilit\u00e9 au-del\u00e0 des conteneurs\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#website\"},\"datePublished\":\"2026-08-21T14:28:34+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/980162bb5de46742daece973661d93da\"},\"description\":\"D\u00e9couvrez comment la gestion des versions des donn\u00e9es et le suivi de la provenance am\u00e9liorent les flux de travail scientifiques reproductibles au-del\u00e0 des conteneurs Docker et Singularity.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/reproducibility-workflows-beyond-containers-data-versioning-and-provenance-tracking\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/matforge.org\\\/fr\\\/reproducibility-workflows-beyond-containers-data-versioning-and-provenance-tracking\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/matforge.org\\\/fr\\\/reproducibility-workflows-beyond-containers-data-versioning-and-provenance-tracking\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/matforge.org\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Flux de travail de reproductibilit\u00e9 au-del\u00e0 des conteneurs\u00a0: versionnement des donn\u00e9es et suivi de la provenance\"}]},{\"@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\\\/980162bb5de46742daece973661d93da\",\"name\":\"Elena Markovska\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2de4e35b6581d7d8a839335156c6b5834cfaa0aef537a1c837e882dc57eea1e7?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2de4e35b6581d7d8a839335156c6b5834cfaa0aef537a1c837e882dc57eea1e7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2de4e35b6581d7d8a839335156c6b5834cfaa0aef537a1c837e882dc57eea1e7?s=96&d=mm&r=g\",\"caption\":\"Elena Markovska\"},\"sameAs\":[\"http:\\\/\\\/matforge.org\"],\"url\":\"https:\\\/\\\/matforge.org\\\/author\\\/elena-markovska\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Reproductibilit\u00e9 au-del\u00e0 des conteneurs","description":"D\u00e9couvrez comment la gestion des versions des donn\u00e9es et le suivi de la provenance am\u00e9liorent les flux de travail scientifiques reproductibles au-del\u00e0 des conteneurs Docker et Singularity.","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\/reproducibility-workflows-beyond-containers-data-versioning-and-provenance-tracking\/","og_locale":"fr_FR","og_type":"article","og_title":"Reproductibilit\u00e9 au-del\u00e0 des conteneurs","og_description":"D\u00e9couvrez comment la gestion des versions des donn\u00e9es et le suivi de la provenance am\u00e9liorent les flux de travail scientifiques reproductibles au-del\u00e0 des conteneurs Docker et Singularity.","og_url":"https:\/\/matforge.org\/fr\/reproducibility-workflows-beyond-containers-data-versioning-and-provenance-tracking\/","og_site_name":"matforge.org","article_published_time":"2026-08-21T14:28:34+00:00","author":"Elena Markovska","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"Elena Markovska","Dur\u00e9e de lecture estim\u00e9e":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/matforge.org\/fr\/reproducibility-workflows-beyond-containers-data-versioning-and-provenance-tracking\/#article","isPartOf":{"@id":"https:\/\/matforge.org\/fr\/reproducibility-workflows-beyond-containers-data-versioning-and-provenance-tracking\/"},"author":{"name":"Elena Markovska","@id":"https:\/\/matforge.org\/#\/schema\/person\/980162bb5de46742daece973661d93da"},"headline":"Flux de travail de reproductibilit\u00e9 au-del\u00e0 des conteneurs\u00a0: versionnement des donn\u00e9es et suivi de la provenance","datePublished":"2026-08-21T14:28:34+00:00","mainEntityOfPage":{"@id":"https:\/\/matforge.org\/fr\/reproducibility-workflows-beyond-containers-data-versioning-and-provenance-tracking\/"},"wordCount":2942,"commentCount":0,"articleSection":["Simulation &amp; Projets de mod\u00e9lisation"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/matforge.org\/fr\/reproducibility-workflows-beyond-containers-data-versioning-and-provenance-tracking\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/matforge.org\/fr\/reproducibility-workflows-beyond-containers-data-versioning-and-provenance-tracking\/","url":"https:\/\/matforge.org\/fr\/reproducibility-workflows-beyond-containers-data-versioning-and-provenance-tracking\/","name":"Reproductibilit\u00e9 au-del\u00e0 des conteneurs","isPartOf":{"@id":"https:\/\/matforge.org\/#website"},"datePublished":"2026-08-21T14:28:34+00:00","author":{"@id":"https:\/\/matforge.org\/#\/schema\/person\/980162bb5de46742daece973661d93da"},"description":"D\u00e9couvrez comment la gestion des versions des donn\u00e9es et le suivi de la provenance am\u00e9liorent les flux de travail scientifiques reproductibles au-del\u00e0 des conteneurs Docker et Singularity.","breadcrumb":{"@id":"https:\/\/matforge.org\/fr\/reproducibility-workflows-beyond-containers-data-versioning-and-provenance-tracking\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/matforge.org\/fr\/reproducibility-workflows-beyond-containers-data-versioning-and-provenance-tracking\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/matforge.org\/fr\/reproducibility-workflows-beyond-containers-data-versioning-and-provenance-tracking\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/matforge.org\/"},{"@type":"ListItem","position":2,"name":"Flux de travail de reproductibilit\u00e9 au-del\u00e0 des conteneurs\u00a0: versionnement des donn\u00e9es et suivi de la provenance"}]},{"@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\/980162bb5de46742daece973661d93da","name":"Elena Markovska","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/2de4e35b6581d7d8a839335156c6b5834cfaa0aef537a1c837e882dc57eea1e7?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/2de4e35b6581d7d8a839335156c6b5834cfaa0aef537a1c837e882dc57eea1e7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2de4e35b6581d7d8a839335156c6b5834cfaa0aef537a1c837e882dc57eea1e7?s=96&d=mm&r=g","caption":"Elena Markovska"},"sameAs":["http:\/\/matforge.org"],"url":"https:\/\/matforge.org\/author\/elena-markovska\/"}]}},"_links":{"self":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/1243","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\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/comments?post=1243"}],"version-history":[{"count":1,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/1243\/revisions"}],"predecessor-version":[{"id":1347,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/1243\/revisions\/1347"}],"wp:attachment":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/media?parent=1243"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/categories?post=1243"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/tags?post=1243"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}