6.29. TimeStep类-- MDAnalysis.coordinates.timestep
从此模块中的类派生其他TimeStep类。派生类必须跟在 轨迹API 。
6.29.1. 时间步长
A Timestep
保存轨迹中当前时间帧的信息。它是MDAnalysis中的核心数据结构之一。
- class MDAnalysis.coordinates.timestep.Timestep
- __init__()
创建时间步长,表示轨迹的一帧
- 参数:
在 0.11.0 版本发生变更: 添加了的关键字 positions , velocities 和 forces 。可以添加和移除位置/速度/力信息
has_*
属性。在 2.3.0 版本发生变更: 添加了 dtype 硬编码到的属性
float32
。
- classmethod from_coordinates(cls, positions=None, velocities=None, forces=None, **kwargs)
根据坐标数据创建此时间步长的实例
可以传递位置、速度和力数据以形成时间步长。
在 0.11.0 版本加入.
- classmethod from_timestep(cls, Timestep other, **kwargs)
以此时间步的格式创建另一个时间步的副本
在 0.11.0 版本加入.
- n_atoms
此时间步长具有的原子数的只读视图
在 0.11.0 版本发生变更: 更改为只读属性
- frame
帧编号(从0开始)
在 0.11.0 版本发生变更: 帧现在以0为基础;以前是以1为基础
- time
此时间步长的时间(PS)
它的计算方式为:
time = ts.data['time_offset'] + ts.time
或者,如果轨迹没有提供时间信息:
time = ts.data['time_offset'] + ts.frame * ts.dt
在 0.11.0 版本加入.
- dt
时间点之间的时间差(PS)
备注
在没有时间数据的情况下,默认为1.0 ps
在 0.11.0 版本加入.
- positions
设置此属性的时间步长中所有原子位置的记录将向时间步长添加位置(如果它们最初不存在的话)。
- 返回:
职位 --形状的位置数据
(n_atoms, 3)
对于所有的原子- 返回类型:
numpy.ndarray with dtype numpy.float32
- 抛出:
MDAnalysis.exceptions.NoDataError -- 如果时间步没有位置数据
在 0.11.0 版本发生变更: 现在可以筹集
NoDataError
当不存在位置数据时
- velocities
设置此属性的时间步长中所有原子速度的记录将增加时间步长的速度,如果它们最初不存在的话。
- 返回:
速度 --形状的速度数据
(n_atoms, 3)
对于所有的原子- 返回类型:
numpy.ndarray with dtype numpy.float32
- 抛出:
MDAnalysis.exceptions.NoDataError -- 如果时间步长没有速度数据
在 0.11.0 版本加入.
- forces
设置此属性的时间步长中所有原子力的记录将向时间步长添加力,如果它们最初不存在的话。
- 返回:
力量 --形状的力数据
(n_atoms, 3)
对于所有的原子- 返回类型:
numpy.ndarray with dtype numpy.float32
- 抛出:
MDAnalysis.exceptions.NoDataError -- 如果TimeStep没有力数据
.. versionadded: -- 0.11.0:
- has_positions
此时间步长是否具有可以更改为的位置数据的布尔值
True
或False
为数据分配空间或删除数据。在 0.11.0 版本加入.
- has_velocities
此时间步长是否具有可更改为的速度数据的布尔值
True
或False
为数据分配空间或删除数据。在 0.11.0 版本加入.
- has_forces
此时间步长是否具有可更改为的强制数据的布尔值
True
或False
为数据分配空间或删除数据。在 0.11.0 版本加入.
- _pos
numpy.ndarray
数据类型的float32
形状的( n_atoms ,3)和内部C顺序,保存原始笛卡尔坐标(以MDAnalysis单位表示,即ä)。
- _velocities
numpy.ndarray
数据类型的float32
。形状的( n_atoms ,3),保持原始速度(以多维分析单位表示,通常为?/ps)。在 0.7.5 版本加入.
- _forces
numpy.ndarray
数据类型的float32
。形状的( n_atoms ,3),掌握力量_forces
仅在以下情况下才存在has_forces
是真的吗在 0.11.0 版本加入: 作为可选添加到
Timestep
- dtype
- TimeStep的NumPy dtype,则TimeStep中的所有数组都将
有这个数据类型。当前硬编码到
float32
。
在 2.3.0 版本加入: 添加了数据类型
- dimensions
单元格尺寸视图( A , B , C , Alpha , beta , 伽马 )
长度 a , b , c 以MDAnalysis长度单位(?)表示,角度以度为单位。
- triclinic_dimensions
用三斜向量表示的单胞尺寸
- 返回:
单位元向量的(3,3)数值
- 返回类型:
示例
给定系统的单位元可以用三个矢量长度加上它们各自的角度来查询,也可以用三个三斜向量来查询。
>>> ts.dimensions array([ 13., 14., 15., 90., 90., 90.], dtype=float32) >>> ts.triclinic_dimensions array([[ 13., 0., 0.], [ 0., 14., 0.], [ 0., 0., 15.]], dtype=float32)
设置该属性也有效::
>>> ts.triclinic_dimensions = [[15, 0, 0], [5, 15, 0], [5, 5, 15]] >>> ts.dimensions array([ 15. , 15.81138802, 16.58312416, 67.58049774, 72.45159912, 71.56504822], dtype=float32)
在 0.11.0 版本加入.
- volume
单位电池的体积
- __getitem__()
获取一组坐标
ts[i]
返回第i个原子的坐标(从0开始)
ts[start:stop:skip]
返回一个坐标数组,其中开始、停止和跳过对应于原子索引,
MDAnalysis.core.groups.Atom.index
(从0开始)
- __eq__()
与另一个时间步长进行比较
在 0.11.0 版本加入.
- __iter__()
在坐标上迭代
for x in ts
逐个原子迭代坐标
- copy_slice(self, sel)
创造一个新的 Timestep 包含原始数据集的子集 Timestep 。
- 参数:
sel (array_like or slice) -- 基础位置、速度和力数组使用
list
,slice
,或任何类似数组的。- 返回:
A Timestep 对象,该对象包含与选择相关的所有标头信息和所有原子信息。
- 返回类型:
示例
使用一条 Python
slice
对象::new_ts = ts.copy_slice(slice(start, stop, step))
使用索引列表:
new_ts = ts.copy_slice([0, 2, 10, 20, 23])
在 0.8 版本加入.
在 0.11.0 版本发生变更: 重新制作以遵循新的TimeStep API。现在将严格只复制官方属性的TimeStep。