From mims-harvard-tooluniverse
Generates ADMET scorecards for drug candidates using ADMETAI predictions, SwissADME drug-likeness, PubChemTox toxicity, ChEMBL clinical data, PubChem properties. Provides pass/fail verdicts on absorption, distribution, metabolism, excretion, toxicity.
npx claudepluginhub joshuarweaver/cascade-data-analytics --plugin mims-harvard-tooluniverseThis skill uses the workspace's default tool permissions.
**ADMET reasoning**: a drug fails if it can't be absorbed, distributes to wrong tissues, isn't metabolized safely, or isn't excreted. Evaluate each property independently — good absorption doesn't compensate for liver toxicity. The ADME properties determine whether a compound reaches its target at therapeutic concentrations; toxicity determines whether it's safe to do so. Prioritize experimenta...
Conducts multi-round deep research on GitHub repos via API and web searches, generating markdown reports with executive summaries, timelines, metrics, and Mermaid diagrams.
Dynamically discovers and combines enabled skills into cohesive, unexpected delightful experiences like interactive HTML or themed artifacts. Activates on 'surprise me', inspiration, or boredom cues.
Generates images from structured JSON prompts via Python script execution. Supports reference images and aspect ratios for characters, scenes, products, visuals.
ADMET reasoning: a drug fails if it can't be absorbed, distributes to wrong tissues, isn't metabolized safely, or isn't excreted. Evaluate each property independently — good absorption doesn't compensate for liver toxicity. The ADME properties determine whether a compound reaches its target at therapeutic concentrations; toxicity determines whether it's safe to do so. Prioritize experimental data (T2) over computational predictions (T3) — ADMETAI predictions are screening tools, not definitive verdicts. When a FAIL is flagged in any toxicity category (hERG, AMES, DILI), treat it as program-limiting until wet-lab data refutes it.
LOOK UP DON'T GUESS: never assume SMILES, CID, or experimental LD50 values — always call PubChem to resolve compound identity before any ADMETAI or PubChemTox call.
Comprehensive pharmacokinetic and toxicity profiling integrating AI-based ADMET predictions, rule-based drug-likeness filters, and experimental benchmarks from curated databases.
Triggers:
Input: Drug name (e.g., "ibuprofen") OR SMILES string (e.g., "CC(C)Cc1ccc(cc1)C(C)C(=O)O")
When analysis requires computation (statistics, data processing, scoring, enrichment), write and run Python code via Bash. Don't describe what you would do — execute it and report actual results. Use ToolUniverse tools to retrieve data, then Python (pandas, scipy, statsmodels, matplotlib) to analyze it.
tooluniverse[ml] - If import fails, skip to SwissADME/PubChemTox fallbackssmiles: list[str] - Always wrap in a list, even for one compoundsmiles: str - Single string, NOT a list (SOAP-style with operation param)cid or compound_name - Use CID when available for reliability| Tier | Label | Source |
|---|---|---|
| T1 | Regulatory/Clinical | FDA labels, ChEMBL max clinical phase |
| T2 | Experimental | PubChemTox LD50/LC50, in vitro AMES, animal studies |
| T3 | Computational | ADMETAI predictions, SwissADME calculations |
| T4 | Annotation | Database cross-references, text-mined |
User Query (drug name or SMILES)
|
+-- PHASE 1: Compound Identity Resolution
| PubChem name->CID->SMILES, or validate input SMILES
|
+-- PHASE 2: Physicochemical & Drug-Likeness
| ADMETAI physicochemical + SwissADME druglikeness -> Lipinski/Veber
|
+-- PHASE 3: ADME Predictions
| BBB, bioavailability, CYP interactions, clearance, solubility
|
+-- PHASE 4: Toxicity Assessment
| ADMETAI tox + PubChemTox experimental + nuclear receptor + stress
|
+-- PHASE 5: Scorecard & Clinical Context
| ChEMBL max phase, aggregate pass/warn/fail, final recommendation
Goal: Obtain SMILES, PubChem CID, and basic identifiers for the query compound.
Steps:
If input is a drug name:
PubChem_get_CID_by_compound_name(name=<drug_name>) to get CIDPubChem_get_compound_properties_by_CID(cid=<CID>) to get SMILES and MWConnectivitySMILES from the response (NOT CanonicalSMILES)If input is a SMILES string:
PubChem_get_CID_by_SMILES(smiles=<SMILES>) to get CIDPubChem_get_compound_properties_by_CID(cid=<CID>) for compound name and MWRecord:
Why this matters: ADMETAI tools require SMILES input. PubChemTox tools work best with CID. Resolving both ensures all downstream tools can be called. PubChem is the authoritative source for SMILES canonicalization.
Fallback: If PubChem has no entry, the user must provide SMILES directly. Cannot proceed without SMILES.
Goal: Evaluate whether the compound has drug-like physicochemical properties.
Steps:
ADMETAI physicochemical (primary):
ADMETAI_predict_physicochemical_properties(smiles=["<SMILES>"])
Returns: MW, logP, TPSA, HBD, HBA, rotatable bonds
SwissADME drug-likeness (complementary):
SwissADME_check_druglikeness(operation="check_druglikeness", smiles="<SMILES>")
SwissADME_calculate_adme(operation="calculate_adme", smiles="<SMILES>")
Returns: Lipinski, Veber, Ghose, Egan, Muegge rule compliance; PAINS alerts; Brenk alerts
ADMETAI solubility:
ADMETAI_predict_solubility_lipophilicity_hydration(smiles=["<SMILES>"])
Returns: Aqueous solubility (LogS), lipophilicity, hydration free energy
Interpret & Score:
| Property | Ideal Range | Why It Matters |
|---|---|---|
| MW | < 500 Da | Larger molecules have poor membrane permeability (Lipinski) |
| LogP | -0.4 to 5.6 | Too hydrophobic = poor solubility; too hydrophilic = poor permeability |
| HBD | <= 5 | Excess donors reduce membrane crossing (Lipinski) |
| HBA | <= 10 | Excess acceptors reduce membrane crossing (Lipinski) |
| TPSA | < 140 A^2 | High PSA correlates with poor oral absorption |
| Rotatable bonds | <= 10 | Molecular flexibility affects bioavailability (Veber) |
| LogS | > -6 | Below -6 = practically insoluble, formulation challenge |
| PAINS alerts | 0 | Pan-assay interference compounds give false positives in screens |
Verdict: PASS if Lipinski <= 1 violation and no PAINS alerts; WARN if 2 violations; FAIL if 3+ violations or PAINS+.
Fallback: If ADMETAI import fails (missing tooluniverse[ml]), rely on SwissADME alone. SwissADME provides all Lipinski descriptors independently.
Goal: Predict absorption, distribution, metabolism, and excretion behavior.
Steps:
Blood-brain barrier penetration:
ADMETAI_predict_BBB_penetrance(smiles=["<SMILES>"])
Oral bioavailability:
ADMETAI_predict_bioavailability(smiles=["<SMILES>"])
CYP450 interactions:
ADMETAI_predict_CYP_interactions(smiles=["<SMILES>"])
Clearance and distribution:
ADMETAI_predict_clearance_distribution(smiles=["<SMILES>"])
SwissADME pharmacokinetics (cross-validation):
Key flags: BBB+ for non-CNS drug (WARN: CNS side effects); BBB- for CNS drug (FAIL: won't reach target); F < 20% (WARN: poor oral bioavailability); CYP3A4 inhibitor (WARN: high DDI); CYP2D6 substrate (WARN: pharmacogenomic variability); PPB > 99% (WARN: narrow window); high clearance + low bioavailability (FAIL).
Fallback: If ADMETAI unavailable, SwissADME provides GI absorption, BBB permeation (yes/no), P-gp substrate, and CYP inhibition predictions.
Goal: Evaluate safety liabilities from both predicted and experimental sources.
Steps:
ADMETAI toxicity predictions [T3]:
ADMETAI_predict_toxicity(smiles=["<SMILES>"])
Key endpoints:
Nuclear receptor activity [T3]:
ADMETAI_predict_nuclear_receptor_activity(smiles=["<SMILES>"])
Stress response pathways [T3]:
ADMETAI_predict_stress_response(smiles=["<SMILES>"])
PubChemTox experimental data [T2] (call all in parallel):
PubChemTox_get_toxicity_values(cid=<CID>)
PubChemTox_get_ghs_classification(cid=<CID>)
PubChemTox_get_acute_effects(cid=<CID>)
PubChemTox_get_carcinogen_classification(cid=<CID>)
PubChemTox_get_target_organs(cid=<CID>)
PubChemTox_get_toxicity_summary(cid=<CID>)
Key flags: AMES positive (FAIL: mutagenic); DILI positive (WARN: hepatotox); hERG positive (FAIL: cardiac, often program-killing); ClinTox positive (WARN); LD50 < 50 mg/kg (FAIL: GHS 1-2); LD50 50-300 mg/kg (WARN: GHS 3); NR-ER/AR active (WARN: endocrine disruption); p53 active (WARN: genotoxicity); IARC Group 1/2A (FAIL: known/probable carcinogen).
Fallback: If ADMETAI unavailable, PubChemTox provides experimental toxicity data for known compounds. For novel compounds without PubChem entries, flag as "no experimental toxicity data available -- computational predictions only."
Goal: Aggregate all findings into a structured ADMET scorecard with pass/warn/fail verdicts.
Steps:
ChEMBL clinical status [T1] (if drug has ChEMBL ID):
ChEMBL_get_molecule(chembl_id="<CHEMBL_ID>")
Build the ADMET Scorecard: produce a table with 13 categories (Physicochemical, Solubility, Absorption, Distribution, Metabolism, Excretion, Tox: Mutagenicity/Hepatotoxicity/Cardiotoxicity/Carcinogenicity/Acute, Endocrine, Clinical Tox), each with PASS/WARN/FAIL verdict and key finding. Include compound identity header and overall verdict. Tag each finding with evidence tier [T1-T3].
Interpretation narrative: After the scorecard, provide a 3-5 sentence summary:
Before delivering the final scorecard, verify: