Introduction

# Introduction

molpy (opens new window)是一套提供给量子化学/分子动力学的分子数据结构, 希望能做到计算化学的numpy. 此外molpy提供了分子建模, 拓扑搜索, 力场匹配等功能. molpy架构清晰简洁, 核心结构为Atom, Group, 及Molecule类, 通过把atom视为node, bond看作edge, 将分子描述为图结构. molpy支持模板匹配建立拓扑结构(gmx/openmm-style), 搜索angle/dihedral(moltemplate-style), 力场匹配(将atom/bond/angle等参数附加到结构上), 大大方便您构建复杂体系模型. molpy合理规划了命名空间, 可以迅速地索引任何一级的原子('atom7@group5@molecule3')并且进行操作(atom.move((x,y,z))). 每一个数据类在建立之后都可以通过复制来实现模块化建模, 代码复用使您的脚本更加简介. molpy提供了丰富的输入输出接口, 可以将体系输出成各种QM/MM计算工具. molpy非常灵活, 极其容易拓展, 并且企图将优秀软件包的思想汇聚, 让您一站式从建模到模拟到数据处理, 无需考虑目标软件, 仅需专注于科学本身.

代码风格如下

代码风格

# roadmap

# core

  1. 数据结构: 描述分子的数据结构 √
  2. 分子建模: 给出原子和键接定义生成一个分子 √
  3. 分子拼接: 复用分子片段生成大分子 √
  4. 层级结构: 快速索引分子中的片段 √
  5. 拓扑搜索: 已知键接信息生成键角二面角等信息 √
  6. 序列化 : 返回与语言无关的数据结构共其他工具调用
  7. 力场分配: 根据原子化学环境判断原子类型 × (不考虑实现)
  8. 模板匹配: 将分子和力场中模板相匹配 √
  9. 结构优化: 梯度下降地寻找分子能量较低的构型 × (优先实现)
  10. packing: 将分子密铺在模拟盒子中 × (优先实现)

# function

  1. 覆盖moltemplate功能 √
  2. 实现openmm/gmx模板建模 √
  3. 实现packmol功能 (开发中)
  4. 实现stk超分子建模

# auxiliary

  • 数据输入输出: 读入输出其他格式的文件 (逐步完善中)
  • 调用其他程序: 直接调用其他QM/MM程序 (准备封装dpdispatcher)
  • 脚本核心结构: 人类友好的脚本API和存储 (脚本部分独立为ChemRosetta)
  • 脚本输入输出: 生成不同软件需要的脚本
  • 分析模块构建: 预制的分子结构分析工具 (增加Frame*类处理轨迹)
  • 分析模块扩展: 更容易增加分析功能插件