AgentStack
SKILL verified MIT Self-run

Smiles To Iupac

skill-internscience-chemclaw-smiles-to-iupac · by InternScience

将 SMILES 字符串转换为 IUPAC 化学名称。使用 PubChem、NCI/CADD、STOUT、RDKit-InChI 多种方法智能转换。

No reviews yet
0 installs
15 views
0.0% view→install

Install

$ agentstack add skill-internscience-chemclaw-smiles-to-iupac

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Smiles To Iupac? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

SMILES to IUPAC Name Converter (Optimized)

将 SMILES 字符串转换为 IUPAC 化学名称,使用多种方法智能转换:PubChem API、NCI/CADD、STOUT (Docker)、RDKit-InChI。

触发条件

  • 用户提供 SMILES 并要求转换
  • 提到"SMILES 转 IUPAC"、"smiles to iupac"
  • 说"这个 SMILES 叫什么"、"命名这个分子"
  • 提供 SMILES 字符串并要求化学名称

功能特性

  • 多方法支持 - PubChem、NCI/CADD、STOUT、RDKit-InChI
  • 智能降级 - 自动尝试多种方法直到成功
  • SMILES 验证 - 使用 RDKit 验证 SMILES 有效性
  • 分子性质 - 计算分子量、LogP、TPSA 等
  • 聚合物支持 - 自动清理聚合物标记
  • 立体化学 - 支持立体化学信息
  • 批量处理 - 支持多个 SMILES 同时转换
  • 置信度评估 - 提供结果置信度

核心模型

| 方法 | 来源 | 返回 | 置信度 | 速度 | |------|------|------|--------|------| | PubChem | NCBI | IUPAC | ⭐⭐⭐⭐⭐ | 快 | | NCI/CADD | NCI | IUPAC | ⭐⭐⭐⭐⭐ | 快 | | STOUT | Docker | InChI | ⭐⭐⭐⭐ | 中 | | RDKit-InChI | RDKit | InChI | ⭐⭐⭐⭐ | 快 |

方法选择逻辑 (auto 模式)

1. PubChem API → 成功?→ 返回 IUPAC 名称
                    ↓ 失败
2. NCI/CADD API → 成功?→ 返回 IUPAC 名称
                     ↓ 失败
3. STOUT (Docker) → 成功?→ 返回 InChI
                       ↓ 失败
4. RDKit-InChI → 生成 InChI → 返回

PubChem PUG-REST API (首选)

  • 来源: NCBI PubChem (>1 亿化合物)
  • 优势:
  • 权威数据源,准确率最高
  • 直接返回 IUPAC 名称
  • 覆盖药物、天然产物等
  • 限制:
  • 需要网络连接
  • 速率限制:~10 请求/秒

NCI/CADD Chemical Identifier Resolver (备选)

  • 来源: NCI/CADD
  • 优势:
  • 权威数据源
  • 支持多种化学标识符
  • 准确率与 PubChem 相当
  • 限制:
  • 需要网络连接
  • 某些化合物可能无 IUPAC 名称

STOUT (Docker) (本地方案)

  • 架构: Docker 容器 + RDKit
  • 优势:
  • 本地运行,保护隐私
  • 不依赖外部 API
  • 生成 InChI 标准化标识
  • 限制:
  • 需要安装 Docker
  • 需要安装 stout

RDKit-InChI (最终方案)

  • 来源: RDKit + InChI
  • 优势:
  • 完全本地运行
  • 生成标准化 InChI
  • InChI 可转换为 IUPAC
  • 限制:
  • 返回 InChI 而非直接 IUPAC

使用方法

对话框中使用

把 CCO 转成 IUPAC 名称
SMILES: CC(=O)Oc1ccccc1C(=O)O,转 IUPAC
smiles to iupac: C1=CC=C(C=C1)O
自动转换这个 SMILES

命令行使用

# 基本转换(自动选择最佳方法)
python3 scripts/smiles_to_iupac.py -s "CCO"

# 指定使用 PubChem
python3 scripts/smiles_to_iupac.py -s "CCO" -m pubchem

# 指定使用 NCI/CADD
python3 scripts/smiles_to_iupac.py -s "CCO" -m nci

# 指定使用 STOUT (Docker)
python3 scripts/smiles_to_iupac.py -s "CCO" -m stout

# 指定生成 InChI
python3 scripts/smiles_to_iupac.py -s "CCO" -m inchi

# 指定输出目录
python3 scripts/smiles_to_iupac.py -s "CCO" -o ./results

