Zum Inhalt springen
Menü der Dokumentation

Manuskript und Code: Versionen, Seeds und Statistik

Manuskript und Code werden getrennt überarbeitet, und Details driften auseinander: ein Testverfahren, eine Zahl von Seeds, ein Daten-Release. Halten Sie Text und Code synchron.

Zuletzt aktualisiert

In Ihrem Bericht

Bereich
Manuscript
Prüfung
Cross-Consistency (Paper ↔ Code)

Warum das wichtig ist

Gutachtende wünschen einen einseitigen Test, und der Text ändert sich, das Skript aber nicht. Die Daten werden neu heruntergeladen, und ein neueres Release einer Referenzdatenbank rutscht hinein. Im Manuskript steht „gemittelt über fünf Seeds“, das finale Skript läuft über drei.

Jede Änderung ist klein, und jede macht es schwerer, die veröffentlichten Zahlen nachzuvollziehen.

So sieht gute Praxis aus

  • Ein Befehl, etwa make paper, erzeugt alle Abbildungen und Tabellen neu, auch die im Supplement.
  • Text und Code werden gemeinsam überarbeitet: Eine Änderung im Methodenteil kommt mit dem Commit, der sie umsetzt.
  • Das Manuskript nennt die exakte Code-Version (Tag oder Commit, idealerweise mit Archiv-DOI) und Datenversion (Accession, Release oder Abrufdatum).
  • Parameter, Splits, Ausschlussregeln, Zahl der Seeds und statistische Tests im Text entsprechen den Skripten.
  • Bekannte Abweichungen, etwa ein nach der Einreichung behobener Fehler, sind im README dokumentiert.

So beheben Sie es

Legen Sie eine Zuordnungsdatei für Abbildungen und Tabellen im Wurzelverzeichnis an:

paper_map.yaml
figure_2:
  command: snakemake --cores 4 results/figures/figure2.pdf
  script: workflow/scripts/plot_figure2.R
  inputs: [data/processed/counts.tsv, data/processed/metadata.tsv]
table_1:
  command: python -m analysis.table1 --config configs/table1.yaml
  output: results/tables/table1.csv
supplementary_figure_4:
  command: quarto render reports/supplement.qmd

Testen Sie berichtete Werte. In Python mit pytest; in R leistet testthat::expect_equal() mit tolerance dasselbe:

tests/test_paper_values.py
import json

def test_table2_auroc_matches_paper():
    with open("results/claims/table2_auroc.json") as fh:
        result = json.load(fh)
    assert 0.90 <= result["mean"] <= 0.92  # the paper reports 0.91

Nennen Sie Versionen im Manuskript, zum Beispiel:

Code- und Datenverfügbarkeit
Alle Analysen nutzten das Code-Release v1.2.0 (Commit <hash>,
archiviert unter <DOI>). Die Expressionsdaten stammen aus
<Repository> (Accession <accession>), abgerufen am <Datum>,
verarbeitet mit workflow/ im selben Release.

Diese Prüfung für Ihr Repository

Fügen Sie einer Analyse Ihr Manuskript hinzu, um Befunde und Korrekturvorschläge zu dieser Prüfung zu erhalten.