5.21. Gromacs可移植运行输入TPR格式解析器
这个 TPRParser
模块允许读取 Gromacs 可移植运行输入文件(a TPR file )。由于TPR文件的文件格式变化很快,目前并不支持所有版本。表中列出了已知的工作版本和大致的Gromacs版本号 TPR format versions 。
TPX格式 |
TPX生成 |
Gromacs版本 |
朗读 |
---|---|---|---|
?? |
?? |
3.3、3.3.1 |
不是 |
58 |
17 |
4.0、4.0.2、4.0.3、4.0.4、4.0.5、4.0.6、4.0.7 |
是 |
73 |
23 |
4.5.0、4.5.1、4.5.2、4.5.3、4.5.4、4.5.5 |
是 |
83 |
24 |
4.6、4.6.1 |
是 |
100 |
26 |
5.0、5.0.1、5.0.2、5.0.3、5.0.4、5.0.5 |
是 |
103 |
26 |
5.1 |
是 |
110 |
26 |
2016 |
是 |
112 |
26 |
2018 |
是 |
116 |
26 |
2019 |
是 |
119 |
27 |
2020[*]_ |
是 |
122 |
28 |
2021 |
是 |
127 |
28 |
2022 |
是 |
129 |
28 |
2023 |
是 |
有关进一步的讨论和说明,请参阅 Issue 2 。请 发行一期新刊 在 Issue Tracker 当应该支持新的或不同的TPR文件格式版本时。
Gromacs中可用的绑定交互在表5.5中描述 Gromacs manual 。以下方法用于构建拓扑(请参见 Issue 463 ):
键:规则键(类型1)、G96键(类型2)、Morse键(类型3)、立方键(类型4)、连接(类型5)、调和势(类型6)、Fene键(类型7)、约束势(类型10)、具有排除/连接的列表势(类型8)、无排除/连接的列表势(类型9)、具有排除/连接的约束(类型1)、无排除/连接的约束(类型2)、确定约束
角度:正则角(类型1),G96角(类型2),交叉键角(类型3),交叉键角(类型4),Urey-Bradley角(类型5),四次角(类型6),限制弯曲势(类型10),列表角(类型8)
二面体:真二面体(类型1和类型9)、Rykert-Bellemans二面体(类型3)、傅立叶二面体(类型5)、限制二面体(类型10)、组合弯扭位势(类型11)、列表二面体(类型8)
不正确的二面体(类型2),周期性的不正确的二面体(类型4)
5.21.1. 班级
- class MDAnalysis.topology.TPRParser.TPRParser(filename)[源代码]
-
- close()
关闭轨迹文件。
- convert_forces_from_native(force, inplace=True)
力阵的换算 力 从原生单位到基本单位
- 参数:
force (array_like) -- 转型的力量
inplace (bool (optional)) -- 是否就地修改数组,覆盖以前的数据
备注
默认情况下,输入 力 被就地修改并也被返回。就地操作提高了性能,因为避免了分配新阵列。
在 0.7.7 版本加入.
- convert_forces_to_native(force, inplace=True)
力阵的换算 力 从基本单位到原生单位。
- 参数:
force (array_like) -- 转型的力量
inplace (bool (optional)) -- 是否就地修改数组,覆盖以前的数据
备注
默认情况下,输入 force 被就地修改并也被返回。就地操作提高了性能,因为避免了分配新阵列。
在 0.7.7 版本加入.
- convert_pos_from_native(x, inplace=True)
坐标数组x从原生单位到基本单位的转换。
- 参数:
x (array_like) -- 要转型的职位
inplace (bool (optional)) -- 是否就地修改数组,覆盖以前的数据
备注
默认情况下,输入 x 被就地修改并也被返回。就地操作提高了性能,因为避免了分配新阵列。
在 0.7.5 版本发生变更: 关键字 inplace 可以设置为
False
以便返回修改后的副本 除非 不会发生转换,在这种情况下,对未修改的 x 返回。
- convert_pos_to_native(x, inplace=True)
坐标数组的转换 x 从基本单位到本地单位。
- 参数:
x (array_like) -- 要转型的职位
inplace (bool (optional)) -- 是否就地修改数组,覆盖以前的数据
备注
默认情况下,输入 x 被就地修改并也被返回。就地操作提高了性能,因为避免了分配新阵列。
在 0.7.5 版本发生变更: 关键字 inplace 可以设置为
False
以便返回修改后的副本 除非 不会发生转换,在这种情况下,对未修改的 x 返回。
- convert_time_from_native(t, inplace=True)
转换时间 t 从原生单位到基本单位。
- 参数:
t (array_like) -- 要转换的时间值
inplace (bool (optional)) -- 是否就地修改数组,覆盖以前的数据
备注
默认情况下,输入 t 被就地修改并返回(尽管请注意标量值 t 在Python中通过值传递,因此就地修改对调用方没有任何影响。)就地操作提高了性能,因为避免了分配新阵列。
在 0.7.5 版本发生变更: 关键字 inplace 可以设置为
False
以便返回修改后的副本 除非 不会发生转换,在这种情况下,对未修改的 x 返回。
- convert_time_to_native(t, inplace=True)
转换时间 t 从基本单位到本地单位。
- 参数:
t (array_like) -- 要转换的时间值
inplace (bool, optional) -- 是否就地修改数组,覆盖以前的数据
备注
默认情况下,输入 t 被就地修改并也被返回。(另请注意,标量值 t 在Python中通过值传递,因此就地修改对调用方没有任何影响。)
在 0.7.5 版本发生变更: 关键字 在位 可以设置为
False
以便返回修改后的副本 除非 不会发生转换,在这种情况下,对未修改的 x 返回。
- convert_velocities_from_native(v, inplace=True)
速度阵的换算 v 从原生单位到基本单位
- 参数:
v (array_like) -- 转型的速度
inplace (bool (optional)) -- 是否就地修改数组,覆盖以前的数据
备注
默认情况下,输入 v 被就地修改并也被返回。就地操作提高了性能,因为避免了分配新阵列。
在 0.7.5 版本加入.
- convert_velocities_to_native(v, inplace=True)
坐标数组的转换 v 从基本单位到原生单位
- 参数:
v (array_like) -- 转型的速度
inplace (bool (optional)) -- 是否就地修改数组,覆盖以前的数据
备注
默认情况下,输入 v 被就地修改并也被返回。就地操作提高了性能,因为避免了分配新阵列。
在 0.7.5 版本加入.
- parse(tpr_resid_from_one=True, **kwargs)[源代码]
将Gromacs TPR文件解析为MDAnalysis内部拓扑结构。
- 参数:
tpr_resid_from_one (bool (optional)) -- 切换是否从1或0索引TPR文件中的残留物。默认情况下,TPR文件的索引从0开始,即使Gro和ITP文件从1开始也是如此。
- 返回:
structure
- 返回类型:
在 1.1.0 版本发生变更: 添加了
tpr_resid_from_one
关键字,用于控制是否从0或1开始对驻留进行索引。默认False
。在 2.0.0 版本发生变更: 更改为
tpr_resid_from_one=True
默认情况下。
- units = {'length': None, 'time': None, 'velocity': None}
带有以下单位的词典 time 和 长度 (及 速度 , 力 ..用于支持它的格式)
5.21.2. 发展笔记
TPR读取器是基本TPR解析器的纯Python实现。目前正在解析拓扑的以下部分:
原子:编号、名称、类型、更名、REID、SEGID、MASS、电荷、元素 [残留物、管段、半径、双因数、重数、摩尔型]
债券
夹角
二面体
不动产
此TPR解析器是根据以下文件编写的
gromacs_dir/src/kernel/gmxdump.c
{gromacs_dir}/src/gmxlib/tpxio.c
(最重要的一条)gromacs_dir/src/gmxlib/gmxfio_rw.c
gromacs_dir/src/gmxlib/gmxfio_xdr.c
gromacs_dir/include/gmxfiofio.h
或较新版本的Gromacs中的等价物。
该函数 read_tpxheader()
是基于 TPRReaderDevelopment 笔记。名称以开头的函数 read_
或 do_
正在努力变得类似于 gmxdump.c
或 tpxio.c
,那些拥有 extract_
都是新的。
不支持Gromacs 4.0.x之前的版本。
在 2.0.0 版本发生变更: 这个 elements 现在,如果至少有一个原子具有有效的元素符号,则会显示拓扑属性。在这种情况下,无法识别元素的原子将其元素属性设置为空字符串。如果没有识别出任何元素,则 elements 属性未在拓扑中设置。