RKF轨迹文件

班级 RKFTrajectoryFile(文件名, mode ='rb', fileObject = none, ntap = none)[来源]

表示包含分子轨迹的RKF文件的类

此类的实例具有以下属性:

  • file_object - 一个plam KFFile 对象,参考实际的RKF文件
  • position - 光标当前指向RKF文件的帧
  • mode - 指定文件是否处于读取或写入模式('rb'或'wb')
  • ntap - 分子系统中的原子数(需要恒定)
  • 元素 - 系统中原子的元素(需要始终恒定)
  • conect - 当前帧的连接信息
  • mddata - 仅读取模式:包含来自rkf文件中的mdhistory部分的数据的字典
  • read_lattice - 仅读取模式:将从文件中读取晶格向量
  • read_bonds - Whers将从文件中读取连接信息
  • saving_freq - 写入“WB”文件的频率(默认值:仅限何时 close() is called)

一个 RKFTrajectoryFile 对象的行为与常规文件对象非常相似。 它具有读写方法(read_next()write_next()) that read and write from/to the position of the cursor in the file_object attribute. 如果文件处于读取模式,则还有一个方法 read_frame() 可以使用移动 将光标到文件中的任何帧并从那里读取。 存储在内存中的信息量保持在最小值,仅作为最新帧的信息 is ever stored.

读取和写入文件和文件可以如下所示:

>>> from scm.plams import RKFTrajectoryFile

>>> rkf = RKFTrajectoryFile('ams.rkf')
>>> mol = rkf.get_plamsmol()

>>> rkfout = RKFTrajectoryFile('new.rkf',mode='wb')

>>> for i in range(rkf.get_length()) :
>>>     crd,细胞 = rkf.read_frame(i,molecule=mol)
>>>     rkfout.write_next(molecule=mol)
>>> rkfout.close()

这 above script reads information from the RKF file ams.rkf into the 分子 目的 mol 以逐步的方式。 The 分子 然后将对象传递给 write_next() 新的 RKFTrajectoryFile目的 corresponding to the new rkf file new.rkf.

通过将实例迭代为可调用来实现完全相同的结果

>>> rkf = RKFTrajectoryFile('ams.rkf')
>>> mol = rkf.get_plamsmol()
>>> rkfout = RKFTrajectoryFile('new.rkf',mode='wb')
>>> for crd,细胞 in rkf(mol) :
>>>     rkfout.write_next(molecule=mol)
>>> rkfout.close()

此过程要求将所有坐标信息传递给 分子 object 对于每个帧,这可能是耗时的。 一段时间可以通过绕过来保存 分子 object:

>>> rkf = RKFTrajectoryFile('ams.rkf')

>>> rkfout = RKFTrajectoryFile('new.rkf',mode='wb')
>>> rkfout.set_elements(rkf.get_elements())

>>> for crd,细胞 in rkf :
>>>     rkfout.write_next(coords=crd,细胞=细胞,conect=rkf.conect)
>>> rkfout.close()

唯一的强制性论点 write_next() method is coords. Further time can be saved by setting the read_latticeread_bonds variables to False.

默认情况下,写入模式将创建一个最小的RKF文件版本,仅包含元素, 坐标,格子和连接信息。 Amsmovie可以读取此最小文件格式。

可以存储附加信息,例如能量,速度和电荷。 要启用此方法,该方法 store_mddata() 需要在创建后调用, 和mddata的字典需要传递给 write_next() method. 完成后,AMS轨迹分析工具可以在文件上使用。 然而,使用此类文件重新启动MD运行,目前不可能:

>>> rkf = RKFTrajectoryFile('ams.rkf')
>>> rkf.store_mddata()
>>> mol = rkf.get_plamsmol()

>>> rkf_out = RKFTrajectoryFile('new.rkf',mode='wb')
>>> rkf_out.store_mddata(rkf)

>>> for i in range(len(rkf)) :
>>>         crd,细胞 = rkf.read_frame(i,molecule=mol)
>>>         rkf_out.write_next(molecule=mol,mddata=rkf.mddata)
>>> rkf_out.close()
__init__(文件名, mode ='rb', fileObject = none, ntap = none)[来源]

