File size: 1,425 Bytes
925ee3b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | """Shared configuration for analysis scripts."""
from __future__ import annotations
from pathlib import Path
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
# Paths
PROJECT_ROOT = Path(__file__).parent.parent
OUTPUT_DIR = PROJECT_ROOT / "output"
FIGURES_DIR = OUTPUT_DIR / "figures"
RESULTS_DIR = OUTPUT_DIR / "results"
def setup_output_dirs(*subdirs: str) -> list[Path]:
"""Create output directories and return their paths."""
dirs = []
for sub in subdirs:
d = OUTPUT_DIR / sub
d.mkdir(parents=True, exist_ok=True)
dirs.append(d)
return dirs
def set_figure_style():
"""Set consistent figure style for all analyses."""
plt.rcParams.update({
"figure.dpi": 150,
"savefig.dpi": 300,
"savefig.bbox": "tight",
"font.size": 10,
"axes.titlesize": 12,
"axes.labelsize": 11,
"xtick.labelsize": 9,
"ytick.labelsize": 9,
"legend.fontsize": 9,
"figure.figsize": (6, 5),
"axes.spines.top": False,
"axes.spines.right": False,
})
def save_figure(fig: plt.Figure, name: str, subdir: str = "figures") -> Path:
"""Save a figure to the output directory."""
out_dir = OUTPUT_DIR / subdir
out_dir.mkdir(parents=True, exist_ok=True)
path = out_dir / f"{name}.png"
fig.savefig(path)
plt.close(fig)
print(f"Saved: {path}")
return path
|