6.29. TimeStep类-- MDAnalysis.coordinates.timestep

从此模块中的类派生其他TimeStep类。派生类必须跟在 轨迹API

6.29.1. 时间步长

A Timestep 保存轨迹中当前时间帧的信息。它是MDAnalysis中的核心数据结构之一。

class MDAnalysis.coordinates.timestep.Timestep
__init__()

创建时间步长,表示轨迹的一帧

参数:
  • n_atoms (uint64) -- 此时间步长描述的原子总数

  • positions (bool, optional) -- 该时间步是否有位置信息 [True]

  • velocities (bool (optional)) -- 该时间步长是否有速度信息 [False]

  • forces (bool (optional)) -- 此时间步长是否有力信息 [False]

  • reader (Reader (optional)) -- 对《拥有的读者》的微弱引用。在属性需要轨迹操纵时使用(例如DT)

  • dt (float (optional)) -- 帧之间的时间差(PS)。如果 time 已设置,则 dt 将被忽略。

  • time_offset (float (optional)) -- 计算时间的起始时间(以PS为单位)

在 0.11.0 版本发生变更: 添加了的关键字 positionsvelocitiesforces 。可以添加和移除位置/速度/力信息 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

抛出:
has_positions

此时间步长是否具有可以更改为的位置数据的布尔值 TrueFalse 为数据分配空间或删除数据。

在 0.11.0 版本加入.

has_velocities

此时间步长是否具有可更改为的速度数据的布尔值 TrueFalse 为数据分配空间或删除数据。

在 0.11.0 版本加入.

has_forces

此时间步长是否具有可更改为的强制数据的布尔值 TrueFalse 为数据分配空间或删除数据。

在 0.11.0 版本加入.

_pos

numpy.ndarray 数据类型的 float32 形状的( n_atoms ,3)和内部C顺序,保存原始笛卡尔坐标(以MDAnalysis单位表示,即ä)。

备注

通常情况下,人们不会直接访问 _pos 但使用的是 coordinates() An的方法 AtomGroup 但有时直接使用原始坐标可能会更快。对此数组的任何更改都会立即反映在原子位置中。如果将帧写入新轨迹,则会更改坐标。如果加载了新的轨迹帧,则 all 内容 _pos 都被覆盖了。

_velocities

numpy.ndarray 数据类型的 float32 。形状的( n_atoms ,3),保持原始速度(以多维分析单位表示,通常为?/ps)。

备注

通常,速度是通过 velocities 或者 velocities() An的方法 AtomGroup

_velocities 仅当 has_velocities 标志为True

在 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

单元格尺寸视图( ABCAlphabeta伽马 )

长度 abc 以MDAnalysis长度单位(?)表示,角度以度为单位。

triclinic_dimensions

用三斜向量表示的单胞尺寸

返回:

单位元向量的(3,3)数值

返回类型:

numpy.ndarray

示例

给定系统的单位元可以用三个矢量长度加上它们各自的角度来查询,也可以用三个三斜向量来查询。

>>> 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

单位电池的体积

data

dict 它保存任意的每一时间步数据

在 0.11.0 版本加入.

__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(self)

制作一份独立的(深入的)完整的副本 Timestep

copy_slice(self, sel)

创造一个新的 Timestep 包含原始数据集的子集 Timestep

参数:

sel (array_like or slice) -- 基础位置、速度和力数组使用 listslice ,或任何类似数组的。

返回:

A Timestep 对象,该对象包含与选择相关的所有标头信息和所有原子信息。

返回类型:

Timestep

备注

所选内容必须以0为基础 slice 或数组中的原子索引 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。