启动rkftrajectoryfile对象

  • 文件名 - rkf文件的路径
  • mode - 打开RKF文件的模式('rb'或'wb')
  • fileobject - 可选地,可以传递文件对象(文件名需要设置为none)
  • ntap - 如果文件处于写入模式,则需要在此处传递原子数
store_mddata(rkf = none)[来源]

读/写一个mdhistory部分

  • rkf - 如果在“写入模式”中,读取模式中的RKFtrajectFile对象需要传递给提取单元信息
close()[来源]

执行所有先前的命令,并干净地关闭和垃圾收集RKF文件

_update_celldata(细胞)[来源]

使用新提供的单元格更新系统的维度

get_plamsmol()[来源]

从RKF文件中提取PLAMS分子对象

read_frame(i, 分子=无)[来源]

Reads the relevant info from frame i 和 returns it, or stores it in molecule

  • i - 要从RKF文件读取的帧号
  • molecule分子 需要存储新坐标的对象
read_next(分子=无, 读=真实)[来源]

从光标的当前位置读取坐标和格子矢量,并返回它

  • molecule分子 需要存储新坐标的对象
  • read - 如果设置为false,则光标将移动到下一个帧而不读取
write_next(coords = none,分子=无,cell = [0.0,0.0,0.0],截关=无,mddata =无)[来源]

将框架写入轨迹文件中的下一个位置

  • coords – A list or numpy array of (ntap,3) containing the system coordinates
  • molecule - 来自读取分子数据的分子对象
  • 细胞 - 一组格子向量(或用于矫正系统的细胞直径)
  • conect - 包含连接信息的字典(例如{1:[2],2:[1]})
  • mddata - 包含要写入mdhistory部分的变量的字典

mddata dictionary can contain the following keys: ('totalenergy','offerenergy','Step','速度','Kineticenergy', '收费','保守人员','时间','温度')

笔记

Either coords or molecule are mandatory arguments

rewind(nframes = none)[来源]

Rewind the file either by nframes or to the first frame

  • nframes - 倒带的框架数量
get_length()[来源]

获取文件中的帧数

read_last_frame(分子=无)[来源]

从文件中读取最后一个帧

RKF历史文件

该子部分描述了API RKFHistoryFile class, 可以通过更改原子数来读取和写入模拟结果。 大多数分子模拟探索了规范,微规范的子空间, 或等温才能的合奏,其中原子数量 \(n \) remains constant. 然而,大规范蒙特卡罗模拟是其中原子数量的例外之一 system does change. The RKFTrajectoryFile 对象无法读写并编写结果的模拟历史记录, 和派生的班级 RKFHistoryFile 开发用于处理这些非典型轨迹。 虽然该类中的方法比父类中的方法慢,但API几乎相同。 The only exception is the write_next() method, which has an additional argument 元素.

班级 RKFHistoryFile(文件名, mode ='rb', fileObject = none, ntap = none)[来源]

类代表包含具有不同原子数的分子模拟历史的RKF文件

此类的实例具有以下属性:

  • file_object - 一个plam KFFile 对象,参考实际的RKF文件
  • position - 光标当前指向RKF文件的帧
  • mode - 指定文件是否处于读取或写入模式('rb'或'wb')
  • 元素 - 当前帧的系统中原子的元素
  • conect - 当前帧的连接信息
  • mddata - 仅读取模式:包含来自rkf文件中的mdhistory部分的数据的字典
  • read_lattice - 仅读取模式:将从文件中读取晶格向量
  • read_bonds - Whers将从文件中读取连接信息

一个 RKFHistoryFile 对象的行为与常规文件对象非常相似。 它具有读写方法(read_next()write_next()) that read and write from/to the position of the cursor in the file_object attribute. 如果文件处于读取模式,则还有一个方法 read_frame() 可以使用移动 将光标到文件中的任何帧并从那里读取。 存储在内存中的信息量保持在最小值,仅作为最新帧的信息 is ever stored.

读取和写入文件和文件可以如下所示:

>>> from scm.plams import RKFHistoryFile

>>> rkf = RKFHistoryFile('ams.rkf')
>>> mol = rkf.get_plamsmol()

