Menü der Dokumentation
- Startseite
- Dokumentation
- Reproduzierbarkeitsprüfungen
- Reproducibility & Entry Points
Einstiegspunkte und fest codierte Pfade in Forschungscode
Liegen train.py, train_new.py und run.sh nebeneinander und zeigen Pfade in Ihren Home-Ordner, müssen Neue raten. Dokumentieren Sie einen klaren Weg zu jedem Ergebnis.
Zuletzt aktualisiert
In Ihrem Bericht
- Bereich
- Execution
- Prüfung
- Reproducibility & Entry Points
Warum das wichtig ist
Forschungs-Repositorys wachsen um einen Laptop herum: analysis_v2.py neben analysis_final.py, Daten unter /Users/… und eine Abbildung, die drei Skripte in einer Reihenfolge braucht, die niemand aufgeschrieben hat.
In einer Studie zu R-Code aus Harvard Dataverse behob automatische Code-Bereinigung alle Fehler, die setwd() verursacht hatte (Trisovic et al., 2022). Festzuhalten, wie jedes Ergebnis entstanden ist, ist Regel 1 der Ten Simple Rules for Reproducible Computational Research.
So sieht gute Praxis aus
- Pfade ausgehend vom Projektordner oder aus einer Konfigurationsdatei, nie
/Users/…oderC:\…. - Ein Befehl pro Ergebnis, gesammelt in einem
Makefile,Snakefile, einer Nextflow-Pipeline oderrun.sh. - Ein README, das von den heruntergeladenen Daten zu jeder Abbildung führt und bei mehreren Varianten das maßgebliche Skript nennt.
- Rohdaten bleiben unverändert; jede Zwischendatei erzeugt ein Skript neu.
- Ein kurzer Lauf auf einer kleinen Teilmenge der Daten, der das Setup vor der vollständigen Analyse bestätigt.
So beheben Sie es
Python. Bilden Sie Pfade ausgehend vom Projektordner und lassen Sie den Datenort überschreiben:
from pathlib import Path
import os
ROOT = Path(__file__).resolve().parents[1] # repository root, from src/pipeline.py
DATA = Path(os.environ.get("DATA_DIR", ROOT / "data"))
counts = DATA / "raw" / "counts.h5ad"R. Das Paket here bildet Pfade ausgehend vom Projektordner. Nutzen Sie es statt setwd():
here::i_am("analysis/figure2.R")
counts <- readr::read_tsv(here::here("data", "raw", "counts.tsv"))Ein Einstiegspunkt. Ein Makefile hält die Reihenfolge der Schritte fest und dient zugleich als Smoke-Test:
all: results/table1.csv results/figure2.pdf
results/table1.csv: data/processed/cohort.parquet
python -m analysis.table1 --out $@
results/figure2.pdf: results/table1.csv analysis/figure2.R
Rscript analysis/figure2.R
smoke:
python -m analysis.table1 --subsample 0.01 --out /tmp/table1_smoke.csvVerwandte Themen
- Fixierte Abhängigkeiten und Container
- Experiment-Logging und Rückverfolgbarkeit
- Manuskript und Code im Einklang
Diese Prüfung für Ihr Repository
Jede Analyse liefert Befunde zu dieser Prüfung, mit Dateiverweisen und Korrekturvorschlägen.