MD学习笔记

from兆寅师兄

分子动力学(MD)操作教程

本教程托管在服务器 172.21.85.9 上。
  • bash
  • 复制编辑
  • cp -r /home/databank/zzy/md-operation ${yourdir}

1. 蛋白质准备

获取蛋白质 3D 结构的常见方法是直接从 PDB 网站下载 PDB 文件。然而,当你用文本编辑器打开该文件,或者在 PyMOL 中查看蛋白质序列时,你可能会发现
  • 缺少某些残基(Residues)
  • **侧链(Side Chains)**不完整
  • 甚至**主链(Main Chain)**部分缺失
在进行分子动力学(MD)模拟时,确保蛋白质结构的完整性至关重要,即: ✅ 所有残基必须完整,包括侧链和主链。
为了解决这个问题,我们可以使用专门的软件填补缺失部分。其中,常用工具之一是 pdb2pqr
已提供的预处理文件:
📂 md-operation/pro/6lk0fix_H.pdb
你可以尝试使用 pdb2pqr 方法生成新的 PDB 文件,但现在我们先继续下一步。

2. 配体(Ligand)准备

2.1 获取配体的 3D 结构

如果目标配体的3D 结构可以直接从 PubChem 数据库下载,我们可以直接使用该文件。
但如果数据库中没有现成的 3D 结构,我们可以从 2D 结构生成 3D 结构: ✅ 使用 Chem3D
只需打开 2D 结构文件,然后保存为 3D 结构即可。
已提供的预处理文件:
📂 md-operation/ligand/F368-0168-chem3d.sdf

2.2 使用 Antechamber 生成配体拓扑

在继续下一步之前,建议你仔细检查 3D 结构的:
  • 电荷状态(Charge State)
  • 键信息(Bonds)

生成 Gaussian .gjf 文件

  • bash
  • cd ${yourdir}/md-operation/sys-pre/ligprepmkdir 0168cd 0168
  • antechamber -i ../../../ligand/F368-0168-chem3d.sdf -fi sdf -o 0168.gjf -fo gcrt
  • -fi:指定输入文件格式(file input)
  • -o:指定输出文件
  • -fo:指定输出文件格式(file output)
  • gcrt:表示输出为 Gaussian 输入文件格式(Gaussian Cartesian Input),即 .gjf 或 .com 文件。
  • sed -i '1i %mem=4GB\n%nproc=4\n#B3LYP/6-31G* Pop=MK iop(6/33=2) iop(6/42=6) opt' 0168.gjf
  • 1. sed 命令
  • sed(stream editor)是 Linux 的流编辑工具,用于修改文件内容。
  • -i:直接修改文件,不会输出到终端,而是直接在 0168.gjf 文件中进行更改。
  • '1i ...':1i 表示在 第一行前 插入指定内容。
  • 2. 插入的内容
  • %mem=4GB 指定 Gaussian 计算的内存为 4GB,影响计算效率。
  • %nproc=4 指定 Gaussian 计算使用 4 个处理器核心(多线程并行计算)。
  • #B3LYP/6-31G* Pop=MK iop(6/33=2) iop(6/42=6) opt
  • # 开头的行是 Gaussian 计算方法设置:
  • B3LYP/6-31G*:使用 B3LYP 方法和 6-31G 基组*(常用于有机分子计算)。
  • Pop=MK:使用 MK(Merz-Kollman)电荷计算方法,通常用于生成 RESP 电荷(用于分子力场)。
  • iop(6/33=2):调整电子密度计算选项(通常与 MK 电荷计算有关)。
  • iop(6/42=6):调整表面电荷计算(用于分子力场参数化)。
  • opt:几何优化(优化分子结构,使其达到最低能量构型)。
接下来,我们使用 Gaussian16 对该结构进行优化(计算时间较长)。
你可以查看示例优化结果: 📂 md-operation/sys-pre/ligprep/example/0168.log
  • 问题一:结构优化这一步怎么进行

运行 Antechamber 处理分子结构并计算电荷,然后使用 Parmchk2 生成力场参数

  • bash
  • 复制编辑
  • cd ${yourdir}/md-operation/sys-pre/ligprep/0168cp ../example/0168.log ./
  • antechamber -i 0168.log -fi gout -o 0168.prep -fo prepi -c resp
  • parmchk2 -i 0168.prep -f prepi -o 0168.frcmod -a y
关键生成文件:
  • 0168.prep :包含原子坐标、键信息及部分电荷信息(通常采用 RESP 方法 计算)。
  • 0168.frcmod :通过 parmchk2 生成的力场参数文件,包括:
    • 键长(Bond Lengths)
    • 角度(Angles)
    • 二面角(Dihedrals)
    • 非键相互作用参数(Non-bonded Interactions)
  • NEWPDB.PDB :分子坐标文件,可用于可视化进一步编辑

3. 体系(蛋白-配体)准备

在 MD 模拟中,我们需要构建一个初始结构(即 t = 0 ns)。
一般来说: ✅ 如果有蛋白-配体的晶体复合物结构(Crystal Complex Structure),可以直接使用
如果没有晶体复合物结构(如本教程的情况),则需要进行 Docking(分子对接)

