tooluniverse-admet-prediction-0f31de — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited tooluniverse-admet-prediction-0f31de (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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")
ADMETAI tools run a local model, so they need the ml extra:
uv pip install 'tooluniverse[ml]'Without it the tools still appear in tu list (the config loads) but fail at call time with ADMETModel requires 'admet-ai' package. Run tooluniverse-doctor to confirm which optional groups are installed.
Expected console noise — not errors. The first ADMETAI call loads PyTorch and prints warnings such as missing-GPU / Trainer messages from PyTorch Lightning, and TypedStorage is deprecated from PyTorch. These are emitted by the underlying libraries during normal CPU inference. Predictions are unaffected — do not report them to the user as failures and do not retry the call because of them. Only treat output as a failure if the tool returns an error field or no predictions.
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.
operation param)| 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 recommendationGoal: Obtain SMILES, PubChem CID, and basic identifiers for the query compound.
Steps:
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)PubChem_get_CID_by_SMILES(smiles=<SMILES>) to get CIDPubChem_get_compound_properties_by_CID(cid=<CID>) for compound name and MWWhy 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_predict_physicochemical_properties(smiles=["<SMILES>"])Returns: MW, logP, TPSA, HBD, HBA, rotatable bonds
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_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.
Local TDC oracle scoring (no ML extra, no PubChem round-trip needed): TDC_predict_oracle_score(smiles=..., oracle=...) computes drug-likeness/property scores locally via the PyTDC package straight from a SMILES string — useful when tooluniverse[ml] isn't installed or as a fast independent cross-check. Six oracles: QED (drug-likeness 0-1), SA (synthetic accessibility 1=easy to 10=hard), LogP, and three target-binding-likelihood oracles (GSK3B, JNK3, DRD2) useful for early candidate triage against those specific targets. Verified live and cross-checked: TDC_predict_oracle_score(smiles="CC(=O)Oc1ccccc1C(=O)O", oracle="SA") and the independent Chem_sa_score(smiles=...) tool both returned 1.580 for aspirin — same underlying RDKit SA_Score algorithm, two separate wrapper tools; either is fine to cite, don't report both as independent corroborating evidence since they're the same computation.
TDC_load_dataset(problem=..., name=...) / TDC_list_datasets(problem=...) give access to TDC's ADME/Tox/HTS benchmark datasets — relevant if validating a custom prediction model against a public benchmark, not part of a single-compound ADMET profile. `TDC_list_datasets` works (verified live: problem="ADME" → 27 real dataset names). `TDC_load_dataset` is currently broken — verified live and reproduced on two different datasets (Caco2_Wang, hERG): it downloads successfully but the loader then receives an HTML error page instead of data and raises Please report this error to [email protected]. Don't build a workflow around it; use TDC_list_datasets for discovery and note the load failure if a user specifically needs a dataset pulled.
Goal: Predict absorption, distribution, metabolism, and excretion behavior.
Steps:
ADMETAI_predict_BBB_penetrance(smiles=["<SMILES>"]) ADMETAI_predict_bioavailability(smiles=["<SMILES>"]) ADMETAI_predict_CYP_interactions(smiles=["<SMILES>"]) ADMETAI_predict_clearance_distribution(smiles=["<SMILES>"])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_predict_toxicity(smiles=["<SMILES>"])Key endpoints:
ADMETAI_predict_nuclear_receptor_activity(smiles=["<SMILES>"]) ADMETAI_predict_stress_response(smiles=["<SMILES>"]) 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_get_molecule(chembl_id="<CHEMBL_ID>")Before delivering the final scorecard, verify:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.