"""Figures for report.html, from data/ only. python reproduce/figures.py # writes report/barrier_difference.png """ import csv import io import zipfile from pathlib import Path import matplotlib matplotlib.use("Agg") import matplotlib.pyplot as plt # noqa: E402 HERE = Path(__file__).resolve().parent.parent with zipfile.ZipFile(HERE / "data" / "screen.csv.zip") as z, \ io.TextIOWrapper(z.open("screen.csv"), encoding="utf-8", newline="") as fh: err = [float(r["gxtb_barrier_sep_kcal"]) - float(r["ref_barrier_kcal"]) for r in csv.DictReader(fh) if r["status"] == "match"] fig, ax = plt.subplots(figsize=(6.4, 3.4), dpi=150) ax.hist(err, bins=range(-30, 47, 2), color="#2a5db0", edgecolor="white", linewidth=0.4) ax.axvline(0, color="#1d1d1b", linewidth=0.8) ax.set_xlabel("g-xTB barrier minus B3LYP-D3 barrier (kcal/mol)") ax.set_ylabel("reactions") ax.set_xlim(-30, 46) ax.spines[["top", "right"]].set_visible(False) fig.tight_layout() (HERE / "report").mkdir(exist_ok=True) fig.savefig(HERE / "report" / "barrier_difference.png", metadata={"Software": None})