3.1 进行分子对接(Docking)

Docking 过程本身相对简单,但有一个棘手的问题
  • Antechamber 生成的 NEWPDB.PDB 文件的原子索引(Atom Index)通常与对接结果不同
  • 由于拓扑信息(Topology)和位置信息(Position)不匹配,我们需要手动修改文件,使两者一致。
已提供的合并文件:
📂 md-operation/sys-pre/tleap/0168-tleap/lig-0168.pdb

3.2 使用 Tleap 组合蛋白和配体

首先,加载 ff19sb 力场,并设置 OpenMP 线程数:
  • bash
  • 复制编辑
  • source ~/zzy/zyzhou-ff19sb.shexport OMP_NUM_THREADS=5
  • ff19sb属于AMBER力场,全原子经典力场

运行 Tleap 生成 AMBER 拓扑和坐标文件

  • bash
  • 复制编辑
  • cd ${yourdir}/md-operation/sys-pre/tleap
  • sh tleap.sh
  • tleap.sh 会调用 tleap -f tleap.in,你可以阅读 tleap.in 了解详细内容。
  • tleap是Amber分子动力学软件包中的工具
  • -f tleap.in:指定 tleap.in 作为输入文件,该文件通常包含 加载力场、定义分子结构、溶剂化、离子添加等 指令。
最终生成的关键文件:
  • 📂 md-operation/sys-pre/tleap/0168-tleap/gmx/topol.top
  • 📂 md-operation/sys-pre/tleap/0168-tleap/gmx/gromacs.gro

4. 预平衡(Pre-equilibration)

长时间 MD 模拟(如 200 ns)之前,我们需要进行能量最小化和预平衡

GPU 设置

  • bash
  • 复制编辑
  • nvidia-smi  # 检查可用 GPUexport CUDA_VISIBLE_DEVICES=2

运行 GROMACS 预平衡

  • bash老师*
  • 复制编辑
  • cd /md-operation/pre-equilibration/0168source ~/.gmx2022.5-remd.sh
1️⃣ 能量最小化(Energy Minimization)
  • bash
  • 复制编辑
  • mkdir em
  • cd em
  • gmx_mpi grompp -f ../mdp/minim.mdp 
  •         -c ../../../sys-pre/tleap/example/gmx/gromacs.gro 
  •         -p ../../../sys-pre/tleap/example/gmx/topol.top 
  •         -o em.tpr
  • gmx_mpi mdrun -v -deffnm em
  • grompp 是 GROMACS 预处理器,用于解析 .mdp 文件并生成 .tpr 计算输入文件。
  • mdrun 是 GROMACS 的 核心计算引擎,用于执行 MD 计算(这里用于能量最小化)。
  • gmx_mpi 版本表明 使用 MPI 进行并行计算(适用于多核/多 GPU)。
2️⃣ NVT 平衡
  • bash
  • 复制编辑
  • mkdir nvtt
  • cd nvt
  • gmx_mpi grompp -f ../mdp/nvt.mdp -c ../em/em.gro -r ../em/em.gro -p ../../../sys-pre/tleap/example/gmx/topol.top -o nvt.tpr
  • gmx_mpi mdrun -v -deffnm nvt
3️⃣ NPT 平衡
  • bash
  • 复制编辑
  • mkdir npt
  • cd npt
  • gmx_mpi grompp -f ../mdp/npt.mdp -c ../nvt/nvt.gro -r ../nvt/nvt.gro  -p ../../../sys-pre/tleap/example/gmx/topol.top -o npt.tpr
  • gmx_mpi mdrun -v -deffnm npt

5. 生产 MD(Production MD)

  • bash
  • 复制编辑
  • cd /md-operation/mdtest/0168
  • gmx_mpi grompp -f 2ns-md.mdp -c ../../pre-equilibration/0168/npt/npt.gro -t ../../pre-equilibration/0168/npt/npt.cpt -p ../../sys-pre/tleap/example/gmx/topol.top -n ../../sys-pre/tleap/example/gmx/index.ndx -o md.tpr
  • 参数解析:

  • -f 2ns-md.mdp:2ns 生产阶段 MD 计算参数文件。
  • -c ../../pre-equilibration/0168/npt/npt.gro:使用 NPT 平衡后的坐标文件。
  • -t ../../pre-equilibration/0168/npt/npt.cpt:继续 NPT 计算(断点续跑)。
  • -p ../../sys-pre/tleap/example/gmx/topol.top:系统拓扑文件。
  • -n ../../sys-pre/tleap/example/gmx/index.ndx:索引文件(指定计算组)。
  • -o md.tpr:输出 MD 计算输入文件。
  • nohup gmx_mpi mdrun -v -deffnm md &
MD 结果: 📂 md-operation/mdtest/0168/md.xtc
📂 md-operation/mdtest/0168/md.gro

结语

🎉 恭喜!你已完成完整的 MD 模拟!
但这只是开始,建议你深入研究 MD 原理、力场、系统准备及预平衡的详细参数
🚀 祝你 MD 研究之旅顺利!