Packmol技能Skill packmol

Packmol技能用于创建分子动力学模拟的初始配置,包括分子打包、蛋白质溶解、构建模拟起始结构等。关键词包括分子模拟、Packmol、初始配置、蛋白质溶解、分子动力学。

数据分析 0 次安装 0 次浏览 更新于 3/3/2026

Packmol 技能

使用 Packmol 构建分子动力学模拟的初始配置。

Packmol 是什么?

Packmol 通过根据空间约束打包分子来创建 MD 模拟的初始配置。它将分子放置在盒子内、蛋白质周围、界面上或复杂的几何形状(球体、圆柱体、椭球体)内,同时确保没有重叠。

安装

通过 pip 安装 Packmol:

pip install packmol

验证安装:

packmol -h

更多安装选项,请访问 Packmol 网站

快速开始

基本盒子打包

创建一个简单的水分子盒子:

# water_box.inp
tolerance 2.0
filetype pdb
output water_box.pdb

structure water.pdb
  number 1000
  inside box 0. 0. 0. 40. 40. 40.
end structure

运行 Packmol:

packmol < water_box.inp

蛋白质溶解

用水分和离子溶解蛋白质:

# solvation.inp
tolerance 2.0
filetype pdb
output solvated.pdb

structure protein.pdb
  number 1
  fixed 0. 0. 0. 0. 0. 0.
  center
end structure

structure water.pdb
  number 5000
  inside box -10. -10. -10. 50. 50. 50.
end structure

structure SOD.pdb
  number 10
  inside box -10. -10. -10. 50. 50. 50.
end structure

structure CLA.pdb
  number 10
  inside box -10. -10. -10. 50. 50. 50.
end structure

液-液界面

构建水/氯仿界面:

# interface.inp
tolerance 2.0
filetype pdb
output interface.pdb
pbc -20. -20. -30. 20. 20. 30.

structure water.pdb
  number 1000
  below plane 0. 0. 1. 0.
end structure

structure chloroform.pdb
  number 200
  above plane 0. 0. 1. 0.
end structure

核心概念

输入文件结构

每个 Packmol 输入文件需要:

  1. tolerance:原子间最小距离(Å)
  2. output:输出文件名
  3. filetype:格式(pdb, xyz, tinker)
  4. structure blocks:定义要放置的分子

结构块语法

structure molecule.pdb
  number <N>                          # 分子数量
  inside|outside <constraint>         # 空间约束
  [optional parameters]
end structure

常见约束类型

  • boxinside box xmin ymin zmin xmax ymax zmax
  • sphereinside sphere xcenter ycenter zcenter radius
  • cylinderinside cylinder x1 y1 z1 dx dy dz radius length
  • planeabove plane a b c dbelow plane a b c d
  • ellipsoidinside ellipsoid xc yc zc xa yb zc scale

查看 references/constraints.md 获取完整的约束文档。

工作流程

1. 基本分子打包

构建包含多种分子类型的盒子。

示例:水/乙醇混合物

tolerance 2.0
output mixture.pdb
filetype pdb

structure water.pdb
  number 800
  inside box 0. 0. 0. 40. 40. 40.
end structure

structure ethanol.pdb
  number 200
  inside box 0. 0. 0. 40. 40. 40.
end structure

2. 蛋白质溶解

用水分和离子溶解生物分子以实现中和。

关键参数

  • 使用 fixedcenter 为蛋白质
  • 添加 Na+/Cl- 离子以实现中性和浓度
  • 根据蛋白质 + 溶剂壳计算盒子大小

自动溶解助手

python scripts/solvate_helper.py protein.pdb --shell 15.0 --charge +4

3. 界面系统

使用平面约束构建液-液或液-气界面。

示例:水/己烷界面

tolerance 2.0
output interface.pdb
pbc -20. -20. -30. 20. 20. 30.

structure water.pdb
  number 1000
  below plane 0. 0. 1. 0.
end structure

structure hexane.pdb
  number 200
  above plane 0. 0. 1. 0.
end structure

4. 高级约束

使用球形、圆柱形或椭球形约束来构建复杂几何形状。

示例:球形囊泡

structure lipid.pdb
  number 2000
  inside sphere 0. 0. 0. 40.
  atoms 1 2 3 4
    outside sphere 0. 0. 0. 35.
  end atoms
end structure

structure water.pdb
  number 2000
  inside sphere 0. 0. 0. 35.
end structure

structure water.pdb
  number 5000
  outside sphere 0. 0. 0. 45.
end structure

输入参数

必需参数

  • tolerance <distance>:分子间最小距离(Å)。默认:全原子 2.0
  • output <filename>:输出文件名
  • filetype <format>:pdb, xyz, 或 tinker

