跳转至内容

GROMACS

来自 ArchWiki

根据官方网站,GROMACS 是

一个用于执行分子动力学的通用软件包,即模拟具有从数百到数百万个粒子的系统的牛顿运动方程。
它主要设计用于具有大量复杂键相互作用的生化分子,如蛋白质、脂质和核酸,但由于 GROMACS 在计算通常占模拟主导地位的非键相互作用方面速度极快,许多研究小组也将其用于非生物系统(例如聚合物)的研究。
注意 GROMACS 不应被用作黑箱。强烈鼓励用户阅读和学习与 GROMACS 所使用的方法和力场相关的科学论文

安装

安装 gromacsAUR 包。请务必编辑 PKGBUILD 以适应您的系统(例如,用于 MPI 或 GPU 支持)。您可能想在 PKGBUILD 中添加/修改的一些 CMake 选项包括(参见最新 GROMACS 安装指南

  • -DGMX_DOUBLE=ON - 如果您需要双精度,请添加。根据 GROMACS 安装指南,双精度“速度较慢,通常无用”。如果设置此标志,所有 GROMACS 程序的默认后缀将设置为 _d
  • -DGMX_GPU=value,其中 valueCUDA, OpenCL, SYCL, HIP 之一 - 添加以支持GPGPU构建。可能还需要其他一些标志;请参考最新的 GROMACS 安装指南。
  • -DGMX_MPI=ON - 添加以创建能够跨多个计算节点运行的构建。您还需要一个MPI库,例如openmpimpichAUR。如果您不需要 MPI 支持(即,您只在单台计算机上运行),则不需要此标志。如果设置此标志,所有 GROMACS 程序的默认后缀将设置为 _mpi
  • -DGMX_SIMD=xxx - GROMACS 应该会自动检测您处理器最佳的SIMD指令,因此通常不需要此标志。但如果您遇到某种编译错误,可以在此处指定 SIMD 级别。xxx 的可用选项列表可以在最新的 GROMACS 安装指南中找到。
注意 如果您在 Haswell 处理器上编译,可能需要将 makepkg 配置为使用 -march=native 以成功编译 AVX2_256 指令。
  • -DGMX_X11=ON - 设置以使用内置的轨迹查看器 gmx view。此标志需要 openmotiflibx11 包。
  • -DREGRESSIONTEST_DOWNLOAD=ON - 设置以测试您的 GROMACS 构建。要运行测试,请设置您的构建以运行 make check。需要 libxml2 包。
  • -DGMX_DEFAULT_SUFFIX=OFF - 设置以关闭 MPI 或双精度构建的 GROMACS 程序的默认后缀。
  • -DGMX_BINARY_SUFFIX=xxx-DGMX_LIBS_SUFFIX=xxx - 分别将二进制文件和库的默认后缀设置为 xxx

一些可能提高性能的其他包包括

  • boost-libs - 外部 Boost 库 可用于为智能指针和异常处理提供更好的实现支持。
  • hwloc - 通过链接 hwloc 可以改进硬件功能的运行时检测。
  • lapack - 硬件优化的 BLAS 和 LAPACK 库对于少数专注于法向模式和矩阵操作的 GROMACS 工具很有用,但它们不会为常规模拟提供任何优势。

2019 版以来,GROMACS 构建是可复现的

配置

默认情况下,顶层力场目录位于 /usr/share/gromacs/top。可以通过将不同的目录设置为 GMXLIB 环境变量来更改此设置。如果您修改了力场,或者您有另一套要使用的力场,这会很有用。

用法

以下是包含大多数主要命令的基本工作流程。每个命令都应以 gmx 开头。有关使用 GROMACS 的更多详细信息,请查找一个好的教程并阅读手册。一个有用的流程图在这里:here

提示 每个命令都有自己的手册页,其中 gmx 和命令之间的空格被替换为连字符。例如,gmx pdb2gmx 的手册页位于 gmx-pdb2gmx

设置

模拟需要结构文件(.gro/.pdb)、拓扑文件(.top)和参数文件(.mdp)。以下步骤将说明如何获取这些文件。

获取结构文件

结构文件(包含所有粒子的坐标)可以从蛋白质数据库获取,或者由用户使用程序创建。

提示 您可以使用任何结构文件格式(例如,PDB 文件格式)与大多数 GROMACS 程序一起使用,而不仅仅是GROMACS 格式

生成拓扑文件

拓扑文件指示原子粒子如何相互作用。生成拓扑文件的一种方法是使用 gmx pdb2gmx。如果您的溶质在名为 protein.pdb 的文件中,请执行以下操作

$ gmx pdb2gmx -f protein.pdb

然后,系统将提示您选择一个力场和一个水模型。系统将生成一个新的 gro 格式的结构文件(conf.gro)以及相应的拓扑文件(topol.top)。

如果您不是从蛋白质数据库获取结构文件,而是自己创建的,那么您很可能需要为您的分子创建一个残基模板文件(.rtp),并更新 .pdb 文件。OPLS 甲烷的 .rtp 文件示例可以在这里找到,其对应的 .pdb 文件可以在这里找到(两个文件均来自 James Barnett 的教程)。.rtp 文件必须放置在使用力场的力场目录中。

参见下方,了解生成或获取拓扑文件的替代方法。

创建盒子

在溶质周围创建一个充满水的模拟盒子的一种快捷方法是执行以下操作

$ gmx solvate -cp conf.gro -cs water -box X Y Z -o conf.gro -p topol.top

在上面的命令中,溶质/蛋白质的坐标最初存储在 conf.gro 中。使用 water.gro(在顶层力场目录或当前目录中找到)的水模型来填充盒子,盒子尺寸为 XYZ。拓扑文件 topol.top 会被更新,新系统输出到 conf.gro

如果省略 -cs,则使用三点水模型。其他可用的水模型是 tip4ptip5p

注意 tip4p 仅仅是一组四点水模型的坐标,可以对应任何四点水模型,而不仅仅是TIP4P

您还可以使用不同的盒子类型非水溶剂

添加离子

如果系统不是电中性的,通常应添加离子。例如,如果系统的净电荷为 -2,要添加两个正钠离子,请执行

$ gmx grompp -f grompp.mdp
$ gmx genion -s topol.tpr -np 2 -pname Na -o conf.gro -p topol.top

然后选择对应于溶剂的索引组,该溶剂将被离子替换。-nname 参数应对应于您正在使用的力场中的一个离子。

提示 .mdp 文件不需要与任何特定的模拟步骤对应。它仅用于为 gmx genion 生成 .tpr 文件。

参数文件

应为一组模拟的每个不同步骤(例如,最小化、平衡、生产)创建一个参数文件。所有可能的选项列表在此处:here

以下是一个标准条件下为期十秒生产运行的示例参数文件

dt                       = 0.002
nsteps                   = 5000000

nstxout-compressed       = 2500

coulombtype              = PME
rcoulomb                 = 1.0

vdwtype                  = Cut-off
rvdw                     = 1.0
DispCorr                 = EnerPres

tcoupl                   = Nose-Hoover
nh-chain-length          = 1
tc-grps                  = System
tau-t                    = 2.0
ref-t                    = 298.15

pcoupl                   = Parrinello-Rahman 
tau_p                    = 2.0
compressibility          = 4.46e-5
ref_p                    = 1.0 

constraints              = h-bonds
continuation             = yes
提示 运行 gmx grompp 时,会输出一个带有所有选项(即使是未明确列在文件中的选项)的注释参数文件,并默认保存为 mdout.mdp

运行

基础知识

模拟通常由两部分组成,如下所述。

首先,有一个预处理步骤,读取结构文件、拓扑文件和参数文件,并将它们写入一个单独的 .tpr 文件,有时也称为拓扑文件。

$ gmx grompp -f grompp.mdp -c conf.gro -p topol.top -o topol.tpr

此处 grompp.mdp 是此模拟步骤的参数文件,conf.gro 是开始此模拟步骤的结构文件,topol.top 是拓扑文件。结构文件(.gro)在每次模拟结束时输出,因此应在继续的模拟(例如,初始平衡运行应使用前一次最小化步骤输出的结构文件)中使用 -c

注意 当存在检查点文件时,您应该优先使用 -t 标志从中读取(而不是仅使用 -c 处的结构文件),因为它包含额外信息。当同时使用 -c-t 标志时,gmx grompp 会先检查检查点文件,如果找不到,则回退到指定的结构文件。在这种情况下,如果未指定结构文件,则使用默认文件名 conf.gro

接下来是实际的模拟。.tpr 文件通过主程序 gmx mdrun 读取以运行模拟。

$ gmx mdrun -s topol.tpr
提示 gmx mdrun 会输出多个文件。要使它们具有相同的名称前缀,请使用 -deffnm 标志。

通常,这两部分会为能量最小化步骤、平衡步骤和生产步骤重复进行。可能需要多个平衡步骤,特别是在启用压力耦合时。生产步骤和最后一个平衡步骤应使用完全相同的参数(.mdp),但模拟长度不同。

例如,一组由一次最小化步骤、一次平衡步骤和一次生产步骤组成的模拟可能如下所示

#!/bin/sh

gmx grompp -f min.mdp -o min.tpr -c conf.gro -p topol.top
gmx mdrun -deffnm min

gmx grompp -f eql.mdp -o eql.tpr -c min.gro -p topol.top
gmx mdrun -deffnm eql

gmx grompp -f prd.mdp -o prd.tpr -t eql.cpt -p topol.top
gmx mdrun -deffnm prd

此处 min.mdpeql.mdpprd.mdp 分别是最小化、平衡和生产步骤的参数文件。

加速与并行化

默认情况下,GROMACS 使用单个节点上所有可用的处理器。要跨多个节点运行,需要 MPI 库。使用 openmpi 运行 GROMACS 的形式如下

$ mpirun -np totalranks -npernode rankspernode --hostfile filename gmx mdrun -s topol.tpr

此处 totalranks 是要创建的总 MPI 进程数,rankspernode 是每个节点的 MPI 进程数,filename 是用于确定在哪些主机上运行进程的主机文件。

OpenMPI 可以与 OpenMP 一起使用,如下所示

$ mpirun -np totalranks -npernode rankspernode --hostfile filename gmx mdrun -ntomp openmpthreads -s topol.tpr

如果没有编译外部 MPI 库,可以使用 GROMAC 的线程-MPI 来控制 MPI 进程和 OMP 线程。这将无法跨多个计算节点运行。

$ gmx mdrun -ntmpi totalranks -ntomp openmpthreads -s topol.tpr

此处 openmpthreads 是要创建的 OpenMP 线程数。totalranks*openmpthreads 应等于总处理器数。

提示 将模拟拆分到 MPI 进程和 OMP 线程之间通常比单独使用其中一个要慢。

如果使用 GPU 支持编译,GROMACS 会自动检测任何可用的 GPU。MPI 进程数必须是要使用的 GPU 数量的倍数。使用 GPU 需要 Verlet 截断方案,该方案在 .mdp 文件中通过参数 cutoff-scheme 设置。命令的基本形式如下

$ mpirun -np totalranks -npernode rankspernode --hostfile filename gmx mdrun -ntomp openmpthreads -s topol.tpr -gpu_id gpuids

此处 gpuids 是列表中每个 GPU 的零基 ID。也就是说,只有一个 GPU(-np 1)时,您将使用 -gp_uid 0。如果有两个 GPU(-np 2),您将使用 -gpu_id 01。要在多个 MPI 进程上使用 GPU,只需列出其 ID 使用的次数。例如,要在两个 GPU 上使用四个 MPI 进程,将使用 -np 4-gpu_id 0011,从而每个 GPU 使用两次。如果在两台二十核机器上运行,命令将如下所示

$ mpirun -np 8 -npernode 4 --hostfile filename gmx mdrun -ntomp 5 -s topol.tpr -gpu_id 0011

如果在一台二十核机器上使用 GROMACS 线程-MPI,则将是

$ gmx mdrun -ntmpi 4 -ntomp 5 -s topol.tpr -gpu_id 0011
提示 在 GPU 上运行多个模拟可能比单独运行它们更有效。要做到这一点,请使用 -multi-multidir 标志。

另请参阅 mpirun(1) 以及 GROMACS 关于 MPI 加速和并行化的部分以了解更多选项

重启模拟

要从检查点文件重启模拟,请执行

$ gmx mdrun -s topol.tpr -cpi state.cpt

此处 topol.tpr 是模拟中使用的原始 .tpr 文件,state.cpt 是该模拟的最后一个检查点文件。

延长模拟

要延长模拟,请创建一个修改后的 .tpr 文件并将其与 gmx mdrun 一起使用。

$ gmx convert-tpr -s topol.tpr -extend time -o tpxout.tpr
$ gmx mdrun -s tpxout.tpr -cpi state.cpt

其中 time 是模拟要额外运行的时间(皮秒),topol.tpr 是与原始模拟关联的 .tpr 文件,state.cpt 是该模拟的最新检查点文件。与其使用 -extend,不如使用 -until 来指定绝对结束时间(皮秒)。

分析

工具

GROMACS 内置了许多分析工具。可以通过键入 gmx help commands 或打开 gromacs 的手册页来获取所有可能的命令列表。

一些更重要的分析命令是

  • gmx bar通过Bennett 的接受比计算自由能差估计。
  • gmx energy将能量写入 xvg 文件并显示平均值。
  • gmx rdf计算径向分布函数
  • gmx trjconv转换和操作轨迹文件。
  • gmx wham伞形采样后执行加权直方图分析。

参见下方,了解其他可用工具。

索引文件

索引文件在几乎所有 GROMACS 分析程序中都是可选使用的。gmx make_ndx 程序控制索引文件的创建和修改。索引文件由组名和整数索引组成,指示轨迹帧中原子位点的位置。只有当结构文件中可用的残基不能按所需方式将原子位点分组时,才需要它们。运行 gmx make_ndx 时,用户会看到一个提示,以便通过各种命令选择、合并和拆分原子组。键入 h 在 make_ndx 提示符下将获得可用命令的完整描述。

开发

GROMACS 使用 Git 进行版本控制,因此请熟悉其用法,尤其是关于协作的主题。要开始贡献,您需要拥有一个 GitLab 账户并配置好SSH 密钥。官方仓库位于 gromacs/gromacs,可以进行 fork。更改应作为合并请求提交。在进行更改时,请遵循代码和提交的风格指南

当您准备好分享您的更改时,请确保您的 HEAD 与您想要贡献的分支同步。通常使用三个分支。

  • main 分支用于需要大量代码更改的长期主要功能开发。
  • release-x-y 分支用于不需要太多代码更改的功能,其中 xy 分别是下一个版本的次要和次要版本号。
  • release-x-y-patches 分支用于对先前版本的错误修复和小文档更改。

技巧与提示

创建非立方体盒子并填充溶剂

要创建一个填充溶剂的非立方体盒子,请先执行

$ gmx editconf -f protein.pdb -bt boxtype -d dist -o box.gro

上述命令将在 protein.pdb 文件中的分子周围创建 boxtype 类型的盒子,在每个方向上延伸 dist 纳米。盒子保存为 box.groboxtype 可以是 tricliniccubicdodecahedronoctahedron

然后填充溶剂

$ gmx solvate -cs tip4p -cp box.gro -o conf.gro -p topol.top

使用多个溶质

如果您想随机插入多个溶质,请先执行

$ gmx insert-molecules -box X Y Z -ci solute.pdb -nmol N -o box.gro

其中 XYZ 是盒子在纳米中的尺寸,N 是要插入的数量。您需要更新您的拓扑文件以包含插入的分子数量。

然后填充溶剂

$ gmx solvate -cs tip4p -cp box.gro -o conf.gro -p topol.top
注意 使用可视化程序时,您将看到一个三斜盒子,因为所有非立方体盒子最终在 GROMACS 中都表示为三斜盒子。

使用非水溶剂

要使用非水溶剂与标准工具(如 gmx pdb2gmxgmx solvate)一起使用,请执行以下操作

  1. 创建单个溶剂分子的结构文件和拓扑。
  2. 创建一个包含几百个溶剂分子(216 个似乎是标准值)的盒子,并在标准条件下对系统进行短期平衡运行。
  3. 将模拟输出的结构文件 .gro 复制到 solvent.gro,其中 solvent 是您希望用于该分子的名称。将此副本放置在顶层力场目录中(每个力场都有自己的目录)。
  4. 修改单个溶剂的拓扑文件,只保留 [moleculetype] 部分,并将文件中的分子命名为 SOL
  5. 将拓扑文件重命名为 solvent.itp,并将其移动到适用的力场目录。
  6. 使用此溶剂更新您希望使用的力场的 watermodels.dat(位于该力场目录中),添加溶剂。您只需添加一行 filename shortdescription longdescription,其中 filename 省略文件扩展名。

现在,当您运行 gmx pdb2gmx 时,该溶剂模型应该可用于适用的力场。此外,在运行 gmx solvate 时,您可以使用 -cs solvent

参见

结构和拓扑数据库

  • 自动化拓扑构建器和存储库用于构建块和分子相互作用参数文件的存储库,以及一个自动化构建器,可帮助为新分子生成构建块。
  • RCSB 蛋白质数据库有关蛋白质、核酸和复杂组装的三维形状的信息,帮助学生和研究人员理解从蛋白质合成到健康和疾病的所有生物医学和农业方面。
  • SwissParam为小有机分子提供与 CHARMM 全原子力场兼容的拓扑和参数,用于 CHARMM 和 GROMACS。
  • TraPPE 参数数据库 — 按分子名称搜索,或自行构建,以获取 TraPPE 力场参数。请注意,有必要将参数转换为正确的单位。
  • Virtual Chemistry — 比较数千种分子的实验和计算结果。包含 CGenFF、GAFF 和 OPLS/AA 的已验证拓扑输入文件。

外部库和程序

请参阅 List of applications/Science#Chemistry

开发

文档

教程

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.