简化分子线性输入规范(Simplified Molecular Input Line Entry System,SMILES) 用单行 ASCII 字符串描述小分子(及可表达的部分聚合物片段)的分子图(原子、键、芳香性、支链等),是化学信息学里最常用的「可机读结构」之一。酶学机器学习里,酶功能/动力学大模型若要同时吃「蛋白质序列」与「底物化学结构」,通常会把底物统一成 SMILES(或由其派生的分子图),再经 Transformer、图神经网络(Graph Neural Network,GNN) 或 指纹 等编码,与 蛋白质语言模型(Protein Language Model,PLM) 支路对齐。本文只做脉络整理,不展开各模型公式。
段末注释:SMILES 与 InChI 等同为标识符体系,SMILES 更短、便于当「序列」喂给字符级模型;GNN 在分子上常以原子为节点、化学键为边。
1. 为什么在「酶 + 大模型」里总看到 SMILES?
| 需求 | SMILES 能提供的 | 局限(工程上常踩坑) |
|---|---|---|
| 把底物结构与氨基酸序列拼在同一套深度学习管线里 | 一维字符串,易与 ProtT5 / ESM 等「序列模型」并列为两条支路 | 同一结构可有多种合法 SMILES(需 canonicalize 规范化) |
| 与公开数据库对接 | PubChem、ChEBI、KEGG 等常提供或可转换 SMILES / CID | 盐、溶剂合物、多组分(见 §4) |
| 下游任务:kcat、Km、选择性等 | 结构决定相互作用,比「底物名称字符串」可泛化 | 对金属配位、大肽底物等,SMILES 未必是唯一或最佳表示 |
一句话:SMILES 是「底物分支」的通用输入语言;酶分支则多为 PLM 或 CNN/n-gram 序列编码。
2. 典型信息流(双支路)
1 | 底物 SMILES → [RDKit 解析] 或 [Tokenizer] → 分子图 / SMILES 字符序列 |
- 序列式 SMILES 模型:把 SMILES 当字符序列,用 Transformer 编码(如 UniKP 中的 SMILES Transformer)。
- 图式模型:
MolFromSmiles→ 原子/键特征 + 邻接矩阵 → GCN / GAT(如 DeepEnzyme 底物支路;DLKcat 用 GNN 作用于分子图,图由 SMILES 派生)。
段末注释:GCN 为图卷积网络;GAT 为图注意力网络;RDKit 为开源化学信息学工具包。
3. 代表工作一览(与 SMILES 的关系)
| 工作(常见简称) | 底物侧如何用 SMILES | 酶侧 | 站内长文 |
|---|---|---|---|
| UniKP | SMILES Transformer(预训练),字符级嵌入 + pooling 拼成 1024 维分子向量,与 ProtT5 酶向量拼接 | ProtT5-XL-UniRef50 嵌入 | 酶改造-modelpaper-UniKP |
| EF-UniKP | 同上 + 环境因子(pH、温度等)重加权扩展 | 同上 | 同上 |
| DeepEnzyme | SMILES → RDKit 分子对象 → 指纹 + 分子图 GCN | Transformer(序列)+ 蛋白接触图 GCN(结构) | 酶改造-modelpaper-DeepEnzyme |
| DLKcat | 底物 SMILES → 分子图 → GNN | 序列 CNN(n-gram) | 可对照 Nature Catalysis 原文与 Tamarind DLKcat |
| TurNuP 等 | 文献中常以 SMILES/InChI 统一底物(具体以各文 Methods 为准) | 多样 | 可在 酶改造-03 数据篇交叉检索 |
段末注释:EF-UniKP 为 UniKP 的环境因子扩展版;TurNuP 为另一套 kcat 预测代表工作,底物编码方式以论文为准。
4. 数据与清洗:做数据集时建议统一规则
以下与 UniKP 等文剔除规则及常见实践一致,便于复现与对齐。
- 规范化:同一底物尽量用 RDKit
MolToSmiles(MolFromSmiles(s), canonical=True)得到 canonical SMILES,减少「字符串不同、分子相同」带来的伪多样性。 - 多底物/反应混合物:SMILES 中用 「.」 分隔的多组分(如辅因子、双底物未写成反应式)在监督学习里常被整条剔除或拆分为多任务,需在论文/README 中显式声明(UniKP 对含 「.」 样本的处理见站内 UniKP 文)。
- 稀有氨基酸 / 非标准片段:蛋白质侧用 X 等约定;小分子侧对无法解析的 SMILES 应丢弃或手工策展。
- 立体化学:若任务对手性敏感,需在 SMILES 中保留 @ / @@ 等标记,并在划分训练/测试时避免数据泄漏(同一不同 SMILES 写法的重复)。
5. 与其它分子编码的并列(可选)
| 表示 | 特点 | 在模型中的常见用法 |
|---|---|---|
| SMILES | 紧凑、序列化友好 | Transformer、RNN、字符级 tokenizer |
| SELFIES | 语法上更「可合法化」,利于生成式模型 | 部分生成/设计工作流 |
| 分子图(原子为节点) | 与化学键拓扑一致 | GNN(输入常由 SMILES 或 SDF 解析) |
| Morgan 等指纹 | 固定长度向量 | 传统机器学习 + 轻量深度模型 |
酶功能「大模型」语境下,SMILES 仍是数据交换与复现的事实标准;真正进网络的是 SMILES 派生的张量(嵌入或图)。
6. 实践实例:从 SMILES 与条件到张量(Python)
以下用乙醇为底物、pH 与温度为条件,演示与 §2 一致的管线:规范化 SMILES → 底物向量(序列嵌入池化 / Morgan 指纹 / 图张量)→ 条件向量 → 拼接。依赖:RDKit(化学信息学工具包,常用 RDKit 指代)与 PyTorch(深度学习框架,PyTorch)。安装示例:pip install rdkit torch。
段末注释:PyTorch 中 张量(tensor) 即多维数组;下文维度与 UniKP 的 1024 维不必强行一致,重在流程可复现。
6.1 场景与目标
| 项目 | 取值(示例) |
|---|---|
| 底物 | 乙醇,原始 SMILES 可写 CCO 或 C(C)O |
| 条件 | pH = 7.4,热力学温度 T = 298 K(约 25 °C) |
| 目标 | 得到可供 MLP 读出头的 底物向量 s、条件向量 c 及拼接示例 z |
6.2 步骤 1:规范化 canonical SMILES
同一分子多种写法时,用 RDKit 统一为 canonical SMILES,与 §4 一致。
1 | from rdkit import Chem |
6.3 步骤 2A:序列式——字符 id → Embedding → mean pooling
与 UniKP 的 SMILES Transformer 同型:字符序列 → 嵌入 → 编码器(此处用池化代替预训练 Transformer 以减小依赖)。生产环境应替换为预训练的 SMILES Transformer 与论文一致词表。
1 | import torch |
6.4 步骤 2B:指纹式——Morgan 指纹 固定维向量
DeepEnzyme 等路线常用 SMILES → Mol → 指纹,得到固定长度二值或浮点向量,便于与传统机器学习或浅层网络拼接。
1 | import numpy as np |
6.5 步骤 2C:图式——邻接矩阵与节点标量特征(供 GNN 使用)
DLKcat 等:SMILES 解析为 Mol 后构造分子图。此处仅导出 PyTorch 可用的 节点特征与邻接;GNN 前向需另写 torch_geometric 或自实现消息传递。
1 | import numpy as np |
6.6 步骤 3:反应条件数值化与拼接
pH、T 不来自 SMILES,需单独特征;下列线性缩放仅为演示(与 EF-UniKP 等论文中的具体归一化以原文为准)。
1 | ph, T_k = 7.4, 298.0 |
6.7 单脚本串联(可选)
将 6.2–6.6 置于同一 if __name__ == "__main__" 中时,须共用同一个 mol(由 6.2 解析得到),并按顺序执行;6.3 依赖 6.2 的 canon_smiles,6.4–6.5 依赖 6.2 的 mol。
段末注释:mean pooling 为对序列维求平均;Morgan 指纹 在 RDKit 中默认 ECFP 类圆形指纹的一种实现。
7. 小结
- SMILES 在酶功能/动力学模型里几乎总是底物(或底物侧)的入口表示,与 PLM 负责的酶序列并列。
- UniKP 用 SMILES Transformer;DeepEnzyme / DLKcat 用 SMILES → 图/指纹——选型取决于是否要显式图结构与可解释性。
- 工程关键:canonical 化、多组分处理、立体化学一致性。
- 实践:§6 给出从 RDKit 解析到 PyTorch 张量的可运行骨架;替换预训练编码器即可对齐文献级模型。
8. 延伸阅读(检索关键词)
enzyme kcat prediction SMILES,SMILES Transformer Honda,UniKP ProtT5,DLKcat molecular graph,RDKit canonical SMILES enzyme