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流那样查找字节偏移量,而是在完整的轨迹帧上操作。
确认
- 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)
一次读取多个帧
- 参数:
- 返回:
DCDFrame --职位已确定
x
和单元格输入unitcell
DCDFrame的属性。在这里,属性包含所有帧按给定顺序的位置- 返回类型:
namedtuple
备注
从DCD中按原样读取单元。根据写入此DCD文件时使用的程序,需要进行后处理。请看一下MDAnalysDCD阅读器,以便可能将其后处理为通用的单元数据结构。
- 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标头
在写入第一帧之前,需要调用此函数。