$npx -y skills add ai4protein/VenusFactory2 --skill chembl_databaseQuery ChEMBL bioactive molecules and drug discovery data. Search compounds by structure/properties, retrieve bioactivity data (IC50, Ki), find inhibitors, perform SAR studies, for medicinal chemistry.
| 1 | # ChEMBL Database |
| 2 | |
| 3 | ## Overview |
| 4 | |
| 5 | ChEMBL is a manually curated database of bioactive molecules maintained by the European Bioinformatics Institute (EBI), containing over 2 million compounds, 19 million bioactivity measurements, 13,000+ drug targets, and data on approved drugs and clinical candidates. **In this project the agent exposes only download tools**: save molecule data, similarity search results, substructure search results, and drug information to files; each returns rich JSON `{status, file_info, content_preview, biological_metadata, execution_context}`. For programmatic use, the package also provides query-style APIs (see Project Modules). |
| 6 | |
| 7 | ## When to Use This Skill |
| 8 | |
| 9 | This skill should be used when: |
| 10 | |
| 11 | - **Compound searches**: Finding molecules by ChEMBL ID or name |
| 12 | - **Target information**: Retrieving data about proteins, enzymes, or biological targets |
| 13 | - **Bioactivity data**: Querying IC50, Ki, EC50, or other activity measurements |
| 14 | - **Drug information**: Looking up approved drugs, mechanisms, or indications |
| 15 | - **Structure searches**: Performing similarity or substructure searches by SMILES |
| 16 | - **Cheminformatics**: Analyzing molecular properties and drug-likeness |
| 17 | - **Target-ligand relationships**: Exploring compound-target interactions |
| 18 | - **Drug discovery**: Identifying inhibitors, agonists, or bioactive molecules |
| 19 | |
| 20 | ## Quick Start |
| 21 | |
| 22 | The skill provides: |
| 23 | 1. **Project modules** in `src/tools/database/chembl/`: `chembl_client.py` (API client), `chembl_molecule.py`, `chembl_target.py`, `chembl_activity.py`, `chembl_similarity.py`, `chembl_substructure.py`, `chembl_drug.py` (atomic modules), `chembl_queries.py` (high-level helpers), `chembl_operations.py` (query/download operations); all re-exported via package. For programmatic use (including query-style APIs), import e.g. `from src.tools.database.chembl import download_chembl_molecule_by_id, ...`. |
| 24 | 2. Reference: `references/api_reference.md` |
| 25 | |
| 26 | ### Agent Tools (Download Only) |
| 27 | |
| 28 | | Tool name | Arguments | Purpose | |
| 29 | |-----------|-----------|---------| |
| 30 | | `download_chembl_molecule_by_id` | `mol_id`, `out_path` | Download molecule JSON by ChEMBL ID to file | |
| 31 | | `download_chembl_similarity_by_smiles` | `smiles`, `out_path`, `threshold` (optional, 0–100, default 70), `max_results` (optional) | Download Tanimoto similarity search results to JSON file | |
| 32 | | `download_chembl_substructure_by_smiles` | `smiles`, `out_path`, `max_results` (optional) | Download substructure search results to JSON file | |
| 33 | | `download_chembl_drug_by_id` | `chembl_id`, `out_path`, `max_results` (optional) | Download drug info (drug, mechanisms, indications) to JSON file | |
| 34 | |
| 35 | No authentication required; ChEMBL API is publicly accessible. |
| 36 | |
| 37 | ### Project Modules (Programmatic Use) |
| 38 | |
| 39 | | Capability | Function | Module | Purpose | |
| 40 | |------------|----------|--------|---------| |
| 41 | | Client | `get_client()` | chembl_client.py | Return ChEMBL `new_client` singleton | |
| 42 | | Molecule by ID | `get_molecule(chembl_id)` | chembl_molecule.py | Get molecule by ChEMBL ID | |
| 43 | | Molecule filter | `filter_molecules(**kwargs)` | chembl_molecule.py | Filter by name/properties (Django-style) | |
| 44 | | Target by ID | `get_target(chembl_id)` | chembl_target.py | Get target by ChEMBL ID | |
| 45 | | Target filter | `filter_targets(**kwargs)` | chembl_target.py | Filter targets by type/name | |
| 46 | | Activity filter | `filter_activities(**kwargs)` | chembl_activity.py | Filter bioactivities (target, type, value) | |
| 47 | | Similarity | `similarity_search(smiles, threshold=85)` | chembl_similarity.py | Find similar compounds by SMILES | |
| 48 | | Substructure | `substructure_search(smiles)` | chembl_substructure.py | Find compounds containing substructure | |
| 49 | | Drug / mechanism / indication | `get_drug(id)`, `get_mechanisms(mol_id)`, `get_indications(mol_id)` | chembl_drug.py | Drug record, MoA, indications | |
| 50 | | Query: molecule | `query_chembl_molecule_by_id(chembl_id)` | chembl_operations.py | Returns rich JSON in memory | |
| 51 | | Query: similarity | `query_chembl_similarity_by_smiles(smiles, threshold, max_results)` | chembl_operations.py | Returns rich JSON in memory | |
| 52 | | Query: substructure | `query_chembl_substructure_by_smiles(smiles, max_results)` | chembl_operations.py | Returns rich JSON in memory | |
| 53 | | Query: drug | `query_chembl_drug_by_id(chembl_id, max_results)` | chembl_operations.py | Returns rich JSON in memory | |
| 54 | | Download: molecule | `download_chembl_molecule_by_id(chembl_id, out_path)` | chembl_operations.py | Save molecule JSON to file, return rich JSON | |
| 55 | | Download: similarity | `download_chembl_similarity_by_smiles(smiles, out_path, threshold, max_results)` | chembl_operations.py | Save similarity results to file, return rich JSON | |
| 56 | | Download: substructure | `download_chemb |