>>> rkfout = RKFHistoryFile('new.rkf',mode='wb')

>>> for i in range(rkf.get_length()) :
>>>     crd,细胞 = rkf.read_frame(i,molecule=mol)
>>>     rkfout.write_next(molecule=mol)
>>> rkfout.close()

这 above script reads information from the RKF file ams.rkf into the 分子 目的 mol 以逐步的方式.. The 分子 然后将对象传递给 write_next() 新的 RKFHistoryFile目的 corresponding to the new rkf file new.rkf.

通过将实例迭代为可调用来实现完全相同的结果

>>> rkf = RKFHistoryFile('ams.rkf')
>>> mol = rkf.get_plamsmol()
>>> rkfout = RKFHistoryFile('new.rkf',mode='wb')
>>> for crd,细胞 in rkf(mol) :
>>>     rkfout.write_next(molecule=mol)
>>> rkfout.close()

此过程要求将所有坐标信息传递给 分子 object 对于每个帧,这可能是耗时的。 一段时间可以通过绕过来保存 分子 object:

>>> rkf = RKFHistoryFile('ams.rkf')

>>> rkfout = RKFHistoryFile('new.rkf',mode='wb')

>>> for crd,细胞 in rkf :
>>>     rkfout.write_next(coords=crd,细胞=细胞,元素=rkf.元素,conect=rkf.conect)
>>> rkfout.close()

唯一的强制性论点 write_next() method is coords. Further time can be saved by setting the read_latticeread_bonds variables to False.

默认情况下,写入模式将创建一个最小的RKF文件版本,仅包含元素, 坐标,格子和连接信息。 Amsmovie可以读取此最小文件格式。

如果原始RKF文件包含MDH符号部分(如果它是由分子核模拟导致的) 可以将信息从该部分存储并将其写入另一个文件。 要启用此方法,该方法 store_mddata() 需要在创建后调用, 和mddata的字典需要传递给 write_next() method. 完成后,AMS轨迹分析工具可以在文件上使用。 然而,使用此类文件重新启动MD运行,目前不可能:

>>> rkf = RKFHistoryFile('ams.rkf')
>>> rkf.store_mddata()
>>> mol = rkf.get_plamsmol()

>>> rkf_out = RKFHistoryFile('new.rkf',mode='wb')
>>> rkf_out.store_mddata(rkf)

>>> for i in range(rkf.get_length()) :
>>>         crd,细胞 = rkf.read_frame(i,molecule=mol)
>>>         rkf_out.write_next(molecule=mol,mddata=rkf.mddata)
>>> rkf_out.close()
__init__(文件名, mode ='rb', fileObject = none, ntap = none)[来源]

初始化rkfhistoryfile对象

  • 文件名 - rkf文件的路径
  • mode - 打开RKF文件的模式('rb'或'wb')
  • fileobject - 可选地,可以传递文件对象(文件名需要设置为none)
  • ntap - 如果文件处于写入模式,则可以在此处传递原子数
get_plamsmol()[来源]

从RKF文件中提取PLAMS分子对象

_correct_chemical_system(元素, prev_elements., Adtaned_atoms., recoup_atoms.)[来源]

检查参考化学系统是否正确,如果没有,请找到一个匹配的添加/删除原子

write_next(coords = none,分子= none,元素=无,cell = [0.0,0.0,0.0],conect = none,mddata = none)[来源]

将框架写入轨迹文件中的下一个位置

  • coords – A list or numpy array of (ntap,3) containing the system coordinates
  • molecule - 来自读取分子数据的分子对象
  • 元素 - 系统中原子的元素符号
  • 细胞 - 一组格子向量(或用于矫正系统的细胞直径)
  • conect - 包含连接信息的字典(例如{1:[2],2:[1]})
  • mddata - 包含要写入mdhistory部分的变量的字典

mddata dictionary can contain the following keys: ('totalenergy','offerenergy','Step','速度','Kineticenergy', '收费','保守人员','时间','温度')

笔记

Either coords元素 or molecule are mandatory arguments

_set_system_version_elements()[来源]

将所有化学系统从文件中存储