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