关于 cheminformatics
面向处理化合物筛选、相似性分析、聚类或匹配分子对的 Agent 的 RDKit 化学信息学基础技能。重点说明指纹选择、过滤顺序和特定版本的 API 注意事项。
主要功能
- 01按分析目标选择分子指纹
- 02安排化合物过滤顺序
- 03指导匹配分子对分析
- 04提示已弃用的 RDKit API
- 05验证并清理 SMILES
适用场景
- 01筛选化合物库
- 02按分子相似性搜索或聚类
- 03分析匹配分子对
- 04避免调用已弃用的指纹接口
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ awslabs/ hcls-agent-skills --skill cheminformatics安装后在 Claude Code 中输入/cheminformatics确认已加载。
详细介绍
化学信息学(RDKit)— 管线技能(轻量框架)
概述
为 RDKit 工作流添加指纹选择逻辑、筛选级联顺序以及特定版本的注意事项。Agent 已经了解 RDKit 语法,此技能可避免参数不匹配和使用已弃用的 API。
用法
- 筛选化合物库时启用(Lipinski/Veber/PAINS)
- 进行指纹相似性搜索或聚类时启用
- 使用 mmpdb 进行匹配分子对(MMP)分析时启用
核心概念
筛选级联顺序: Lipinski → Veber → PAINS → 相似性(先进行成本最低的筛选,最后进行成本最高的筛选)。
指纹 API: 仅使用 rdFingerprintGenerator 模块(自 RDKit 2024.03 起)。AllChem.GetMorganFingerprintAsBitVect() 路径已弃用,并将被移除。
SMILES 验证: 始终使用 sanitize=False 进行解析,然后在 try/except 中显式调用 SanitizeMol()。默认的 MolFromSmiles 在部分解析失败时会静默返回 None。
决策逻辑
指纹选择
| 目标 | 指纹 | 参数 | Tanimoto 阈值 |
|---|---|---|---|
| 通用相似性 | Morgan (ECFP4) | radius=2, fpSize=2048 | ≥ 0.7 |
| 高特异性匹配 | Morgan (ECFP6) | radius=3, fpSize=4096 | ≥ 0.6 |
| 子结构筛查 | MACCS 166 keys | — | ≥ 0.8 |
| 药效团相似性 | FCFP | radius=2, GetMorganFeatureAtomInvGen() | ≥ 0.6 |
| 大规模聚类 | Morgan | radius=2, fpSize=1024 | 优先速度而非精度 |
筛选阈值
| 筛选条件 | 规则 | 阈值 | 备注 |
|---|---|---|---|
| Lipinski MW | ≤ 500 Da | 总计允许 ≤1 项违规 | 并非简单的通过/不通过 |
| Lipinski LogP | ≤ 5 | — | — |
| Lipinski HBD | ≤ 5 | — | — |
| Lipinski HBA | ≤ 10 | — | — |
| Veber TPSA | ≤ 140 Ų | 硬性阈值 | — |
| Veber RotBonds | ≤ 10 | 硬性阈值 | — |
| PAINS | A+B+C catalogs | 仅用于 HTS 初筛 | 不要用于高级化合物 |
MMP 分析决策
| 场景 | 工具 | 关键参数 |
|---|---|---|
| 从化合物对中进行 SAR 分析 | mmpdb fragment → index → transform | --min-pairs 3 |
| 性质预测 | mmpdb predict | 需要包含性质数据的已索引数据库 |
| 核心识别 | rdFMCS.FindMCS() | ringMatchesRingOnly=True, completeRingsOnly=True |
| 大型库(>10K) | mmpdb CLI | 使用 --max-variable-size 10 限制片段拆分 |
关键参数
| 参数 | 值 | 何时更改 |
|---|---|---|
| Morgan radius | 2 (ECFP4) | 更高特异性时设为 3 |
| fpSize | 2048 | 速度优先时设为 1024;精度优先时设为 4096 |
| includeChirality | False | 对立体化学敏感的应用设为 True |
| Lipinski max_violations | 1 | 严格筛选时设为 0;生物制剂则完全豁免 |
| mmpdb --min-pairs | 3 | 数据集稀疏时调低 |
| mmpdb --max-variable-size | 10 | 大环转化时调高 |
| PAINS catalogs | A+B+C (all three) | 绝不使用不完整集合 |
常见错误
-
错误:
AllChem.GetMorganFingerprintAsBitVect()→ 正确:rdFingerprintGenerator.GetMorganGenerator(radius=2, fpSize=2048).GetFingerprint(mol)→ 原因: 自 RDKit 2024.03 起,AllChem FP 函数已弃用,之后将被移除 -
错误: 默认使用
MolFromSmiles(smi),不做错误处理 → 正确: 使用MolFromSmiles(smi, sanitize=False),并在 try/except 中调用SanitizeMol()→ 原因: 默认行为会静默返回 None;显式执行 sanitize 可捕获部分失败 -
错误: 将 Lipinski 规则作为硬性二元筛选条件 → 正确: 允许 ≤1 项违规 → 原因: 许多已获批药物违反一项规则;二元筛选会排除有效候选物
-
错误: 对临床候选物使用 PAINS → 正确: 仅在 HTS 库初筛中使用 PAINS → 原因: PAINS 专为筛选伪影而设计,会将有效的进阶化合物标记出来
-
错误: Morgan 半径设为 1 → 正确: 半径至少设为 2(ECFP4) → 原因: 半径为 1 会丢失结构信息,导致过多假阳性相似性判断
-
错误: 比较半径或 nBits 不同的 FP → 正确: 两个 FP 使用完全相同的参数 → 原因: Tanimoto 仅在相同参数空间中才有意义
-
错误: 忽略手性化合物的立体化学 → 正确: 在生成器中设置
includeChirality=True→ 原因: 默认情况下,对映异构体会被视为相同 -
错误: 对所有 FP 类型都使用固定的 0.7 阈值 → 正确: 针对每种指纹类型和化学系列验证阈值 → 原因: 0.7 是 ECFP4 专用的惯用值;其他类型需要使用不同的截止值
-
错误: 将原始 SMILES 直接输入 mmpdb → 正确: 先用
MolToSmiles(MolFromSmiles(smi))进行规范化 → 原因: mmpdb 需要规范 SMILES;非规范 SMILES 会导致片段化错误 -
错误: 混淆 LogP 与 LogD → 正确: 对可电离化合物使用 pH 7.4 时的 LogD;RDKit 只能计算 LogP → 原因: 在生理 pH 下,LogP 会高估可电离分子的亲脂性
响应格式
- 先给出用户需要的命令或代码,再进行解释
- 结构为:确认输入 → 可运行代码 → 解释关键参数 → 注意事项
- 每项任务提供一个完整可运行示例;不要罗列所有替代方案
- 代码注释应简洁且实用
- 目标:50–100 行代码,并附简短说明