
本文收录于专栏分子模拟基础—— 专栏系统覆盖高效计算环境配置点击订阅可跟踪后续更新。论文Rajan K, Zielesny A, Steinbeck C. STOUT V2.0: SMILES to IUPAC name conversion using transformer models.J. Cheminform.16, 145 (2024). doi:10.1186/s13321-024-00941-xGitHub存活 forkegonw/Smiles-TO-iUpac-Translator实测环境Ubuntu 22.04 condaPython 3.10 tensorflow 2.15.0 rdkit 2026.03.5 orthonym 1.0.3摘要你手里有一把 SMILES报告里却需要规范的 IUPAC 名称照着两年前的 STOUT 教程敲 pip install却发现包已下架、模型无处下载本文带你实测 2026 年 STOUT 全部官方渠道的真实现状——PyPI 404、conda 频道删除、原仓库消失、Zenodo 模型被 takedown——并给出两条真正能跑通的路OPSIN REST APIIUPAC→SMILES与官方继任者 OrthonymSMILES→IUPAC规则引擎 OPSIN 回环验证。你能拿到全部可复现命令与本机原样输出照抄即可用。目录§1. 先说结论官方渠道 2026 年全部失效§2. STOUT把化学命名当成语言翻译§3. 实测死因五条渠道逐一验证§4. 实测 OPSINIUPAC→SMILES 的正确姿势§5. 继任者 Orthonym安装与实测§6. 横向对比与选型决策§7. 迁移建议相关教程与核心文献资源内容与本文关系Orthonym GitHub继任者确定性命名引擎§5 安装实测的出处Orthonym Web在线版画/贴结构出名字§5 零安装体验入口OPSIN 在线服务IUPAC→结构的网页版§4 REST API 的页面版OPSIN GitHub规则解析器源码Java§4 本地部署的下载源egonw/Smiles-TO-iUpac-TranslatorSTOUT 存活 fork§3 源码级验证的载体核心文献文献为什么值得先读Rajan K 等,J Cheminform13, 34 (2021). doi:10.1186/s13321-021-00512-4STOUT V1NMT 命名翻译的开山之作Rajan K 等,J Cheminform16, 145 (2024). doi:10.1186/s13321-024-00941-xSTOUT V210 亿对训练 BLEU 0.99§2 全部论文数字的出处Lowe DM 等,J Chem Inf Model51, 739 (2011). doi:10.1021/ci100384dOPSIN 原始论文——两个工具共同的验证后端§1. 先说结论官方渠道 2026 年全部失效网上所有 STOUT 教程的安装命令现在都跑不通。本机逐一实测结果官方文档写的实测结果pip install STOUT-pypi❌ PyPI 404包已下架conda install -c decimer stout-pypi❌ decimer 频道已删除残留 2.0.5 包仅 19 KB 代码、无模型pip install githttps://github.com/Kohulan/...❌原仓库已删除作者 GitHub 账号也 404首次运行自动从 Zenodo 下载模型❌ 两个模型 record12542360 / 13318286均于2025-02-05 被 takedownWeb 应用 stout.decimer.ai❌ 不可达好消息原作者团队Steinbeck-Lab已推出全新一代命名引擎Orthonym——确定性规则引擎 OPSIN 回环验证本机实测安装、命名、批量全部通过§5是当前 SMILES → IUPAC 的推荐方案反向解析用 OPSIN§4。§2. STOUT把化学命名当成语言翻译STOUTSmilesTOiUpacTranslator由德国耶拿大学Steinbeck 课题组开发把神经机器翻译NMT的 Transformer 架构引入化学命名实现 SMILES 与 IUPAC 系统命名的双向互译是DECIMER项目家族成员。设计目标论文示例 正向CN1CNC2C1C(O)N(C(O)N2C)C → 1,3,7-trimethylpurine-2,6-dione咖啡因 反向1,3,7-trimethylpurine-2,6-dione → CN1CNC2C1C(O)N(C)C(O)N2C核心 API 两个函数from STOUT import translate_forward, translate_reverse translate_forward(CN1CNC2C1C(O)N(C(O)N2C)C) # SMILES → IUPAC translate_reverse(1,3,7-trimethylpurine-2,6-dione) # IUPAC → SMILES2.1 架构SMILES 是源语言IUPAC 是目标语言STOUT 把命名视为 Seq2Seq 的 NMT 任务——源语言是 SMILES平均 40 字符目标语言是 IUPAC 英文名平均 80 字符设计选择说明字符级 tokenizationSMILES/IUPAC 都是短字符串字符即词元天然避免 OOVRDKit 预处理输入先转 kekulized canonical SMILES保证CCO与OCC输出一致输入上限602 tokens框架TensorFlow 2.15 SavedModelTPU 训练、CPU 可推理2.2 论文含金量数据来自 J Cheminform 16, 145 (2024)版本训练集规模IUPAC 名称生成工具年份V1.0~6000 万对PubChemChemAxon molconvert2021V2.0~10 亿对OpenEye Lexichem TK 2.8.12024论文报告平均 BLEU 从 V1 的 0.94 提升到 V2 的 0.99完美 BLEU1.0完全正确的翻译占比从66.65% → 97.49%。这是化学命名领域目前最强的 NMT 结果——STOUT 的学术价值毋庸置疑它证明了神经网络能可靠完成这一高难度任务。问题出在工程分发层面§3。§3. 实测死因五条渠道逐一验证本节为 Ubuntu 22.04 conda 环境真实踩坑记录。3.1 三条安装命令全灭# ① PyPI —— 失败 pip install STOUT-pypi # ERROR: Could not find a version that satisfies the requirement STOUT-pypi (from versions: none) # 验证curl https://pypi.org/pypi/STOUT-pypi/json → 404 Not Found # PyPI 上仅剩一个无关的 STOUT 包 0.0.82 KB ② conda decimer 频道 —— 失败 conda install -c decimer stout-pypi 验证api.anaconda.org/channels/decimer → channel exists: False 残留包 decimer/noarch/stout-pypi-2.0.5-py_0.tar.bz2 实测下载 19,380 B纯代码、无模型 ③ git 安装 —— 失败 pip install githttps://github.com/Kohulan/Smiles-TO-iUpac-Translator.git 验证api.github.com/repos/Kohulan/Smiles-TO-iUpac-Translator → Not Found原仓库已删除3.2 从存活 fork 装代码卡死在模型下载原仓库虽删fork 还在egonw / masterwhook 均有完整源码。从 fork 的 zip 装 STOUT-pypi 2.2.0 成功、依赖全装齐tensorflow 2.15.0 rdkit 2026.03.5 jpype1 1.7.1 pystow 0.8.21但模型文件已无处下载from STOUT import translate_forward # pystow.utils.download.DownloadError: Failed with urllib to download # https://zenodo.org/records/12542360/files/models.zip?download1逐层验证该 URL发现不是网络问题是模型被正式撤下curl https://zenodo.org/api/records/12542360 # → {status: 410, message: Record deleted, # tombstone: {removal_date: 2025-02-05, # removal_reason: {id: take-down-request}}} README Model Card 里引用的另一个 record 同样被删 curl https://zenodo.org/api/records/13318286 → 同上2025-02-05take-down-request3.3 分发渠道现状总表渠道状态备注PyPISTOUT-pypi❌ 已下架无关同名包仍在勿装错condadecimer频道❌ 已删除残留包仅代码原 GitHub 仓库❌ 已删除fork 存活egonw / masterwhookZenodo 模型×2 record❌ 2025-02-05 takedown源码硬编码 URL 永久失效Web 应用 stout.decimer.ai❌ 不可达decimer.ai 主站存活但已无命名入口Zenodo 源码快照✅ 存活record 6559438 (V2.0.0) / 14638076 (v2.1.2)仅几百 KB 代码结论除非你或机构手里还留着那份 40 MBmodels.zip否则 STOUT 已无法开箱使用。§4. 实测 OPSINIUPAC→SMILES 的正确姿势STOUT 倒了但反向IUPAC→结构从来都有更可靠的方案OPSINOpen Parser for Systematic IUPAC Nomenclature剑桥大学开发、EMBL-EBI 托管MIT 许可。以下全部为本机实测。4.1 REST APIURL 末尾加扩展名直接返回对应格式curl https://www.ebi.ac.uk/opsin/ws/benzene.smi # → C1CCCCC1 curl https://www.ebi.ac.uk/opsin/ws/2-acetyloxybenzoic%20acid.smi → C(C)(O)OC1C(C(O)O)CCCC1 阿司匹林系统名 立体化学名称含手性中心 curl https://www.ebi.ac.uk/opsin/ws/(1R,3S)-3-amino-3-methylcyclohexanecarboxylic%20acid.smi → N[C]1(CCHC(O)O)C 咖啡因系统名 curl https://www.ebi.ac.uk/opsin/ws/1,3,7-trimethylpurine-2,6-dione.smi → CN1C(N(C2NCN(C2C1O)C)C)O InChI / InChIKey7 个扩展名逐个实测 200 curl https://www.ebi.ac.uk/opsin/ws/benzene.stdinchi → InChI1S/C6H6/c1-2-4-6-5-3-1/h1-6H curl https://www.ebi.ac.uk/opsin/ws/benzene.stdinchikey → UHOVQNZJYSORNB-UHFFFAOYSA-N 结构图PNG 实测 2001989 B curl https://www.ebi.ac.uk/opsin/ws/benzene.png -o benzene.png支持扩展名逐个实测 200.smi.stdinchi.stdinchikey.cml.png.svg.json。4.2 实测踩到的重要边界不认俗名curl https://www.ebi.ac.uk/opsin/ws/aspirin.smi # → OPSIN has failed to process the following request: aspirin # aspirin was uninterpretable due to the following section of the name: aspirinOPSIN 只认系统名——aspirin、caffeine这类俗名直接报错必须给2-acetyloxybenzoic acid。同理商品名、CAS 号、Markush 可变基团“R1 represents alkyl…”、PDF 复制产生的乱码断行都不在处理范围内。俗名查询请走 PubChem。⚠ 官方建议批量转换请下载 OPSIN 本地版Java 8部署不要持续调用公共网页服务。§5. 继任者 Orthonym安装与实测Orthonym是 Steinbeck-Lab 2026 年推出的确定性命名引擎可视为 STOUT 的官方继任者。与 STOUT 的神经网络生成路线相反它走规则引擎 回环验证路线官方口号“A SMILES string goes in. A verified IUPAC name comes out, or a clear ‘no’.Never a guess.”SMILES 进来要么给出验证过的名字要么明确说不行从不瞎猜5.1 工作原理OPSIN 回环验证SMILES ──→ Orthonym 规则引擎IUPAC 2013 蓝皮书──→ 候选 IUPAC 名 │ ▼ 你的结构 InChIKey ◄────比对──── OPSIN 解析回结构 → InChIKey 一致 pin_verified ✅ 不一致 拒绝 ❌名字少一个原子、多一个原子、立体化学写错都过不了回环验证。输出分四档档位含义pin_verified首选 IUPAC 名PINOPSIN 回读验证通过fallback规则覆盖不到时给的一般系统名/保留名best effort尽力而为的名称no name明确拒绝5.2 安装全程可复现# 要求Python 3.10系统装 Java 11回环验证用 conda create -n orthonym python3.10 -y conda activate orthonym pip install githttps://github.com/Steinbeck-Lab/Orthonym.git 一次性下载依赖 jarOPSIN 2.9.0 centres 1.2.1下载时 SHA-256 校验 orthonym --fetch-jars → ~/.cache/orthonym/jars/opsin-cli-2.9.0-jar-with-dependencies.jar → ~/.cache/orthonym/jars/centres-cli-1.2.1.jar GitHub Releases 超时的话挂代理后重试5.3 实测输出本机原样记录orthonym 1.0.3from orthonym import name_compound name_compound(CCO) # ethanol name_compound(CC(O)Oc1ccccc1C(O)O) # 2-(acetyloxy)benzoic acid阿司匹林 name_compound(Cn1cnc2c1c(O)n(C)c(O)n2C) # 1,3,7-trimethyl-3,7-dihydro-1H-purine-2,6-dione咖啡因完整 PIN name_compound(C/CC/C) # (2E)-but-2-ene顺反异构正确 name_compound(CCHCC) # (2S)-butan-2-ol手性正确 name_compound(CC(C)CC1CCC(CC1)C(C)C(O)O) # 2-[4-(2-methylpropyl)phenyl]propanoic acid布洛芬 西地那非 → unknown organic compound超纲结构诚实拒绝而非瞎猜注意咖啡因一例Orthonym 输出1,3,7-trimethyl-3,7-dihydro-1H-purine-2,6-dione比 STOUT 论文示例多了3,7-dihydro-1H氢化定位——这才是完整的 2013 PIN 规范名。5.4 CLI、溯源与批量orthonym CCO # ethanol python -m orthonym c1ccccc1 # benzene模块形式实测可用 --provenance名字 档位 验证方式JSON 输出实测原样 orthonym CC(O)Oc1ccccc1C(O)O --provenance { name: 2-(acetyloxy)benzoic acid, tier: pin_verified, is_pin: true, source: pin_path, opsin: verified, gates_passed: [self_consistency], gate_outcome: self_consistency_verified } 批量每行一个 SMILES orthonym --batch molecules.smi -o names.txtWeb 版在线体验https://orthonym.decimer.ai。§6. 横向对比与选型决策6.1 对比总表含 2026 实测状态工具方向原理离线免费Python API2026 实测状态Orthonym结构→IUPAC规则引擎OPSIN 验证✅✅✅✅ 可用推荐OPSINIUPAC→结构规则引擎✅✅✅(JPype)✅ 可用REST 实测通过STOUT V2.0↔ 双向Transformer NMT✅✅✅❌ 模型分发链路断裂PubChem PUG↔ 双向数据库查找❌✅✅✅ 可用需联网CIR (NCI)↔ 双向混合解析❌✅✅⚠ 服务不稳定Marvin (ChemAxon)↔ 双向规则引擎✅❌✅(JVM)✅ 商业可用ChemDraw→ 结构→名称规则引擎✅❌❌✅ 商业可用Open Babel← 名称→SMILES简单规则✅✅✅仅俗名/简单名6.2 三条路线的本质区别路线代表优点缺点规则引擎OPSIN / Orthonym / Marvin确定性、可解释、精确覆盖范围受规则限制神经网络STOUT V1/V2覆盖广、容错可能出错且无法解释模型依赖分发渠道数据库查找PubChem PUG权威、含俗名必须联网库外化合物无能为力6.3 选型决策树你需要 SMILES ↔ IUPAC │ ├── SMILES → 标准 IUPAC 名离线、Python、确定性 │ └── ✅ Orthonym首选 ├── IUPAC 名 → SMILES/结构文献/专利名称解析 │ └── ✅ OPSIN在线 REST 或本地 jar ├── 需要双向 俗名 在线 │ └── ✅ PubChem PUG REST ├── 手工绘制 单分子命名接受商业软件 │ └── ✅ ChemDraw / Marvin └── 手头有 STOUT 的 models.zip 本地副本 └── ✅ STOUT V2.0唯一还保留双向离线能力的旧工具§7. 迁移建议场景推荐方案批量化合物库 IUPAC 标注Orthonym--batch文献/专利 IUPAC 名解析为结构OPSIN在线 REST / 本地 jar需要双向 俗名 在线PubChem PUG需要 token 级置信度/概率输出STOUT V2需自备模型文件正式 IP 文档标准命名Orthonym 出 PIN 商业软件人工复核三条实操建议还在用 STOUT 且本机有models.zip的——继续用没问题模型落地后与分发渠道无关新项目直接上 Orthonym确定性输出 OPSIN 回环验证比神经网络猜测更适合生产环境反向解析继续用 OPSIN——它是 Orthonym 的验证后端精度经受了 10 余年考验。参考来源STOUT V1 论文doi:10.1186/s13321-021-00512-4STOUT V2 论文doi:10.1186/s13321-024-00941-xOPSIN 论文doi:10.1021/ci100384dOrthonymgithub.com/Steinbeck-Lab/Orthonym Weborthonym.decimer.aiOPSINebi.ac.uk/opsin github.com/dan2097/opsinSTOUT 存活 forkegonw / masterwhookZenodo 源码快照records/6559438V2.0.0/ records/14638076v2.1.2DECIMER 项目decimer.ai系列专栏蛋白 / 抗体 / 多肽 / 核酸分子模拟 / 动力学 / 对接药物 / 设计 / 案例AI / Agent / 大模型开源蛋白结构预测分子模拟基础小分子药物设计案例AI Agent系列开源蛋白生成方法实践分子动力学模拟-Amber蛋白药物设计案例化学大模型开源多肽设计模型分子动力学模拟-Gromacs多肽药物设计案例《AI Agent原理与实战》开源多肽性质预测分子动力学模拟-OpenMM开源小分子生成设计CADD中的机器学习模型DNA/RNA药物设计結合自由能高效计算配置《MCP 入门实战》siRNA药物设计模型UCSF DOCK系列我胡师兄说药《AI入门实战2026》ASO药物设计模型rDock系列 LeDock系列 gnina系列