Apply the brand across the repo: reports, README, guide

* simurg/core/brand.py: single source of the mark geometry, colours, favicon
  and the report header band (scripts/brand now load it from there).
* HTML reports (QC report, compare dashboard, methylation QC): offline SVG
  favicon, indigo header band with the mark, version and a sha256 of the data
  shown; Noto Sans font stack; methylation plots in Okabe-Ito colours.
* README banner, guide logo, brand/blog links; branding brief updated to the
  final identity; Noto (OFL) and Okabe-Ito entries in THIRD_PARTY_NOTICES;
  CHANGELOG (Unreleased).

Unit tests + P5 QC oracle: 285 passed; ruff and mypy clean.
This commit is contained in:
kemal committed 2026-09-30 08:01:30 +01:00
1 parent deb8e263b2
commit 8ee0c46bba
12 files changed
+222 -106

No files matched your search

+7 -2
View File
@@ -536,9 +536,14 @@ def payload(datasets: Sequence[Dataset], th: Thresholds, generated: str, metadat
def render_html(data: Mapping[str, Any]) -> str:
blob = json.dumps(data, sort_keys=True, ensure_ascii=False, separators=(",", ":"), allow_nan=False)
packed = base64.b64encode(gzip.compress(blob.encode("utf-8"), compresslevel=9, mtime=0)).decode("ascii")
page = _asset("template.html").replace("__TITLE__", f"{PRODUCT_NAME} QC Report").replace("__DATA__", packed)
from simurg.core.brand import BAR_CSS, favicon_link, report_bar
checksum = hashlib.sha256(blob.encode("utf-8")).hexdigest()
bar = report_bar("QC Report", __version__, "data sha256", checksum)
page = (_asset("template.html").replace("__TITLE__", f"{PRODUCT_NAME} QC Report").replace("__DATA__", packed)
.replace("__FAVICON__", favicon_link()).replace("__BRANDBAR__", bar)) # fmt: skip
for marker, text in (
("/*__STYLE__*/", _asset("report.css")),
("/*__STYLE__*/", _asset("report.css") + "\n" + BAR_CSS),
("/*__APP__*/", _asset("report.js")),
("/*__PLOTLY__*/", _plotly().replace("</script", "<\\/script")),
):