MOL2
mol2 文件是计算化学领域非常常用的记录分子结构的格式,被很多程序所支持和利用。
@<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 字段每一行定义一个原子的信息,每一列记录的信息为:
- 原子序号(整数)
- 原子名(字符串)
- X 坐标(埃)
- Y 坐标(埃)
- Z 坐标(埃)
- 原子类型(atom type。字符串)
- 原子所属的子结构序号(整数),可省略
- 原子所述的子结构名字(字符串),可省略
- 原子电荷(浮点数),可省略
原子名部分可以为比如 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 = 单键 • 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 夹角(度),每个值之间以逗号分隔。例如:
@<TRIPOS>CRYSIN
3.785,3.785,9.514,90,90,90