

做 蛋白–配体分子动力学模拟(尤其是 GROMACS),那么“配体分子拓扑文件准备”是非常关键的一步。它不是简单地把 .mol2 转成 .itp,而是要解决:
配体三维结构 → 质子化状态 → 原子类型 → 部分电荷 → 键/角/二面角参数 → GROMACS 拓扑文件 → 与蛋白力场兼容 → 能量最小化/MD检查
下面以 Linux + AMBER力场 + GAFF2 + Antechamber + ACPYPE + GROMACS 为主线讲解一套比较标准的流程。



在 GROMACS 中,配体拓扑文件通常是:
ligand.itp有时候还会有:
ligand.prm
ligand_GMX.top
ligand_GMX.gro其中最重要的是 .itp。
一个典型的:
ligand.itp里面会包含:
[ moleculetype ]
[ atoms ]
[ bonds ]
[ pairs ]
[ angles ]
[ dihedrals ]也就是说,它告诉 GROMACS:
这个配体由哪些原子组成、每个原子是什么类型、带多少电荷、质量是多少,以及原子之间的键、角度、二面角应该使用什么力场参数。
可以把一个配体理解成:
配体
│
┌───────┼────────┐
↓ ↓ ↓
原子 化学键 几何参数
│ │ │
↓ ↓ ↓
原子类型 bond angle
电荷 dihedral
质量例如一个配体有:
C1
C2
O1
N1
H1
...拓扑需要告诉 GROMACS:
C1
├── atom type = c3
├── charge = -0.12
├── mass = 12.011
│
├── bond → C2
├── bond → O1
└── angle → C2-C1-O1因此:
拓扑文件 ≠ 坐标文件。
.pdb、.mol2、.itp、.gro有什么区别?文件 | 主要作用 |
|---|---|
.pdb | 三维坐标/结构 |
.sdf | 化学结构信息 |
.mol2 | 坐标 + 原子类型 + 部分电荷等 |
.mol | 化学结构 |
.gro | GROMACS坐标 |
.itp | GROMACS分子拓扑 |
.top | GROMACS系统/分子拓扑 |
.prm | 部分力场参数 |
.frcmod | AMBER额外参数 |
核心关系:
配体结构
│
↓
ligand.sdf
│
↓
ligand.pdb
│
↓
ligand.mol2
│
↓
Antechamber / GAFF2
│
↓
ligand.mol2
│
↓
ACPYPE
│
┌────┴────┐
↓ ↓
ligand.itp ligand_GMX.top
│
↓
与蛋白 topology 合并
│
↓
GROMACS建立一个独立目录:
mkdir -p ligand_topology
cd ligand_topology例如:
ligand_topology/
├── ligand.pdb
├── ligand.sdf
├── ligand.mol2
├── ligand_resp.mol2
├── ligand.frcmod
├── ligand_GMX.gro
├── ligand_GMX.itp
└── ligand_GMX.top通常可以从:
获得配体结构。
假设:
ligand.sdf这是非常容易被忽略的一步。
不要拿到一个 SDF/PDB 就直接跑 Antechamber。
首先检查:
例如:
C-C
C=C
C=O
C-N有没有错误。
例如 benzene:
C
/ \
C C
|| ||
C C
\ /
C芳香体系的原子类型非常重要。
PDB 中经常没有完整氢原子。
例如:
COOH在不同 pH 下可能:
COOH或者:
COO-再比如:
NH2可能变成:
NH3+这会直接影响:
总电荷 → RESP电荷 → 静电相互作用 → 配体结合自由能 → MD结果
所以这一步非常重要。
例如:
obabel ligand.sdf -O ligand.pdb --gen3d如果已经有可靠的三维结构:
obabel ligand.sdf -O ligand.pdb检查:
head ligand.pdb应该看到:
ATOM
HETATMAntechamber非常常用 .mol2。
例如:
obabel ligand.pdb -O ligand.mol2但是要注意:
Open Babel 生成的 MOL2 不等于已经完成了 GAFF2 参数化。
它只是结构转换。
真正的力场参数化还需要:
Antechamber如果使用:
AMBER + GAFF2
那么 Antechamber 是核心程序。
基本形式:
antechamber \
-i ligand.mol2 \
-fi mol2 \
-o ligand_gaff2.mol2 \
-fo mol2 \
-at gaff2 \
-c bcc \
-nc 0参数:
-i
输入文件
-fi
输入格式
-o
输出文件
-fo
输出格式
-at gaff2
使用 GAFF2
-c bcc
使用 AM1-BCC 电荷
-nc 0
配体总电荷为 0-nc?这是非常重要的。
例如配体:
LIG总电荷:
0那么:
-nc 0如果是:
LIG+则:
-nc 1如果:
LIG-则:
-nc -1错误的总电荷会导致:
错误的部分电荷
↓
错误的静电相互作用
↓
错误的蛋白-配体结合行为这是配体拓扑准备里面一个非常核心的问题。
-c bcc优点:
例如:
antechamber \
-i ligand.mol2 \
-fi mol2 \
-o ligand.mol2 \
-fo mol2 \
-at gaff2 \
-c bcc \
-nc 0如果你希望更加严格:
QM计算
↓
ESP
↓
RESP
↓
部分电荷常见流程:
Gaussian
↓
HF/6-31G*
↓
ESP
↓
RESP
↓
GAFF2例如:
antechamber \
-i ligand.mol2 \
-fi mol2 \
-o ligand_resp.mol2 \
-fo mol2 \
-at gaff2 \
-c resp \
-nc 0不过这里要注意:
RESP 不是简单把
-c bcc改成-c resp就意味着你已经完成了严格的 RESP QM 电荷流程。
正式 RESP 参数化通常需要:
QM优化
↓
ESP计算
↓
RESP拟合
↓
电荷检查如果只是普通蛋白-配体 MD:
GAFF2 + AM1-BCC 通常已经是非常常见的选择。
Antechamber 会产生:
ligand_gaff2.mol2但有些特殊键/角/二面角可能没有参数。
这时候使用:
parmchk2例如:
parmchk2 \
-i ligand_gaff2.mol2 \
-f mol2 \
-o ligand.frcmod \
-s gaff2得到:
ligand.frcmod这个文件非常重要。
它可以理解成:
GAFF2 标准参数库里没有完全匹配的参数,由 parmchk2 给出补充参数。
现在已经获得:
ligand_gaff2.mol2
+
ligand.frcmod其中:
主要包含:
原子
坐标
原子类型
部分电荷主要包含:
bond
angle
dihedral
improper等额外参数。
如果目标是:
GROMACS
那么 ACPYPE 非常方便。
例如:
acpype \
-i ligand_gaff2.mol2 \
-b LIG \
-c user或者根据 ACPYPE 当前版本的输入方式直接让它调用 AMBER 参数化结果。
常见结果目录:
LIG.acpype/里面可能出现:
LIG_GMX.gro
LIG_GMX.top
LIG_GMX.itp
LIG_GMX_atomtypes.itpLIG_GMX.gro这是:
配体坐标文件
例如:
LIG
25
1LIG C1 1 0.123 0.234 0.345
1LIG C2 2 0.234 0.345 0.456
...LIG_GMX.itp这是:
配体拓扑文件
里面会有:
[ moleculetype ]
[ atoms ]
[ bonds ]
[ pairs ]
[ angles ]
[ dihedrals ]LIG_GMX.top这是:
配体完整 topology
里面可能引用:
#include "LIG_GMX.itp".itp 到底怎么看?这是后面做 MD 时必须掌握的。
打开:
less LIG_GMX.itp会看到:
[ moleculetype ]例如:
[ moleculetype ]
; name nrexcl
LIG 3这里:
LIG是配体名称。
3是 nrexcl。
[ atoms ] 是最核心的部分之一例如:
[ atoms ]
; nr type resnr residue atom cgnr charge mass
1 ca 1 LIG C1 1 -0.120 12.011
2 ca 1 LIG C2 1 0.130 12.011
3 oh 1 LIG O1 1 -0.500 15.999分别表示:
nr
原子编号
type
力场原子类型
resnr
残基编号
residue
残基名
atom
原子名
cgnr
电荷组
charge
部分电荷
mass
原子质量所以:
配体电荷信息就在这里。
这是非常建议做的检查。
Linux:
grep -A 100 "\[ atoms \]" LIG_GMX.itp然后检查:
charge总和应该接近设定的:
0
+1
-1
...例如:
C1 -0.120
C2 0.130
O1 -0.500
N1 0.490
...最后:
Σcharge ≈ 0如果本来应该是中性配体,但总电荷变成:
-0.999那么一定要检查。
[ bonds ]例如:
[ bonds ]
; ai aj funct
1 2 1
2 3 1表示:
原子1 —— 原子2
原子2 —— 原子3并且:
funct指定键函数。
[ angles ]例如:
[ angles ]
; ai aj ak funct
1 2 3 1表示:
C1
\
C2
/
O1也就是:
C1-C2-O1[ dihedrals ]二面角非常重要。
例如:
C1-C2-C3-C4它决定:
分子不同构象之间的能量。
对于柔性配体尤其重要。
例如:
C1
|
C2 — C3 — C4绕:
C2-C3旋转的时候,二面角势能决定:
trans
gauche+
gauche-等构象之间的能量关系。
这也是为什么:
不能简单把配体当成一个刚性小分子。
如果使用:
GAFF2 + AM1-BCC + ACPYPE + GROMACS
可以把流程整理成:
# 1\. 创建目录
mkdir ligand_topology
cd ligand_topology
# 2\. SDF → PDB
obabel ligand.sdf -O ligand.pdb
# 3\. PDB → MOL2
obabel ligand.pdb -O ligand.mol2
# 4\. GAFF2 + AM1-BCC
antechamber \
-i ligand.mol2 \
-fi mol2 \
-o ligand_gaff2.mol2 \
-fo mol2 \
-at gaff2 \
-c bcc \
-nc 0
# 5\. 检查/生成缺失参数
parmchk2 \
-i ligand_gaff2.mol2 \
-f mol2 \
-o ligand.frcmod \
-s gaff2
# 6\. ACPYPE
acpype \
-i ligand_gaff2.mol2 \
-b LIG最终得到:
LIG.acpype/
├── LIG_GMX.gro
├── LIG_GMX.top
├── LIG_GMX.itp
├── LIG_GMX_atomtypes.itp
└── ...# ==================================================
# 0. 建立目录
# ==================================================
mkdir -p LIG_RESP
cd LIG_RESP
# ==================================================
# 1. PDB → MOL2
# ==================================================
obabel ligand.pdb -O ligand.mol2
# ==================================================
# 2. Antechamber:GAFF2原子类型
# ==================================================
antechamber \
-i ligand.mol2 \
-fi mol2 \
-o ligand_gaff2.ac \
-fo ac \
-at gaff2 \
-c bcc \
-nc 0
# ==================================================
# 3. 生成 Gaussian 输入文件
# ==================================================
antechamber \
-i ligand_gaff2.ac \
-fi ac \
-o ligand.gjf \
-fo gcrt \
-at gaff2 \
-gv 1 \
-ge "HF/6-31G* SCF=Tight" \
-nc 0
# ==================================================
# 4. Gaussian QM计算
# ==================================================
g16 < ligand.gjf > ligand.log
# ==================================================
# 5. 检查Gaussian是否正常结束
# ==================================================
tail -n 20 ligand.log
# ==================================================
# 6. Gaussian输出 → ESP
# ==================================================
espgen \
-i ligand.log \
-o ligand.esp
# ==================================================
# 7. RESP Stage 1
# ==================================================
respgen \
-i ligand_gaff2.ac \
-o ligand.respin1 \
-f resp1
resp \
-O \
-i ligand.respin1 \
-o ligand.respout1 \
-e ligand.esp \
-t ligand.qout_stage1
# ==================================================
# 8. RESP Stage 2
# ==================================================
respgen \
-i ligand_gaff2.ac \
-o ligand.respin2 \
-f resp2
resp \
-O \
-i ligand.respin2 \
-o ligand.respout2 \
-e ligand.esp \
-q ligand.qout_stage1 \
-t ligand.qout_stage2
# ==================================================
# 9. 把RESP电荷写回MOL2
# ==================================================
antechamber \
-i ligand_gaff2.ac \
-fi ac \
-o ligand_RESP.mol2 \
-fo mol2 \
-c rc \
-cf ligand.qout_stage2 \
-at gaff2
# ==================================================
# 10. 生成GAFF2缺失参数
# ==================================================
parmchk2 \
-i ligand_RESP.mol2 \
-f mol2 \
-o ligand.frcmod \
-s gaff2
# ==================================================
# 11. ACPYPE → GROMACS
# ==================================================
acpype \
-i ligand_RESP.mol2 \
-b LIG假设蛋白:
protein.top配体:
LIG_GMX.itp通常需要在:
protein.top适当位置加入:
#include "LIG_GMX.itp"如果配体需要独立的 atomtypes:
#include "LIG_GMX_atomtypes.itp"具体 include 顺序取决于 ACPYPE 输出和你使用的力场结构。
最后在:
[ molecules ]增加:
LIG 1例如:
[ molecules ]
Protein_chain_A 1
LIG 1蛋白和配体必须尽量使用兼容的力场体系。
例如:
AMBER protein force field
+
GAFF2 ligand例如:
AMBER ff14SB
+
GAFF2比较自然。
例如:
CHARMM36m
+
GAFF2不是说绝对不能做,而是需要非常清楚:
原子类型、LJ参数、1-4相互作用、组合规则、电荷模型是否兼容。
如果你的蛋白使用:
CHARMM36 / CHARMM36m那么配体通常考虑:
CGenFF
而不是 GAFF2。
流程变成:
ligand.mol2
↓
CGenFF
↓
ligand.str
↓
CHARMM-GROMACS conversion
↓
ligand.itp所以你首先要确定:
你的蛋白使用什么力场。
这是配体拓扑准备的第一原则。
则应该考虑:
OPLS-AA对应的配体参数化方案。
因此:
蛋白力场 | 配体常用方案 |
|---|---|
AMBER | GAFF/GAFF2 |
CHARMM | CGenFF |
OPLS-AA | OPLS体系参数 |
GROMOS | 对应GROMOS参数 |
不要先生成配体拓扑,再决定蛋白力场。
应该反过来:
确定蛋白力场
↓
确定配体参数化方法
↓
生成配体拓扑配体生成完成后,不要直接开始 MD。
至少检查:
Σ charge是否正确。
有没有:
UNK
DU
X之类异常类型。
有没有明显错误:
C-O
C-N
芳香环
双键检查柔性键。
ligand.pdb
ligand_GMX.gro是否一致。
例如:
MOL2
25 atoms那么:
GRO也应该对应:
25 atoms建立蛋白-配体体系后,可以尝试:
gmx grompp \
-f em.mdp \
-c complex.gro \
-p topol.top \
-o em.tpr如果出现:
Atom type XXX not found</pre>
说明:
配体 atomtype 没有正确引入。
如果出现:
No default Bond types说明:
某个键参数缺失。
如果:
No default Angle types说明:
angle 参数缺失。
如果:
No default Proper Dih. types说明:
二面角参数缺失。
所以:
grompp本身就是一个非常重要的 topology QC 工具。
因为蛋白–配体体系中:
蛋白
↓
带电残基
↓
静电场
↓
配体部分电荷
↓
蛋白-配体相互作用例如:
LYS+
ARG+
ASP-
GLU-与配体:
O-
N+
芳香π体系发生:
salt bridge
hydrogen bond
electrostatic interaction
π-π interaction
cation-π interaction如果配体电荷参数错误:
错误电荷
↓
错误静电势
↓
错误H-bond
↓
错误结合构象
↓
错误MD轨迹
↓
错误MM/PBSA
↓
错误结合自由能解释所以配体拓扑的核心不是“生成一个 .itp 文件”,而是生成物理上合理的参数。
如果现在是在做:
蛋白–配体分子对接 → MD
那么完整流程建议理解成:
配体
│
┌──────────┴─────────┐
↓ ↓
2D结构 3D结构
│ │
└─────────┬──────────┘
↓
质子化/互变异构
↓
结构优化
↓
GAFF2/CGenFF
↓
电荷计算
↓
bond/angle
dihedral参数
↓
ligand.itp
│
↓
蛋白结构 ───────→ 蛋白+配体复合物
│
↓
溶剂化
↓
加离子
↓
Energy Minimization
↓
NVT
↓
NPT
↓
MD
↓
┌────────────┼─────────────┐
↓ ↓ ↓
RMSD RMSF Rg
↓ ↓ ↓
H-bond SASA Distance
↓
MM/PBSA / GBSA
↓
结合自由能

