分子动力学模拟:Gromacs教程3-蛋白质-配体复合物#
概述#
本文是对Gromacs官方教程第三课Tutorial 3: Protein-Ligand Complex的中文翻译,是蛋白质-配体复合物模拟。包含了:
- 小分子配体的参数化
- 复合物体系的构建
- 结合模式分析
- 相互作用能计算
本教程将指导你完成蛋白质-配体复合物的分子动力学模拟。与单纯的蛋白质模拟相比,配体的处理需要额外的步骤,特别是力场参数的准备。
第一阶段:准备工作#
1. 环境要求#
确保你已经安装了以下软件:
- GROMACS(版本2020或更高)
- ACPYPE 或 CGenFF(用于配体参数化)
- PyMOL 或 VMD(用于结构可视化)
- Open Babel(用于化学文件格式转换)
2. 获取结构文件#
- 从PDB数据库下载蛋白质-配体复合物结构,例如:1OYT ↗(HIV-1蛋白酶与抑制剂)
- 或者使用你自己的蛋白质-配体复合物结构
第二阶段:蛋白质-配体复合物模拟流程#
正在加载流程图;也可展开下方源码查看。
查看流程图源码
graph TD
A[蛋白质-配体复合物结构] --> B[分离蛋白质和配体];
B --> C[蛋白质预处理];
B --> D[配体参数化];
C --> E[合并拓扑文件];
D --> E;
E --> F[构建溶剂盒子];
F --> G[溶剂化和添加离子];
G --> H[能量最小化];
H --> I[NVT平衡];
I --> J[NPT平衡];
J --> K[成品MD模拟];
K --> L[结合自由能分析];
步骤 1: 准备结构文件#
下载示例结构
# 下载示例结构
wget https://files.rcsb.org/download/1OYT.pdbbash使用PyMOL分离蛋白质和配体,以下是python脚本示例:
# PyMOL脚本:prepare_complex.py
# 加载结构
cmd.load('1OYT.pdb')
# 选择蛋白质(删除水分子和无关离子)
cmd.remove('resn HOH')
cmd.remove('not (polymer or organic)')
# 选择配体(假设配体残基名为INH)
cmd.select('ligand', 'resn INH')
# 保存蛋白质和配体
cmd.save('protein.pdb', 'not ligand')
cmd.save('ligand.pdb', 'ligand')
# 保存复合物
cmd.save('complex.pdb', 'all')python以下是PyMOL运行的命令:
# 使用PyMOL打开pdb文件
# 移除水分子
remove resn HOH
# 移除无关离子
remove not (polymer or resn UNK)
# 选择蛋白质(删除水分子和无关离子)
save protein.pdb, not resn INH
# 选择配体(假设配体残基名为INH)
save ligand.pdb, resn INHplaintext步骤 2: 配体参数化#
方法一:使用ACPYPE(基于GAFF力场)
# 打开软件Open Babel,将配体转换为mol2格式
obabel -ipdb ligand.pdb -omol2 -O ligand.mol2
# 使用ACPYPE生成配体拓扑
acpype -i ligand.mol2 -n 0 -a gaff2bash方法二:使用CGenFF(适用于CHARMM力场)
- 访问 CGenFF服务器 ↗
- 上传配体结构文件
- 下载生成的str文件
- 转换为GROMACS格式:
# 转换CGenFF输出为GROMACS格式
python cgenff_charmm2gmx.py ligand ligand.mol2 ligand.str charmm36.ffbash步骤 3: 蛋白质拓扑生成#
# 生成蛋白质拓扑(使用与配体兼容的力场)
gmx pdb2gmx -f protein.pdb -o protein_processed.gro -p protein_topol.top -water tip3p -ff charmm36bash步骤 4: 合并拓扑文件#
# 创建主拓扑文件
cat > topol.top << EOF
#include "charmm36.ff/forcefield.itp"
#include "protein_topol.top"
#include "ligand.itp"
[ system ]
Protein-Ligand Complex
[ molecules ]
; Compound nmols
Protein_A 1
LIG 1
EOF
# 将蛋白质分子信息添加到主拓扑
grep -A 1000 "molecules" protein_topol.top | grep -v "molecules" >> topol.topbash步骤 5: 构建复合物结构#
# 使用editconf调整配体位置(如果需要)
gmx editconf -f ligand.gro -o ligand_new.gro
# 组合蛋白质和配体结构
cat protein_processed.gro ligand.gro > complex.gro
# 需要手动调整原子数(编辑complex.gro文件的第二行)bash步骤 6-10: 标准模拟流程#
后续步骤与基础教程类似,但需要特别注意参数设置:
# 定义模拟盒子
gmx editconf -f complex.gro -o complex_box.gro -c -d 1.2 -bt cubic
# 溶剂化
gmx solvate -cp complex_box.gro -cs spc216.gro -o complex_solv.gro -p topol.top
# 添加离子(特别注意总电荷)
gmx grompp -f ions.mdp -c complex_solv.gro -p topol.top -o ions.tpr
gmx genion -s ions.tpr -o complex_ions.gro -p topol.top -pname NA -nname CL -neutral
# 能量最小化
gmx grompp -f em.mdp -c complex_ions.gro -p topol.top -o em.tpr
gmx mdrun -deffnm em -v
# NVT平衡
gmx grompp -f nvt.mdp -c em.gro -r em.gro -p topol.top -o nvt.tpr
gmx mdrun -deffnm nvt
# NPT平衡
gmx grompp -f npt.mdp -c nvt.gro -r nvt.gro -t nvt.cpt -p topol.top -o npt.tpr
gmx mdrun -deffnm npt
# 成品模拟
gmx grompp -f md.mdp -c npt.gro -t npt.cpt -p topol.top -o md.tpr
gmx mdrun -deffnm mdbash第三阶段:蛋白质-配体相互作用分析#
1. 配体位置稳定性(RMSD)#
# 配体相对于蛋白质的RMSD
gmx rms -s md.tpr -f md.xtc -o rmsd_ligand.xvg -tu ns -fgroup LIG -rgroup Backbonebash2. 蛋白质-配体接触分析#
# 计算配体与蛋白质残基的距离
gmx mindist -f md.xtc -s md.tpr -od contacts.xvg -on contacts_num.xvg -group1 "resname LIG" -group2 "Protein"bash3. 氢键分析#
# 蛋白质与配体间的氢键
gmx hbond -f md.xtc -s md.tpr -num hbonds.xvg -ac hbond_angles.xvg -dist hbond_dist.xvg -hbm hbond_matrix.xvg -hbn hbond_index.ndx -don "resname LIG and name O1 O2 N1 N2" -acc "Protein and name O N"bash4. 结合自由能计算(MM-PBSA)#
# 使用g_mmpbsa计算结合自由能
gmx mm-pbsa -f md.xtc -s md.tpr -i polar.mdp -p topol.top -n index.ndx -apol apolar.xvg -pcon pcon.xvg -pcomp pcomp.xvgbash5. 相互作用能分解#
# 使用gmx energy分析非键相互作用能
gmx energy -f md.edr -o energy.xvgbash关键参数文件说明#
配体专用的mdp参数#
; md_complex.mdp - 蛋白质-配体复合物模拟参数
integrator = md
dt = 0.002
nsteps = 5000000 ; 10 ns
; 温度耦合
tcoupl = V-rescale
tc-grps = Protein LIG SOL NA CL
tau-t = 0.1 0.1 0.1 0.1
ref-t = 300 300 300 300
; 压力耦合
pcoupl = Parrinello-Rahman
pcoupltype = isotropic
tau-p = 2.0
compressibility = 4.5e-5
ref-p = 1.0
; 非键相互作用
cutoff-scheme = Verlet
nstlist = 20
rlist = 1.2
rcoulomb = 1.2
rvdw = 1.2
coulombtype = PME
pme-order = 4
fourierspacing = 0.16
; 约束算法
constraints = h-bonds
constraint-algorithm = LINCStxt配体位 restraints(可选)#
; position_restraints.mdp - 用于初始平衡阶段
define = -DPOSRES_LIG
; 在ligand.itp文件中添加:
#ifdef POSRES_LIG
[ position_restraints ]
; atom type fx fy fz
1 1 1000 1000 1000
2 1 1000 1000 1000
; ... 其他配体原子
#endiftxt