#分子动力学 #gromacs #模拟 #tpr

minitpr

用于读取 Gromacs TPR 文件的库

3 个不稳定版本

0.2.1 2024 年 6 月 12 日
0.2.0 2024 年 6 月 12 日
0.1.1 2024 年 2 月 25 日
0.1.0 2024 年 2 月 25 日

#193 in 科学


用于 2 个 crates(通过 groan_rs

MIT/Apache

68KB
1.5K SLoC

minitpr:用于读取 Gromacs TPR 文件的库

minitpr 是一个纯 Rust 库,旨在解析 Gromacs tpr 文件,重点关注提取系统拓扑和结构。

功能和限制

  • 支持解析从版本 103 及以上版本的 tpr 文件(Gromacs 5.1 及以后版本)。
  • 提取系统拓扑和结构:原子及其基本属性(包括位置、速度和力),以及原子之间的键(包括分子间键)。
  • 不支持 解析力场和模拟参数,也不提供写入 tpr 文件的功能。

使用方法

要将 minitpr 包含到您的项目中,请使用 Cargo 添加它作为依赖项

cargo add minitpr

解析 tpr 文件

解析 tpr 文件并处理潜在错误的示例用法

use minitpr::TprFile;

fn main() {
    let tpr = match TprFile::parse("topol.tpr") {
        Ok(file) => file,
        Err(error) => {
            eprintln!("{}", error);
            return;
        },
    };

    // now you can work with the `tpr` object, accessing its properties and data
    // for instance, to iterate through the atoms of the molecular system, use:
    for atom in tpr.topology.atoms.iter() {
        // perform some operation with the atom
    }
}

数据结构

TprFile 结构封装以下信息

  • 头部:关于 tpr 文件的数据(见 TprHeader 结构)。
  • 分子系统名称:模拟系统的名称。
  • 模拟盒子尺寸:如果存在,则存在于 SimBox 结构中。
  • 系统拓扑:包含原子和键的分子系统的拓扑(见 TprTopology 结构)。

在系统拓扑中表示的每个原子(见 Atom)包括

  • 原子名称。
  • 顺序原子编号,从 1 开始。
  • 残基名称。
  • 顺序残基编号,从 1 开始。
  • 质量。
  • 电荷。
  • 元素(如果无法识别,则为 None)。
  • 位置(如果不存在,则为 None)。
  • 速度(如果不存在,则为 None)。
  • 力(如果不存在,则为 None)。

特性

序列化/反序列化

在安装期间添加特性标志以启用(反)序列化支持 TprFile,使用 serde

cargo add minitpr --features serde

许可证

minitpr 可以根据您的选择在 Apache License 2.0MIT 许可证 下开源。

免责声明

由于存在大量不同的力场、模拟参数和Gromacs选项,全面测试minitpr库非常困难。如果您能以测试、具有不寻常参数的tpr文件或新功能的形式提供贡献,我们将非常欢迎。

如果库无法解析您的tpr文件,但您认为它应该能够解析,请打开GitHub问题上传您的tpr文件

依赖项

~2–12MB
~99K SLoC