实验笔记2026-05-066 分钟
IUPAC 名称转 SMILES:转换是如何完成的
将系统化的 IUPAC 名称转换为 SMILES 字符串是一个只有唯一正确答案的解析问题。本文讲解 OPSIN 如何完成转换,以及如何验证结果。
什么是 IUPAC 名称转 SMILES 的转换?
IUPAC 名称转 SMILES 的转换,是将一个系统化的化学名称(例如 2-乙酰氧基苯甲酸)翻译为一个 SMILES 字符串(CC(=O)Oc1ccccc1C(=O)O),即对分子原子与键的一种紧凑文本编码。由于这两种格式都描述同一个确切的结构,因此该转换只有唯一正确答案——它是一个解析问题,而非预测问题。
SMILES 编码了什么
SMILES(简化分子线性输入规范,Simplified Molecular Input Line Entry System)将一个分子写作一行文本:原子用元素符号表示,键用字符表示,环用成对的数字表示,支链则放在括号中。c1ccccc1 表示苯;小写字母标记芳香原子。它的紧凑性正是数据库、机器学习模型和化学 API 都「讲」SMILES 的原因。
OPSIN 如何解析一个名称
- 分词:将名称切分为可识别的语素——前缀、母体氢化物、后缀和位标。
- 解析语法:将 IUPAC 命名规则作为一套形式语法加以应用,组装出由取代基和母链构成的解析树。
- 构建结构:将解析树转换为原子与键的图,把取代基放置在其编号位置上。
- 输出 SMILES:将该图序列化为规范的 SMILES(或 InChI)字符串。
OPSIN(系统化 IUPAC 命名开放解析器,Open Parser for Systematic IUPAC Nomenclature)以确定性的方式完成这一过程——同一个名称始终产生同一个结构。
如何验证转换是否正确
可靠的检查是一次往返(round-trip):取 SMILES 输出,由它生成一个名称或规范标识符,并确认它与输入相符。Cheemly 的校验关卡(Critic Gate)正是这样做的——它用 RDKit 解析 SMILES,并运行一次 OPSIN 的名称到结构往返,因此一个被错误翻译的名称会在回答抵达您之前就被发现。通用的大语言模型会跳过这一步,这正是它们为何会自信地返回与所命名化合物不符的 SMILES。
常见陷阱
- 歧义或非标准名称:俗名或过时名称可能无法解析;请使用当前的 IUPAC 名称。
- 立体化学:
E/Z和R/S描述符必须在转换中得以保留——请验证输出中手性是否被保持。 - 盐与混合物:多组分名称会映射为以点号分隔的 SMILES(
[Na+].[Cl-]);请确认每个组分都存在。
常见问题
- 将 IUPAC 名称转换为 SMILES 是确定性的吗?
- 是的。一个正确的系统化 IUPAC 名称恰好描述一个结构,因此像 OPSIN 这样的合规解析器总是返回相同的 SMILES。这是一项只有唯一正确答案的解析任务,与大语言模型的概率性猜测不同。
- 什么工具可以将 IUPAC 名称转换为 SMILES?
- OPSIN 是一款开源解析器,是将系统化 IUPAC 名称转换为 SMILES 或 InChI 的标准工具。Cheemly 封装了 OPSIN,并在返回结果之前用 RDKit 加以验证。
- 为什么 AI 聊天机器人会把 SMILES 弄错?
- 通用大语言模型以概率方式生成 SMILES 并跳过验证,因此它们可能返回一个看似有效、却编码了错误分子的字符串。确定性解析加上往返检查可以消除这一类错误。