返回目录
公开知识笔记 · 不进入目录

分子图、SMILES与RDKit

公开知识笔记

分子图、SMILES与RDKit

一句话理解:SMILES把分子写成一行文本,RDKit负责读懂这行文本并还原成“原子是节点、化学键是边”的分子图。

1. 为什么分子适合表示成图

普通表格要求每个样本有固定位置的特征,但不同药物含有的原子数不同。图结构更自然:

  • 节点:原子,如C、N、O;
  • 边:化学键,如单键、双键、芳香键;
  • 节点特征:元素类型、电荷、杂化方式、是否芳香、氢原子数等;
  • 边特征:键类型、是否共轭、是否在环中等。

2. SMILES是什么

SMILES(Simplified Molecular Input Line Entry System)使用字符和符号描述分子连接关系。例如字母表示元素,括号表示支链,数字常用于标记环闭合。它是线性字符串,但表达的是图结构。

一个重要提醒:同一分子可能有不止一种合法SMILES写法,所以模型真正应依赖的是解析后的分子结构,而不是字符串表面的字符顺序。

3. RDKit做了什么

在A3Net的数据处理中,RDKit大致承担:

  1. 解析SMILES是否合法;
  2. 创建原子与化学键对象;
  3. 读取每个原子的化学属性;
  4. 生成图神经网络所需的节点特征和边索引。

因此,SMILES是输入格式,RDKit是化学信息学工具,分子图才是GAT真正接收的数据结构。

4. 从一个药物到张量

若某药物有nn个原子,每个原子编码为dd维特征,则节点矩阵为:

X∈Rn×dX\in\mathbb R^{n\times d}

边用edge_index记录每条键两端节点。A3Net把每个原子编码成109维,再交给图注意力网络GAT更新。由于每种药物的nn不同,多个药物训练时通常使用图批处理,而不是强行补成同样大小。

这些109维是由RDKit从已知化学结构读取并按规则编码的初始特征,不是训练后得到的药物向量。GAT、交叉注意力和池化在此基础上学习出整个药物的最终表示;副作用侧相应地以MedDRA术语层级的243维初始特征为起点。

5. 节点表示怎样变成药物表示

GAT输出的是每个原子的向量,但最终要预测的是整个药物。于是需要池化:

hdrug=Pool⁡(h1,h2,…,hn)h_{drug}=\operatorname{Pool}(h_1,h_2,\ldots,h_n)

A3Net使用global max pooling,即每个维度取所有原子中的最大值。它能保留最强响应,但会丢失“哪个原子产生了该响应”和原子数量等信息。

6. 初学者常见混淆

  • SMILES不是图像,也不是蛋白质序列;
  • 109维是人为设计的原子属性编码,不是109个原子;
  • 图中的边表示化学键,不表示药物之间的相似性;
  • 原子注意力高,只说明模型利用了该原子附近的信息,不自动构成生物机制证据。

相关概念

相关论文

  • A3Net精读笔记(A3Net)
分子图、SMILES与RDKit|每周札记