Zum Inhalt springen
Menü der Dokumentation

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/… oder C:\….
  • Ein Befehl pro Ergebnis, gesammelt in einem Makefile, Snakefile, einer Nextflow-Pipeline oder run.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:

python
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():

R
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:

Makefile
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.csv

Diese Prüfung für Ihr Repository

Jede Analyse liefert Befunde zu dieser Prüfung, mit Dateiverweisen und Korrekturvorschlägen.