关于 tooluniverse-admet-prediction
面向药物研发人员的 ADMET 分析指南,按化合物身份确认、药物相似性、药代预测和毒性评估组织流程。结合计算预测、实验数据与证据分级,并要求给出风险评分卡。
主要功能
- 01先确认化合物身份与 SMILES
- 02评估理化性质和药物相似性
- 03预测吸收、分布、代谢与排泄
- 04汇总毒性证据并分级
- 05以通过、警告或失败评分卡总结
适用场景
- 01评估候选药物的口服可用性
- 02筛查血脑屏障穿透与 CYP 风险
- 03比较化合物的毒性和药物相似性
MCP 相关
该技能编排 ToolUniverse 的 PubChem、ADMETAI、SwissADME 等工具,用于身份解析和 ADMET 评估;ADMETAI 工具需要安装 `tooluniverse[ml]`。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mims-harvard/ tooluniverse --skill tooluniverse-admet-prediction安装后在 Claude Code 中输入/tooluniverse-admet-prediction确认已加载。
详细介绍
ADMET 预测与候选药物分析
ADMET 分析思路:如果药物无法被吸收、分布到错误的组织、无法安全代谢或排泄,就会失效。应独立评估每项属性——良好的吸收无法弥补肝毒性。ADME 属性决定化合物能否以治疗浓度到达靶点;毒性则决定这样做是否安全。优先采用实验数据(T2),而非计算预测(T3)——ADMETAI 预测是筛选工具,并非最终结论。若任何毒性类别(hERG、AMES、DILI)标记为 FAIL,在湿实验数据推翻该结果之前,都应视为会限制项目推进的因素。
查证而非猜测:绝不要臆测 SMILES、CID 或实验 LD50 值——在调用任何 ADMETAI 或 PubChemTox 工具之前,始终先调用 PubChem 确认化合物身份。
全面的药代动力学和毒性分析,整合基于 AI 的 ADMET 预测、基于规则的药物相似性筛选,以及来自经过整理的数据库的实验基准数据。
何时使用此技能
触发语句:
- “[化合物] 的 ADMET 属性是什么?”
- “[药物] 可能穿过血脑屏障吗?”
- “预测此 SMILES 的毒性:……”
- “[化合物] 是否违反 Lipinski 五规则?”
- “评估 [分子] 的药物相似性”
- “[药物] 会与哪些 CYP 相互作用?”
- “[化合物] 的药代动力学特征”
- “[化合物] 是否具有口服生物利用度?”
- “[分子] 的 LD50 / hERG 风险是什么?”
输入:药物名称(例如 “ibuprofen”)或 SMILES 字符串(例如 “CC(C)Cc1ccc(cc1)C(C)C(=O)O”)
运行前准备
ADMETAI 工具会运行本地模型,因此需要 ml extra:
uv pip install 'tooluniverse[ml]'
如果未安装该 extra,工具仍会显示在 tu list 中(配置已加载),但调用时会失败,并提示 ADMETModel requires 'admet-ai' package。运行 tooluniverse-doctor,确认已安装哪些可选组。
预期的控制台输出——并非错误。 首次调用 ADMETAI 时会加载 PyTorch,并显示缺少 GPU、Trainer 消息等警告(来自 PyTorch Lightning),以及来自 PyTorch 的 TypedStorage is deprecated 警告。这些信息由底层库在正常 CPU 推理期间输出。它们不会影响预测——不要将其报告为失败,也不要因此重试调用。只有当工具返回 error 字段或没有预测结果时,才应视为失败。
通过计算得出结论,不要只作描述
当分析需要计算(统计、数据处理、评分、富集分析)时,应通过 Bash 编写并运行 Python 代码。不要只描述打算如何处理——实际执行并报告结果。使用 ToolUniverse 工具获取数据,再用 Python(pandas、scipy、statsmodels、matplotlib)进行分析。
关键原则
- 先确认身份——调用 ADMETAI 工具前,始终先将药物名称转换为 SMILES
- ADMETAI 工具需要
tooluniverse[ml]——如果导入失败,则改用 SwissADME / PubChemTox 备用方案 - 所有 ADMETAI 工具都接受
smiles: list[str]——即使只有一种化合物,也始终使用列表 - SwissADME 接受
smiles: str——单个字符串,不是列表(采用带operation参数的 SOAP 风格) - PubChemTox 工具接受
cid或compound_name——如有 CID,则优先使用以提高可靠性 - 必须进行证据分级——预测(T3)、实验数据(T2)、监管信息(T1)
- 输出评分卡——每次分析都必须以通过 / 警告 / 失败评分卡结尾
- 解释重要性——说明每项属性对药物开发的重要原因
证据分级
| 等级 | 标签 | 来源 |
|---|---|---|
| T1 | 监管 / 临床 | FDA 标签、ChEMBL 最高临床阶段 |
| T2 | 实验 | PubChemTox LD50/LC50、体外 AMES、动物研究 |
| T3 | 计算 | ADMETAI 预测、SwissADME 计算结果 |
| T4 | 注释 | 数据库交叉引用、文本挖掘 |
工作流:5 阶段 ADMET 分析
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
阶段 1:化合物身份解析
目标:获取查询化合物的 SMILES、PubChem CID 和基本标识信息。
步骤:
-
如果输入是药物名称:
- 调用
PubChem_get_CID_by_compound_name(name=<drug_name>)获取 CID - 调用
PubChem_get_compound_properties_by_CID(cid=<CID>)获取 SMILES 和 MW - 从响应中提取
ConnectivitySMILES(而非CanonicalSMILES)
- 调用
-
如果输入是 SMILES 字符串:
- 调用
PubChem_get_CID_by_SMILES(smiles=<SMILES>)获取 CID - 调用
PubChem_get_compound_properties_by_CID(cid=<CID>)获取化合物名称和 MW - 后续所有 ADMETAI 调用均使用输入的 SMILES
- 调用
-
记录:
- 化合物名称、CID、SMILES、分子式、分子量、IUPAC 名称
- 如果 CID 查询失败,则仅使用 SMILES 继续(ADMETAI 不需要 CID)
为何重要:ADMETAI 工具需要 SMILES 输入。PubChemTox 工具使用 CID 效果最佳。解析出两者可确保能够调用所有下游工具。PubChem 是 SMILES 规范化的权威来源。
备用方案:如果 PubChem 中没有条目,用户必须直接提供 SMILES。没有 SMILES 则无法继续。
阶段 2:理化性质与类药性
目标:评估该化合物是否具有类药性理化性质。
步骤:
-
ADMETAI 理化性质(主要):
ADMETAI_predict_physicochemical_properties(smiles=["<SMILES>"])返回:MW、logP、TPSA、HBD、HBA、可旋转键数
-
SwissADME 类药性(补充):
SwissADME_check_druglikeness(operation="check_druglikeness", smiles="<SMILES>") SwissADME_calculate_adme(operation="calculate_adme", smiles="<SMILES>")返回:Lipinski、Veber、Ghose、Egan、Muegge 规则符合情况;PAINS 警示;Brenk 警示
-
ADMETAI 溶解度:
ADMETAI_predict_solubility_lipophilicity_hydration(smiles=["<SMILES>"])返回:水溶解度(LogS)、亲脂性、水合自由能
解读与评分:
| 性质 | 理想范围 | 重要性 |
|---|---|---|
| MW | < 500 Da | 较大的分子膜渗透性较差(Lipinski) |
| LogP | -0.4 到 5.6 | 疏水性过强 = 溶解度差;亲水性过强 = 渗透性差 |
| HBD | <= 5 | 过多的供体会降低跨膜能力(Lipinski) |
| HBA | <= 10 | 过多的受体会降低跨膜能力(Lipinski) |
| TPSA | < 140 A^2 | PSA 较高与口服吸收不良相关 |
| 可旋转键数 | <= 10 | 分子柔性会影响生物利用度(Veber) |
| LogS | > -6 | 低于 -6 = 实际上不溶,增加制剂开发难度 |
| PAINS 警示 | 0 | 广泛检测分析干扰化合物会在筛选中产生假阳性 |
结论:Lipinski 违规项 <= 1 且无 PAINS 警示时为通过;违规项为 2 时为警告;违规项 >= 3 或出现 PAINS 警示时为失败。
后备方案:如果导入 ADMETAI 失败(缺少 tooluniverse[ml]),则仅使用 SwissADME。SwissADME 可独立提供所有 Lipinski 描述符。
本地 TDC oracle 评分(无需额外安装 ML,无需往返 PubChem):TDC_predict_oracle_score(smiles=..., oracle=...) 可直接通过 PyTDC 包,根据 SMILES 字符串在本地计算类药性/性质评分。当未安装 tooluniverse[ml] 时,或需要快速进行独立交叉核验时,这很有用。六种 oracle:QED(类药性,0-1)、SA(合成可及性,1=容易,10=困难)、LogP,以及三个靶标结合可能性 oracle(GSK3B、JNK3、DRD2),适用于针对这些特定靶标的早期候选物筛选。已实时验证并交叉核验:TDC_predict_oracle_score(smiles="CC(=O)Oc1ccccc1C(=O)O", oracle="SA") 和独立的 Chem_sa_score(smiles=...) 工具对阿司匹林均返回 1.580——二者基于相同的 RDKit SA_Score 算法,但属于两个独立的封装工具;引用时任选其一即可,不要将二者都报告为独立佐证,因为它们执行的是相同计算。
TDC_load_dataset(problem=..., name=...) / TDC_list_datasets(problem=...) 可访问 TDC 的 ADME/Tox/HTS 基准数据集——这适用于将自定义预测模型与公开基准进行验证,不属于单个化合物的 ADMET 特征分析。TDC_list_datasets 可用(已实时验证:problem="ADME" → 27 个真实数据集名称)。TDC_load_dataset 目前存在故障——已实时验证,并在两个不同的数据集(Caco2_Wang、hERG)上重现:它可以成功下载,但加载器随后收到的是 HTML 错误页面而非数据,并报错 Please report this error to [email protected]。不要围绕它构建工作流;使用 TDC_list_datasets 发现数据集。如果用户明确需要拉取数据集,则说明加载失败。
阶段 3:ADME 预测
目标:预测吸收、分布、代谢和排泄行为。
步骤:
-
血脑屏障穿透能力:
ADMETAI_predict_BBB_penetrance(smiles=["<SMILES>"])- BBB+ = 化合物可以穿透;BBB- = 无法穿透
- 对中枢神经系统(CNS)药物至关重要(必须穿透),对外周作用药物也至关重要(不应穿透,以避免 CNS 副作用)
-
口服生物利用度:
ADMETAI_predict_bioavailability(smiles=["<SMILES>"])- F20% = 口服生物利用度至少为 20%;F30% = 至少为 30%
- 生物利用度低意味着药物被广泛代谢或吸收不良
- F < 20% 通常需要采用非口服给药途径(静脉注射、吸入、局部给药)
-
CYP450 相互作用:
ADMETAI_predict_CYP_interactions(smiles=["<SMILES>"])- 报告 CYP1A2、2C9、2C19、2D6、3A4 的底物/抑制剂状态
- CYP 为何重要:约 75% 的药物由 CYP 酶代谢。抑制 CYP3A4(负责代谢约 50% 的药物)会导致危险的药物间相互作用(DDI)。CYP2D6 基因多态性会影响约 25% 的药物——代谢能力弱的患者会积累毒性水平的药物
- CYP2D6 底物 = 药物基因组学风险(代谢能力弱/超快代谢者)
- CYP3A4 抑制剂 = 高 DDI 风险(合并用药会导致药物积累)
-
清除率和分布:
ADMETAI_predict_clearance_distribution(smiles=["<SMILES>"])- VDss(分布容积):低(<0.7 L/kg)= 局限于血浆;高(>1 L/kg)= 分布到组织
- 清除率:清除率高 = 半衰期短,需要频繁给药
- 血浆蛋白结合率(PPB):结合率 >95% = 治疗窗狭窄,存在置换导致的 DDI 风险
-
SwissADME 药代动力学(交叉验证):
- 胃肠道吸收(高/低)、P-gp 底物状态、皮肤渗透性(logKp)
关键标记:非 CNS 药物为 BBB+(警告:可能产生 CNS 副作用);CNS 药物为 BBB-(失败:无法到达靶点);F < 20%(警告:口服生物利用度低);CYP3A4 抑制剂(警告:高 DDI 风险);CYP2D6 底物(警告:存在药物基因组学变异);PPB > 99%(警告:治疗窗狭窄);清除率高且生物利用度低(失败)。
备用方案:如果 ADMETAI 不可用,SwissADME 可提供胃肠道吸收、血脑屏障穿透能力(是/否)、P-gp 底物和 CYP 抑制预测。
阶段 4:毒性评估
目标:评估来自预测和实验来源的安全性风险。
步骤:
-
ADMETAI 毒性预测 [T3]:
ADMETAI_predict_toxicity(smiles=["<SMILES>"])关键终点:
- AMES:致突变性(细菌回复突变试验)。阳性 = 可能具有致癌性;监管机构要求对所有新药进行 AMES 检测
- DILI:药物性肝损伤风险。是药物撤市的首要原因(如曲格列酮)。阳性 = 存在肝毒性隐患,需要监测肝功能
- hERG:抑制 hERG 钾通道。会导致 QT 间期延长和致命性心律失常。hERG 阳性 = 存在心脏毒性风险;多种药物因此撤市(如特非那定、西沙必利)
- ClinTox:临床试验毒性 / FDA 撤市风险。基于试验失败或因毒性撤市的药物训练
- LD50_Zhu:预测的致死剂量(mg/kg,大鼠经口)。数值越低 = 急性毒性越强
- Skin_Reaction:皮肤致敏可能性。对外用药物尤为重要
- Carcinogens_Lagunin:致癌性预测
-
核受体活性 [T3]:
ADMETAI_predict_nuclear_receptor_activity(smiles=["<SMILES>"])- AR(雄激素受体)、ER(雌激素受体)、AhR、PPAR-gamma 活性
- 阳性 = 可能干扰内分泌;对长期使用的药物和环境化学品至关重要
-
应激反应通路 [T3]:
ADMETAI_predict_stress_response(smiles=["<SMILES>"])- p53 激活 = DNA 损伤反应(基因毒性信号)
- MMP 干扰 = 线粒体毒性
- ATAD5 = DNA 修复应激
- HSE = 热休克 / 蛋白质错误折叠应激
-
PubChemTox 实验数据 [T2](并行调用全部数据):
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>)- 真实动物研究数据(LD50、LC50、NOAEL)可为计算预测提供依据
- GHS 分类提供国际统一的危害类别
- IARC(第 1/2A/2B 组)、NTP、EPA 的致癌物分类
关键标记:AMES 阳性(失败:致突变);DILI 阳性(警告:肝毒性);hERG 阳性(失败:心脏毒性,通常会导致项目终止);ClinTox 阳性(警告);LD50 < 50 mg/kg(失败:GHS 1-2 类);LD50 50-300 mg/kg(警告:GHS 3 类);NR-ER/AR 有活性(警告:内分泌干扰);p53 有活性(警告:基因毒性);IARC 第 1/2A 组(失败:已知 / 可能致癌物)。
回退方案:如果 ADMETAI 不可用,PubChemTox 可为已知化合物提供实验毒性数据。对于 PubChem 中没有条目的新型化合物,标记为“无实验毒性数据——仅有计算预测”。
阶段 5:评分卡汇总与临床背景
目标:将所有发现汇总为结构化的 ADMET 评分卡,并给出通过 / 警告 / 失败判定。
步骤:
-
ChEMBL 临床状态 [T1](如果药物有 ChEMBL ID):
ChEMBL_get_molecule(chembl_id="<CHEMBL_ID>")- 最高阶段:4 = 已获批,3 = III 期,2 = II 期,1 = I 期,0 = 临床前
- ChEMBL 中的 Ro5 违规情况(对 Lipinski 规则进行独立验证)
- 首次获批年份、适应症类别、是否有黑框警告
-
构建 ADMET 评分卡:生成包含 13 个类别的表格(理化性质、溶解度、吸收、分布、代谢、排泄、毒性:致突变性 / 肝毒性 / 心脏毒性 / 致癌性 / 急性毒性、内分泌、临床毒性),每个类别都标注通过 / 警告 / 失败判定及关键发现。包含化合物身份标题和总体判定。为每项发现标注证据等级 [T1-T3]。
-
解读说明:评分卡之后提供 3-5 句摘要:
- 突出最关键的发现(任何失败或警告项)
- 说明该化合物是否适合口服给药
- 指出 CYP 相互作用带来的任何 DDI 风险
- 标记药物基因组学方面的隐患(CYP2D6 底物)
- 建议后续步骤(例如:“建议通过 hERG 膜片钳试验确认计算预测结果”)
完整性清单(提交前必须核对)
提交最终评分卡前,请确认:
- 已确认化合物身份(名称、CID、SMILES 均已提供,或明确注明不可用)
- 已报告理化性质,并给出 Lipinski 判定
- 每项 ADME 属性至少有一个来源(ADMETAI 或 SwissADME)
- 已报告全部 7 项 ADMETAI 毒性终点(或注明 N/A 及原因)
- 已检查 PubChemTox 实验数据(即使“未找到数据”)
- 已检查核受体和应激反应(或注明 N/A)
- 已为每项发现标注证据等级
- 评分卡表格完整,涵盖全部 13 个类别并给出判定
- 已说明总体判定
- 已提供解读说明和可执行的后续步骤