可选参数

  • pbc <dimensions>:周期性边界条件(例如 pbc 30. 30. 60.
  • seed <integer>:随机种子以实现可重复性
  • discale <factor>:优化时距离缩放(默认:1.0)
  • maxit <N>:最大迭代次数(默认:20)
  • precision <value>:收敛精度(默认:0.01)

查看 references/parameters.md 获取完整的参数参考。

结构块选项

定位选项

  • number:分子计数
  • inside/outside:空间约束
  • fixed:固定位置和旋转(6 个参数:x, y, z, α, β, γ)
  • center:使用质心进行定位

旋转约束

constrain_rotation x 180. 20.  # 限制绕 x 轴旋转
constrain_rotation y 180. 20.  # 限制绕 y 轴旋转
constrain_rotation z 180. 20.  # 限制绕 z 轴旋转

原子选择

对分子内特定原子应用约束:

structure molecule.pdb
  number 100
  inside box 0. 0. 0. 30. 30. 30.
  atoms 1 2 3
    inside box 0. 0. 25. 30. 30. 30.
  end atoms
end structure

运行 Packmol

基本执行

packmol < input.inp

输出解释

成功消息:

------------------------------
Success!
Final objective function value: .22503E-01
Maximum violation of target distance: 0.000000
Maximum violation of the constraints: .78985E-02
------------------------------

检查两个违规值是否都小于 0.01 以获得有效解决方案。

验证

检查重叠

python scripts/check_overlaps.py output.pdb --tolerance 2.0

验证成功

python scripts/verify_success.py input.inp output.pdb

分析密度

python scripts/analyze_density.py output.pdb

验证输入

python scripts/validate_input.py input.inp

故障排除

常见问题

  1. “Killed” 错误:系统太大

  2. 无收敛

    • 尝试 discale 1.5 调整距离
    • 减少分子数量
    • 简化约束
    • 增加 maxit
  3. 奇怪的几何形状

    • 添加 check 关键字在不打包的情况下验证约束
    • 验证约束语法
    • 检查冲突的约束
  4. 不正确的原子计数

    • 验证结构文件是否可读
    • 检查输入文件中的重复原子
    • 使用 scripts/validate_input.py 验证

references/troubleshooting.md 获取详细的解决方案。

示例

examples/ 目录中探索示例输入文件:

模板

使用 templates/ 中的模板作为起点:

辅助脚本

使用 scripts/ 中的 Python 脚本进行自动化:

  • generate_input.py:程序化生成输入
  • validate_input.py:运行前验证输入语法
  • check_overlaps.py:检测输出中的原子重叠
  • analyze_density.py:计算系统密度
  • solvate_helper.py:自动蛋白质溶解设置
  • verify_success.py:验证 Packmol 是否成功完成

高级主题

周期性边界条件

使用 pbc 用于周期性系统:

pbc 30. 30. 60.  # 或 pbc xmin ymin zmin xmax ymax zmax

重启文件

逐步构建大型系统:

structure water.pdb
  number 1000
  inside box 0. 0. 0. 40. 40. 40.
  restart_to water1.pack
end structure

然后重启:

structure water.pdb
  number 1000
  restart_from water1.pack
end structure

特定原子半径

为多尺度模型设置不同的半径:

structure molecule.pdb
  number 100
  radius 1.5  # 所有原子
end structure

structure molecule.pdb
  number 100
  atoms 1 2
    radius 1.5  # 特定原子
  end atoms
end structure

约束验证

在不打包的情况下验证约束:

structure molecule.pdb
  number 100
  inside box 0. 0. 0. 30. 30. 30.
  check
end structure

最佳实践

  1. 从简单开始:在扩展之前先测试少量分子
  2. 使用适当的公差:全原子 2.0 Å,粗粒化更大
  3. 检查约束:添加 check 关键字以验证区域
  4. 验证输出:使用脚本来检查重叠和密度
  5. 可重复性:设置 seed 以获得可重复的结果
  6. 大型系统:使用重启文件或分阶段构建
  7. 盒子大小:为溶解物周围留出 10-15 Å 的填充

常见用例的提示

蛋白质溶解

  • 在蛋白质周围添加 10-15 Å 的溶剂壳
  • 计算离子以实现中性和浓度:N_ions = charge / e
  • 添加盐离子以实现所需浓度(例如,0.15 M NaCl)
  • 使用 fixedcenter 为蛋白质定位

混合溶剂

  • 根据所需的摩尔比计算总分子数
  • 对所有组分使用相同的公差
  • 先测试小系统

膜系统

  • 使用 constrain_rotation 定位脂质
  • 分阶段构建:先脂质,然后水
  • 考虑为大型系统使用专门的膜构建器

纳米管/孔

  • 使用 cylinder 约束用于孔区域
  • outside 约束结合用于大部分区域
  • 可能需要原子选择以特定分子方向

资源

参考

有关特定主题的详细信息,请参见: