# genesis/structures.py import requests from typing import List, Dict def fetch_structures_for_terms(terms: List[str]) -> List[Dict[str, str]]: """Fetch PDB structures from PDBe or RCSB for given search terms.""" structures = [] for term in terms: try: # PDBe search pdbe_url = f"https://www.ebi.ac.uk/pdbe/search/pdb/select" params = {"q": term, "rows": 2, "wt": "json"} r = requests.get(pdbe_url, params=params, timeout=10) r.raise_for_status() data = r.json() docs = data.get("response", {}).get("docs", []) for doc in docs: pdb_id = doc.get("pdb_id") title = doc.get("title", term) if pdb_id: structures.append({ "term": term, "pdb_id": pdb_id, "title": title, "pdbe_url": f"https://www.ebi.ac.uk/pdbe/entry/pdb/{pdb_id}", "rcsb_url": f"https://www.rcsb.org/structure/{pdb_id}" }) except Exception as e: print(f"[Structures] Failed to fetch for {term}: {e}") return structures