第4章 链结构与分支:线性链、圆括号分支

SMILES 的核心其实就两样东西:线性链和分支。说白了,一个分子就是原子的链条,遇到支链就用圆括号括起来挂上去。我刚开始学 SMILES 的时候,总觉得分支很绕,后来弄明白括号的“附着点”就好办多了。

4.1 线性链:一根绳子串到底

线性链最简单。原子一个接一个写,默认单键连接,不用写键符号。比如丙烷三个碳直连:

CCC

丁烷就是四个碳:

CCCC

嗯,这里有个小细节——单键默认,双键和三键必须显式写。乙烯是:

C=C

乙炔是:

C#C

我遇到过新手把乙烯写成 C-C,结果解析出来变成乙烷。记住,没写符号就是单键,别多此一举。

对于烷烃链,还有一种常见写法是给原子加编号(方括号数字),但基础线性链不需要。

4.2 圆括号分支:给链条装侧枝

圆括号很重要。它表示从当前原子出发,挂一个子结构。比如异丁烷,中心碳连三个甲基:

CC(C)C

怎么读?从左边第一个碳开始:C(主链第一个碳),紧接着第二个碳C,然后遇到左括号(,表示从它前面的碳(第二个C)分出一个分支,分支内容 C 就是一个甲基,右括号结束分支;最后还有一个 C 是主链的延续。所以结构是 C-C(C)-C,中间碳连两个甲基加一个乙基?不对,实际上异丁烷是 C(C)(C)C? 等等,上面这个 CC(C)C 其实等价于 C(C)(C)C?我重新捋一下:

  • 标准异丁烷(2-甲基丙烷)SMILES 是 CC(C)C。解读:第一个C,第二个C(主链第二个),括号从第二个C分出分支C,然后主链继续第三个C。所以主链只有三个碳?实际上主链丙烷,中间碳上挂一个甲基。对的,没错。
  • 如果写 CC(C)(C)C 则中间碳挂两个甲基,那是新戊烷(2,2-二甲基丙烷)。

看个例子,乙醇(乙醇)的 SMILES 是 CCO,线性。异丙醇(2-丙醇)就是:

CC(O)C

中间碳上挂一个羟基。括号里的 O 就是分支。

我的窍门: 把圆括号想象成“从当前原子长出一条小尾巴”。括号里的原子数没有限制,可以是一长串,甚至嵌套括号。

4.3 嵌套分支与复杂结构

分支里还可以有分支。比如 2-甲基丁酸(3-甲基丁酸?)。我记得有一个常见分子 3-甲基戊烷:

CC(C)CCC

解读:主链有一个分支甲基挂在第二个碳上,后面再接三个碳。如果分支里还有分支,比如 2,3-二甲基己烷:

CC(C)C(C)CCC

括号可以连续出现,也可以嵌套。写的时候一定要注意括号配对,我早期调试时经常少一个括号导致整个 SMILES 解析失败。

还有一点:分支可以出现在任何位置。比如羧基乙酸(乙酸)的 SMILES 是 CC(=O)O,这里等号表示双键,括号里是双键氧,然后还有一个羟基分支?实际上 CC(=O)O 里面括号并不是分支,而是一种特殊写法:等号后面跟的括号表示官能团。严格来说,=O 不是圆括号分支,但 O 在括号里表示酮基。这个有点绕,但我们可以记住:等号、三号键后面如果跟括号,括号内容属于该键连接的基团。

为了更清晰,我整理了一个对比表格:

结构类型 SMILES 示例 说明
线性烷烃 CCCC 直链丁烷,四个碳
单分支 CC(C)C 异丁烷,中间碳挂一个甲基
双分支 CC(C)(C)C 新戊烷,中间碳挂两个甲基
含杂原子分支 CC(O)C 2-丙醇,羟基在第二个碳上
嵌套分支 CC(C(C)C)C 2,3-二甲基丁烷?实际表示有点复杂,但嵌套有效
曾经踩过的坑: 我写过 C(C)(C)(C)C 想表示季戊四醇(五个碳),结果解析出来是个奇怪的东西。后来才知道每个括号只能从当前原子分出一个分支,要表示多个相同分支可以连写括号,但一定要对应正确的连接点。

4.4 分支优先级与顺序

SMILES 没有严格的优先级规则,但圆括号分支优先附着在它紧前面的原子上。比如 CC(C)C 中,括号属于第二个C。如果想让分支附着在第一个C上,就要写成 C(C)CC。我建议写的时候从左到右逐原子构建,避免混淆。

另外,分支可以写成链的一部分,比如 CCC(C)C 是 3-甲基戊烷?我们分析一下:

  • 前三个C为主链:C-C-C
  • 括号从第三个C分支出一个C
  • 最后还有一个C
  • 所以主链变成 C-C-C 之后又加一个C,实际上是 C-C-C(C)-C,即 2-甲基戊烷?等等,第三个碳分支出一个甲基,主链再延伸一个碳,结果是 3-甲基戊烷?数一下:主链五个碳,甲基在第三位:C-C-C(C)-C-C。嗯,没错。

总之多写多练,心里默念“谁前面就挂谁”。

核心原则: 每个左括号紧跟在其修饰的原子的右边,括号内的内容构成一个子链,子链结束时继续主链。

4.5 内联 SVG:线性链与分支结构对比

下面这张图用三种结构帮你直观理解:线性丙烷、单分支异丁烷、双分支新戊烷。我特意把括号的附着点标示出来。

线性链 vs 圆括号分支 C-C-C 线性链(丙烷) SMILES: CCC C-C(-C)-C 单分支(异丁烷) SMILES: CC(C)C C-C(-C)(-C)-C 双分支(新戊烷) SMILES: CC(C)(C)C 关键:圆括号紧跟在它修饰的原子之后 括号内的子链结束后,继续写主链剩余部分

4.6 常见错误与避坑指南

  • 括号不配对:少一个右括号,整个 SMILES 就是无效的。我曾经在一串长链里漏了一个括号,调了半天才发现。
  • 分支附着点搞错:CC(C)C 和 C(C)CC 是两种不同的分子。前者是异丁烷,后者是 2-丁烯?实际上 C(C)CC 代表乙基挂在一个碳上,再连两个碳——那是 2-甲基丁烷?自己试试虚拟解析。
  • 分支太长时阅读困难:建议用换行或注释(虽然 SMILES 不支持注释,但可以逻辑上分段写)。我习惯先把主干写出来,再插入括号。
  • 忽视顺序:SMILES 是线性的,但同一分子可以有多种规范写法(如规范 SMILES 和任意 SMILES)。不过分支的括号位置必须准确反映连接。
小练习: 写出 2,2,3-三甲基丁烷 的 SMILES。提示:主链四个碳,第2个碳挂两个甲基,第3个碳挂一个甲基。
答案(不展开):CC(C)(C)C(C)C 。

好了,这节课的核心就是:线性链只管顺序写,遇到支链就用圆括号包裹并挂在前一个原子上。记住括号的“附着”逻辑,再复杂的分子也能拆解。下次遇到长链+分支,先找主链,再一个个加括号,别慌。