# 不计算分子性质(加快速度)
python3 scripts/smiles_to_iupac.py -s "CCO" --no-properties

# 安静模式(输出 JSON)
python3 scripts/smiles_to_iupac.py -s "CCO" -q

参数说明

| 参数 | 简写 | 说明 | 默认值 | |------|------|------|--------| | --smiles | -s | 输入 SMILES 字符串 | - | | --output | -o | 输出目录 | ~/.openclaw/media/smiles-to-iupac | | --method | -m | 方法:auto/pubchem/nci/stout/inchi | auto | | --no-properties | | 不计算分子性质 | false | | --quiet | -q | 安静模式(输出 JSON) | false |

输出示例

简单化合物 (PubChem)

{
  "input_smiles": "CCO",
  "cleaned_smiles": "CCO",
  "timestamp": "2026-03-16T20:00:00",
  "molecular_properties": {
    "molecular_formula": "C2H6O",
    "molecular_weight": 46.07,
    "num_atoms": 9,
    "num_heavy_atoms": 3
  },
  "results": [
    {
      "status": "success",
      "iupac_name": "ethanol",
      "smiles": "CCO",
      "model": "PubChem",
      "source": "api",
      "confidence": "high"
    }
  ],
  "best_result": {
    "status": "success",
    "iupac_name": "ethanol",
    "model": "PubChem",
    "confidence": "high"
  }
}

复杂化合物 (NCI/CADD)

{
  "input_smiles": "CC(=O)Oc1ccccc1C(=O)O",
  "best_result": {
    "status": "success",
    "iupac_name": "2-acetyloxybenzoic acid",
    "model": "NCI/CADD",
    "confidence": "high"
  }
}

聚合物单体 (InChI)

{
  "input_smiles": "*CC(C(=O)OCCCCOc1ccc(cc1)C(=O)Oc1ccc(cc1)OC)(C)*",
  "cleaned_smiles": "CC(C)(C(=O)OCCCCOc1ccc(cc1)C(=O)Oc1ccc(cc1)OC)",
  "best_result": {
    "status": "success",
    "iupac_name": "InChI: 1S/C22H26O6/...",
    "model": "RDKit-InChI",
    "confidence": "medium",
    "note": "InChI is a standardized identifier"
  }
}

依赖安装

# 基本安装(推荐)
pip install rdkit requests

# 完整安装(包含 STOUT)
pip install rdkit requests stout

# 确保 Docker 已安装(STOUT 需要)
docker --version

方法选择建议

| 场景 | 推荐方法 | 原因 | |------|----------|------| | 常见有机分子 | auto (PubChem) | 准确率最高 | | 药物分子 | auto (PubChem) | 数据库覆盖广 | | 无网络连接 | stout/inchi | 本地运行 | | 隐私敏感 | stout/inchi | 不上传数据 | | 聚合物 | inchi | 生成标准化 InChI | | PubChem 失败 | auto (自动降级) | 尝试其他方法 |

SMILES 清理

自动清理以下内容:

  • 聚合物标记: *...* → 移除
  • 空格: 自动移除
  • 无效字符: 自动检测

示例:

*CCO* → CCO
C C O → CCO

分子性质计算

包括以下性质(如果 RDKit 可用):

  • 分子式 (Molecular Formula)
  • 分子量 (Molecular Weight)
  • 精确质量 (Exact Mass)
  • 原子数 (Atom Count)
  • 重原子数 (Heavy Atom Count)
  • 环数 (Ring Count)
  • 芳香环数 (Aromatic Ring Count)
  • 氢键供体 (H-Bond Donors)
  • 氢键受体 (H-Bond Acceptors)
  • LogP (疏水性)
  • TPSA (拓扑极性表面积)

输出目录白名单

重要:为了能在飞书等平台上发送生成的文件,输出目录必须在白名单内:

  • ~/.openclaw/media/
  • ~/.openclaw/workspace/
  • ~/.openclaw/agents/

本 skill 默认输出到 ~/.openclaw/media/smiles-to-iupac/,可以直接分享!

与其他技能配合

与 iupac-to-smiles 配合

1. smiles-to-iupac: SMILES → IUPAC 名称
2. iupac-to-smiles: IUPAC 名称 → SMILES (反向验证)

与 mol-image-to-smiles 配合

1. mol-image-to-smiles: 分子图片 → SMILES
2. smiles-to-iupac: SMILES → IUPAC 名称

完整工作流

