6.20. TRR轨迹文件 MDAnalysis.coordinates.TRR
读取和写入GROMACS TRR轨迹。
参见
MDAnalysis.coordinates.XTC
读写GROMACS XTC轨迹文件。
MDAnalysis.coordinates.XDR
基于XDR的格式的BaseReader/Writer
- class MDAnalysis.coordinates.TRR.TRRReader(filename, convert_units=True, sub=None, refresh_offsets=False, **kwargs)[源代码]
Gromacs TRR格式的阅读器。
Gromacs TRR轨迹格式是一种无损格式。TRR格式可以存储 速度 和 力量 除了坐标之外。它也被其他Gromacs工具用来存储和处理其他数据,例如来自主成分分析的模式。
Lambda值被写入返回的
Timestep
备注
看见 Notes on offsets 有关偏移的详细信息,请参见。
- 参数:
- OtherWriter(filename, **kwargs)
返回适用于的编写器 文件名 。
设置默认关键字 开始 , step 和 dt (如果可用)。 n_atoms 始终设置为
Reader.n_atoms
。参见
Reader.Writer()
- Writer(filename, n_atoms=None, **kwargs)
用于轨迹格式的返回写入器
- add_auxiliary(aux_spec: str | Dict[str, str] = None, auxdata: str | AuxReader = None, format: str = None, **kwargs) None
添加要与轨迹一起读取的辅助数据。
辅助数据可以是除了由轨迹读取器读入的轨迹之外的来自轨迹的任何数据时间序列。 辅助数据 可以是一个
AuxReader
实例,或数据本身作为文件名;在后一种情况下,适当的AuxReader
是从数据/文件格式中猜测出来的。一种适当的 format 也可以直接作为关键字参数提供。添加时,AuxReader最初与轨迹的当前时间步长匹配,并将在轨迹时步更改时更新(通过调用
next()
或者跳跃时间步长trajectory[i]
)。每个时间步长的辅助数据的代表值(S)(由
AuxReader
)存储在ts.aux
下的命名空间 aux_spec ;例如,要添加存储在Pull-force.xvg中的其他拉力数据::u = MDAnalysis.Universe(PDB, XTC) u.trajectory.add_auxiliary('pull', 'pull-force.xvg')
然后,当前时间步长的代表值可以被访问为
u.trajectory.ts.aux.pull
或u.trajectory.ts.aux['pull']
。以下内容适用于能源读者,如
EDRReader
。可以通过省略来添加(能源)文件中存在的所有数据 aux_spec 像这样::
u.trajectory.add_auxiliary(auxdata="ener.edr")
aux_spec 属性中映射所需属性名称的字典。
ts.aux
命名空间设置为要添加的精确数据,该数据由data_selector
**term_dict = {"temp": "Temperature", "epot": "Potential"} u.trajectory.add_auxiliary(term_dict, "ener.edr")
例如,添加此数据对于基于非坐标数据(如每个时间步长的势能)过滤轨迹帧可能很有用。轨迹切片允许处理帧的子集:
selected_frames = np.array([ts.frame for ts in u.trajectory if ts.aux.epot < some_threshold]) subset = u.trajectory[selected_frames]
备注
假设辅助数据是按时间排序的,没有重复。请参阅 辅助API 。
- add_transformations(*transformations)
添加要应用于轨迹的所有变换。
此函数将转换列表作为参数。这些转换是将由Reader调用的函数,并为其提供
Timestep
对象作为参数,它将被转换并返回给读取器。这些转换可以是transformations
模块,或由用户创建,并以列表形式存储 transformations 。此列表只能修改一次,进一步调用此函数将引发异常。u = MDAnalysis.Universe(topology, coordinates) workflow = [some_transform, another_transform, this_transform] u.trajectory.add_transformations(*workflow)
将按照列表中给出的顺序应用转换 transformations 即,第一个转换是要应用于
Timestep
。上面的示例等同于for ts in u.trajectory: ts = this_transform(another_transform(some_transform(ts)))
- 参数:
transform_list (list) -- 将按列表中给定的顺序应用于坐标的所有变换的列表
- property aux_list
列出新增辅助数据的名称。
- check_slice_indices(start, stop, step)
检查帧索引是否有效,并剪裁以适合轨迹。
该用法遵循以下标准的Python约定
range()
但请参阅下面的警告。- 参数:
- 返回:
开始、停止、步进 --表示切片的整数
- 返回类型:
警告
返回值 start , stop 和 step 传入时给出预期结果
range()
,但在传入slice
什么时候stop=None
和step=-1
对于此方法的输出的下游处理来说,这可能是一个问题。例如,轨迹切片是通过传递
check_slice_indices()
至range()
::range(start, stop, step)
并将其作为随机寻求的指标。另一方面,在
MDAnalysis.analysis.base.AnalysisBase
由返回的值check_slice_indices()
用于拼接轨迹,方法是创建slice
实例::slice(start, stop, step)
这会造成差异,因为这两行不相等::
range(10, -1, -1) # [10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0] range(10)[slice(10, -1, -1)] # []
- 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 版本加入.
- copy()
退还本阅读器的独立副本。
新的阅读器将有自己的文件句柄,可以独立于原始阅读器进行查找/迭代。
还将复制原始读取器中保存的时间步长的当前状态。
在 2.2.0 版本发生变更: 用于构造读取器的参数被正确捕获并传递给新类的创建。以前是唯一的
n_atoms
被传递给类副本,导致使用默认参数创建的类可能与原始类不同。
- get_aux_attribute(auxname, attrname)
获取的价值 属性名称 从辅助器 辅助名称
- get_aux_descriptions(auxnames=None)
获取描述以允许重新加载指定的辅助项。
如果未提供辅助名称,则默认为添加的辅助名称的完整列表。
将生成的描述传递给
add_auxiliary()
将允许辅助人员的娱乐活动。例如,将所有辅助词复制到第二个轨迹中:descriptions = trajectory_1.get_aux_descriptions() for aux in descriptions: trajectory_2.add_auxiliary(**aux)
- 返回:
描述每个辅助词的args/kwargs词典列表。
- 返回类型:
- iter_as_aux(auxname)
迭代至少有一个来自辅助步骤的分配步骤的时间步长 辅助名称 中指定的截止范围内 辅助名称 。
- iter_auxiliary(auxname, start=None, stop=None, step=None, selected=None)
遍历辅助词 辅助名称 与弹道无关。
将迭代辅助的指定步骤(默认为所有步骤)。允许访问辅助对象中的所有值,包括轨迹时间范围之外的值,而不必同时迭代轨迹。
迭代后,辅助器将重新定位在当前步骤。
- property n_frames
轨迹中的帧数
- next_as_aux(auxname)
移动到辅助时间步长至少有一个步长的下一个时间步长 辅助名称 中指定的截止范围内 辅助名称 。
这允许在轨迹中前进,而不会遇到
NaN
代表值(除非这些值特别是辅助数据的一部分)。如果未设置辅助截止,则辅助步骤较少 (
auxiliary.dt > trajectory.dt
),这允许以辅助步调(四舍五入到最接近的时间步长)前进;而如果辅助步长更频繁,这将与调用next()
。请参阅 辅助API 。
- classmethod parse_n_atoms(filename, **kwargs)
读取坐标文件并推算出原子数
- 返回:
n_atoms --坐标文件中的原子数
- 返回类型:
- 抛出:
NotImplementedError -- 当原子的数量无法推断时
- rename_aux(auxname, new)
更改辅助设备的名称 辅助名称 至 new 。
假设还没有名为 new ,辅助名称将在t.aux名称空间、轨迹的添加辅助项列表以及辅助阅读器本身中更改。
- 参数:
- 抛出:
ValueError -- 如果该名称 new 已被现有的辅助设备使用。
- set_aux_attribute(auxname, attrname, new)
设置的值 属性名称 在辅助词中 辅助名称 。
- property time
当前帧的时间,以MDAnalysis时间单位表示(通常为ps)。
这要么直接从TimeStep读取,要么计算为time=
Timestep.frame
*Timestep.dt
- timeseries(asel: AtomGroup | None = None, start: int | None = None, stop: int | None = None, step: int | None = None, order: str | None = 'fac') ndarray
返回原子组的坐标数据子集
- 参数:
asel (AtomGroup (optional)) -- 这个
AtomGroup
从…读取坐标。默认为None
在这种情况下,将返回完整的坐标数据集。start (int (optional)) -- 从帧索引处开始读取轨迹 start (其中0是轨迹中第一帧的索引);默认设置
None
从头开始。stop (int (optional)) -- 在帧索引处结束读取轨迹 stop -1,即, stop 被排除在外。轨迹将使用默认设置读取到末尾
None
。step (int (optional)) -- 读取步长;默认设置
None
等于1,表示读取每一帧。order (str (optional)) -- 对应于(A)tom、(F)rame、(C)坐标的返回数据数组的顺序/形状允许所有六个‘a’、‘f’、‘c’的组合,即“fac”-其中形状为(帧、原子数、坐标)的返回数组
在 2.4.0 版本加入.
- property totaltime: float
轨迹的总长度
时间的计算方式为
(n_frames - 1) * dt
也就是说,我们假设第一帧没有经过时间。因此,具有两个帧的轨迹将被视为具有单个时间步的长度 dt 并且具有单帧的“轨迹”将被报告为长度0。
- property transformations
返回转换列表
- units = {'force': 'kJ/(mol*nm)', 'length': 'nm', 'time': 'ps', 'velocity': 'nm/ps'}
带有以下单位的词典 time 和 长度 (及 速度 , 力 ..用于支持它的格式)
- class MDAnalysis.coordinates.TRR.TRRWriter(filename, n_atoms, convert_units=True, **kwargs)[源代码]
Gromacs TRR格式的作者。
Gromacs TRR轨迹格式是一种无损格式。TRR格式可以存储 速度 和 力量 除了坐标之外。它也被其他Gromacs工具用来存储和处理其他数据,例如来自主成分分析的模式。
如果数据字典中的
Timestep
包含关键字‘lambda’,相应的值将被用作写入TRR文件的lambda值。如果None
则将lambda设置为0。如果数据字典中的
Timestep
包含关键字‘STEP’,相应的值将被用作写入的TRR文件的步长值。如果词典中不包含‘Step’,则将该步骤设置为Timestep
框架属性。- 参数:
- close()
闭合轨迹
- convert_dimensions_to_unitcell(ts, inplace=True)
从TimeStep读取维度 ts 并返回相应的单元格。
默认情况下,返回
[A,B,C,alpha,beta,gamma]
;如果这不合适,则必须重写此方法。
- 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 版本加入.
- has_valid_coordinates(criteria, x)
退货
True
如果所有值都在其格式的限制值内。由于四舍五入,测试是不对称的(和 min 应该是负面的):
最小<x<=最大
- 参数:
criteria (dict) -- 包含 max 和 min 以本地单位表示的值
x (numpy.ndarray) --
(x, y, z)
选定要写出的原子的坐标
- 返回类型:
- units = {'force': 'kJ/(mol*nm)', 'length': 'nm', 'time': 'ps', 'velocity': 'nm/ps'}
带有以下单位的词典 time 和 长度 (及 速度 , 力 ..用于支持它的格式)