13.3.2. 低位DCD轨迹读数- MDAnalysis.lib.formats.libdcd

libdcd 包含类 DCDFile 读取和写入DCD文件的帧。该类的行为尝试类似于普通的文件对象。

libdcd 包含类 DCDFile ,它可用于从DCD文件读取帧或将帧写入DCD文件。这些类由中的MDAnalysis内部使用 MDAnalysis.coordinates.DCD 。它们的行为类似于普通文件对象。

例如,可以使用 DCDFile 直接计算平均坐标(其中坐标存储在 x 属性的属性。 namedtuple frame ):

with DCDFile("trajectory.dcd") as dcd:
    header = dcd.header
    mean = np.zeros((header['natoms'], 3))
    # iterate over trajectory
    for frame in dcd:
        mean += frame.x
mean /= header['natoms']

除了迭代之外,还可以使用 seek() 方法。请注意,DCDFile的Seek和Tell方法不是像普通的Python流那样查找字节偏移量,而是在完整的轨迹帧上操作。

确认

libdcd 包含并最初基于从VMD读取和写入代码的DCD molfile 插件和 catdcd

class MDAnalysis.lib.formats.libdcd.DCDFile(fname, mode='r')

DCD文件的类似包装器的文件

这个类可以类似于python中的普通文件对象。函数的作用是:返回一个帧和其中的所有信息,而不是一行。此外,还支持上下文管理器协议。

DCDFile可以读取由CHARMM、NAMD或LAMMPS创建的典型DCD文件。它从轨迹中读取原始数据,因此,例如,对不同的单元格约定或时间和长度单位的解释必须在更高级别的代码中处理。读写不支持固定原子或4D坐标。

参数:
  • fname (str) -- 要打开的文件名。

  • mode (('r', 'w')) -- 打开文件的模式,‘r’读取或‘w’写入

示例

>>> from MDAnalysis.lib.formats.libdcd import DCDFile
>>> with DCDFile('foo.dcd') as f:
>>>     for frame in f:
>>>         print(frame.x)

备注

DCD不是定义良好的格式。这样做的一个后果是,像CHARMM和NAMD这样的不同程序使用不同的约定来存储单元信息。这个 DCDFile 将按可用时的原样读取单元格信息。根据写入此DCD文件的程序的不同,需要进行后处理。请看一下MDAnalysDCD阅读器,以便可能将其后处理为通用的单元数据结构。上还可以找到有关不同程序如何在DCD中存储单元单元信息的更多信息 mdawiki 。这个类可以进行腌制。Pickle将存储文件名、模式、当前帧

charmm_bitfield

该DCDFile阅读器可以处理由不同MD仿真程序编写的文件。对于CHARMM或遵循相同约定的其他程序生成的文件,我们将读取一个特殊的CHARMM位域,该位域存储有关DCD中存储的附加信息的不同标志。位标志为:

DCD_IS_CHARMM       = 0x01
DCD_HAS_4DIMS       = 0x02
DCD_HAS_EXTRA_BLOCK = 0x04

这里 DCD_HAS_EXTRA_BLOCK 意味着存储了单元格信息。

close()

关闭打开的DCD文件

header

returns: * dict of header values needed to write new dcd. * natoms (number of atoms) * istart (starting frame number) * nsavc (number of frames between saves) * delta (integrator time step.) * charm (bitfield integer if file contains special CHARMM information) * remarks (remark string, max 240 bytes.)

open(mode='r')

打开DCD文件

如果当前打开了另一个DCD文件,则该文件将被关闭

参数:

mode (('r', 'w')) -- 打开文件的模式,‘r’读取或‘w’写入

read()

读取下一个DCD帧

返回:

DCDFrame --职位已确定 x 和单元格输入 unitcell DCDFrame的属性

返回类型:

namedtuple

备注

Unitcell按原样从DCD中读取。根据写入此DCD文件的程序的不同,需要进行后处理。请看一下MDAnalysDCD阅读器,以便可能将其后处理为通用的单元数据结构。

readframes(start=None, stop=None, step=None, order='fac', indices=None)

一次读取多个帧

参数:
  • start (int (optional)) -- 起始帧,默认为0

  • stop (int (optional)) -- 停止帧,默认为 n_frames

  • step (int (optional)) -- 读取的帧之间的步长,默认为1

  • order (str (optional)) -- 给出返回的数组的顺序 f :框架、 a :原子, c :坐标

  • indices (array_like (optional)) -- 只读取选定的原子。在……里面 None 全部阅读。

返回:

DCDFrame --职位已确定 x 和单元格输入 unitcell DCDFrame的属性。在这里,属性包含所有帧按给定顺序的位置

返回类型:

namedtuple

备注

从DCD中按原样读取单元。根据写入此DCD文件时使用的程序,需要进行后处理。请看一下MDAnalysDCD阅读器,以便可能将其后处理为通用的单元数据结构。

seek(frame)

寻求陷害。

参数:

frame (int) -- 将文件搜索到给定帧(从0开始)

tell()
返回类型:

current frame (0-based)

write(xyz, box=None)

将一帧写入DCD文件。

参数:
  • xyz (array_like, shape=(natoms, 3)) -- 笛卡尔坐标

  • box (array_like, shape=(6) (optional)) -- 该帧的长方体向量。可以保留为跳过写入单位单元格

write_header(remarks, natoms, istart, nsavc, delta, is_periodic)

写入DCD标头

在写入第一帧之前,需要调用此函数。

参数:
  • remarks (str) -- DCD文件的备注。最多可写入239个字符(ASCII)。字符240将是空终止符

  • natoms (int) -- 要写入的原子数

  • istart (int) -- 起始帧编号

  • nsavc (int) -- 两次保存之间的帧数

  • delta (float) -- 积分时间步长。1帧的时间为NSAVC*增量

  • is_periodic (bool) -- 写入单元格信息。还假装文件是由CHARMM 24写入的