"""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})