5.10. ITP拓扑解析器
阅读GROMACS ITP 或 TOP 文件来构建系统。该拓扑将包含原子ID、SEGID、残基ID、残基名称、原子名称、原子类型、电荷、电荷群、质量(如果找不到则猜测)、摩尔类型和摩尔数。还从文件中读取了键、角度、二面体和突破器。
如果在传递ITP文件时没有 [ molecules ]
指令,通过 infer_system=True
(默认选项)将创建一个宇宙,每个宇宙定义一个分子 moleculetype
。如果一个 [ molecules ]
部分已存在, infer_system
被忽略。
如果文件包含在 #include 指令,它们也将被阅读。如果它们不在工作目录中,ITPParser将在 include_dir
目录。默认情况下,它设置为 include_dir="/usr/local/gromacs/share/gromacs/top/"
。变量可以使用 #define 指令,或通过传入 keyword arguments 。
示例
- ::
从MDAnalysis.tests.datafile导入MDAnalysis作为MDA。数据文件导入ITP_tip5p
#覆盖HW2原子的电荷(文件中定义为HW2_Charge)u=mda.宇宙(ITP_tip5p,HW2_Charge=2,INFER_SYSTEM=True)
备注
琥珀还使用扩展名为.TOP的拓扑文件。要使用ITPParser读取GROMACS顶层文件,请传递 topology_format='ITP'
。
import MDAnalysis as mda
u = mda.Universe('topol.top', topology_format='ITP')
5.10.1. 预处理器变量
ITP文件通常使用取决于是否给出关键字标志的行来定义。例如,此修改后的TIP5P水文件:
[ moleculetype ] ; molname nrexcl SOL 2 #ifndef HW1_CHARGE #define HW1_CHARGE 0.241 #endif #define HW2_CHARGE 0.241 [ atoms ] ; id at type res nr residu name at name cg nr charge 1 opls_118 1 SOL OW 1 0 2 opls_119 1 SOL HW1 1 HW1_CHARGE 3 opls_119 1 SOL HW2 1 HW2_CHARGE 4 opls_120 1 SOL LP1 1 -0.241 5 opls_120 1 SOL LP2 1 -0.241 #ifdef EXTRA_ATOMS ; added for keyword tests 6 opls_120 1 SOL LP3 1 -0.241 7 opls_120 1 SOL LP4 1 0.241 #endif
通过传递关键字参数来定义这些预处理器变量。您传入的任何参数 超覆 文件中定义的任何变量。例如,下面的宇宙中HW1和HW2原子的电荷为3:
import MDAnalysis as mda
from MDAnalysis.tests.datafiles import ITP_tip5p
u = mda.Universe(ITP_tip5p, EXTRA_ATOMS=True, HW1_CHARGE=3, HW2_CHARGE=3)
这些关键字变量是 case-sensitive 。请注意,如果将关键字设置为 False
或 None
,它们将被视为未在#ifdef条件中定义。
例如,下面的宇宙将只有5个原子。**
u = mda.Universe(ITP_tip5p, EXTRA_ATOMS=False)
5.10.2. 班级
- class MDAnalysis.topology.ITPParser.ITPParser(filename)[源代码]
-
创建具有以下属性的拓扑:-ids-名称-类型-质量-电荷-Chargegroups-Resids-resname-segids-moltype-molums-ond-angles-dihedrals-Impropers
在 2.2.0 版本发生变更: 不再为具有稳定约束的水分子添加角度
- 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(include_dir='/usr/local/gromacs/share/gromacs/top/', infer_system=True, **kwargs)[源代码]
将ITP文件解析为拓扑
- units = {'length': None, 'time': None, 'velocity': None}
带有以下单位的词典 time 和 长度 (及 速度 , 力 ..用于支持它的格式)