{"id":895,"date":"2026-07-30T12:23:20","date_gmt":"2026-07-30T12:23:20","guid":{"rendered":"https:\/\/matforge.org\/?p=895","raw":"https:\/\/matforge.org\/?p=895"},"modified":"2026-07-30T12:23:20","modified_gmt":"2026-07-30T12:23:20","slug":"reproducible-publication-practices-simulation-results","status":"publish","type":"post","link":"https:\/\/matforge.org\/de\/reproducible-publication-practices-simulation-results\/","title":{"rendered":"Reproduzierbare Publikationspraktiken f\u00fcr Simulationsergebnisse: Das Five Pillars Framework","raw":"Reproduzierbare Publikationspraktiken f\u00fcr Simulationsergebnisse: Das Five Pillars Framework"},"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\"> 11<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span><ul>\n<li>Jupyter-Notebooks werden nur ~ 12,4% der F\u00e4lle erfolgreich ausgef\u00fchrt, wenn Abh\u00e4ngigkeiten deklariert werden. Explicit Environment Management schlie\u00dft diese L\u00fccke<\/li>\n<li>Das F\u00fcnf-S\u00e4ulen-Framework von Ziemann et al. (2023) bietet eine strukturierte Basislinie f\u00fcr Dokumentation, Versionskontrolle, Umgebungsmanagement, Datenaustausch und faire Einhaltung<\/li>\n<li>Die Repro-Checkliste (Hornung et al., 2026) bietet ein praktisches Self-Audit-Tool f\u00fcr Ordnerstruktur, Umgebungsspezifikation, Datenverf\u00fcgbarkeit und deterministische Ausf\u00fchrung<\/li>\n<li>H\u00e4ufige Fallstricke wie absolute Pfade, unspezifische Abh\u00e4ngigkeiten und fehlende Readmes sind die Hauptursachen f\u00fcr Reproduzierbarkeitsfehler in der Computerforschung<\/li>\n<li>Ein Schritt-f\u00fcr-Schritt-Workflow vom Simulationsdesign \u00fcber Notebook-Dokumentation, Code-Archivierung und Journal-Einreichung bietet eine wiederholbare Produktionspipeline<\/li>\n<\/ul>\n<h2>Die Reproduzierbarkeitsl\u00fccke in der Computerforschung<\/h2>\n<p>Wenn Sie ein simulationsbasiertes Papier einreichen, \u00fcberpr\u00fcfen die Pr\u00fcfer Ihre Methodik, Randbedingungen, Konvergenzstudien und den Vergleich mit analytischen Benchmarks. Aber sie f\u00fchren Ihren Code selten erneut aus. Die in Ihren Abbildungen und Tabellen dargestellten Ergebnisse werden zum ver\u00f6ffentlichten Datensatz &#8211; und wenn diese Ergebnisse durch einen nicht reproduzierbaren Workflow generiert wurden, beruht die Publikation auf einer nicht \u00fcberpr\u00fcften Grundlage.<\/p>\n<p>Dies ist kein theoretisches Problem. Samuel &amp; Mietchen (2024) analysierte 15.817 Python-basierte Jupyter-Notebooks aus biomedizinischen Ver\u00f6ffentlichungen, die in PubMed Central indexiert wurden. Von den Notebooks, in denen alle deklarierten Abh\u00e4ngigkeiten erfolgreich installiert werden konnten, f\u00fchrten <strong>87,6% zu Ausnahmen<\/strong> w\u00e4hrend der automatischen Wiederholung. Nur 1.203 Notebooks wurden fehlerfrei abgeschlossen &#8211; und von diesen ergaben 324 Ergebnisse, die sich von den urspr\u00fcnglich gemeldeten Ausgaben unterschieden. Die restlichen 879 Notebooks lieferten identische Ergebnisse. Diese 5,56%ige Erfolgsquote bei identischer Reproduktion war tats\u00e4chlich eine Verbesserung gegen\u00fcber dem ersten Lauf im Jahr 2021 (5,88%), was darauf hinweist, dass die letzten Notebooks tendenziell etwas besser sind &#8211; aber die L\u00fccke bleibt enorm.<\/p>\n<p>Was erschwert Reproduzierbarkeit f\u00fcr Computerwissenschaftler? Sie arbeiten mit numerischen Solvern, Netzverfeinerungen, Zeitintegrationsschemata und Kopplungsstrategien, die durch Ketten von Gleitkomma-Operationen Outputs erzeugen. Ein einzelner Python-Versionssto\u00df, ein ge\u00e4nderter Standardparameter in <code>numpy<\/code> oder <code>scipy<\/code> oder ein relativer Pfad, der auf einem anderen Computer nicht aufgel\u00f6st wird, k\u00f6nnen jede Abbildung und Tabelle in Ihrem Papier ung\u00fcltig machen. Das Problem besteht darin, dass Ihr Workflow eine adaptive Netzverfeinerung, benutzerdefinierte Quellbegriffe oder nicht triviale Randbedingungen umfasst &#8211; genau die Art von fortgeschrittenen Mustern, die in <a href=\"\/how-fipy-handles-meshes-and-grid-structures\/\">FIPY-Ressourcen auf dieser Site dokumentiert sind <\/a>.<\/p>\n<h2>F\u00fcnf S\u00e4ulen reproduzierbarer Computerforschung<\/h2>\n<p>Ziemann et al. (2023) formalisierten die <strong> S\u00e4ulen der reproduzierenden Reproduzierbarkeit <\/strong> als Rahmen f\u00fcr die Dokumentation und den Austausch reproduzierbarer Workflows. Diese S\u00e4ulen, die urspr\u00fcnglich im Kontext der Bioinformatik entwickelt wurden, gelten jedoch gleicherma\u00dfen f\u00fcr materialwissenschaftliche Simulationen, computergest\u00fctzte Fluiddynamik und finite-volumenbasierte PDE-Solver.<\/p>\n<h3>1. Programmierkenntnisse<\/h3>\n<p>Literate Programmierung bedeutet, Ihren rechnerischen Workflow als eine Erz\u00e4hlung zu dokumentieren, die Erkl\u00e4rungs- und ausf\u00fchrbaren Code verschachtelt. In den Computerwissenschaften manifestiert sich dies normalerweise als Jupyter-Notizb\u00fccher, R-Markdown-Dokumente oder Python-Skripte mit umfangreichen DocStrings und Inline-Kommentaren.<\/p>\n<p>Das Ziel besteht nicht nur darin, eine reproduzierbare Datei zu erstellen, sondern ein Dokument zu erstellen, das ein mit Ihrer Analyse nicht vertrauter Leser verfolgen, verstehen und erneut ausf\u00fchren kann. Samuel &amp; Mietchen (2024) stellte fest, dass eine klare Korrelation zwischen dem <strong> Markdown-zu-Code-Zellen-Verh\u00e4ltnis <\/strong> und der erfolgreichen Reproduktion: Notebooks mit h\u00f6herem Dokumentationsaufwand (mehr Markdown-Zellen relativ zu Codezellen) sich deutlich h\u00e4ufiger identisch mit der urspr\u00fcnglichen Ausgabe reproduzieren.<\/p>\n<p>F\u00fcr eine Phasenfeldsimulation in FIPY &#8211; <a href=\"\/understanding-fipys-core-architecture\/\"> eine Einf\u00fchrung in die Kernarchitektur <\/a> &#8211; oder ein Diffusionsmodell mit der <a href=\"\/finite-volume-method-explained-simply\/\"> Finite Volume-Methode <\/a> k\u00f6nnte die literarische Programmierung wie folgt aussehen:<\/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>Wenn Sie diese Notebook-Zelle schreiben, dokumentieren Sie gleichzeitig die Netzaufl\u00f6sung, die PDE und die Randbedingungen \u2013 und f\u00fchren die Simulation aus, die Ihre ver\u00f6ffentlichte Figur erzeugt hat.<\/p>\n<p><strong>Empfehlung:<\/strong> Wenn Ihr Notebook weniger Markdown-Zellen als Codezellen hat, sind Sie unterdokumentiert. Streben Sie mindestens ein Verh\u00e4ltnis von 1: 1 an und idealerweise mehr. Der Samuel &amp; Die Mietchen-Studie ergab, dass die Gruppe mit identischer Reproduktion ein Markdown-to-Code-Verh\u00e4ltnis von 0,73 hatte, w\u00e4hrend die Gruppe mit unterschiedlicher Reproduktion nur 0,49 hatte.<\/p>\n<h3>2. Code-Versionskontrolle und -freigabe<\/h3>\n<p>Die Versionskontrolle ist f\u00fcr Arbeiten in Publikationsqualit\u00e4t nicht optional. Git bietet einen permanenten, abfragef\u00e4higen Verlauf jeder Code\u00e4nderung \u2013 und GitHub, GitLab oder Zenodo archivieren Ihr Repository als zitables Objekt mit einem DOI.<\/p>\n<p>Der Zweck der Versionskontrolle ist zweifach:<\/p>\n<ul>\n<li><strong>Reproduzierbarkeit:<\/strong> Ein spezifischer Commit-Hash (<code>abc1234<\/code>) gepaart mit einem bestimmten Commit-Datum zeigt jedem genau an, welcher Code Ihre ver\u00f6ffentlichten Ergebnisse erzeugt hat.<\/li>\n<li><strong>Accountability:<\/strong> Jede \u00c4nderung des Parameters, jede \u00c4nderung des Quellenbegriffs, jede Bearbeitung der Randbedingung wird aufgezeichnet. Wenn ein Rezensent fragt: &#8222;Warum haben Sie diesen Diffusionskoeffizienten verwendet?&#8220; Sie k\u00f6nnen auf den genauen Commit verweisen, an dem es festgelegt wurde.<\/li>\n<\/ul>\n<p>Archivieren Sie beim Ver\u00f6ffentlichen Ihr Repository auf <a href=\"https:\/\/zenodo.org\/\" rel=\"nofollow\"> zenodo <\/a> (oder GitHub mit aktivierter Zenodo-Integration) und f\u00fcgen Sie das DOI in die Datenverf\u00fcgbarkeitserkl\u00e4rung Ihres Manuskripts ein. Dies verwandelt Ihren Simulationscode in ein permanentes, zitierf\u00e4higes Artefakt. Viele Zeitschriften empfehlen jetzt, Code in Repositories mit DOI-Zuweisung zu hinterlegen &#8211; siehe <a href=\"https:\/\/joss.theoj.org\/papers\/tagged\/simulation%20science\" rel=\"nofollow\"> JOSS Simulation Science Guidelines <\/a> f\u00fcr Journalerwartungen zu simulationsbasierten Publikationen.<\/p>\n<p><strong>Entscheidungsregel: GitHub vs. Zenodo?<\/strong> Verwenden Sie GitHub f\u00fcr aktive Entwicklung und Zusammenarbeit. Verwenden Sie Zenodo f\u00fcr die Archivierung. Zenodo weist bei der Verkn\u00fcpfung automatisch ein DOI zu GitHub-Repositories zu, wodurch es zur bevorzugten Wahl f\u00fcr die Ver\u00f6ffentlichung wird. Sie k\u00f6nnen ein Live-GitHub-Repository pflegen und das endg\u00fcltige Commit auf Zenodo zur Einreichung archivieren.<\/p>\n<h3>3. Rechenumgebungssteuerung<\/h3>\n<p>Die Umgebungskontrolle ist die wichtigste technische Intervention, die Sie vornehmen k\u00f6nnen. Wenn ein Reviewer versucht, Ihre Ergebnisse auf einem neuen Computer zu reproduzieren, muss er den genauen Software-Stack kennen: Python-Version, Numpy-Version, FIPY-Version, Solver-Bibliotheken. Ohne diese Informationen r\u00e4t der Rezensent &#8211; und das Vermuten erzeugt <code>ModuleNotFoundError<\/code>, <code>ImportError<\/code> und <code>FileNotFoundError<\/code> (die drei h\u00e4ufigsten Ausnahmen, die von Samuel &amp; Mietchen identifiziert wurden und f\u00fcr 41,65% aller Ausf\u00fchrungen verantwortlich sind Ausf\u00e4lle).<\/p>\n<p><strong>So erfassen Sie Ihre Umgebung:<\/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>Entscheidungsregel: Conda vs. Pip vs. Docker?<\/strong> F\u00fcr die meisten Computational Science Workflows in Python ist Conda die beste Balance zwischen Praktikabilit\u00e4t und Vollst\u00e4ndigkeit. Es behandelt sowohl Python-Pakete als auch Nicht-Python-Abh\u00e4ngigkeiten (z. B. HDF5-Bibliotheken oder MPI-Runtimes). Docker bietet vollst\u00e4ndige Isolation auf Kosten der Komplexit\u00e4t. Verwenden Sie Docker, wenn Sie einen Workflow f\u00fcr Forscher auf verschiedenen Betriebssystemen freigeben m\u00fcssen, die Conda nicht installieren k\u00f6nnen oder wenn Ihr Workflow von Bibliotheken auf Systemebene abh\u00e4ngt.<\/p>\n<p>Die Repro-Checkliste (Hornung et al., 2026) empfiehlt explizit die Angabe von Softwareversionen in der Readme und die Bereitstellung einer Umgebungsspezifikationsdatei. Sie beachten: &#8222;F\u00fcr die langfristige Reproduzierbarkeit muss auch die Softwareumgebung klar dokumentiert werden, einschlie\u00dflich der Versionen aller verwendeten zus\u00e4tzlichen Pakete.&#8220;<\/p>\n<h3>4. Persistente Datenfreigabe<\/h3>\n<p>Datenfreigabe geht Hand in Hand mit Code-Sharing. Ihre Simulationsausgaben &#8211; Mesh-Konfigurationen, Feldarrays, Zeitreihen von Variablen &#8211; sollten in einem Repository hinterlegt werden, das einen persistenten Bezeichner (DOI) zuweist.<\/p>\n<p>F\u00fcr Simulationsdaten bedeutet dies normalerweise:<\/p>\n<ul>\n<li><strong>Rohsimulationsausgaben<\/strong> (Feld-Arrays, Mesh-Dateien, Zeitreihen) neben dem Code hinterlegt<\/li>\n<li><strong>Zwischenergebnisse<\/strong> f\u00fcr rechenintensive Simulationen (siehe Empfehlung der Repro-Checkliste zu Zwischenergebnissen)<\/li>\n<li><strong>Synthetische Testdaten<\/strong> Wenn Ihre realen Daten aufgrund von Datenschutz oder gesetzlichen Einschr\u00e4nkungen nicht \u00f6ffentlich geteilt werden k\u00f6nnen<\/li>\n<\/ul>\n<p>Die Fair-Prinzipien (Wilkinson et al., 2016) bieten einen Rahmen f\u00fcr das Datenmanagement \u2013 siehe <a href=\"https:\/\/www.go-fair.org\/fair-principles\/\" rel=\"nofollow\">Die GO-Fair-Leitlinien zum Thema Grunds\u00e4tze <\/a> f\u00fcr die offiziellen Leitlinien zu Auffindbarkeit, Zug\u00e4nglichkeit, Interoperabilit\u00e4t und Wiederverwendbarkeit.<\/p>\n<ul>\n<li><strong>Finderbar:<\/strong> Zuweisen von persistenten Bezeichnern (DOIs) und umfassende Metadaten<\/li>\n<li><strong>Zugriff:<\/strong> Speichern Sie Daten in Repositories mit offenen Protokollen (Zenodo, Figshare, Material Data Facility)<\/li>\n<li><strong>Interoperable:<\/strong> Verwenden Sie Standardformate (HDF5, NetCDF, JSON) und formale Vokabulare<\/li>\n<li><strong>Wiederverwendbar:<\/strong> Dokumente Provenienz, Lizenzierung und Datenkarten dokumentieren<\/li>\n<\/ul>\n<p>F\u00fcr Materialwissenschaften und Computerphysik sind Plattformen wie die <a href=\"https:\/\/www.materialscloud.org\/\" rel=\"nofollow\">Materials Cloud<\/a> und die <a href=\"https:\/\/nomad-lab.eu\/nomad-lab\/\" rel=\"nofollow\">nomad repository<\/a> Bietet eine faire Infrastruktur f\u00fcr Simulationsdaten, komplett mit Metadatenschemas und API-Zugriff.<\/p>\n<h3>5. Dokumentation<\/h3>\n<p>Die Repro-Checkliste legt gro\u00dfen Wert auf die Dokumentation \u2013 nicht als nachtr\u00e4gliche, sondern als struktureller Bestandteil reproduzierbarer Arbeit. Eine Readme-Datei sollte:<\/p>\n<ul>\n<li>Listen Sie jede Datei im Repository und ihren Zweck auf<\/li>\n<li>Geben Sie die genaue Ausf\u00fchrungsreihenfolge an (welche Skripte erzeugen welche Abbildungen oder Tabellen)<\/li>\n<li>Stellen Sie ungef\u00e4hre Laufzeiten und Hardwareanforderungen<\/li>\n<li>Verweisen Sie auf die entsprechenden Abbildungs- und Tabellennummern aus der Publikation<\/li>\n<\/ul>\n<p>F\u00fcr Simulations-Workflows bedeutet die Dokumentation auch, Ihre numerischen Methoden zu dokumentieren. Wenn Sie einen benutzerdefinierten Solver oder ein FIPY-Skript mit Operator-Splitting schreiben, <a href=\"https:\/\/matforge.org\/operator-splitting-strang-splitting-and-imex-schemes-for-pde-solvers\/\">Strang-Splitting, und IMEX Schemes f\u00fcr PDE-Solver<\/a>, Sie m\u00fcssen dokumentieren:<\/p>\n<ul>\n<li>Das Diskretisierungsschema<\/li>\n<li>Die Zeitintegrationsmethode<\/li>\n<li>Die Solvertoleranzen<\/li>\n<li>Die Konvergenzkriterien<\/li>\n<\/ul>\n<p>Wenn ein anderer Forscher die numerische Methode hinter Ihren Ergebnissen nicht verstehen kann, kann er nicht bewerten, ob die Ergebnisse g\u00fcltig sind &#8211; oder sie auf einem anderen L\u00f6ser reproduzieren.<\/p>\n<h2>Die Repro-Checkliste als Selbstaudit-Tool<\/h2>\n<p>Die Repro-Checkliste (Hornung et al., 2026), ver\u00f6ffentlicht in <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>), wurde von einem internationalen Konsortium von Journal-Reproduzierbarkeitsredakteuren entwickelt, um eine pr\u00e4gnante, umsetzbare Rahmen f\u00fcr reproduzierbare Forschung. W\u00e4hrend es disziplin\u00fcbergreifend gilt, sind mehrere Elemente f\u00fcr die rechnergest\u00fctzte Simulationsarbeit besonders relevant.<\/p>\n<p>So verwenden Sie die Repro-Checkliste als Selbstaudit vor der Einreichung:<\/p>\n<h3>A. Struktur und Readme<\/h3>\n<p><strong>Check:<\/strong> Haben Sie ein Verzeichnis <code>data\/<\/code>, <code>code\/<\/code> und <code>results\/<\/code> (oder <code>output\/<\/code>)? Listet Ihre Readme-Datei jede Datei auf, gibt die Ausf\u00fchrungsreihenfolge an und verweist auf die entsprechenden Zahlen jedes Skripts?<\/p>\n<p><strong>H\u00e4ufiger Fehler:<\/strong> Forscher organisieren ihren Simulationscode in einem einzigen Ordner ohne Struktur. Eine Readme-Datei wird oft ganz weggelassen. Ohne eine Readme kann ein Reviewer nicht wissen, welches Skript welche Figur produziert &#8211; und er kann die Skripte in der falschen Reihenfolge ausf\u00fchren und v\u00f6llig unterschiedliche Ergebnisse erzielen.<\/p>\n<h3>B. Umgebungsspezifikation<\/h3>\n<p><strong>Check:<\/strong> Ist Ihr <code>environment.yml<\/code> oder <code>requirements.txt<\/code> im Archiv enthalten? Sind Python- und Paketversionen explizit angegeben?<\/p>\n<p><strong>H\u00e4ufiger Fehler:<\/strong> Der h\u00e4ufigste Grund, warum Notebooks fehlschlagen, fehlen oder widerspr\u00fcchliche Abh\u00e4ngigkeiten. Samuel &amp; Mietchen stellte fest, dass 34,32% der Notebooks beim Installationsschritt der Abh\u00e4ngigkeit ausfielen &#8211; obwohl keine der Dateien fehlerhaft war. Die Hauptursache sind h\u00e4ufig nicht spezifizierte oder veraltete Paketversionen.<\/p>\n<h3>C. Datenverf\u00fcgbarkeit<\/h3>\n<p><strong>Check:<\/strong> Kann ein Reviewer Ihren Code mit den bereitgestellten Daten von Grund auf neu ausf\u00fchren? Wenn Sie echte Daten nicht teilen k\u00f6nnen, haben Sie synthetische Daten aufgenommen, die die Berechnungsstruktur nachahmen?<\/p>\n<p><strong> H\u00e4ufiger Fehler: <\/strong> Wenn die realen Daten nicht geteilt werden k\u00f6nnen (aufgrund von rechtlichen, ethischen oder institutionellen Einschr\u00e4nkungen), sollte der Code weiterhin mit synthetischen Daten ausgef\u00fchrt werden. Die Repro-Checkliste empfiehlt, synthetische Daten mit Paketen wie <code>synthpop<\/code> oder <code>simdata<\/code> in R oder <code>numpy.random<\/code> in Python zu generieren.<\/p>\n<h3>D. Deterministische Ausf\u00fchrung<\/h3>\n<p><strong>Check:<\/strong> Sind Zufallsgenerator-Seeds explizit gesetzt? Werden f\u00fcr parallele Simulationen reproduzierbare Zufallszahlenstr\u00f6me verwendet?<\/p>\n<p><strong> H\u00e4ufiger Fehler: <\/strong> Dies ist eine der h\u00e4ufigsten und subtilsten Ursachen der Unreproduzierbarkeit. Eine Simulation, bei der <code>numpy.random.randn()<\/code> ohne Setzen eines Seeds verwendet wird, erzeugt bei jedem Lauf unterschiedliche Ergebnisse \u2013 und selbst bei einem Seed k\u00f6nnen parallele Arbeiter \u00fcberlappende zuf\u00e4llige Str\u00f6me erzeugen. Die Repro-Checkliste empfiehlt die Verwendung der <code>SeedSequence<\/code>-basierten Generierung von Numpy f\u00fcr parallele, deterministische Zufallsstr\u00f6me.<\/p>\n<pre><code class=\"language-python\">from numpy.random import default_rng\nrng = default_rng(42)  # Fixed seed\n<\/code><\/pre>\n<p>Verwenden Sie f\u00fcr parallele Simulationen <code>numpy.random.SeedSequence<\/code>, um unabh\u00e4ngige, reproduzierbare Str\u00f6me zu generieren:<\/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. Zwischenergebnisse<\/h3>\n<p><strong>Check:<\/strong> Werden bei rechnerisch intensiven Simulationen (z. B. Parameter-Sweep, Monte-Carlo-Studien) Zwischenergebnisse gespeichert, damit die Rezensenten bestimmte Zahlen reproduzieren k\u00f6nnen, ohne die vollst\u00e4ndige Analyse erneut durchzuf\u00fchren?<\/p>\n<p><strong>Allgemeiner Fehler:<\/strong> Wenn eine Simulation Stunden oder Tage dauert, k\u00f6nnen die Pr\u00fcfer sie nicht von Grund auf neu ausf\u00fchren. In der Repro-Checkliste wird empfohlen, Zwischenergebnisse (Rohausgabe vor der endg\u00fcltigen Abbildung der Abbildung) zu speichern, damit die Pr\u00fcfer bestimmte Ausgaben schnell \u00fcberpr\u00fcfen k\u00f6nnen. Dies ist besonders wichtig f\u00fcr Simulationsstudien mit parallelen Replikationen.<\/p>\n<h2>Schritt-f\u00fcr-Schritt-Workflow vom Simulationsdesign bis zur Einreichung<\/h2>\n<p>Dieser Abschnitt enth\u00e4lt einen konkreten Workflow, der die f\u00fcnf S\u00e4ulen und die Repro-Checkliste in eine wiederholbare Produktionspipeline integriert.<\/p>\n<h3>Phase 1: Simulationsdesign und Codeorganisation<\/h3>\n<ol>\n<li><strong>Projektstruktur erstellen:<\/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>Versionskontrolle:<\/strong> Das Repository initialisieren und die Struktur festlegen.<\/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: Simulationsausf\u00fchrung und Dokumentation<\/h3>\n<ol start=\"3\">\n<li><strong>Schreiben Sie die Simulation in einem Leseformat.<\/strong> Verwenden Sie Jupyter-Notizb\u00fccher oder Skriptdateien mit umfangreichen Kommentaren. Dokumentieren Sie jede numerische Methode, jede Wahl des Solvers, jede Randbedingung.<\/li>\n<li><strong> Setzen Sie deterministische Seeds. <\/strong> Schlie\u00dfen Sie <code>np.random.seed(42)<\/code>  (oder ein ausgefeilteres <code>SeedSequence<\/code>-Setup f\u00fcr parallele Ausf\u00fchrungen) oben in jedem Skript ein.<\/li>\n<li><strong>Erfassen Sie die Umgebung.<\/strong> F\u00fchren Sie <code>session_info.show()<\/code> oder <code>conda env export<\/code> w\u00e4hrend eines erfolgreichen Laufs aus und nehmen Sie die Ausgabe in die Readme auf.<\/li>\n<li><strong>Zwischenergebnisse speichern.<\/strong> Wenn Ihre Simulation rechenintensiv ist, speichern Sie Rohausgaben an Pr\u00fcfpunkten, damit die Pr\u00fcfer bestimmte Zahlen \u00fcberpr\u00fcfen k\u00f6nnen, ohne alles erneut auszuf\u00fchren.<\/li>\n<\/ol>\n<h3>Phase 3: Validierung und \u00dcberpr\u00fcfung<\/h3>\n<ol start=\"7\">\n<li><strong>Konvergenzstudien durchf\u00fchren.<\/strong> Stellen Sie sicher, dass Ihre Ergebnisse wie erwartet konvergieren, wenn Sie das Netz verfeinern. Dies ist Teil der \u00dcberpr\u00fcfung &#8211; zu \u00fcberpr\u00fcfen, ob die numerische L\u00f6sung mit abnehmender Diskretisierungsparameter der genauen L\u00f6sung n\u00e4hert. Einen praktischen Rahmen finden Sie in unserem Leitfaden zu <a href=\"\/validation-and-verification-for-pde-simulations-practical-framework\/\">Validierung und Verifikation f\u00fcr PDE-Simulationen <\/a>.<\/li>\n<li><strong>Einheitstests schreiben. <\/strong> Testen Sie einzelne Funktionen, Randbedingungen und L\u00f6ser. Wenn Sie FIPY verwenden, kann dies das Testen der <code>CellVariable<\/code>-Werte einschlie\u00dfen, die korrekt initialisiert oder <code>DiffusionTerm<\/code> korrekt diskretisiert wird. Weitere Informationen finden Sie in unserem Artikel \u00fcber <a href=\"https:\/\/matforge.org\/python-testing-patterns-for-scientific-code-beyond-pytest-basics\/\">Pr\u00fcfmuster f\u00fcr wissenschaftlichen Code <\/a>.<\/li>\n<\/ol>\n<h3>Phase 4: Archivierung und Einreichung<\/h3>\n<ol start=\"9\">\n<li><strong>Archiv auf Zenodo.<\/strong> Dr\u00fccken Sie das endg\u00fcltige Commit auf GitHub und verkn\u00fcpfen Sie es mit Zenodo f\u00fcr die DOI-Zuweisung.<\/li>\n<li><strong>Repro-Checklisten-Audit ausf\u00fchren:<\/strong>\n<ul>\n<li>Readme-Datei mit Ausf\u00fchrungsreihenfolge?<\/li>\n<li>Umweltspezifikation enthalten?<\/li>\n<li>Daten verf\u00fcgbar (echt oder synthetisch)?<\/li>\n<li>deterministische Seeds-Set?<\/li>\n<li>Zwischenergebnisse gespeichert?<\/li>\n<\/ul>\n<\/li>\n<li><strong>Senden Sie mit dem Code und den Daten DOI<\/strong> in der Datenverf\u00fcgbarkeitserkl\u00e4rung Ihres Manuskripts. Viele Zeitschriften erfordern dies jetzt bei der Einreichung oder \u00dcberarbeitung.<\/li>\n<\/ol>\n<h2>H\u00e4ufige Fallstricke und wie man sie vermeidet<\/h2>\n<h3>Falle 1: Absolute Wege<\/h3>\n<p>Wenn Sie absolute Pfade wie <code>\/home\/user\/simulations\/output\/data.csv<\/code>  in Ihrem Code verwenden, wird die Reproduzierbarkeit auf einer anderen Maschine als dem, auf dem Sie das Projekt entwickelt haben, unterbrochen.<\/p>\n<p><strong>Fix:<\/strong> Relative Pfade aus dem Projektstamm verwenden. Wenn Ihre Skripte Daten in einem <code>data\/<\/code>-Verzeichnis erwarten, verweisen Sie auf <code>data\/input.csv<\/code>, unabh\u00e4ngig davon, wo das Projekt geklont wird.<\/p>\n<h3>Fallfall 2: Unplanm\u00e4\u00dfige Abh\u00e4ngigkeiten<\/h3>\n<p>Ein Notebook importiert <code>scipy.stats<\/code>, erkl\u00e4rt jedoch nicht, dass <code>scipy<\/code> erforderlich ist. Wenn ein anderer Forscher das Notebook ausf\u00fchrt, hat er m\u00f6glicherweise eine inkompatible <code>scipy<\/code>  -Version &#8211; oder verpasst es v\u00f6llig.<\/p>\n<p><strong>Fix:<\/strong> Schlie\u00dfen Sie immer ein <code>requirements.txt<\/code> oder <code>environment.yml<\/code> ein und \u00fcberpr\u00fcfen Sie es, indem Sie die lokale Umgebung l\u00f6schen und vor der Archivierung von Grund auf neu installieren.<\/p>\n<h3>Fallfall 3: Fehlende Readme<\/h3>\n<p>Ohne Readme k\u00f6nnen die Rezensenten nicht wissen:<\/p>\n<ul>\n<li>Welches Skript produziert welche Figur<\/li>\n<li>Welche Skripte der Reihenfolge sollten ausgef\u00fchrt werden?<\/li>\n<li>Welche ungef\u00e4hre Laufzeit zu erwarten<\/li>\n<li>Welche Python-Version oder Paketversionen wurden verwendet<\/li>\n<\/ul>\n<p><strong>Fix:<\/strong> Schreiben Sie eine Readme, die jede Datei, jeden Ausf\u00fchrungsschritt und jede Laufzeitsch\u00e4tzung auflistet. Verweisen Sie auf die Abbildungsnummern aus Ihrer Publikation.<\/p>\n<h3>Fallfall 4: Python-Version Drift<\/h3>\n<p>Python 3.6 war Sonnenuntergang im Jahr 2021; Python 3.7 war im Juni 2023 Sonnenuntergang. Viele Notizb\u00fccher im Samuel &amp; Mietchen Corpus verwendet veraltete Python-Versionen und die Nicht\u00fcbereinstimmung zwischen der Version bei der Ver\u00f6ffentlichung und der verf\u00fcgbaren Version, wenn die Reproduktionsversuche die Reproduktion versuchen, verursacht subtile Inkompatibilit\u00e4ten.<\/p>\n<p><strong>Fix:<\/strong> Verwenden Sie eine aktuelle, aktiv unterst\u00fctzte Python-Version und geben Sie sie in Ihrer Umgebungsdatei an. Die Repro-Checkliste empfiehlt, die Python-Version in der Readme zu dokumentieren.<\/p>\n<h3>Fallstricke 5: Nicht-deterministische Zufallszahlen<\/h3>\n<p>Eine Simulation, die zuf\u00e4llige Anfangsbedingungen ohne Fixierung des Seeds erzeugt, erzeugt jedes Mal unterschiedliche Ausgaben. Selbst mit einem Saatgut k\u00f6nnen parallele Arbeiter \u00fcberlappende Str\u00f6me erzeugen.<\/p>\n<p><strong>Fix:<\/strong> Setzen Sie einen festen Startwert f\u00fcr alle Zufallsoperationen. Verwenden Sie <code>numpy.random.SeedSequence<\/code> f\u00fcr die Parallel-Sicher-Reproduzierbarkeit. Die Repro-Checkliste empfiehlt dieses Muster explizit.<\/p>\n<h2>Wann w\u00e4hlen Sie Container im Vergleich zu leichten Umgebungen?<\/h2>\n<p>F\u00fcr die meisten Simulations-Workflows ist ein leichtes Umgebungsmanagement (Conda, PIP, UV) ausreichend. Sie erhalten Reproduzierbarkeit, indem Sie genaue Paketversionen angeben \u2013 und Pr\u00fcfer k\u00f6nnen die Umgebung mit einem einzigen Befehl installieren.<\/p>\n<p><strong>W\u00e4hlen Sie Conda \/ UV \/ Pip, wenn: <\/strong><\/p>\n<ul>\n<li>Sie arbeiten mit Python-basierten Solvern (FIPY, OpenPDE, FENICS)<\/li>\n<li>Sie haben die Kontrolle \u00fcber die Rechenumgebung an Ihrem Ende<\/li>\n<li>Sie m\u00f6chten einen leichten, tragbaren Workflow<\/li>\n<\/ul>\n<p><strong>W\u00e4hlen Sie Docker, wenn:<\/strong><\/p>\n<ul>\n<li>Sie m\u00fcssen einen Workflow f\u00fcr Forscher freigeben, die Conda oder bestimmte Bibliotheken auf Systemebene nicht installieren k\u00f6nnen<\/li>\n<li>Ihr Workflow h\u00e4ngt von C++\/Fortran-Solvern ab, die kompiliert werden m\u00fcssen<\/li>\n<li>Sie reichen ein Journal ein, das containerisierte Reproduzierbarkeit erfordert (z. B. <em>Computo<\/em>).<\/li>\n<\/ul>\n<p>F\u00fcr die \u00fcberwiegende Mehrheit der computergest\u00fctzten Materialien ist Conda oder UV die bessere Wahl &#8211; sie ist einfacher, schneller und ausreichend f\u00fcr die Reproduzierbarkeit, die Rezensenten und Leser ben\u00f6tigen.<\/p>\n<h2>Ein praktischer Hinweis zu den Erwartungen der Zeitschriften<\/h2>\n<p>Die Repro-Checkliste dokumentiert die Heterogenit\u00e4t von Zeitschriftenreproduzierbarkeitsrichtlinien. Einige Zeitschriften (wie <em>Biometric Journal <\/em> oder <em> Journal der American Statistical Association <\/em>) erfordern eine aktive Reproduzierbarkeitspr\u00fcfung durch engagierte Redakteure. Andere (wie <em> das BMJ <\/em>) ben\u00f6tigen Code-Einreichung, f\u00fchren jedoch keine unabh\u00e4ngigen Ausf\u00fchrungspr\u00fcfungen durch.<\/p>\n<p>F\u00fcr die rechnergest\u00fctzte Simulationsarbeit ist die Mindesterwartung f\u00fcr die meisten Zeitschriften:<\/p>\n<ul>\n<li><strong>Verf\u00fcgbarkeit des Codes:<\/strong> Der Analysecode sollte als erg\u00e4nzende Datei oder in einem offenen Repository (Github, Zenodo) bereitgestellt werden.<\/li>\n<li><strong>Datenverf\u00fcgbarkeit:<\/strong> Die zur Analyse verwendeten Daten sollten \u00f6ffentlich zug\u00e4nglich oder gerechtfertigt sein<\/li>\n<li><strong>Umgebungsspezifikation:<\/strong> Softwareversionen und Pakete sollten dokumentiert werden<\/li>\n<\/ul>\n<p>Dies ist der Boden &#8211; nicht die Decke. Nach den f\u00fcnf S\u00e4ulen und der Repro-Checkliste positionieren Sie Ihre Arbeit \u00fcber dem Boden und signalisieren, dass Sie die Reproduzierbarkeit ernst nehmen.<\/p>\n<h2>N\u00e4chste Schritte f\u00fcr Ihren Simulationsworkflow<\/h2>\n<p>Wenn Sie mit reproduzierbaren Simulationspraktiken noch nicht vertraut sind, beginnen Sie mit den drei wirkungsvollsten \u00c4nderungen:<\/p>\n<ol>\n<li><strong>Readme-Datei<\/strong> zu Ihrem Projekt mit Dateibeschreibungen und Ausf\u00fchrungsreihenfolge hinzuf\u00fcgen<\/li>\n<li><strong>Exportieren Sie Ihre Umgebung<\/strong> (<code>conda env export<\/code> oder <code>uv export<\/code>) und nehmen Sie sie in Ihr Archiv auf<\/li>\n<li><strong>Setzen Sie zuf\u00e4llige Seeds<\/strong> in jedem Simulationsskript und verwenden Sie <code>SeedSequence<\/code> f\u00fcr parallele L\u00e4ufe<\/li>\n<\/ol>\n<p>Allein diese drei \u00c4nderungen werden 80% der von Samuel &amp; Mieten.<\/p>\n<p>Wenn Sie Hilfe beim Entwerfen eines reproduzierbaren Simulationsworkflows ben\u00f6tigen &#8211; von der Notebook-Dokumentation \u00fcber die Code-Archivierung bis zur \u00dcbermittlung von Zeitschriften -, kann unser Team Beratung zum Workflow-Design, Umgebungsspezifikation und gerechtfertigter Datenarchivierung anbieten. Kontaktieren Sie uns, um Ihr spezifisches Simulationsprojekt zu besprechen. Der Aufbau einer nachhaltigen Forschungssoftware-Community (<a href=\"\/building-sustainable-research-software-communities\/\"> Wie wir uns der Community-Wurzelentwicklung n\u00e4hern <\/a>) ist Teil dieses Prozesses: Reproduzierbarkeit verbessert sich, wenn das gesamte Team gemeinsame Standards teilt.<\/p>\n<h2>Schlussfolgerung<\/h2>\n<p>Reproduzierbare Ver\u00f6ffentlichungspraktiken f\u00fcr Simulationsergebnisse sind kein optionales Add-On &#8211; sie sind eine Voraussetzung f\u00fcr eine glaubw\u00fcrdige wissenschaftliche Kommunikation. Die f\u00fcnf S\u00e4ulen (Litenerating-Programmierung, Versionskontrolle, Umgebungsmanagement, Datenaustausch, Dokumentation) und die Repro-Checkliste bilden eine strukturierte, umsetzbare Grundlage f\u00fcr die Reproduzierbarkeit, die f\u00fcr alle rechnerischen Disziplinen gilt.<\/p>\n<p>Die Skala der Reproduzierbarkeitsl\u00fccke &#8211; 12,4% erfolgreiche identische Reproduktion im Samuel &amp; Mietchen Study \u2013 ist ein Aufruf zum Handeln. Jeder Simulationsworkflow, der eine Readme, eine Umgebungsdatei und deterministische Seeds enth\u00e4lt, schlie\u00dft einen messbaren Teil dieser L\u00fccke. Die Investition ist bescheiden: Stunden, nicht Monate. Die R\u00fcckkehr ist die M\u00f6glichkeit f\u00fcr jeden Leser, Rezensenten oder zuk\u00fcnftigen Forscher, Ihre Ergebnisse unabh\u00e4ngig zu \u00fcberpr\u00fcfen.<\/p>\n<p>Reproduzierbarkeit ist f\u00fcr den Computerforscher nicht nur eine methodologische Tugend, sondern die Grundlage wissenschaftlicher Glaubw\u00fcrdigkeit. Die f\u00fcnf S\u00e4ulen geben Ihnen einen Rahmen. Die Repro-Checkliste gibt Ihnen eine Checkliste. Die Werkzeuge (Git, Conda, Zenodo) sind verf\u00fcgbar. Was bleibt, ist die Entscheidung, sie zu verwenden.<\/p>\n<h2 id=\"faq\">Fragen und Antworten<\/h2>\n<h3>Was ist das F\u00fcnf-Pillaren-Rahmen f\u00fcr Reproduzierbarkeit?<\/h3>\n<p>Die f\u00fcnf S\u00e4ulen, vorgeschlagen von Ziemann et al. (2023) sind Programmierkenntnisse, Code-Versionskontrolle, Kontrolle der Computerumgebung, persistente Datenfreigabe und Dokumentation. Sie bilden einen strukturierten Rahmen f\u00fcr die Dokumentation und Weitergabe reproduzierbarer Rechenworkflows.<\/p>\n<h3>Was ist die Repro-Checkliste?<\/h3>\n<p>Die Repro-Checkliste, ver\u00f6ffentlicht von Hornung et al. (2026) ist ein pr\u00e4gnantes, multidisziplin\u00e4res Instrument zur Erstellung reproduzierbarer Analysen. Es umfasst Code- und Datenstruktur, Readme-Anforderungen, Umgebungsspezifikation, Datenverf\u00fcgbarkeit, deterministische Zufallszahlengenerierung und Zwischenergebnisse.<\/p>\n<h3>Warum scheitern Jupyter-Notebooks so oft?<\/h3>\n<p>Samuel &amp; Mietchen (2024) stellten fest, dass 87,6% der Python-basierten Notebooks w\u00e4hrend der automatischen Wiederholung zu Ausnahmen f\u00fchrten. Die Hauptursachen sind fehlende oder widerspr\u00fcchliche Abh\u00e4ngigkeiten (<code>ModuleNotFoundError<\/code> und <code>ImportError<\/code>), unaufgel\u00f6ste Dateipfade (<code>FileNotFoundError<\/code>) und nicht-deterministische Zufallszahlengenerierung.<\/p>\n<h3>Wie w\u00e4hle ich zwischen Conda und Docker?<\/h3>\n<p>Verwenden Sie Conda (oder UV) f\u00fcr die meisten Python-basierten Simulations-Workflows &#8211; es ist einfacher, schneller und ausreichend, um genaue Paketversionen festzulegen. Verwenden Sie Docker, wenn Sie eine vollst\u00e4ndige Isolation zwischen Betriebssystemen ben\u00f6tigen oder wenn Ihr Workflow von kompilierten C++\/Fortran-Solvern abh\u00e4ngt.<\/p>\n<h3>Wie kann ich meine Simulationsergebnisse reproduzierbar machen, ohne Rohdaten zu teilen?<\/h3>\n<p>Generieren Sie synthetische Daten, die die Rechenstruktur Ihrer realen Daten nachahmen. Die Repro-Checkliste empfiehlt die Verwendung von Paketen wie <code>synthpop<\/code> oder <code>simdata<\/code> in R oder <code>numpy.random<\/code> in Python, um synthetische Testdaten zu erstellen, die eine unabh\u00e4ngige \u00dcberpr\u00fcfung Ihres Analysecodes erm\u00f6glichen.<\/p>\n","protected":false,"raw":"<ul>\n<li>Jupyter-Notebooks werden nur ~ 12,4% der F\u00e4lle erfolgreich ausgef\u00fchrt, wenn Abh\u00e4ngigkeiten deklariert werden. Explicit Environment Management schlie\u00dft diese L\u00fccke<\/li>\n<li>Das F\u00fcnf-S\u00e4ulen-Framework von Ziemann et al. (2023) bietet eine strukturierte Basislinie f\u00fcr Dokumentation, Versionskontrolle, Umgebungsmanagement, Datenaustausch und faire Einhaltung<\/li>\n<li>Die Repro-Checkliste (Hornung et al., 2026) bietet ein praktisches Self-Audit-Tool f\u00fcr Ordnerstruktur, Umgebungsspezifikation, Datenverf\u00fcgbarkeit und deterministische Ausf\u00fchrung<\/li>\n<li>H\u00e4ufige Fallstricke wie absolute Pfade, unspezifische Abh\u00e4ngigkeiten und fehlende Readmes sind die Hauptursachen f\u00fcr Reproduzierbarkeitsfehler in der Computerforschung<\/li>\n<li>Ein Schritt-f\u00fcr-Schritt-Workflow vom Simulationsdesign \u00fcber Notebook-Dokumentation, Code-Archivierung und Journal-Einreichung bietet eine wiederholbare Produktionspipeline<\/li>\n<\/ul>\n<h2>Die Reproduzierbarkeitsl\u00fccke in der Computerforschung<\/h2>\n<p>Wenn Sie ein simulationsbasiertes Papier einreichen, \u00fcberpr\u00fcfen die Pr\u00fcfer Ihre Methodik, Randbedingungen, Konvergenzstudien und den Vergleich mit analytischen Benchmarks. Aber sie f\u00fchren Ihren Code selten erneut aus. Die in Ihren Abbildungen und Tabellen dargestellten Ergebnisse werden zum ver\u00f6ffentlichten Datensatz - und wenn diese Ergebnisse durch einen nicht reproduzierbaren Workflow generiert wurden, beruht die Publikation auf einer nicht \u00fcberpr\u00fcften Grundlage.<\/p>\n<p>Dies ist kein theoretisches Problem. Samuel &amp; Mietchen (2024) analysierte 15.817 Python-basierte Jupyter-Notebooks aus biomedizinischen Ver\u00f6ffentlichungen, die in PubMed Central indexiert wurden. Von den Notebooks, in denen alle deklarierten Abh\u00e4ngigkeiten erfolgreich installiert werden konnten, f\u00fchrten <strong>87,6% zu Ausnahmen<\/strong> w\u00e4hrend der automatischen Wiederholung. Nur 1.203 Notebooks wurden fehlerfrei abgeschlossen - und von diesen ergaben 324 Ergebnisse, die sich von den urspr\u00fcnglich gemeldeten Ausgaben unterschieden. Die restlichen 879 Notebooks lieferten identische Ergebnisse. Diese 5,56%ige Erfolgsquote bei identischer Reproduktion war tats\u00e4chlich eine Verbesserung gegen\u00fcber dem ersten Lauf im Jahr 2021 (5,88%), was darauf hinweist, dass die letzten Notebooks tendenziell etwas besser sind - aber die L\u00fccke bleibt enorm.<\/p>\n<p>Was erschwert Reproduzierbarkeit f\u00fcr Computerwissenschaftler? Sie arbeiten mit numerischen Solvern, Netzverfeinerungen, Zeitintegrationsschemata und Kopplungsstrategien, die durch Ketten von Gleitkomma-Operationen Outputs erzeugen. Ein einzelner Python-Versionssto\u00df, ein ge\u00e4nderter Standardparameter in <code>numpy<\/code> oder <code>scipy<\/code> oder ein relativer Pfad, der auf einem anderen Computer nicht aufgel\u00f6st wird, k\u00f6nnen jede Abbildung und Tabelle in Ihrem Papier ung\u00fcltig machen. Das Problem besteht darin, dass Ihr Workflow eine adaptive Netzverfeinerung, benutzerdefinierte Quellbegriffe oder nicht triviale Randbedingungen umfasst - genau die Art von fortgeschrittenen Mustern, die in <a href=\"\/how-fipy-handles-meshes-and-grid-structures\/\">FIPY-Ressourcen auf dieser Site dokumentiert sind <\/a>.<\/p>\n<h2>F\u00fcnf S\u00e4ulen reproduzierbarer Computerforschung<\/h2>\n<p>Ziemann et al. (2023) formalisierten die <strong> S\u00e4ulen der reproduzierenden Reproduzierbarkeit <\/strong> als Rahmen f\u00fcr die Dokumentation und den Austausch reproduzierbarer Workflows. Diese S\u00e4ulen, die urspr\u00fcnglich im Kontext der Bioinformatik entwickelt wurden, gelten jedoch gleicherma\u00dfen f\u00fcr materialwissenschaftliche Simulationen, computergest\u00fctzte Fluiddynamik und finite-volumenbasierte PDE-Solver.<\/p>\n<h3>1. Programmierkenntnisse<\/h3>\n<p>Literate Programmierung bedeutet, Ihren rechnerischen Workflow als eine Erz\u00e4hlung zu dokumentieren, die Erkl\u00e4rungs- und ausf\u00fchrbaren Code verschachtelt. In den Computerwissenschaften manifestiert sich dies normalerweise als Jupyter-Notizb\u00fccher, R-Markdown-Dokumente oder Python-Skripte mit umfangreichen DocStrings und Inline-Kommentaren.<\/p>\n<p>Das Ziel besteht nicht nur darin, eine reproduzierbare Datei zu erstellen, sondern ein Dokument zu erstellen, das ein mit Ihrer Analyse nicht vertrauter Leser verfolgen, verstehen und erneut ausf\u00fchren kann. Samuel &amp; Mietchen (2024) stellte fest, dass eine klare Korrelation zwischen dem <strong> Markdown-zu-Code-Zellen-Verh\u00e4ltnis <\/strong> und der erfolgreichen Reproduktion: Notebooks mit h\u00f6herem Dokumentationsaufwand (mehr Markdown-Zellen relativ zu Codezellen) sich deutlich h\u00e4ufiger identisch mit der urspr\u00fcnglichen Ausgabe reproduzieren.<\/p>\n<p>F\u00fcr eine Phasenfeldsimulation in FIPY - <a href=\"\/understanding-fipys-core-architecture\/\"> eine Einf\u00fchrung in die Kernarchitektur <\/a> - oder ein Diffusionsmodell mit der <a href=\"\/finite-volume-method-explained-simply\/\"> Finite Volume-Methode <\/a> k\u00f6nnte die literarische Programmierung wie folgt aussehen:<\/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>Wenn Sie diese Notebook-Zelle schreiben, dokumentieren Sie gleichzeitig die Netzaufl\u00f6sung, die PDE und die Randbedingungen \u2013 und f\u00fchren die Simulation aus, die Ihre ver\u00f6ffentlichte Figur erzeugt hat.<\/p>\n<p><strong>Empfehlung:<\/strong> Wenn Ihr Notebook weniger Markdown-Zellen als Codezellen hat, sind Sie unterdokumentiert. Streben Sie mindestens ein Verh\u00e4ltnis von 1: 1 an und idealerweise mehr. Der Samuel &amp; Die Mietchen-Studie ergab, dass die Gruppe mit identischer Reproduktion ein Markdown-to-Code-Verh\u00e4ltnis von 0,73 hatte, w\u00e4hrend die Gruppe mit unterschiedlicher Reproduktion nur 0,49 hatte.<\/p>\n<h3>2. Code-Versionskontrolle und -freigabe<\/h3>\n<p>Die Versionskontrolle ist f\u00fcr Arbeiten in Publikationsqualit\u00e4t nicht optional. Git bietet einen permanenten, abfragef\u00e4higen Verlauf jeder Code\u00e4nderung \u2013 und GitHub, GitLab oder Zenodo archivieren Ihr Repository als zitables Objekt mit einem DOI.<\/p>\n<p>Der Zweck der Versionskontrolle ist zweifach:<\/p>\n<ul>\n<li><strong>Reproduzierbarkeit:<\/strong> Ein spezifischer Commit-Hash (<code>abc1234<\/code>) gepaart mit einem bestimmten Commit-Datum zeigt jedem genau an, welcher Code Ihre ver\u00f6ffentlichten Ergebnisse erzeugt hat.<\/li>\n<li><strong>Accountability:<\/strong> Jede \u00c4nderung des Parameters, jede \u00c4nderung des Quellenbegriffs, jede Bearbeitung der Randbedingung wird aufgezeichnet. Wenn ein Rezensent fragt: \"Warum haben Sie diesen Diffusionskoeffizienten verwendet?\" Sie k\u00f6nnen auf den genauen Commit verweisen, an dem es festgelegt wurde.<\/li>\n<\/ul>\n<p>Archivieren Sie beim Ver\u00f6ffentlichen Ihr Repository auf <a href=\"https:\/\/zenodo.org\/\" rel=\"nofollow\"> zenodo <\/a> (oder GitHub mit aktivierter Zenodo-Integration) und f\u00fcgen Sie das DOI in die Datenverf\u00fcgbarkeitserkl\u00e4rung Ihres Manuskripts ein. Dies verwandelt Ihren Simulationscode in ein permanentes, zitierf\u00e4higes Artefakt. Viele Zeitschriften empfehlen jetzt, Code in Repositories mit DOI-Zuweisung zu hinterlegen - siehe <a href=\"https:\/\/joss.theoj.org\/papers\/tagged\/simulation%20science\" rel=\"nofollow\"> JOSS Simulation Science Guidelines <\/a> f\u00fcr Journalerwartungen zu simulationsbasierten Publikationen.<\/p>\n<p><strong>Entscheidungsregel: GitHub vs. Zenodo?<\/strong> Verwenden Sie GitHub f\u00fcr aktive Entwicklung und Zusammenarbeit. Verwenden Sie Zenodo f\u00fcr die Archivierung. Zenodo weist bei der Verkn\u00fcpfung automatisch ein DOI zu GitHub-Repositories zu, wodurch es zur bevorzugten Wahl f\u00fcr die Ver\u00f6ffentlichung wird. Sie k\u00f6nnen ein Live-GitHub-Repository pflegen und das endg\u00fcltige Commit auf Zenodo zur Einreichung archivieren.<\/p>\n<h3>3. Rechenumgebungssteuerung<\/h3>\n<p>Die Umgebungskontrolle ist die wichtigste technische Intervention, die Sie vornehmen k\u00f6nnen. Wenn ein Reviewer versucht, Ihre Ergebnisse auf einem neuen Computer zu reproduzieren, muss er den genauen Software-Stack kennen: Python-Version, Numpy-Version, FIPY-Version, Solver-Bibliotheken. Ohne diese Informationen r\u00e4t der Rezensent - und das Vermuten erzeugt <code>ModuleNotFoundError<\/code>, <code>ImportError<\/code> und <code>FileNotFoundError<\/code> (die drei h\u00e4ufigsten Ausnahmen, die von Samuel &amp; Mietchen identifiziert wurden und f\u00fcr 41,65% aller Ausf\u00fchrungen verantwortlich sind Ausf\u00e4lle).<\/p>\n<p><strong>So erfassen Sie Ihre Umgebung:<\/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>Entscheidungsregel: Conda vs. Pip vs. Docker?<\/strong> F\u00fcr die meisten Computational Science Workflows in Python ist Conda die beste Balance zwischen Praktikabilit\u00e4t und Vollst\u00e4ndigkeit. Es behandelt sowohl Python-Pakete als auch Nicht-Python-Abh\u00e4ngigkeiten (z. B. HDF5-Bibliotheken oder MPI-Runtimes). Docker bietet vollst\u00e4ndige Isolation auf Kosten der Komplexit\u00e4t. Verwenden Sie Docker, wenn Sie einen Workflow f\u00fcr Forscher auf verschiedenen Betriebssystemen freigeben m\u00fcssen, die Conda nicht installieren k\u00f6nnen oder wenn Ihr Workflow von Bibliotheken auf Systemebene abh\u00e4ngt.<\/p>\n<p>Die Repro-Checkliste (Hornung et al., 2026) empfiehlt explizit die Angabe von Softwareversionen in der Readme und die Bereitstellung einer Umgebungsspezifikationsdatei. Sie beachten: \"F\u00fcr die langfristige Reproduzierbarkeit muss auch die Softwareumgebung klar dokumentiert werden, einschlie\u00dflich der Versionen aller verwendeten zus\u00e4tzlichen Pakete.\"<\/p>\n<h3>4. Persistente Datenfreigabe<\/h3>\n<p>Datenfreigabe geht Hand in Hand mit Code-Sharing. Ihre Simulationsausgaben - Mesh-Konfigurationen, Feldarrays, Zeitreihen von Variablen - sollten in einem Repository hinterlegt werden, das einen persistenten Bezeichner (DOI) zuweist.<\/p>\n<p>F\u00fcr Simulationsdaten bedeutet dies normalerweise:<\/p>\n<ul>\n<li><strong>Rohsimulationsausgaben<\/strong> (Feld-Arrays, Mesh-Dateien, Zeitreihen) neben dem Code hinterlegt<\/li>\n<li><strong>Zwischenergebnisse<\/strong> f\u00fcr rechenintensive Simulationen (siehe Empfehlung der Repro-Checkliste zu Zwischenergebnissen)<\/li>\n<li><strong>Synthetische Testdaten<\/strong> Wenn Ihre realen Daten aufgrund von Datenschutz oder gesetzlichen Einschr\u00e4nkungen nicht \u00f6ffentlich geteilt werden k\u00f6nnen<\/li>\n<\/ul>\n<p>Die Fair-Prinzipien (Wilkinson et al., 2016) bieten einen Rahmen f\u00fcr das Datenmanagement \u2013 siehe <a href=\"https:\/\/www.go-fair.org\/fair-principles\/\" rel=\"nofollow\">Die GO-Fair-Leitlinien zum Thema Grunds\u00e4tze <\/a> f\u00fcr die offiziellen Leitlinien zu Auffindbarkeit, Zug\u00e4nglichkeit, Interoperabilit\u00e4t und Wiederverwendbarkeit.<\/p>\n<ul>\n<li><strong>Finderbar:<\/strong> Zuweisen von persistenten Bezeichnern (DOIs) und umfassende Metadaten<\/li>\n<li><strong>Zugriff:<\/strong> Speichern Sie Daten in Repositories mit offenen Protokollen (Zenodo, Figshare, Material Data Facility)<\/li>\n<li><strong>Interoperable:<\/strong> Verwenden Sie Standardformate (HDF5, NetCDF, JSON) und formale Vokabulare<\/li>\n<li><strong>Wiederverwendbar:<\/strong> Dokumente Provenienz, Lizenzierung und Datenkarten dokumentieren<\/li>\n<\/ul>\n<p>F\u00fcr Materialwissenschaften und Computerphysik sind Plattformen wie die <a href=\"https:\/\/www.materialscloud.org\/\" rel=\"nofollow\">Materials Cloud<\/a> und die <a href=\"https:\/\/nomad-lab.eu\/nomad-lab\/\" rel=\"nofollow\">nomad repository<\/a> Bietet eine faire Infrastruktur f\u00fcr Simulationsdaten, komplett mit Metadatenschemas und API-Zugriff.<\/p>\n<h3>5. Dokumentation<\/h3>\n<p>Die Repro-Checkliste legt gro\u00dfen Wert auf die Dokumentation \u2013 nicht als nachtr\u00e4gliche, sondern als struktureller Bestandteil reproduzierbarer Arbeit. Eine Readme-Datei sollte:<\/p>\n<ul>\n<li>Listen Sie jede Datei im Repository und ihren Zweck auf<\/li>\n<li>Geben Sie die genaue Ausf\u00fchrungsreihenfolge an (welche Skripte erzeugen welche Abbildungen oder Tabellen)<\/li>\n<li>Stellen Sie ungef\u00e4hre Laufzeiten und Hardwareanforderungen<\/li>\n<li>Verweisen Sie auf die entsprechenden Abbildungs- und Tabellennummern aus der Publikation<\/li>\n<\/ul>\n<p>F\u00fcr Simulations-Workflows bedeutet die Dokumentation auch, Ihre numerischen Methoden zu dokumentieren. Wenn Sie einen benutzerdefinierten Solver oder ein FIPY-Skript mit Operator-Splitting schreiben, <a href=\"https:\/\/matforge.org\/operator-splitting-strang-splitting-and-imex-schemes-for-pde-solvers\/\">Strang-Splitting, und IMEX Schemes f\u00fcr PDE-Solver<\/a>, Sie m\u00fcssen dokumentieren:<\/p>\n<ul>\n<li>Das Diskretisierungsschema<\/li>\n<li>Die Zeitintegrationsmethode<\/li>\n<li>Die Solvertoleranzen<\/li>\n<li>Die Konvergenzkriterien<\/li>\n<\/ul>\n<p>Wenn ein anderer Forscher die numerische Methode hinter Ihren Ergebnissen nicht verstehen kann, kann er nicht bewerten, ob die Ergebnisse g\u00fcltig sind - oder sie auf einem anderen L\u00f6ser reproduzieren.<\/p>\n<h2>Die Repro-Checkliste als Selbstaudit-Tool<\/h2>\n<p>Die Repro-Checkliste (Hornung et al., 2026), ver\u00f6ffentlicht in <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>), wurde von einem internationalen Konsortium von Journal-Reproduzierbarkeitsredakteuren entwickelt, um eine pr\u00e4gnante, umsetzbare Rahmen f\u00fcr reproduzierbare Forschung. W\u00e4hrend es disziplin\u00fcbergreifend gilt, sind mehrere Elemente f\u00fcr die rechnergest\u00fctzte Simulationsarbeit besonders relevant.<\/p>\n<p>So verwenden Sie die Repro-Checkliste als Selbstaudit vor der Einreichung:<\/p>\n<h3>A. Struktur und Readme<\/h3>\n<p><strong>Check:<\/strong> Haben Sie ein Verzeichnis <code>data\/<\/code>, <code>code\/<\/code> und <code>results\/<\/code> (oder <code>output\/<\/code>)? Listet Ihre Readme-Datei jede Datei auf, gibt die Ausf\u00fchrungsreihenfolge an und verweist auf die entsprechenden Zahlen jedes Skripts?<\/p>\n<p><strong>H\u00e4ufiger Fehler:<\/strong> Forscher organisieren ihren Simulationscode in einem einzigen Ordner ohne Struktur. Eine Readme-Datei wird oft ganz weggelassen. Ohne eine Readme kann ein Reviewer nicht wissen, welches Skript welche Figur produziert - und er kann die Skripte in der falschen Reihenfolge ausf\u00fchren und v\u00f6llig unterschiedliche Ergebnisse erzielen.<\/p>\n<h3>B. Umgebungsspezifikation<\/h3>\n<p><strong>Check:<\/strong> Ist Ihr <code>environment.yml<\/code> oder <code>requirements.txt<\/code> im Archiv enthalten? Sind Python- und Paketversionen explizit angegeben?<\/p>\n<p><strong>H\u00e4ufiger Fehler:<\/strong> Der h\u00e4ufigste Grund, warum Notebooks fehlschlagen, fehlen oder widerspr\u00fcchliche Abh\u00e4ngigkeiten. Samuel &amp; Mietchen stellte fest, dass 34,32% der Notebooks beim Installationsschritt der Abh\u00e4ngigkeit ausfielen - obwohl keine der Dateien fehlerhaft war. Die Hauptursache sind h\u00e4ufig nicht spezifizierte oder veraltete Paketversionen.<\/p>\n<h3>C. Datenverf\u00fcgbarkeit<\/h3>\n<p><strong>Check:<\/strong> Kann ein Reviewer Ihren Code mit den bereitgestellten Daten von Grund auf neu ausf\u00fchren? Wenn Sie echte Daten nicht teilen k\u00f6nnen, haben Sie synthetische Daten aufgenommen, die die Berechnungsstruktur nachahmen?<\/p>\n<p><strong> H\u00e4ufiger Fehler: <\/strong> Wenn die realen Daten nicht geteilt werden k\u00f6nnen (aufgrund von rechtlichen, ethischen oder institutionellen Einschr\u00e4nkungen), sollte der Code weiterhin mit synthetischen Daten ausgef\u00fchrt werden. Die Repro-Checkliste empfiehlt, synthetische Daten mit Paketen wie <code>synthpop<\/code> oder <code>simdata<\/code> in R oder <code>numpy.random<\/code> in Python zu generieren.<\/p>\n<h3>D. Deterministische Ausf\u00fchrung<\/h3>\n<p><strong>Check:<\/strong> Sind Zufallsgenerator-Seeds explizit gesetzt? Werden f\u00fcr parallele Simulationen reproduzierbare Zufallszahlenstr\u00f6me verwendet?<\/p>\n<p><strong> H\u00e4ufiger Fehler: <\/strong> Dies ist eine der h\u00e4ufigsten und subtilsten Ursachen der Unreproduzierbarkeit. Eine Simulation, bei der <code>numpy.random.randn()<\/code> ohne Setzen eines Seeds verwendet wird, erzeugt bei jedem Lauf unterschiedliche Ergebnisse \u2013 und selbst bei einem Seed k\u00f6nnen parallele Arbeiter \u00fcberlappende zuf\u00e4llige Str\u00f6me erzeugen. Die Repro-Checkliste empfiehlt die Verwendung der <code>SeedSequence<\/code>-basierten Generierung von Numpy f\u00fcr parallele, deterministische Zufallsstr\u00f6me.<\/p>\n<pre><code class=\"language-python\">from numpy.random import default_rng\nrng = default_rng(42)  # Fixed seed\n<\/code><\/pre>\n<p>Verwenden Sie f\u00fcr parallele Simulationen <code>numpy.random.SeedSequence<\/code>, um unabh\u00e4ngige, reproduzierbare Str\u00f6me zu generieren:<\/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. Zwischenergebnisse<\/h3>\n<p><strong>Check:<\/strong> Werden bei rechnerisch intensiven Simulationen (z. B. Parameter-Sweep, Monte-Carlo-Studien) Zwischenergebnisse gespeichert, damit die Rezensenten bestimmte Zahlen reproduzieren k\u00f6nnen, ohne die vollst\u00e4ndige Analyse erneut durchzuf\u00fchren?<\/p>\n<p><strong>Allgemeiner Fehler:<\/strong> Wenn eine Simulation Stunden oder Tage dauert, k\u00f6nnen die Pr\u00fcfer sie nicht von Grund auf neu ausf\u00fchren. In der Repro-Checkliste wird empfohlen, Zwischenergebnisse (Rohausgabe vor der endg\u00fcltigen Abbildung der Abbildung) zu speichern, damit die Pr\u00fcfer bestimmte Ausgaben schnell \u00fcberpr\u00fcfen k\u00f6nnen. Dies ist besonders wichtig f\u00fcr Simulationsstudien mit parallelen Replikationen.<\/p>\n<h2>Schritt-f\u00fcr-Schritt-Workflow vom Simulationsdesign bis zur Einreichung<\/h2>\n<p>Dieser Abschnitt enth\u00e4lt einen konkreten Workflow, der die f\u00fcnf S\u00e4ulen und die Repro-Checkliste in eine wiederholbare Produktionspipeline integriert.<\/p>\n<h3>Phase 1: Simulationsdesign und Codeorganisation<\/h3>\n<ol>\n<li><strong>Projektstruktur erstellen:<\/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>Versionskontrolle:<\/strong> Das Repository initialisieren und die Struktur festlegen.<\/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: Simulationsausf\u00fchrung und Dokumentation<\/h3>\n<ol start=\"3\">\n<li><strong>Schreiben Sie die Simulation in einem Leseformat.<\/strong> Verwenden Sie Jupyter-Notizb\u00fccher oder Skriptdateien mit umfangreichen Kommentaren. Dokumentieren Sie jede numerische Methode, jede Wahl des Solvers, jede Randbedingung.<\/li>\n<li><strong> Setzen Sie deterministische Seeds. <\/strong> Schlie\u00dfen Sie <code>np.random.seed(42)<\/code>  (oder ein ausgefeilteres <code>SeedSequence<\/code>-Setup f\u00fcr parallele Ausf\u00fchrungen) oben in jedem Skript ein.<\/li>\n<li><strong>Erfassen Sie die Umgebung.<\/strong> F\u00fchren Sie <code>session_info.show()<\/code> oder <code>conda env export<\/code> w\u00e4hrend eines erfolgreichen Laufs aus und nehmen Sie die Ausgabe in die Readme auf.<\/li>\n<li><strong>Zwischenergebnisse speichern.<\/strong> Wenn Ihre Simulation rechenintensiv ist, speichern Sie Rohausgaben an Pr\u00fcfpunkten, damit die Pr\u00fcfer bestimmte Zahlen \u00fcberpr\u00fcfen k\u00f6nnen, ohne alles erneut auszuf\u00fchren.<\/li>\n<\/ol>\n<h3>Phase 3: Validierung und \u00dcberpr\u00fcfung<\/h3>\n<ol start=\"7\">\n<li><strong>Konvergenzstudien durchf\u00fchren.<\/strong> Stellen Sie sicher, dass Ihre Ergebnisse wie erwartet konvergieren, wenn Sie das Netz verfeinern. Dies ist Teil der \u00dcberpr\u00fcfung - zu \u00fcberpr\u00fcfen, ob die numerische L\u00f6sung mit abnehmender Diskretisierungsparameter der genauen L\u00f6sung n\u00e4hert. Einen praktischen Rahmen finden Sie in unserem Leitfaden zu <a href=\"\/validation-and-verification-for-pde-simulations-practical-framework\/\">Validierung und Verifikation f\u00fcr PDE-Simulationen <\/a>.<\/li>\n<li><strong>Einheitstests schreiben. <\/strong> Testen Sie einzelne Funktionen, Randbedingungen und L\u00f6ser. Wenn Sie FIPY verwenden, kann dies das Testen der <code>CellVariable<\/code>-Werte einschlie\u00dfen, die korrekt initialisiert oder <code>DiffusionTerm<\/code> korrekt diskretisiert wird. Weitere Informationen finden Sie in unserem Artikel \u00fcber <a href=\"https:\/\/matforge.org\/python-testing-patterns-for-scientific-code-beyond-pytest-basics\/\">Pr\u00fcfmuster f\u00fcr wissenschaftlichen Code <\/a>.<\/li>\n<\/ol>\n<h3>Phase 4: Archivierung und Einreichung<\/h3>\n<ol start=\"9\">\n<li><strong>Archiv auf Zenodo.<\/strong> Dr\u00fccken Sie das endg\u00fcltige Commit auf GitHub und verkn\u00fcpfen Sie es mit Zenodo f\u00fcr die DOI-Zuweisung.<\/li>\n<li><strong>Repro-Checklisten-Audit ausf\u00fchren:<\/strong> <ul> <li>Readme-Datei mit Ausf\u00fchrungsreihenfolge?<\/li> <li>Umweltspezifikation enthalten?<\/li> <li>Daten verf\u00fcgbar (echt oder synthetisch)?<\/li> <li>deterministische Seeds-Set?<\/li> <li>Zwischenergebnisse gespeichert?<\/li> <\/ul><\/li>\n<li><strong>Senden Sie mit dem Code und den Daten DOI<\/strong> in der Datenverf\u00fcgbarkeitserkl\u00e4rung Ihres Manuskripts. Viele Zeitschriften erfordern dies jetzt bei der Einreichung oder \u00dcberarbeitung.<\/li>\n<\/ol>\n<h2>H\u00e4ufige Fallstricke und wie man sie vermeidet<\/h2>\n<h3>Falle 1: Absolute Wege<\/h3>\n<p>Wenn Sie absolute Pfade wie <code>\/home\/user\/simulations\/output\/data.csv<\/code>  in Ihrem Code verwenden, wird die Reproduzierbarkeit auf einer anderen Maschine als dem, auf dem Sie das Projekt entwickelt haben, unterbrochen.<\/p>\n<p><strong>Fix:<\/strong> Relative Pfade aus dem Projektstamm verwenden. Wenn Ihre Skripte Daten in einem <code>data\/<\/code>-Verzeichnis erwarten, verweisen Sie auf <code>data\/input.csv<\/code>, unabh\u00e4ngig davon, wo das Projekt geklont wird.<\/p>\n<h3>Fallfall 2: Unplanm\u00e4\u00dfige Abh\u00e4ngigkeiten<\/h3>\n<p>Ein Notebook importiert <code>scipy.stats<\/code>, erkl\u00e4rt jedoch nicht, dass <code>scipy<\/code> erforderlich ist. Wenn ein anderer Forscher das Notebook ausf\u00fchrt, hat er m\u00f6glicherweise eine inkompatible <code>scipy<\/code>  -Version - oder verpasst es v\u00f6llig.<\/p>\n<p><strong>Fix:<\/strong> Schlie\u00dfen Sie immer ein <code>requirements.txt<\/code> oder <code>environment.yml<\/code> ein und \u00fcberpr\u00fcfen Sie es, indem Sie die lokale Umgebung l\u00f6schen und vor der Archivierung von Grund auf neu installieren.<\/p>\n<h3>Fallfall 3: Fehlende Readme<\/h3>\n<p>Ohne Readme k\u00f6nnen die Rezensenten nicht wissen:<\/p>\n<ul>\n<li>Welches Skript produziert welche Figur<\/li>\n<li>Welche Skripte der Reihenfolge sollten ausgef\u00fchrt werden?<\/li>\n<li>Welche ungef\u00e4hre Laufzeit zu erwarten<\/li>\n<li>Welche Python-Version oder Paketversionen wurden verwendet<\/li>\n<\/ul>\n<p><strong>Fix:<\/strong> Schreiben Sie eine Readme, die jede Datei, jeden Ausf\u00fchrungsschritt und jede Laufzeitsch\u00e4tzung auflistet. Verweisen Sie auf die Abbildungsnummern aus Ihrer Publikation.<\/p>\n<h3>Fallfall 4: Python-Version Drift<\/h3>\n<p>Python 3.6 war Sonnenuntergang im Jahr 2021; Python 3.7 war im Juni 2023 Sonnenuntergang. Viele Notizb\u00fccher im Samuel &amp; Mietchen Corpus verwendet veraltete Python-Versionen und die Nicht\u00fcbereinstimmung zwischen der Version bei der Ver\u00f6ffentlichung und der verf\u00fcgbaren Version, wenn die Reproduktionsversuche die Reproduktion versuchen, verursacht subtile Inkompatibilit\u00e4ten.<\/p>\n<p><strong>Fix:<\/strong> Verwenden Sie eine aktuelle, aktiv unterst\u00fctzte Python-Version und geben Sie sie in Ihrer Umgebungsdatei an. Die Repro-Checkliste empfiehlt, die Python-Version in der Readme zu dokumentieren.<\/p>\n<h3>Fallstricke 5: Nicht-deterministische Zufallszahlen<\/h3>\n<p>Eine Simulation, die zuf\u00e4llige Anfangsbedingungen ohne Fixierung des Seeds erzeugt, erzeugt jedes Mal unterschiedliche Ausgaben. Selbst mit einem Saatgut k\u00f6nnen parallele Arbeiter \u00fcberlappende Str\u00f6me erzeugen.<\/p>\n<p><strong>Fix:<\/strong> Setzen Sie einen festen Startwert f\u00fcr alle Zufallsoperationen. Verwenden Sie <code>numpy.random.SeedSequence<\/code> f\u00fcr die Parallel-Sicher-Reproduzierbarkeit. Die Repro-Checkliste empfiehlt dieses Muster explizit.<\/p>\n<h2>Wann w\u00e4hlen Sie Container im Vergleich zu leichten Umgebungen?<\/h2>\n<p>F\u00fcr die meisten Simulations-Workflows ist ein leichtes Umgebungsmanagement (Conda, PIP, UV) ausreichend. Sie erhalten Reproduzierbarkeit, indem Sie genaue Paketversionen angeben \u2013 und Pr\u00fcfer k\u00f6nnen die Umgebung mit einem einzigen Befehl installieren.<\/p>\n<p><strong>W\u00e4hlen Sie Conda \/ UV \/ Pip, wenn: <\/strong><\/p>\n<ul>\n<li>Sie arbeiten mit Python-basierten Solvern (FIPY, OpenPDE, FENICS)<\/li>\n<li>Sie haben die Kontrolle \u00fcber die Rechenumgebung an Ihrem Ende<\/li>\n<li>Sie m\u00f6chten einen leichten, tragbaren Workflow<\/li>\n<\/ul>\n<p><strong>W\u00e4hlen Sie Docker, wenn:<\/strong><\/p>\n<ul>\n<li>Sie m\u00fcssen einen Workflow f\u00fcr Forscher freigeben, die Conda oder bestimmte Bibliotheken auf Systemebene nicht installieren k\u00f6nnen<\/li>\n<li>Ihr Workflow h\u00e4ngt von C++\/Fortran-Solvern ab, die kompiliert werden m\u00fcssen<\/li>\n<li>Sie reichen ein Journal ein, das containerisierte Reproduzierbarkeit erfordert (z. B. <em>Computo<\/em>).<\/li>\n<\/ul>\n<p>F\u00fcr die \u00fcberwiegende Mehrheit der computergest\u00fctzten Materialien ist Conda oder UV die bessere Wahl - sie ist einfacher, schneller und ausreichend f\u00fcr die Reproduzierbarkeit, die Rezensenten und Leser ben\u00f6tigen.<\/p>\n<h2>Ein praktischer Hinweis zu den Erwartungen der Zeitschriften<\/h2>\n<p>Die Repro-Checkliste dokumentiert die Heterogenit\u00e4t von Zeitschriftenreproduzierbarkeitsrichtlinien. Einige Zeitschriften (wie <em>Biometric Journal <\/em> oder <em> Journal der American Statistical Association <\/em>) erfordern eine aktive Reproduzierbarkeitspr\u00fcfung durch engagierte Redakteure. Andere (wie <em> das BMJ <\/em>) ben\u00f6tigen Code-Einreichung, f\u00fchren jedoch keine unabh\u00e4ngigen Ausf\u00fchrungspr\u00fcfungen durch.<\/p>\n<p>F\u00fcr die rechnergest\u00fctzte Simulationsarbeit ist die Mindesterwartung f\u00fcr die meisten Zeitschriften:<\/p>\n<ul>\n<li><strong>Verf\u00fcgbarkeit des Codes:<\/strong> Der Analysecode sollte als erg\u00e4nzende Datei oder in einem offenen Repository (Github, Zenodo) bereitgestellt werden.<\/li>\n<li><strong>Datenverf\u00fcgbarkeit:<\/strong> Die zur Analyse verwendeten Daten sollten \u00f6ffentlich zug\u00e4nglich oder gerechtfertigt sein<\/li>\n<li><strong>Umgebungsspezifikation:<\/strong> Softwareversionen und Pakete sollten dokumentiert werden<\/li>\n<\/ul>\n<p>Dies ist der Boden - nicht die Decke. Nach den f\u00fcnf S\u00e4ulen und der Repro-Checkliste positionieren Sie Ihre Arbeit \u00fcber dem Boden und signalisieren, dass Sie die Reproduzierbarkeit ernst nehmen.<\/p>\n<h2>N\u00e4chste Schritte f\u00fcr Ihren Simulationsworkflow<\/h2>\n<p>Wenn Sie mit reproduzierbaren Simulationspraktiken noch nicht vertraut sind, beginnen Sie mit den drei wirkungsvollsten \u00c4nderungen:<\/p>\n<ol>\n<li><strong>Readme-Datei<\/strong> zu Ihrem Projekt mit Dateibeschreibungen und Ausf\u00fchrungsreihenfolge hinzuf\u00fcgen<\/li>\n<li><strong>Exportieren Sie Ihre Umgebung<\/strong> (<code>conda env export<\/code> oder <code>uv export<\/code>) und nehmen Sie sie in Ihr Archiv auf<\/li>\n<li><strong>Setzen Sie zuf\u00e4llige Seeds<\/strong> in jedem Simulationsskript und verwenden Sie <code>SeedSequence<\/code> f\u00fcr parallele L\u00e4ufe<\/li>\n<\/ol>\n<p>Allein diese drei \u00c4nderungen werden 80% der von Samuel &amp; Mieten.<\/p>\n<p>Wenn Sie Hilfe beim Entwerfen eines reproduzierbaren Simulationsworkflows ben\u00f6tigen - von der Notebook-Dokumentation \u00fcber die Code-Archivierung bis zur \u00dcbermittlung von Zeitschriften -, kann unser Team Beratung zum Workflow-Design, Umgebungsspezifikation und gerechtfertigter Datenarchivierung anbieten. Kontaktieren Sie uns, um Ihr spezifisches Simulationsprojekt zu besprechen. Der Aufbau einer nachhaltigen Forschungssoftware-Community (<a href=\"\/building-sustainable-research-software-communities\/\"> Wie wir uns der Community-Wurzelentwicklung n\u00e4hern <\/a>) ist Teil dieses Prozesses: Reproduzierbarkeit verbessert sich, wenn das gesamte Team gemeinsame Standards teilt.<\/p>\n<h2>Schlussfolgerung<\/h2>\n<p>Reproduzierbare Ver\u00f6ffentlichungspraktiken f\u00fcr Simulationsergebnisse sind kein optionales Add-On - sie sind eine Voraussetzung f\u00fcr eine glaubw\u00fcrdige wissenschaftliche Kommunikation. Die f\u00fcnf S\u00e4ulen (Litenerating-Programmierung, Versionskontrolle, Umgebungsmanagement, Datenaustausch, Dokumentation) und die Repro-Checkliste bilden eine strukturierte, umsetzbare Grundlage f\u00fcr die Reproduzierbarkeit, die f\u00fcr alle rechnerischen Disziplinen gilt.<\/p>\n<p>Die Skala der Reproduzierbarkeitsl\u00fccke - 12,4% erfolgreiche identische Reproduktion im Samuel &amp; Mietchen Study \u2013 ist ein Aufruf zum Handeln. Jeder Simulationsworkflow, der eine Readme, eine Umgebungsdatei und deterministische Seeds enth\u00e4lt, schlie\u00dft einen messbaren Teil dieser L\u00fccke. Die Investition ist bescheiden: Stunden, nicht Monate. Die R\u00fcckkehr ist die M\u00f6glichkeit f\u00fcr jeden Leser, Rezensenten oder zuk\u00fcnftigen Forscher, Ihre Ergebnisse unabh\u00e4ngig zu \u00fcberpr\u00fcfen.<\/p>\n<p>Reproduzierbarkeit ist f\u00fcr den Computerforscher nicht nur eine methodologische Tugend, sondern die Grundlage wissenschaftlicher Glaubw\u00fcrdigkeit. Die f\u00fcnf S\u00e4ulen geben Ihnen einen Rahmen. Die Repro-Checkliste gibt Ihnen eine Checkliste. Die Werkzeuge (Git, Conda, Zenodo) sind verf\u00fcgbar. Was bleibt, ist die Entscheidung, sie zu verwenden.<\/p>\n<h2 id=\"faq\">Fragen und Antworten<\/h2>\n<h3>Was ist das F\u00fcnf-Pillaren-Rahmen f\u00fcr Reproduzierbarkeit?<\/h3>\n<p>Die f\u00fcnf S\u00e4ulen, vorgeschlagen von Ziemann et al. (2023) sind Programmierkenntnisse, Code-Versionskontrolle, Kontrolle der Computerumgebung, persistente Datenfreigabe und Dokumentation. Sie bilden einen strukturierten Rahmen f\u00fcr die Dokumentation und Weitergabe reproduzierbarer Rechenworkflows.<\/p>\n<h3>Was ist die Repro-Checkliste?<\/h3>\n<p>Die Repro-Checkliste, ver\u00f6ffentlicht von Hornung et al. (2026) ist ein pr\u00e4gnantes, multidisziplin\u00e4res Instrument zur Erstellung reproduzierbarer Analysen. Es umfasst Code- und Datenstruktur, Readme-Anforderungen, Umgebungsspezifikation, Datenverf\u00fcgbarkeit, deterministische Zufallszahlengenerierung und Zwischenergebnisse.<\/p>\n<h3>Warum scheitern Jupyter-Notebooks so oft?<\/h3>\n<p>Samuel &amp; Mietchen (2024) stellten fest, dass 87,6% der Python-basierten Notebooks w\u00e4hrend der automatischen Wiederholung zu Ausnahmen f\u00fchrten. Die Hauptursachen sind fehlende oder widerspr\u00fcchliche Abh\u00e4ngigkeiten (<code>ModuleNotFoundError<\/code> und <code>ImportError<\/code>), unaufgel\u00f6ste Dateipfade (<code>FileNotFoundError<\/code>) und nicht-deterministische Zufallszahlengenerierung.<\/p>\n<h3>Wie w\u00e4hle ich zwischen Conda und Docker?<\/h3>\n<p>Verwenden Sie Conda (oder UV) f\u00fcr die meisten Python-basierten Simulations-Workflows - es ist einfacher, schneller und ausreichend, um genaue Paketversionen festzulegen. Verwenden Sie Docker, wenn Sie eine vollst\u00e4ndige Isolation zwischen Betriebssystemen ben\u00f6tigen oder wenn Ihr Workflow von kompilierten C++\/Fortran-Solvern abh\u00e4ngt.<\/p>\n<h3>Wie kann ich meine Simulationsergebnisse reproduzierbar machen, ohne Rohdaten zu teilen?<\/h3>\n<p>Generieren Sie synthetische Daten, die die Rechenstruktur Ihrer realen Daten nachahmen. Die Repro-Checkliste empfiehlt die Verwendung von Paketen wie <code>synthpop<\/code> oder <code>simdata<\/code> in R oder <code>numpy.random<\/code> in Python, um synthetische Testdaten zu erstellen, die eine unabh\u00e4ngige \u00dcberpr\u00fcfung Ihres Analysecodes erm\u00f6glichen.<\/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\"> 11<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>Erfahren Sie, wie Sie Simulationsergebnisse mithilfe von Jupyter-Notebooks, Versionskontrolle, Umgebungsmanagement, Zenodo-Archivierung und fairen Prinzipien reproduzieren k\u00f6nnen. Ein praktischer Leitfaden f\u00fcr Computerforscher.<\/p>\n","protected":false,"raw":"Erfahren Sie, wie Sie Simulationsergebnisse mithilfe von Jupyter-Notebooks, Versionskontrolle, Umgebungsmanagement, Zenodo-Archivierung und fairen Prinzipien reproduzieren k\u00f6nnen. Ein praktischer Leitfaden f\u00fcr Computerforscher."},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_locale":"de_DE","_original_post":"https:\/\/matforge.org\/?p=523","iawp_total_views":0,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-895","post","type-post","status-publish","format-standard","hentry","category-simulation-modeling-projects","de-DE"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Reproduzierbare Publikationspraktiken f\u00fcr Simulationsergebnisse: Das Five Pillars Framework - 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\/de\/reproducible-publication-practices-simulation-results\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Reproduzierbare Publikationspraktiken f\u00fcr Simulationsergebnisse: Das Five Pillars Framework - matforge.org\" \/>\n<meta property=\"og:description\" content=\"Reading Time:  11 minutesErfahren Sie, wie Sie Simulationsergebnisse mithilfe von Jupyter-Notebooks, Versionskontrolle, Umgebungsmanagement, Zenodo-Archivierung und fairen Prinzipien reproduzieren k\u00f6nnen. Ein praktischer Leitfaden f\u00fcr Computerforscher.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/matforge.org\/de\/reproducible-publication-practices-simulation-results\/\" \/>\n<meta property=\"og:site_name\" content=\"matforge.org\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-30T12:23:20+00:00\" \/>\n<meta name=\"author\" content=\"Priya Nair\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Priya Nair\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"18\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/reproducible-publication-practices-simulation-results\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/reproducible-publication-practices-simulation-results\\\/\"},\"author\":{\"name\":\"Priya Nair\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/2effd7bc155a5e6357f31dac970c5795\"},\"headline\":\"Reproduzierbare Publikationspraktiken f\u00fcr Simulationsergebnisse: Das Five Pillars Framework\",\"datePublished\":\"2026-07-30T12:23:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/reproducible-publication-practices-simulation-results\\\/\"},\"wordCount\":3311,\"commentCount\":0,\"articleSection\":[\"Simulation & amp; Modellierungsprojekte\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/matforge.org\\\/de\\\/reproducible-publication-practices-simulation-results\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/reproducible-publication-practices-simulation-results\\\/\",\"url\":\"https:\\\/\\\/matforge.org\\\/de\\\/reproducible-publication-practices-simulation-results\\\/\",\"name\":\"Reproduzierbare Publikationspraktiken f\u00fcr Simulationsergebnisse: Das Five Pillars Framework - matforge.org\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#website\"},\"datePublished\":\"2026-07-30T12:23:20+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/2effd7bc155a5e6357f31dac970c5795\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/reproducible-publication-practices-simulation-results\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/matforge.org\\\/de\\\/reproducible-publication-practices-simulation-results\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/reproducible-publication-practices-simulation-results\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/matforge.org\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Reproduzierbare Publikationspraktiken f\u00fcr Simulationsergebnisse: Das Five Pillars Framework\"}]},{\"@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\":\"de\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/2effd7bc155a5e6357f31dac970c5795\",\"name\":\"Priya Nair\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@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":"Reproduzierbare Publikationspraktiken f\u00fcr Simulationsergebnisse: Das Five Pillars Framework - 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\/de\/reproducible-publication-practices-simulation-results\/","og_locale":"de_DE","og_type":"article","og_title":"Reproduzierbare Publikationspraktiken f\u00fcr Simulationsergebnisse: Das Five Pillars Framework - matforge.org","og_description":"Reading Time:  11 minutesErfahren Sie, wie Sie Simulationsergebnisse mithilfe von Jupyter-Notebooks, Versionskontrolle, Umgebungsmanagement, Zenodo-Archivierung und fairen Prinzipien reproduzieren k\u00f6nnen. Ein praktischer Leitfaden f\u00fcr Computerforscher.","og_url":"https:\/\/matforge.org\/de\/reproducible-publication-practices-simulation-results\/","og_site_name":"matforge.org","article_published_time":"2026-07-30T12:23:20+00:00","author":"Priya Nair","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Priya Nair","Gesch\u00e4tzte Lesezeit":"18\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/matforge.org\/de\/reproducible-publication-practices-simulation-results\/#article","isPartOf":{"@id":"https:\/\/matforge.org\/de\/reproducible-publication-practices-simulation-results\/"},"author":{"name":"Priya Nair","@id":"https:\/\/matforge.org\/#\/schema\/person\/2effd7bc155a5e6357f31dac970c5795"},"headline":"Reproduzierbare Publikationspraktiken f\u00fcr Simulationsergebnisse: Das Five Pillars Framework","datePublished":"2026-07-30T12:23:20+00:00","mainEntityOfPage":{"@id":"https:\/\/matforge.org\/de\/reproducible-publication-practices-simulation-results\/"},"wordCount":3311,"commentCount":0,"articleSection":["Simulation & amp; Modellierungsprojekte"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/matforge.org\/de\/reproducible-publication-practices-simulation-results\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/matforge.org\/de\/reproducible-publication-practices-simulation-results\/","url":"https:\/\/matforge.org\/de\/reproducible-publication-practices-simulation-results\/","name":"Reproduzierbare Publikationspraktiken f\u00fcr Simulationsergebnisse: Das Five Pillars Framework - matforge.org","isPartOf":{"@id":"https:\/\/matforge.org\/#website"},"datePublished":"2026-07-30T12:23:20+00:00","author":{"@id":"https:\/\/matforge.org\/#\/schema\/person\/2effd7bc155a5e6357f31dac970c5795"},"breadcrumb":{"@id":"https:\/\/matforge.org\/de\/reproducible-publication-practices-simulation-results\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/matforge.org\/de\/reproducible-publication-practices-simulation-results\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/matforge.org\/de\/reproducible-publication-practices-simulation-results\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/matforge.org\/de\/"},{"@type":"ListItem","position":2,"name":"Reproduzierbare Publikationspraktiken f\u00fcr Simulationsergebnisse: Das Five Pillars Framework"}]},{"@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":"de"},{"@type":"Person","@id":"https:\/\/matforge.org\/#\/schema\/person\/2effd7bc155a5e6357f31dac970c5795","name":"Priya Nair","image":{"@type":"ImageObject","inLanguage":"de","@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\/895","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=895"}],"version-history":[{"count":1,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/895\/revisions"}],"predecessor-version":[{"id":1013,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/895\/revisions\/1013"}],"wp:attachment":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/media?parent=895"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/categories?post=895"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/tags?post=895"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}