Spaces:
Sleeping
Sleeping
# genesis/api_clients/chembl_api.py | |
import requests | |
CHEMBL_BASE = "https://www.ebi.ac.uk/chembl/api/data" | |
def search_chembl(molecule_name: str, max_results: int = 10): | |
""" | |
Search ChEMBL database for a molecule by name or identifier. | |
Returns a list of dicts with molecule name, ChEMBL ID, and other details. | |
""" | |
url = f"{CHEMBL_BASE}/molecule" | |
params = {"molecule_synonyms__icontains": molecule_name, "limit": max_results, "format": "json"} | |
res = requests.get(url, params=params) | |
res.raise_for_status() | |
data = res.json() | |
results = [] | |
for mol in data.get("molecules", []): | |
results.append({ | |
"name": mol.get("pref_name"), | |
"chembl_id": mol.get("molecule_chembl_id"), | |
"max_phase": mol.get("max_phase"), | |
"molecule_type": mol.get("molecule_type"), | |
"link": f"https://www.ebi.ac.uk/chembl/compound_report_card/{mol.get('molecule_chembl_id')}/" | |
}) | |
return results | |