分子图片 → mol-image-to-smiles → SMILES → smiles-to-iupac → IUPAC 名称
     ↓                              ↓
  2D 结构图                      iupac-to-smiles
     ↓                              ↓
  可视化                        IUPAC 名称(验证)

完整工作流程示例

示例 1: 简单分子

# 转换乙醇
python3 scripts/smiles_to_iupac.py -s "CCO"

# 输出:ethanol

示例 2: 复杂分子

# 转换阿司匹林
python3 scripts/smiles_to_iupac.py -s "CC(=O)Oc1ccccc1C(=O)O"

# 输出:2-acetyloxybenzoic acid

示例 3: 含立体化学

# 转换乳酸(R 型)
python3 scripts/smiles_to_iupac.py -s "C[C@H](O)C(=O)O"

# 输出:(2R)-2-hydroxypropanoic acid

示例 4: 聚合物单体

# 转换聚合物重复单元
python3 scripts/smiles_to_iupac.py \
  -s "*CC(C(=O)OCCCCOc1ccc(cc1)C(=O)Oc1ccc(cc1)OC)(C)*"

# 输出:InChI (聚合物不在数据库中)

技术细节

智能降级逻辑

methods_order = ["pubchem", "nci", "stout", "inchi"]

for method in methods_order:
    result = try_method(method, smiles)
    if result["status"] == "success":
        return result  # 成功即返回
# 所有方法都失败
return error

SMILES 验证

使用 RDKit 验证:

from rdkit import Chem

mol = Chem.MolFromSmiles(smiles)
is_valid = mol is not None

分子性质计算

from rdkit.Chem import rdMolDescriptors, Descriptors

formula = rdMolDescriptors.CalcMolFormula(mol)
mw = Descriptors.MolWt(mol)
logp = Descriptors.MolLogP(mol)
tpsa = rdMolDescriptors.CalcTPSA(mol)

注意事项

  • 自动方法选择 - auto 模式智能降级
  • SMILES 验证 - 自动验证输入有效性
  • 结果验证 - 建议用其他工具验证 IUPAC 名称
  • 批量处理 - 支持多个 SMILES 同时转换
  • ⚠️ 网络连接 - PubChem/NCI 需要网络
  • ⚠️ Docker - STOUT 需要 Docker 运行
  • ⚠️ 聚合物 - 聚合物可能返回 InChI 而非 IUPAC
  • ⚠️ 超大分子 - 蛋白质等可能失败

错误处理

| 错误 | 说明 | 解决方案 | |------|------|----------| | Invalid SMILES | SMILES 格式错误 | 检查 SMILES 语法 | | PubChem API error | API 调用失败 | 检查网络连接 | | NCI API error | NCI 服务不可用 | 尝试其他方法 | | STOUT not installed | STOUT 未安装 | pip install stout | | Docker not available | Docker 未运行 | 启动 Docker 服务 | | All methods failed | 所有方法失败 | 分子可能太大或不在数据库 |

与 iupac-to-smiles 的区别

| 特性 | iupac-to-smiles | smiles-to-iupac | |------|-----------------|-----------------| | 输入 | IUPAC 名称 | SMILES | | 输出 | SMILES | IUPAC 名称/InChI | | 核心模型 | OPSIN API | PubChem/NCI/STOUT | | 需要网络 | 是 | 可选 | | 转换方向 | 名称→结构 | 结构→名称 |

常见化合物示例

醇类

CCO → ethanol
CCCO → propan-1-ol
CC(C)O → propan-2-ol

酸类

CC(=O)O → acetic acid
CCC(=O)O → propanoic acid
c1ccccc1C(=O)O → benzoic acid

酯类

CC(=O)OCC → ethyl acetate
CC(=O)Oc1ccccc1C(=O)O → 2-acetyloxybenzoic acid

芳香族

c1ccccc1 → benzene
c1ccccc1O → phenol
c1ccccc1N → aniline

性能对比

| 方法 | 平均响应时间 | 成功率 | 准确率 | |------|-------------|--------|--------| | PubChem | ~1s | 90%+ | 95%+ | | NCI/CADD | ~2s | 88%+ | 93%+ | | STOUT | ~10s | 85%+ | 90%+ | | RDKit-InChI | ~0.1s | 99%+ | 100% (InChI) |

未来改进

  • [ ] 支持更多无机化合物
  • [ ] 添加同义词支持
  • [ ] 改进聚合物命名
  • [ ] 添加 CAS 号查询
  • [ ] 支持多语言 IUPAC 名称
  • [ ] 集成更多数据源(ChEBI、ChemSpider 等)
  • [ ] 添加反应式支持

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.