6.33. ChainReader MDAnalysis.coordinates.chain

这个 ChainReader 由MDAnalysis在内部使用,以将多个轨迹表示为一个虚拟轨迹。用户通常不需要使用 ChainReader 并且下面的文档主要是开发人员感兴趣的。

class MDAnalysis.coordinates.chain.ChainReader(filenames, skip=1, dt=None, continuous=False, convert_units=True, **kwargs)[源代码]

动态连接多个轨迹的阅读器。

这个 ChainReader 由MDAnalysis在内部使用,以将多个轨迹表示为一个虚拟轨迹。用户通常不需要使用 ChainReader 明确地说。

ChainReader还可以处理多个文件中的连续轨迹拆分。要使用此过程,请使用 continuous == True 关键字参数。设置 continuous=True 将使读者以这样的方式从轨迹集中选择帧,即该轨迹看起来在时间上尽可能连续,即该时间严格地单调增加。这意味着将不会有重复的时间框架,也不会在时间上倒退。然而,时间上可能存在差距(例如,多个时间步长可能看起来缺失)。归根结底,用户有责任确保输入轨迹能够以有意义的方式几乎拼接在一起。以下面的轨迹为例,它分为三个部分。该列表示时间和轨迹段重叠。使用连续链式阅读器时,只会读取标有+的帧。

part01:  ++++--
part02:      ++++++-
part03:            ++++++++

警告

向链条阅读器提供轨迹的顺序可以更改与CONTINUE选项一起使用的帧。

默认链式阅读器将读取所有帧。当前仅XTC、TRR和LAMMPSDUMP文件支持CONTINUINE选项。

备注

轨迹API属性存在,但大多数只反映列表中的第一个轨迹; ChainReader.n_framesChainReader.n_atoms ,以及 ChainReader.fixed 不过,都设置得很好

在 0.11.0 版本发生变更: 帧现在基于0而不是基于1

在 0.13.0 版本发生变更: time 现在报告每个轨迹的帧和个人的时间总和 dt

在 0.19.0 版本发生变更: 已添加 continuous 轨迹选项

在 0.19.0 版本发生变更: 限制产量 __repr__

在 2.0.0 版本发生变更: 现在,ChainReader可以进行(非)腌制了。取消酸洗时,保留当前时间步长。

设置链式阅读器。

参数:
  • filenames (str or list or sequence) -- 文件名或文件名列表;阅读器将打开所有文件名并按列表中轨迹的顺序提供帧。每个轨迹必须包含相同顺序的相同数量的原子(即,它们必须都属于相同的拓扑)。轨迹格式是根据每个文件名的扩展名推导出来的。延长期: filenames 是纯文件名格式的单个文件名或文件名列表 (filename, format) 元组组合。这允许显式设置每个单独轨迹文件的格式。

  • skip (int (optional)) -- 跳过步骤(也传递到各个轨迹读取器);所有轨迹必须相同

  • dt (float (optional)) -- 传递到各个轨迹读取器以强制帧之间的公共时间差(以MDAnalysis时间单位表示)。如果未设置,则每个读取器的 dt 在报告帧时间时将使用(从轨迹文件推断,或设置为读者的默认设置);请注意,这可能会导致帧之间的时间差不一致。

  • continuous (bool (optional)) -- 将所有轨迹视为一个单独的长轨迹。添加多个检查;所有轨迹都具有相同的DT,它们至少包含2个帧,并且它们都属于相同的文件类型。未对所有轨迹格式执行!这可用于分析GROMACS模拟,而无需在分析前将其串联。

  • **kwargs (dict (optional)) -- 所有其他关键字参数都原封不动地传递给每个轨迹读取器

_get_local_frame(k) Tuple[int, int][源代码]

查找链式框架的轨迹索引和轨迹框架 k

参数:

k (int) -- 框架 k 在链式轨迹中可以找到在索引中的轨迹 i 和帧索引 f 。帧在内部被视为轨迹中从0开始的索引。

返回:

  • i ( int )--轨迹

  • f ( int )--轨迹中的帧I

抛出:

IndexError for k<0 or i<0. --

备注

不检查是否 k 大于链接轨迹中的最大帧数。

_apply(method, **kwargs)[源代码]

执行 method 使用 kwargs 面向所有读者。

_get(attr)[源代码]

获取的价值 attr 面向所有读者。

_get_same(attr)[源代码]

确认 attr 对于所有读取器和返回值都具有相同的值。

参数:

attr (str) -- 属性名称

返回:

价值 --属性的通用值

返回类型:

int or float or str or object

抛出:

ValueError if not all readers have the same value --

_read_frame(frame)[源代码]

帧索引处的位置轨迹 frame 然后回来 Timestep

该帧被转换为相应的读取器和本地帧索引,并且 Timestep 实例位于 ChainReader.ts 已更新。

备注

frame 是从0开始的,即通过访问轨迹中的第一帧 frame = 0

property active_reader

当前正在从中读取帧的读取器实例。

close()[源代码]

关闭轨迹文件。

property compressed

compressed 当前读取的轨迹的属性

convert_pos_from_native(x)[源代码]

坐标数组x从原生单位到基本单位的转换。

参数:
  • x (array_like) -- 要转型的职位

  • inplace (bool (optional)) -- 是否就地修改数组,覆盖以前的数据

备注

默认情况下,输入 x 被就地修改并也被返回。就地操作提高了性能,因为避免了分配新阵列。

在 0.7.5 版本发生变更: 关键字 inplace 可以设置为 False 以便返回修改后的副本 除非 不会发生转换,在这种情况下,对未修改的 x 返回。

convert_pos_to_native(x)[源代码]

坐标数组的转换 x 从基本单位到本地单位。

参数:
  • x (array_like) -- 要转型的职位

  • inplace (bool (optional)) -- 是否就地修改数组,覆盖以前的数据

备注

默认情况下,输入 x 被就地修改并也被返回。就地操作提高了性能,因为避免了分配新阵列。

在 0.7.5 版本发生变更: 关键字 inplace 可以设置为 False 以便返回修改后的副本 除非 不会发生转换,在这种情况下,对未修改的 x 返回。

convert_time_from_native(t)[源代码]

转换时间 t 从原生单位到基本单位。

参数:
  • t (array_like) -- 要转换的时间值

  • inplace (bool (optional)) -- 是否就地修改数组,覆盖以前的数据

备注

默认情况下,输入 t 被就地修改并返回(尽管请注意标量值 t 在Python中通过值传递,因此就地修改对调用方没有任何影响。)就地操作提高了性能,因为避免了分配新阵列。

在 0.7.5 版本发生变更: 关键字 inplace 可以设置为 False 以便返回修改后的副本 除非 不会发生转换,在这种情况下,对未修改的 x 返回。

convert_time_to_native(t)[源代码]

转换时间 t 从基本单位到本地单位。

参数:
  • t (array_like) -- 要转换的时间值

  • inplace (bool, optional) -- 是否就地修改数组,覆盖以前的数据

备注

默认情况下,输入 t 被就地修改并也被返回。(另请注意,标量值 t 在Python中通过值传递,因此就地修改对调用方没有任何影响。)

在 0.7.5 版本发生变更: 关键字 在位 可以设置为 False 以便返回修改后的副本 除非 不会发生转换,在这种情况下,对未修改的 x 返回。

property frame

当前时间步长的累计帧编号。

property periodic

periodic 当前读取的轨迹的属性

property time

当前帧的累积时间,以MDAnalysis时间单位(通常为ps)表示。

property units

units 当前读取的轨迹的属性