"""Generate the small summary sidecar used by the deployed MuSProt app.""" from __future__ import annotations import argparse import json import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parents[1])) from app.protein.data_loader import DataManager def main() -> None: parser = argparse.ArgumentParser() parser.add_argument("database", type=Path) parser.add_argument("-o", "--output", type=Path, default=Path("musprot_summary.json")) args = parser.parse_args() manager = DataManager(args.database) manager.load_data() summary = manager.get_summary_stats() filters = manager.get_filters_data() summary.update( { "tm_score_range": {"min": filters["tm_min"], "max": filters["tm_max"]}, "rmsd_range": {"min": filters["rmsd_min"], "max": filters["rmsd_max"]}, "length_range": {"min": filters["length_min"], "max": filters["length_max"]}, } ) args.output.write_text(json.dumps(summary, indent=2), encoding="utf-8") print(f"Wrote {args.output}") if __name__ == "__main__": main()