← 返回目录

在做键级感知(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)

可靠性说明(陷阱都在死区附近)

  1. 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 专门兜住羧酸根/带电体系那类离域的部分双键。

  2. C=S / C–S 是最不可靠的一对:硫酰胺的 C=S 约 1.71 Å,而 sp² 的 C–S 单键约 1.76 Å,仅差 ~0.05。因此把 C=S 双键上限收紧到 1.68、死区加宽到 1.77,宁可多判 ambiguous

  3. 共轭 / 部分双键是主要误判源:共轭 sp²–sp² 的 C–C 单键会缩到 ~1.46–1.48;酰胺 C–N 缩到 ~1.33–1.35(落入 C=N 死区);羧酸根/酯的离域 C–O 落在 ~1.25–1.28。这些键的整数键级本身即不良定义,死区将其兜住不硬判,是正确的做法。

  4. 三键短而孤立(C≡N ~1.14、C≡C ~1.18),基本不会与双键混淆,一个上限阈值即可判定。

  5. 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₃ 环境)。

  6. 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,专指最常见的磺酰胺型。


关于 xTB 等半经验几何的校准

上表是晶体 / 量化平衡键长。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 双键这两段在常见药物分子里样本偏少,若你的体系含磺酸酯或亚砜亚胺,最好另用一个对应结构复核一次。


小结

用键长判断非环键的键级,核心是三件事:

  1. 限定非环键,避开芳香与环张力,让单/双键分布干净。
  2. 确信窗口 + 死区,宁可判”不确定”也不误判;把共轭/离域/部分双键这些”整数键级不良定义”的情形交给死区兜住。
  3. 认清各对键的可靠性差异:C–O / C≡X 很稳,C=S/C–S、S=O(亚砜)、S=N/S–N 这几处天生偏挤,落死区时改用配位/价态信号,别单凭键长。

坐标质量是一切的前提——键长可信,判据才可信。