用于PubChem API查询(化合物信息/属性、结构/SMILES/图像、合成路线/参考文献)及RDKit化学信息学处理的化学智能体技能。
化学 查询剂 v1.4.1.是一项面向实际任务的技能,主要用于Overview.Full-stack 化学工具包 将 PubChem 数据检索与 RDKit 分子处理,可视化,分析,复古合成,合成计划结合。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
全栈化学工具包,整合 PubChem 数据检索与 RDKit 分子处理、可视化、分析、逆合成分析及合成路线规划能力。所有输出均为结构化 JSON 格式,便于下游任务链式调用。支持按需生成 PNG/SVG 图像。
核心能力:
# PubChem 化合物信息查询
exec python scripts/query_pubchem.py --compound "aspirin" --type info
# 从 SMILES 计算分子性质
exec python scripts/rdkit_mol.py --smiles "CC(=O)Oc1ccccc1C(=O)O" --action props
# 逆合成分析
exec python scripts/rdkit_mol.py --target "CC(=O)Oc1ccccc1C(=O)O" --action retro --depth 2
# 完整链式调用(名称 → 性质 + 绘图 + 逆合成)
exec python scripts/chain_entry.py --input-json '{"name": "caffeine", "context": "user"}'
scripts/query_pubchem.py调用 PubChem REST API,支持自动将化合物名解析为 CID,并内置超时处理机制。
--compound--type [--format smiles|inchi|image|json] [--threshold 80]
scripts/rdkit_mol.py基于 RDKit 的化学信息学引擎,自动通过 PubChem 解析化合物名称。
--smiles--action
| 操作 | 说明 | 关键参数 |
|---|---|---|
| props | 计算 MW、logP、TPSA、HBD、HBA、rotB、aromRings | --smiles |
| draw | 生成 2D PNG/SVG 图像(300×300 像素) | --smiles --output file.png --format png|svg |
| retro | 基于 BRICS 的递归逆合成分析 | --target |
| plan | 多步逆合成路线规划 | --target |
| react | 基于 SMARTS 的正向反应模拟 | --reactants "smi1 smi2" --smarts " |
| fingerprint | 生成 Morgan 指纹位向量 | --smiles --radius 2 |
| similarity | 计算 Tanimoto 相似性得分 | --query_smiles --target_smiles "smi1,smi2" |
| substruct | 子结构匹配 | --query_smiles --target_smiles "smi1,smi2" |
| xyz | 生成 3D 坐标(经 MMFF 优化) | --smiles |
scripts/chain_entry.py标准 Agent 链式接口,接受 {"smiles": "...", "context": "..."} 或 {"name": "...", "context": "..."} 输入,统一返回包含分子性质、可视化图像及逆合成结果的 JSON 对象。
python scripts/chain_entry.py --input-json '{"name": "sotorasib", "context": "user"}'
输出 Schema:
{
"agent": "chemistry-query",
"version": "1.4.0",
"smiles": "",
"status": "success|error",
"report": {"props": {...}, "draw": {...}, "retro": {...}},
"risks": [],
"viz": ["path/to/image.png"],
"recommend_next": ["pharmacology", "toxicology"],
"confidence": 0.95,
"warnings": [],
"timestamp": "ISO8601"
}
scripts/templates.json包含 21 种命名反应模板的 JSON 文件,每个模板均含 SMARTS 表达式、预期收率、反应条件及参考文献。涵盖 Suzuki、Heck、Buchwald-Hartwig、Grignard、Wittig、Diels-Alder、Click、Sonogashira、Negishi 等反应。
chain_entry.py 输入 {"name": "ibuprofen"},获取分子性质、结构图与逆合成路径pharma-pharmacology-agent 的输入--action react --reactants "c1ccccc1Br c1ccccc1B(O)O" --smarts "[c:1][Br:2].[c:3][B]([c:4])(O)O>>[c:1][c:3]"所有功能均已通过 RDKit 2024.03+ 全流程端到端验证:
| 分子 | SMILES | 通过测试项 |
|---|---|---|
| Caffeine | CN1C=NC2=C1C(=O)N(C(=O)N2C)C |
info、structure、props、draw、retro、plan、chain |
| Aspirin | CC(=O)Oc1ccccc1C(=O)O |
info、structure、props、draw、retro、plan、chain |
| Sotorasib | PubChem 名称查询 | info、structure、props、draw、retro、chain |
| Ibuprofen | PubChem 名称查询 | info、structure、props、chain |
| 无效 SMILES | XXXINVALID |
返回格式良好的 JSON 错误响应 |
| 空输入 | {} |
返回格式良好的 JSON 错误响应 |
references/api_endpoints.md — PubChem API 接口文档与速率限制说明scripts/rdkit_reaction.py — 已弃用的反应模块(遗留)scripts/chembl_query.py、scripts/pubmed_search.py、scripts/admet_predict.py — 扩展查询模块scripts/advanced_chem.py高级化学信息学引擎,提供 6 项 Tier 1 级能力。
--action--smiles [options]
| 操作 | 说明 | 关键参数 |
|---|---|---|
| standardize | 盐去除、电荷归一化、互变异构体枚举 | --smiles |
| descriptors | 217+ 种分子描述符(RDKit 全集)、QED、SA Score、Lipinski/Veber 规则判断 | --smiles --descriptor_set all|druglike|physical|topological |
| scaffold | Murcko 支架提取、通用支架、多样性分析、R-基团分解 | --smiles 或 --target_smiles "smi1,smi2,..." --rgroup_core |
| mcs | 2 个及以上分子的最大公共子结构(MCS) | --target_smiles "smi1,smi2,..." |
| mmpa | 匹配分子对分析(Matched Molecular Pair Analysis),识别单点结构变换 | --target_smiles "smi1,smi2,..." |
| chemspace | 化学空间可视化(PCA/t-SNE/UMAP 散点图 PNG) | --target_smiles "smi1,smi2,..." --method pca|tsne|umap --output plot.png |
使用示例:
# 标准化盐形式 python scripts/advanced_chem.py --action standardize --smiles "[Na+].CC(=O)[O-]" # 计算全部描述符(217+ 项) python scripts/advanced_chem.py --action descriptors --smiles "CC(=O)Oc1ccccc1C(=O)O" --descriptor_set all # 分析一组分子的支架多样性 python scripts/advanced_chem.py --action scaffold --target_smiles "CC(=O)Oc1ccccc1C(=O)O,CN1C=NC2=C1C(=O)N(C(=O)N2C)C,CC(C)Cc1ccc(cc1)C(C)C(=O)O" # 计算阿司匹林与水杨酸的最大公共子结构(MCS) python scripts/advanced_chem.py --action mcs --target_smiles "CC(=O)Oc1ccccc1C(=O)O,c1ccccc1C(=O)O" # 匹配分子对分析(MMPA) python scripts/advanced_chem.py --action mmpa --target_smiles "c1ccc(CC(=O)O)cc1,c1ccc(CCC(=O)O)cc1" # 化学空间 PCA 可视化 python scripts/advanced_chem.py --action chemspace --target_smiles "CC(=O)Oc1ccccc1C(=O)O,CN1C=NC2=C1C(=O)N(C(=O)N2C)C,c1ccccc1" --method pca --output space.png
v2.0.0(2026-02-28)
advanced_chem.py,集成 6 项 Tier 1 级化学信息学能力v1.4.1(2026-02-25)
_sanitize_input() —— 对所有用户输入施加长度限制并拒绝空字节_sanitize_output_path() —— 阻止路径遍历、限制文件扩展名、禁止任意文件写入resolve_target() 中增加 shell 元字符过滤chem_ui.py 中于子进程调用前,使用 RDKit 对 SMILES 进行校验query_pubchem.py 中增加化合物输入校验(长度与空字节检查)resolve_target() 中的 PubChem 子进程调用添加超时机制v1.4.0(2026-02-14)
chain_entry.py 中 HTML 实体损坏问题brics_retro 对 BRICSDecompose 字符串输出的解析逻辑chain 输出版本号与 Schema 定义v1.3.0
react 功能:修正 ReactionFromSmarts 导入逻辑v1.2.0
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习