2. 化学信息学基础:分子结构、原子、键、环
搞化学信息学,首先得弄明白分子到底是什么。说白了,SMILES 那一串字符串背后,承载的就是分子结构信息——原子怎么排、键怎么连、环怎么闭合。我刚开始接触 SMILES 时,觉得不就是一串字母和符号吗?后来做数据清洗时才发现,每个字符背后都有严格的物理意义。你忽略一个小写字母,整个分子图可能就变了。
这一节,我们把原子、键、环这三个核心概念掰开揉碎,对应到 SMILES 表示里。理解了这些,后面看序列分布图才能知其然也知其所以然。
核心要点:SMILES 的本质是分子拓扑结构的线性编码。原子是节点,键是边,环是闭合回路。所有分布统计,最终都落在这些元素的组合上。
2.1 分子结构:从二维简式到线性 SMILES
分子结构通常有三种表达方式。简写式比如 H₂O,告诉你原子组成比,但不说怎么连;结构式用线划出原子连接关系;而 SMILES 则把结构压成一行字符串。
水: H₂O(简写) → 结构式 H-O-H → SMILES: O
甲烷: CH₄ → 结构式 四面体 → SMILES: C
乙醇: C₂H₆O → 结构式 CH₃-CH₂-OH → SMILES: CCO
我个人习惯在写 SMILES 时,一定要先把分子中所有非氢原子列出来,再考虑连接顺序。乙醇的 CCO 看起来简单,但如果你写成了 COC,那就变成甲醚了。一个原子顺序的差异,就是完全不同的分子。
小技巧:写 SMILES 前,先画一幅骨架图。用 C、N、O 等原子符号代替结构式中的节点,再把单键、双键符号连上。这样转换成字符串时不容易漏掉原子。
2.2 原子:SMILES 中的节点
有机分子常见的原子也就十几个。碳、氮、氧、硫、磷,再加上卤素(F、Cl、Br、I)。每个原子在 SMILES 中用一个或两个字母表示:第一个字母大写,第二个若存在则小写。
| 原子 | SMILES 符号 | 价电子数 | 常见键数 | SMILES 示例 |
|---|---|---|---|---|
| 碳 | C | 4 | 4 | C, CC, CCO |
| 氮 | N | 5 | 3 | N, CN, Nc1ccccc1 |
| 氧 | O | 6 | 2 | O, CO, O=C |
| 硫 | S | 6 | 2 | S, CS, S=C |
| 氟 | F | 7 | 1 | F, CF |
| 氯 | Cl | 7 | 1 | Cl, CCl |
我在项目中遇到很多次,因为符号大小写搞错导致解析失败。Cl 是两个字符,C 大 L 小;如果写成 CL,解析器会当成碳和锂两个原子。嗯,这种坑踩过一次就记住了。
警告:SMILES 中所有原子符号必须严格遵循「首字母大写、第二字母小写」规则。溴是 Br 不是 br 或 BR,碘是 I 而不是 i。不遵守规则,解析器会直接报错或产生错误分子图。
2.3 键:连接原子的边
SMILES 中键用符号表示,默认单键可以不写。但我建议初学者在所有位置显式写出键符号,直到熟练掌握隐含规则。
| 键型 | SMILES 符号 | SMILES 示例 | 说明 |
|---|---|---|---|
| 单键 | - | C-C-O | 通常省略 |
| 双键 | = | C=C, C=O | 必须显式 |
| 三键 | # | C#C, C#N | 必须显式 |
| 芳香键 | : 或隐式 | c1ccccc1 | 小写字母表示芳香性 |
你想想看,双键如果不写等号,CCO 可能是乙醇,但 C=CO 就是乙醛。一个等号之差,分子性质天差地别。我曾接手过一个数据清洗任务,里面大量芳香键都是大写 C 表示,结果整个环结构变成了单双交替的环己烷骨架,根本对不上真实分子。
正确写法:
苯(芳香六元环): c1ccccc1
乙炔(三键): C#C
丙酮(双键): CC(=O)C
个人经验:在处理环结构解析时,最好先统一芳香性表示。通常用 RDKit 或 OpenBabel 将 SMILES 标准化,再提取键属性,避免异构写法带来的混淆。
2.4 环:闭合的键序列
环是分子结构中最有意思的部分,也是 SMILES 里最容易出错的。环的表示核心是「数字标记法」:在环起始原子后标一个数字,在环闭合的原子后也标同一个数字。
环丙烷: C1CC1
环丁烷: C1CCC1
环己烷: C1CCCCC1
苯: c1ccccc1
吡啶: n1ccccc1
实际分子中经常存在多个环,比如稠环、螺环、桥环。每个环用一对或多对不同的数字标记。
萘(两个稠合六元环): c1ccc2ccccc2c1
咖啡因(三个环): CN1C=NC2=C1C(=O)N(C)C(=O)N2C
记得我第一次处理咖啡因时,看到 N1 和 N2 两个标记,以为是两个独立的环标记,后面跟着数字 2 和 1 配对。其实咖啡因有三个环:一个咪唑环稠合一个嘧啶二酮环。如果你不亲手画一遍骨架图,很容易把环标记搞乱。
环标记规则: 1. 每个环用一对相同数字标记起始和结束原子。 2. 不同环必须使用不同数字。 3. 数字在 SMILES 中紧跟在原子符号之后。 4. 数字 1-9 通常用于小分子,10 以上用 %10 %11 表示。
警告:环标记数字不能重复。如果分子有多个环,必须给每个环分配唯一数字。两个环用同一数字,解析会失败或产生错误的跨环连接。我见过最大的一口锅,就是 5000 条分子因为环标记冲突导致图结构全部重建。
2.5 原子 · 键 · 环 综合对应
到这一步,我们能把 SMILES 字符串和分子结构一一对应上了。下面是三个分子的完整解析示例。
乙醇: CCO
原子: C, C, O
键: C-C (单键), C-O (单键)
环: 无
苯: c1ccccc1
原子: c (6个芳香碳)
键: c-c (全部芳香键)
环: 1个六元芳香环 (数字1标识)
咖啡因: CN1C=NC2=C1C(=O)N(C)C(=O)N2C
原子: C (9个), N (4个), O (2个)
键: C-N单键, C=N双键, C=O双键, C-C单键, C=C双键
环: 2个 (数字1和数字2)
嗯,看到咖啡因的 SMILES 了吧?里面数字 1 和 2 各出现两次。每个数字对就表示一个环的闭合点。你看 C=NC2=C1C(=O)... 这个片段,C2 和 N2 中的 2 是同一个环标记。
理解和解析这种多环分子的 SMILES,是后续做序列长度分布统计的基础。因为分布图里的长度,就是这些原子符号、键符号和环标记的数字总字符数。
上面这张图把原子、键、环三部分的关系整明白了。原子是基础节点,键是连接关系,环是键序列的闭合。三者组合起来,一个 SMILES 字符串就能承载完整的分子结构信息。
回头再看看我们的课程目标——SMILES 序列长度分布可视化。什么决定长度?原子数、键符号数、环标记数字。你在做分布图时,看到某个长度峰特别高,马上就能联想到:可能是原子多的分子集中出现,或者是双键、环标记增加了字符数。这种直觉,就是从原子、键、环的基础认知里长出来的。