在做键级感知(bond-order perception)时经常遇到这种局面:手上只有一套三维坐标——比如 cofolding 模型或 xTB 优化的结构——重原子的位置都在,但每根键是单键、双键还是三键,没有。一个朴素但有效的思路是:键长会出卖键级。C=O 约 1.21 Å、C–O 约 1.43 Å,C≡C 约 1.18、C=C 约 1.33、C–C 约 1.53……只要坐标可信,量一下距离就能反推键级。
本文整理一份用键长判断键级的参考表,并说明它是怎么为”高可靠性、不易误判”而设计的。为控制变量,全部限定在非环键(成键两原子不同时属于同一个环)——这样能避开芳香环和环张力,单/双键的分离本就比在环上干净得多。数据来源以晶体结构统计为主(Allen 等 1987 年 CSD 键长表),辅以从头算/实验值,不含任何力场数据。
限定非环键有两个原因:一是芳香环里键长被离域”抹平”,单双键界限模糊,本就不该用整数键级去套;二是环张力会系统性地改变键长。把这两类排除后,剩下的非环键(取代基、连接臂、羰基、砜基等)键长分布干净得多,判定才可靠。
坐标最好来自能反映真实键级的几何——实验晶体结构,或 DFT / 半经验(如 xTB)优化的结构。要特别注意:如果一批候选结构共用同一套几何(例如同一套坐标上枚举不同键级赋值),那”键长配不配键级”是良定义的;但如果每个候选各自优化,每个错误结构都会弛豫到自洽的几何,键长判据就会失效。这份表针对前一种情形。
表里不给彼此紧挨的连续区间,而是给每种键级一个保守的确信窗口,并在相邻键级之间留一段死区(dead zone):
死区用来吸收系统误差与半经验方法的小幅偏移,宁可多判”不确定”,也不误判。下面所有区间单位均为 Å。
| 键对 | 三键(确信) | 双键(确信) | 死区 | 单键(确信) | 典型锚点值 |
|---|---|---|---|---|---|
| C–O / C=O | — | 1.17 – 1.24 | 1.24 – 1.32 | 1.32 – 1.47 | C=O:酯 1.19 / 酮 1.21 / 酰胺 1.22;离域(羧酸根/带电) 1.25–1.31;C–O:酯 1.34、芳基/酚 1.36、sp³ 醇醚 1.42 |
| C–S / C=S | — | 1.59 – 1.68 | 1.68 – 1.77 | 1.77 – 1.87 | C=S:硫酮 1.61–1.64、硫酰胺 ~1.71;C–S:sp³ 1.81、sp² 1.76 |
| C–N / C=N / C≡N | 1.12 – 1.17 | 1.25 – 1.31 | 1.17–1.25 及 1.31–1.40 | 1.40 – 1.52 | C≡N 腈 1.14;C=N 亚胺 1.28;C–N 胺 1.47 |
| C–C / C=C / C≡C | 1.17 – 1.21 | 1.28 – 1.35 | 1.21–1.28 及 1.35–1.44 | 1.44 – 1.58 | C≡C 1.18;C=C 烯 1.33;C–C sp³ 1.53、共轭 sp² 单键 ~1.47 |
| S–O / S=O | — | 1.40 – 1.47 | 1.47 – 1.55 | 1.55 – 1.63 | S=O:砜/磺酰/磺酰胺 1.42–1.45、亚砜 ~1.50(落死区);S–O:磺酸酯 S–O–C ~1.57、磺酸 S–OH ~1.55 |
| S–N / S=N | — | 1.51 – 1.55(S=N) | 1.55 – 1.58 | 1.58 – 1.68(S–N) | S=N:sulfoximine/亚砜亚胺 ~1.52–1.53;S–N:磺酰胺 1.61–1.66(对甲苯磺酰胺 1.617、sildenafil 1.655) |
C–O / C=O 最易区分:两个确信窗口相隔约 0.08 Å 以上,几乎不可能误判。这里的关键是按碳杂化认清 C–O 单键的三个子分布——酯的 C–O 单键最短(~1.34,同分子羰基仅 1.19–1.20)、芳基/酚 C–O 因共振缩到 ~1.36、sp³ 醇醚 ~1.42。所以单键窗口下沿定在 1.32(安全容纳酯与芳基单键),死区 1.24–1.32 专门兜住羧酸根/带电体系那类离域的部分双键。
C=S / C–S 是最不可靠的一对:硫酰胺的 C=S 约 1.71 Å,而 sp² 的 C–S 单键约 1.76 Å,仅差 ~0.05。因此把 C=S 双键上限收紧到 1.68、死区加宽到 1.77,宁可多判 ambiguous。
共轭 / 部分双键是主要误判源:共轭 sp²–sp² 的 C–C 单键会缩到 ~1.46–1.48;酰胺 C–N 缩到 ~1.33–1.35(落入 C=N 死区);羧酸根/酯的离域 C–O 落在 ~1.25–1.28。这些键的整数键级本身即不良定义,死区将其兜住不硬判,是正确的做法。
三键短而孤立(C≡N ~1.14、C≡C ~1.18),基本不会与双键混淆,一个上限阈值即可判定。
S=O 的可靠性取决于硫的氧化态:砜/磺酰型 S=O(~1.43)与 S–O 单键(~1.57)相隔约 0.12 Å,很可靠;但亚砜的 S=O(~1.50)是弱点,距 S–O 单键仅约 0.05 Å,故划入死区(1.47–1.55),改由硫的配位环境判断(亚砜硫接 2 个 C + 1 个 O、呈锥形;S–O 单键的硫属于 –SO₂–O– / –SO₃ 环境)。
S=N ↔ S–N 分离度偏低,上沿另有陷阱:S=N 双键(sulfoximine/亚砜亚胺)约 1.52–1.53,与 S–N 单键(≥1.58)仅隔约 0.04 Å,死区窄、可靠性中等,落死区时应结合硫的配位/价态判断。上沿的亚磺酰胺 / 硫烯胺 S(II)–N 更长(~1.70),超出单键窗口上限;故 S–N 单键确信窗口收在 1.58–1.68,专指最常见的磺酰胺型。
上表是晶体 / 量化平衡键长。GFN2-xTB 通常能复现到 ±0.01–0.02 Å,但它倾向于均化共轭体系的键长(单、双键差异变小),会侵蚀 C=C/C–C、C=N/C–N 这几对的死区。
建议做一次校准:用自己几个已知键级的结构,量取一批确定的 C=O、C–O、C=C、C–C 键长,观察其峰位相对上表的整体偏移量,再据此平移窗口边界,可靠性会明显提升。此外,S–O 单键、S=N 双键这两段在常见药物分子里样本偏少,若你的体系含磺酸酯或亚砜亚胺,最好另用一个对应结构复核一次。
用键长判断非环键的键级,核心是三件事:
坐标质量是一切的前提——键长可信,判据才可信。
完