mcpField
C
cheminformatics

cheminformatics

github.com/awslabs数据与数据库6977 次安装4 周前更新
代码仓库

关于 cheminformatics

面向处理化合物筛选、相似性分析、聚类或匹配分子对的 Agent 的 RDKit 化学信息学基础技能。重点说明指纹选择、过滤顺序和特定版本的 API 注意事项。

主要功能

  1. 01按分析目标选择分子指纹
  2. 02安排化合物过滤顺序
  3. 03指导匹配分子对分析
  4. 04提示已弃用的 RDKit API
  5. 05验证并清理 SMILES

适用场景

  1. 01筛选化合物库
  2. 02按分子相似性搜索或聚类
  3. 03分析匹配分子对
  4. 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
药效团相似性FCFPradius=2, GetMorganFeatureAtomInvGen()≥ 0.6
大规模聚类Morganradius=2, fpSize=1024优先速度而非精度
筛选阈值
筛选条件规则阈值备注
Lipinski MW≤ 500 Da总计允许 ≤1 项违规并非简单的通过/不通过
Lipinski LogP≤ 5——
Lipinski HBD≤ 5——
Lipinski HBA≤ 10——
Veber TPSA≤ 140 Ų硬性阈值—
Veber RotBonds≤ 10硬性阈值—
PAINSA+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 radius2 (ECFP4)更高特异性时设为 3
fpSize2048速度优先时设为 1024;精度优先时设为 4096
includeChiralityFalse对立体化学敏感的应用设为 True
Lipinski max_violations1严格筛选时设为 0;生物制剂则完全豁免
mmpdb --min-pairs3数据集稀疏时调低
mmpdb --max-variable-size10大环转化时调高
PAINS catalogsA+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 行代码,并附简短说明

评论

支持 Markdown