最核心的关系就是:
配体
│
↓
3D结构 + 化学信息
│
↓
┌──────────────┐
│ 质子化状态 │
│ tautomer │
│ stereochemistry│
└──────┬───────┘
↓
Antechamber
│
┌──────────┴──────────┐
↓ ↓
原子类型 电荷
GAFF2 AM1-BCC/RESP
│ │
└──────────┬──────────┘
↓
parmchk2
↓
bond/angle/dihedral
↓
ACPYPE
↓
GROMACS topology
│
┌──────────┼──────────┐
↓ ↓ ↓
.itp .gro .top
│ │
└────┬─────┘
↓
Protein + LIG
↓
GROMACS问题 | 后果 |
|---|---|
配体总电荷错 | 静电相互作用错误 |
质子化状态错 | H-bond/结合模式错误 |
tautomer错误 | 配体化学性质改变 |
GAFF2与蛋白力场不匹配 | 参数体系不一致 |
缺失二面角 | grompp报错或物理行为异常 |
芳香性判断错误 | 几何和能量错误 |
配体结构未优化 | 初始构象不合理 |
PDB原子名称混乱 | topology匹配困难 |
.itp没有正确include | grompp报错 |
[molecules]没有LIG | 模拟体系不包含配体 |
配体坐标和拓扑原子顺序不一致 | 极其严重 |
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。