Skip to content

◷ 发表于: 2025-03-18

◷ 更新于: 2025-03-27

🅆 字数: 0

MOL2

mol2文件是计算化学领域非常常用的记录分子结构的格式,被很多程序所支持和利用。

benzaldehyde.mol2
txt
@<TRIPOS>MOLECULE
benzaldehyde.pdb
 14 14 0 0 0
SMALL
GASTEIGER
@<TRIPOS>ATOM
      1  C          1.9920    0.4700   -0.0000 C.2     0  UNK0        0.1502
      2  C          0.5340    0.2150   -0.0000 C.ar    0  UNK0        0.0142
      3  C         -0.3610    1.2920   -0.0000 C.ar    0  UNK0       -0.0515
      4  C         -1.7360    1.0600    0.0000 C.ar    0  UNK0       -0.0611
      5  C         -2.2160   -0.2520    0.0000 C.ar    0  UNK0       -0.0617
      6  C         -1.3250   -1.3310   -0.0000 C.ar    0  UNK0       -0.0611
      7  C          0.0460   -1.1010   -0.0000 C.ar    0  UNK0       -0.0515
      8  O          2.8450   -0.3960    0.0000 O.2     0  UNK0       -0.2957
      9  H          2.2730    1.5470    0.0000 H       0  UNK0        0.1081
     10  H          0.0250    2.3090   -0.0000 H       0  UNK0        0.0624
     11  H         -2.4300    1.8950    0.0000 H       0  UNK0        0.0618
     12  H         -3.2860   -0.4350    0.0000 H       0  UNK0        0.0618
     13  H         -1.7060   -2.3480   -0.0000 H       0  UNK0        0.0618
     14  H          0.7610   -1.9170   -0.0000 H       0  UNK0        0.0624
@<TRIPOS>BOND
     1     1     2    1
     2     1     8    2
     3     1     9    1
     4     2     3   ar
     5     2     7   ar
     6     3     4   ar
     7     3    10    1
     8     4     5   ar
     9     4    11    1
    10     5     6   ar
    11     5    12    1
    12     6     7   ar
    13     6    13    1
    14     7    14    1

首先要知道mol2文件里,空行 被完全无视。mol2文件是自由格式,因此空格数目完全随意。

# 开头的是注释行;

@ 开头的叫做字段;

从上面的benzaldehyde.mol2可见,当前文件有@<TRIPOS>MOLECULE@<TRIPOS>ATOM@<TRIPOS>BOND三个字段。一般来说这三个字段都是必须出现的,一起提供了描述一个分子最起码的信息。

  • MOLECULE字段

@<TRIPOS>MOLECULE 字段记录了体系的基本信息,包括:

第1行:体系的名字。可见OpenBabel把转换出mol2文件的源文件的名字benzaldehyde.pdb当做了当前体系的名字

第2行:五个数字分别是体系中的原子数、化学键数、子结构数、特征数、set数。对于单纯记录体系结构信息,只要提供前两者就够了,后三个可以省略。所谓的子结构是指体系中的一个部分,比如每个分子、每个残基、蛋白质的每条链等等都可以在 @<TRIPOS>SUBSTRUCTURE 字段里定义为一个子结构。所谓的set是指基于体系中的一些原子/键/子结构根据特定规则和需要定义的集合,可以在 @<TRIPOS>SET 里具体定义。

第3行:体系的类型。可以为SMALL(小分子)、BIOPOLYMER、PROTEIN、NUCLEIC_ACID、SACCHARIDE

第4行:原子电荷。如果mol2文件没记录原子电荷信息这里就为NO_CHARGES。而在产生当前benzaldehyde.mol2文件的时候OpenBabel自动计算了Gasteiger电荷,因此此处写的是GASTEIGER。还可以为MULLIKEN_CHARGES(Mulliken电荷)、MMFF94_CHARGES(MMFF94力场定义的电荷)等等,不同种类电荷都有固定名字。如果记录的原子电荷是比如Multiwfn算的ADCH、RESP、1.2*CM5等电荷,在mol2格式规范中没有对应的名字,则这里应当写USER_CHARGES。

  • ATOM字段

@<TRIPOS>ATOM 字段每一行定义一个原子的信息,每一列记录的信息为:

  1. 原子序号(整数)
  2. 原子名(字符串)
  3. X坐标(埃)
  4. Y坐标(埃)
  5. Z坐标(埃)
  6. 原子类型(atom type。字符串)
  7. 原子所属的子结构序号(整数),可省略
  8. 原子所述的子结构名字(字符串),可省略
  9. 原子电荷(浮点数),可省略

原子名部分可以为比如C2、H4等等,完全随意。记录生物分子结构时通常用IUPAC定义的各种残基中的原子名。 原子类型部分可以记录做分子模拟用的力场中此原子实际对应的原子类型。mol2格式自己也有一套原子类型定义,见前述的Tripos_Mol2_File_Format.pdf文档的末尾,比如sp3杂化的碳的原子类型是C.3,C.ar代表芳香碳,Any代表任意,Hal泛指卤素,Cl代表氯,Ca代表钙,H代表氢,H.spc特指SPC水模型的氢,LP代表孤对电子(lone pair),Du代表虚原子(dummy),等等。

  • BOND字段

@<TRIPOS>BOND 字段每一行定义一个键的信息,其每一列记录的信息为:

  1. 键的序号(整数)
  2. 第1个原子的序号
  3. 第2个原子的序号
  4. 键的类型

键的类型有以下这些 • 1 = 单键 • 2 = 双键 • 3 = 三键 • am = 酰胺的N-C键(这种键有一定pi共轭作用,这是为什么mol2格式里特意用am来与单键区分) • ar = 芳香环(aromatic)上的键,以下简称芳香键 • du = 虚键 • un = 未知/无法判断 • nc = 不相连(俩原子不成键就没必要在BOND字段出现,但可以靠nc强调某两个原子间就是没成键)绝大多数程序产生的mol2文件里没有du、un、nc。

  • 晶胞信息

mol2文件通常用来记录孤立体系,但实际上此格式也定义了记录晶胞信息的字段 @<TRIPOS>CRYSIN,在其下一行写晶胞的a、b、c三个边长(埃)以及alpha、beta、gamma夹角(度),每个值之间以逗号分隔。例如:

txt
@<TRIPOS>CRYSIN
3.785,3.785,9.514,90,90,90

文章参考

谈谈记录化学体系结构的mol2文件-sobereva

基于 CC BY-NC-SA 4.0 许可发布