6.15. MDAnalysis中的PDB结构文件 MDAnalysis.coordinates.PDB

MDAnalysis从PDB文件和其他可选数据(如B系数)中读取坐标。也可以用PDB文件代替PSF文件来定义原子列表(但在这种情况下没有连接性信息可用)。

PDB文件包含坐标和原子信息。也可以将轨迹写入多帧(或多模型)PDB文件。这不是非常节省空间,但有时是交换轨迹的最低公分母。单帧和多帧PDB文件被自动识别;唯一的区别是单帧PDB被表示为只有一帧的轨迹。

为了将选定内容写入PDB文件,通常使用 MDAnalysis.core.groups.AtomGroup.write() 评选方法::

calphas = universe.select_atoms("name CA")
calphas.write("calpha_only.pdb")

这将使用轨迹当前时间步长的坐标。

为了写入PDB轨迹,需要首先获得多帧写入器(关键字 多帧 = True ),然后迭代轨迹,同时写入每一帧::

calphas = universe.select_atoms("name CA")
with MDAnalysis.Writer("calpha_traj.pdb", multiframe=True) as W:
    for ts in u.trajectory:
        W.write(calphas)

重要的是要 始终关闭弹道 因为只有在这一步才是最终的 END 写入的记录,这是 PDB 3.3 standard 。使用编写器作为上下文管理器可确保这种情况始终发生。

6.15.1. 功能

在MD模拟中经常遇到的PDB文件的纯Python实现以以下名称命名 PDBReaderPDBWriter 。它只实现了 PDB 3.3 standard 并且还允许一些典型的增强,例如4字母RED(由CHARMM/NAMD推出)。

这个 PDBReader 可以读取多帧PDB文件并将其表示为轨迹。这个 PDBWriter 属性指定的单帧和多帧pdb文件。 多帧 关键字。默认情况下,它写入单帧。另一方面, MultiPDBWriter 默认情况下设置为写入PDB轨迹(相当于使用 多帧 = True )。

6.15.2. 使用PDB文件的示例

A 单帧PDB 可以使用 write() Any方法 AtomGroup ::

protein = u.select_atoms("protein")
protein.write("protein.pdb")

或者,获取单帧编写器并提供 AtomGroup ::

protein = u.select_atoms("protein")
with MDAnalysis.Writer("protein.pdb") as pdb:
    pdb.write(protein)

为了编写一个 multi-frame PDB trajectory 来自一个宇宙 u 可以执行以下操作:

with MDAnalysis.Writer("all.pdb", multiframe=True) as pdb:
    for ts in u.trajectory:
        pdb.write(u)

同样,只编写一种蛋白质::

protein = u.select_atoms("protein")
with MDAnalysis.Writer("protein.pdb", multiframe=True) as pdb:
    for ts in u.trajectory:
        pdb.write(protein)

6.15.3. 班级

在 0.16.0 版本发生变更: PDB读取器和写入器基于 Bio.PDB.PDBParser 已经退休并被撤职。

class MDAnalysis.coordinates.PDB.PDBReader(filename, **kwargs)[源代码]

一种读取 PDB-formatted 文件,没有装饰品。

以下内容 PDB记录 被解析(请参见 PDB coordinate section 有关详细信息):

  • CRYST1 单位电池A、B、C、α、β、伽马

  • ATOMHETATM 对于序列、名称、resName、chainID、resSeq、x、y、z、占用、临时系数

  • HEADER (header), TITLE (title), COMPND (compound), REMARK (remarks)

  • 所有其他行都被忽略

读数 multi-MODEL PDB文件作为轨迹。这个 Timestep.data 字典保存给定帧中每个原子的占用率和临时因子(Bfactor)值。这些属性通常用于存储其他时变属性,因此它们在此处公开。注意:这不会更新 AtomGroup 属性,因为拓扑不会随着轨迹迭代而改变。

COLUMNS

数据类型

FIELD

DEFINITION

1-6

记录名称

《CRYST1》

7-15

实数(9.3)

一个

A(Angstroms)。

16-24

实数(9.3)

B类

B(埃)。

25-33

实数(9.3)

C

C(埃)。

34-40

实数(7.2)

Alpha

Alpha(度)。

41-47

实数(7.2)

测试版

贝塔(度)。

48-54

实数(7.2)

伽马

Gamma(度)。

1-6

记录名称

“原子”

7-11

整数

串行

ATOM序列号。

13-16

原子

名字

原子名称。

17

性格

AltLoc

备用位置指示器。

18-21

残留物名称

重命名

残留物的名字。

22

性格

链ID

链标识符。

23-26

整数

资源序号

残渣序列号。

27

AChar

ICODE

插入残基的代码。

31-38

实数(8.3)

X

以埃为单位的X的正交坐标。

39-46

实数(8.3)

是的

以埃为单位的Y的直角坐标。

47-54

实数(8.3)

Z

以埃为单位的Z的直角坐标。

55-60

实数(6.2)

入住率

入住率。

61-66

实数(6.2)

温度因素

温度系数。

67-76

细绳

段ID

(非官方的CHARMM扩展?)

77-78

字符串(2)

元素

元素符号,右对齐。

79-80

字符串(2)

装药

原子上的电荷。

备注

如果系统没有单位单元参数(例如在电子显微镜结构中),则PDB文件格式需要 CRYST1 应为字段提供一元值(边长为1?的立方框)和适当的备注。如果在 CRYST1 菲尔德, PDBReader 不会设置单位像元尺寸(将采用默认值 np.zeros(6) ,见问题#2698),它将警告用户。

参见

PDBWriter, PDBReader

  • 帧现在基于0而不是基于1*新 title (列出所有标题行)。

现在可以读取带有DOS行结尾的PDB文件

尾随空格和换行符的条形轨迹标题

为以下项发出用户警告 CRYST1 使用单元值记录(边长为1?的立方框),不设置单元格尺寸。

现在,每一帧都会将临时因子(又名bfactors)读入ts.data字典。入住率也被收入这本词典。

从读取坐标 文件名

文件名 可以是gzift或bzip2ed压缩的PDB文件。

如果PDB文件包含多个型号记录,则将其读取为型号对应于帧编号的轨迹。

Writer(filename, **kwargs)[源代码]

返回的PDBWriter 文件名

参数:

filename (str) -- 输出PDB文件的文件名

返回类型:

PDBWriter

close()[源代码]

关闭轨迹文件。

units = {'length': 'Angstrom', 'time': None}

带有以下单位的词典 time长度 (及 速度 ..用于支持它的格式)

class MDAnalysis.coordinates.PDB.PDBWriter(filename, bonds='conect', n_atoms=None, start=0, step=1, remarks='Created by PDBWriter', convert_units=True, multiframe=None, reindex=True)[源代码]

PDB编写器,它实现 PDB 3.3 standard

NAMD/CHARMM使用的PDB格式:允许4个字母的重命名和SegID,写入altLoc。

这个 PDBWriter 可用于将坐标集转储到PDB文件(作为使用构造函数关键字选择的“单帧写入器”操作 多帧 = False 缺省情况下)或通过写入PDB“电影”(多帧模式, 多帧 = True ),由多个型号组成(使用 MODELENDMDL 记录)。

备注

目前,编写债券只在编写完整的 Universe 以及是否在拓扑图中提供了焊接信息。(对于小于整体的选择 Universe 中的原子编号。 CONECT 记录将与新PDB文件中的原子编号不匹配,因此 NotImplementedError 被提出了。)

可以存储在PDB文件中的最大帧编号是9999,它将绕回(请参见 MODEL() 了解更多详细信息)。

这个 CRYST1 记录指定单位单元格。如果未设置单位像元尺寸,则此记录设置为单位值(边数为1?的立方体方框 (Nonenp.zeros(6) ,见第2698期)。

record_types 属性存在(例如,通过加载PDB文件创建了宇宙对象), ATOMHETATM 相应地写出记录类型关键字。否则, ATOM 记录类型是默认输出。

这个 CONECT 如果需要,在关闭输出流时写出记录。

参见

This, exception, None

在 0.7.5 版本发生变更: 最初支持多帧PDB文件。

在 0.7.6 版本发生变更: 这个 多帧 添加关键字以选择写入模式。债券信息的书写 (CONECT 记录)现在默认情况下处于禁用状态,但可以使用 债券 关键字。

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

在 0.14.0 版本发生变更: PDB不保存收费信息

在 0.20.0 版本发生变更: 尾随空格和换行符的条形轨迹标题

在 1.0.0 版本发生变更: 如文档中所述,ChainID现在来自segid的最后一个字符。索引问题意味着它以前使用了第一个字符(问题#2224)

在 2.0.0 版本发生变更: 添加 redindex 争论。将此关键字设置为 True (默认)保留早期版本的MDAnalysis中的行为。PDB编写器检查有效的chainID条目,而不是使用segid的最后一个字符。如果没有chainID,或者不符合PDB标准,则使用缺省值‘X’。

在 2.3.0 版本发生变更: 当agindex大于100000时,不要写入不可用的conect记录。

创建新的PDBWriter

参数:
  • filename (str) -- 输出文件的名称

  • start (int (optional)) -- 开始时间步长(第一帧将具有型号 start +1,因为PDB标准规定型号从1开始)

  • step (int (optional)) -- 在后续时间步长之间跳过

  • remarks (str (optional)) -- 批注PDB文件的注释(添加到 TITLE 记录);请注意,用作输入的轨迹中的任何备注都将写入行长于 remark_max_length (66个字符)正在包装中。

  • convert_units (bool (optional)) -- 单位转换为MDAnalysis基本格式; [True]

  • bonds ({"conect", "all", None} (optional)) -- 如果设置为“conect”,则只写入已在输入PDB文件中定义为PDB的那些焊接 CONECT 唱片。如果设置为“All”,则将所有焊点(包括猜测的焊点)写入文件。 None 不会写任何债券。缺省值为“conect”。

  • multiframe (bool (optional)) -- False :向文件写入单帧; True :创建多帧PDB文件,其中的帧写入为 MODEL ..。 ENDMDL 唱片。如果 None ,则选择类默认值。 [None]

  • reindex (bool (optional)) -- 如果 True (默认),则将ATOM序号设置为从1开始的连续数字。否则,使用ATOM ID。

_check_pdb_coordinates()[源代码]

检查坐标值是否落在PDB文件允许的范围内。

如果这是第一个帧或已写入帧(在多帧模式下),则删除输出文件,添加注释而不是坐标并关闭文件。

抛出:
  • ValueError -- 如果坐标没有通过检查。

  • .. versionchanged -- 1.0.0:检查是否 filenameStringIO 尝试删除带有无效坐标的PDB文件时(问题#2512)

_write_pdb_bonds()[源代码]

写出所有的保证金记录

_update_frame(obj)[源代码]

用于从原子组或语义域初始化编写器中重要属性的方法 obj

已初始化/已更新的属性:

  • PDBWriter.obj (提供拓扑信息的实体 and 坐标,或者是 AtomGroup 或者是一个整体 Universe )

  • PDBWriter.trajectory (潜在的轨迹 Reader )

  • PDBWriter.timestep (潜在的轨迹 Timestep )

在呼叫之前 _write_next_frame() 这种方法 must 至少调用一次,以便能够从当前帧提取拓扑信息。

_write_timestep(ts, multiframe=False)[源代码]

写下新的时间步长 ts 提交文件

如有必要,执行单位转换。

通过设置 多帧 = TrueMODEL ..。 ENDMDL 写入记录以表示多模型PDB文件中的轨迹帧。(目前我们这样做了 not 写下 NUMMDL 记录。)

这个 多帧 = False 关键字表示 PDBWriter 处于单帧模式,并且没有 MODEL 记录是写下来的。

在 0.7.6 版本发生变更: 这个 多帧 添加了关键字,它完全确定是否 MODEL 记录是写下来的。(以前,这是根据基本轨迹决定的,并且只有在 len(traj) > 1 会不会写下模型记录。)

在 1.0.0 版本发生变更: 如文档中所述,ChainID现在来自segid的最后一个字符。索引问题意味着它以前使用了第一个字符(问题#2224)

在 2.0.0 版本发生变更: 仅当 record_types 属性,而不是使用 ATOM 对这两个人都是 ATOMHETATM, HETATM 正确写出记录类型(问题#1753)。现在编写只使用Elements属性的内容,而不是默认情况下的猜测。如果元素缺失,则写出空记录(问题#2423)。现在检查原子是否有有效的chainID,而不是被 segid (问题#3144)。

CONECT(conect)[源代码]

CONECT 唱片。

CRYST1(dimensions, spacegroup='P 1', zvalue=1)[源代码]

CRYST1 唱片。

END()[源代码]

END 唱片。

仅写入单个结束记录。多次调用End没有任何效果。因为 close() 还会在关闭文件之前调用此方法,建议您 not 打电话 END() 明确地说。

ENDMDL()[源代码]

写下 ENDMDL 唱片。

HEADER(trajectory)[源代码]

HEADER 唱片。

在 0.20.0 版本发生变更: 条带 trajectory.header 因为它可以由用户修改并应进行清理(问题#2324)

MODEL(modelnumber)[源代码]

写下 MODEL 唱片。

备注

在PDB标准中,最大型号限制为9999(即4位数字)。如果帧编号大于9999,它们将环绕,即9998、9999、0、1、2、...

在 0.19.0 版本发生变更: 强制执行最大型号。

REMARK(*remarks)[源代码]

编写泛型 REMARKS 记录(无编号)。

中提供的每个字符串 备注 是作为一个单独的 REMARKS 唱片。

TITLE(*title)[源代码]

TITLE 唱片。

close()[源代码]

关闭PDB文件并写入CONECT和END记录

在 2.0.0 版本发生变更: CONECT 刚刚写入的记录 END 录制

units = {'length': 'Angstrom', 'time': None}

带有以下单位的词典 time长度 (及 速度 ..用于支持它的格式)

write(obj)[源代码]

写入对象 obj 在当前轨迹帧到文件。

obj 可以是选择(即 AtomGroup )或整个 Universe

的最后一个字母 segid 用作PDB链ID(但请参阅 ATOM() 有关详细信息,请参见)。

参数:

obj -- 这个 AtomGroupUniverse 去写作。

write_all_timesteps(obj)[源代码]

写入与以下内容关联的所有时间步长 obj 添加到PDB文件中。

obj 可以是一个 AtomGroup 或者是 Universe

该方法从指定为 开始 直到最后,使用步骤 step ( 开始step 都设置在构造函数中)。因此,如果 u 那么就是一个宇宙::

u.trajectory[-2]
pdb = PDBWriter("out.pdb", u.atoms.n_atoms)
pdb.write_all_timesteps(u)

将写入包含最后2帧的PDB轨迹,并且:

pdb = PDBWriter("out.pdb", u.atoms.n_atoms, start=12, step=2)
pdb.write_all_timesteps(u)

将会写下第12、14、16帧...

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

在 2.0.0 版本发生变更: CONECT 记录已移至 close()

class MDAnalysis.coordinates.PDB.MultiPDBWriter(filename, bonds='conect', n_atoms=None, start=0, step=1, remarks='Created by PDBWriter', convert_units=True, multiframe=None, reindex=True)[源代码]

PDB编写器,它实现 PDB 3.3 standard

NAMD/CHARMM使用的PDB格式:写入4个字母的重命名和段ID、altLoc。

默认情况下, MultiPDBWriter 写入PDB“电影”(多帧模式, 多帧 = True ),由多个型号组成(使用 MODELENDMDL 记录)。

参见

This, exception, single

在 0.7.6 版本加入.

创建新的PDBWriter

参数:
  • filename (str) -- 输出文件的名称

  • start (int (optional)) -- 开始时间步长(第一帧将具有型号 start +1,因为PDB标准规定型号从1开始)

  • step (int (optional)) -- 在后续时间步长之间跳过

  • remarks (str (optional)) -- 批注PDB文件的注释(添加到 TITLE 记录);请注意,用作输入的轨迹中的任何备注都将写入行长于 remark_max_length (66个字符)正在包装中。

  • convert_units (bool (optional)) -- 单位转换为MDAnalysis基本格式; [True]

  • bonds ({"conect", "all", None} (optional)) -- 如果设置为“conect”,则只写入已在输入PDB文件中定义为PDB的那些焊接 CONECT 唱片。如果设置为“All”,则将所有焊点(包括猜测的焊点)写入文件。 None 不会写任何债券。缺省值为“conect”。

  • multiframe (bool (optional)) -- False :向文件写入单帧; True :创建多帧PDB文件,其中的帧写入为 MODEL ..。 ENDMDL 唱片。如果 None ,则选择类默认值。 [None]

  • reindex (bool (optional)) -- 如果 True (默认),则将ATOM序号设置为从1开始的连续数字。否则,使用ATOM ID。

class MDAnalysis.coordinates.PDB.ExtendedPDBReader(filename, **kwargs)[源代码]

读取具有五位残数的PDB格式文件的PDBReader。

此读卡器不符合 PDB 3.3 standard 因为它允许可以占据列23到27(包括)的五位残数,而不是被限制在23到26(其中列27被预留给PDB标准中的插入代码)。此格式的PDB文件由流行的程序编写,例如 VMD.

参见

PDBReader

在 0.8 版本加入.

从读取坐标 文件名

文件名 可以是gzift或bzip2ed压缩的PDB文件。

如果PDB文件包含多个型号记录,则将其读取为型号对应于帧编号的轨迹。

OtherWriter(filename, **kwargs)

返回适用于的编写器 文件名

设置默认关键字 开始stepdt (如果可用)。 n_atoms 始终设置为 Reader.n_atoms

参见

Reader.Writer()

Writer(filename, **kwargs)

返回的PDBWriter 文件名

参数:

filename (str) -- 输出PDB文件的文件名

返回类型:

PDBWriter

add_auxiliary(aux_spec: str | Dict[str, str] = None, auxdata: str | AuxReader = None, format: str = None, **kwargs) None

添加要与轨迹一起读取的辅助数据。

辅助数据可以是除了由轨迹读取器读入的轨迹之外的来自轨迹的任何数据时间序列。 辅助数据 可以是一个 AuxReader 实例,或数据本身作为文件名;在后一种情况下,适当的 AuxReader 是从数据/文件格式中猜测出来的。一种适当的 format 也可以直接作为关键字参数提供。

添加时,AuxReader最初与轨迹的当前时间步长匹配,并将在轨迹时步更改时更新(通过调用 next() 或者跳跃时间步长 trajectory[i] )。

每个时间步长的辅助数据的代表值(S)(由 AuxReader )存储在 ts.aux 下的命名空间 aux_spec ;例如,要添加存储在Pull-force.xvg中的其他拉力数据::

u = MDAnalysis.Universe(PDB, XTC)
u.trajectory.add_auxiliary('pull', 'pull-force.xvg')

然后,当前时间步长的代表值可以被访问为 u.trajectory.ts.aux.pullu.trajectory.ts.aux['pull']

以下内容适用于能源读者,如 EDRReader

可以通过省略来添加(能源)文件中存在的所有数据 aux_spec 像这样::

u.trajectory.add_auxiliary(auxdata="ener.edr")

aux_spec 属性中映射所需属性名称的字典。 ts.aux 命名空间设置为要添加的精确数据,该数据由 data_selector **

term_dict = {"temp": "Temperature", "epot": "Potential"}
u.trajectory.add_auxiliary(term_dict, "ener.edr")

例如,添加此数据对于基于非坐标数据(如每个时间步长的势能)过滤轨迹帧可能很有用。轨迹切片允许处理帧的子集:

selected_frames = np.array([ts.frame for ts in u.trajectory
                            if ts.aux.epot < some_threshold])
subset = u.trajectory[selected_frames]

备注

假设辅助数据是按时间排序的,没有重复。请参阅 辅助API

add_transformations(*transformations)

添加要应用于轨迹的所有变换。

此函数将转换列表作为参数。这些转换是将由Reader调用的函数,并为其提供 Timestep 对象作为参数,它将被转换并返回给读取器。这些转换可以是 transformations 模块,或由用户创建,并以列表形式存储 transformations 。此列表只能修改一次,进一步调用此函数将引发异常。

u = MDAnalysis.Universe(topology, coordinates)
workflow = [some_transform, another_transform, this_transform]
u.trajectory.add_transformations(*workflow)

将按照列表中给出的顺序应用转换 transformations 即,第一个转换是要应用于 Timestep 。上面的示例等同于

for ts in u.trajectory:
   ts = this_transform(another_transform(some_transform(ts)))
参数:

transform_list (list) -- 将按列表中给定的顺序应用于坐标的所有变换的列表

property aux_list

列出新增辅助数据的名称。

check_slice_indices(start, stop, step)

检查帧索引是否有效,并剪裁以适合轨迹。

该用法遵循以下标准的Python约定 range() 但请参阅下面的警告。

参数:
  • start (int or None) -- 起始帧索引(含)。 None 对应于缺省值0,即初始帧。

  • stop (int or None) -- 最后一帧索引(独占)。 None 对应于默认的n帧,即它包括轨迹的最后一帧。

  • step (int or None) -- 切片的步长大小, None 对应于缺省值1,即包括范围中的每一帧 startstop

返回:

开始、停止、步进 --表示切片的整数

返回类型:

tuple (int, int, int)

警告

返回值 startstopstep 传入时给出预期结果 range() ,但在传入 slice 什么时候 stop=Nonestep=-1

对于此方法的输出的下游处理来说,这可能是一个问题。例如,轨迹切片是通过传递 check_slice_indices()range() ::

range(start, stop, step)

并将其作为随机寻求的指标。另一方面,在 MDAnalysis.analysis.base.AnalysisBase 由返回的值 check_slice_indices() 用于拼接轨迹,方法是创建 slice 实例::

slice(start, stop, step)

这会造成差异,因为这两行不相等::

range(10, -1, -1)             # [10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
range(10)[slice(10, -1, -1)]  # []
close()

关闭轨迹文件。

convert_forces_from_native(force, inplace=True)

力阵的换算 从原生单位到基本单位

参数:
  • force (array_like) -- 转型的力量

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

备注

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

在 0.7.7 版本加入.

convert_forces_to_native(force, inplace=True)

力阵的换算 从基本单位到原生单位。

参数:
  • force (array_like) -- 转型的力量

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

备注

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

在 0.7.7 版本加入.

convert_pos_from_native(x, inplace=True)

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

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

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

备注

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

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

convert_pos_to_native(x, inplace=True)

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

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

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

备注

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

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

convert_time_from_native(t, inplace=True)

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

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

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

备注

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

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

convert_time_to_native(t, inplace=True)

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

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

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

备注

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

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

convert_velocities_from_native(v, inplace=True)

速度阵的换算 v 从原生单位到基本单位

参数:
  • v (array_like) -- 转型的速度

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

备注

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

在 0.7.5 版本加入.

convert_velocities_to_native(v, inplace=True)

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

参数:
  • v (array_like) -- 转型的速度

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

备注

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

在 0.7.5 版本加入.

copy()

退还本阅读器的独立副本。

新的阅读器将有自己的文件句柄,可以独立于原始阅读器进行查找/迭代。

还将复制原始读取器中保存的时间步长的当前状态。

在 2.2.0 版本发生变更: 用于构造读取器的参数被正确捕获并传递给新类的创建。以前是唯一的 n_atoms 被传递给类副本,导致使用默认参数创建的类可能与原始类不同。

property dt: float

两个轨迹帧之间的时间,以皮秒为单位。

property frame: int

当前时间步长的帧编号。

这是一条简单的捷径 Timestep.frame

get_aux_attribute(auxname, attrname)

获取的价值 属性名称 从辅助器 辅助名称

参数:
  • auxname (str) -- 要获取其值的辅助设备的名称

  • attrname (str) -- 辅助读取器中的gettable属性的名称

get_aux_descriptions(auxnames=None)

获取描述以允许重新加载指定的辅助项。

如果未提供辅助名称,则默认为添加的辅助名称的完整列表。

将生成的描述传递给 add_auxiliary() 将允许辅助人员的娱乐活动。例如,将所有辅助词复制到第二个轨迹中:

descriptions = trajectory_1.get_aux_descriptions()
for aux in descriptions:
    trajectory_2.add_auxiliary(**aux)
返回:

描述每个辅助词的args/kwargs词典列表。

返回类型:

list

iter_as_aux(auxname)

迭代至少有一个来自辅助步骤的分配步骤的时间步长 辅助名称 中指定的截止范围内 辅助名称

iter_auxiliary(auxname, start=None, stop=None, step=None, selected=None)

遍历辅助词 辅助名称 与弹道无关。

将迭代辅助的指定步骤(默认为所有步骤)。允许访问辅助对象中的所有值,包括轨迹时间范围之外的值,而不必同时迭代轨迹。

迭代后,辅助器将重新定位在当前步骤。

参数:
  • auxname (str) -- 要迭代的辅助对象的名称。

  • (start (optional) -- 用于在辅助对象的切片上迭代的选项。

  • stop (optional) -- 用于在辅助对象的切片上迭代的选项。

  • step) (optional) -- 用于在辅助对象的切片上迭代的选项。

  • selected (lst | ndarray, optional) -- 要迭代的步骤列表。

生成器:

AuxStep 对象

参见

iter_as_aux()

next() Timestep

前进一步到下一帧。

next_as_aux(auxname)

移动到辅助时间步长至少有一个步长的下一个时间步长 辅助名称 中指定的截止范围内 辅助名称

这允许在轨迹中前进,而不会遇到 NaN 代表值(除非这些值特别是辅助数据的一部分)。

如果未设置辅助截止,则辅助步骤较少 (auxiliary.dt > trajectory.dt ),这允许以辅助步调(四舍五入到最接近的时间步长)前进;而如果辅助步长更频繁,这将与调用 next()

请参阅 辅助API

参见

iter_as_aux()

classmethod parse_n_atoms(filename, **kwargs)

读取坐标文件并推算出原子数

返回:

n_atoms --坐标文件中的原子数

返回类型:

int

抛出:

NotImplementedError -- 当原子的数量无法推断时

remove_auxiliary(auxname)

清除数据并关闭 AuxReader 对于辅助者 辅助名称

rename_aux(auxname, new)

更改辅助设备的名称 辅助名称new

假设还没有名为 new ,辅助名称将在t.aux名称空间、轨迹的添加辅助项列表以及辅助阅读器本身中更改。

参数:
  • auxname (str) -- 要重命名的辅助设备的名称

  • new (str) -- 要尝试设置的新名称

抛出:

ValueError -- 如果该名称 new 已被现有的辅助设备使用。

rewind() Timestep

轨迹起始处的位置

set_aux_attribute(auxname, attrname, new)

设置的值 属性名称 在辅助词中 辅助名称

参数:
  • auxname (str) -- 要更改的辅助设备的名称

  • attrname (str) -- 辅助读取器中的可设置属性的名称

  • new -- 要尝试设置的新值 属性名称

property time

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

这要么直接从TimeStep读取,要么计算为time= Timestep.frame * Timestep.dt

timeseries(asel: AtomGroup | None = None, start: int | None = None, stop: int | None = None, step: int | None = None, order: str | None = 'fac') ndarray

返回原子组的坐标数据子集

参数:
  • asel (AtomGroup (optional)) -- 这个 AtomGroup 从…读取坐标。默认为 None 在这种情况下,将返回完整的坐标数据集。

  • start (int (optional)) -- 从帧索引处开始读取轨迹 start (其中0是轨迹中第一帧的索引);默认设置 None 从头开始。

  • stop (int (optional)) -- 在帧索引处结束读取轨迹 stop -1,即, stop 被排除在外。轨迹将使用默认设置读取到末尾 None

  • step (int (optional)) -- 读取步长;默认设置 None 等于1,表示读取每一帧。

  • order (str (optional)) -- 对应于(A)tom、(F)rame、(C)坐标的返回数据数组的顺序/形状允许所有六个‘a’、‘f’、‘c’的组合,即“fac”-其中形状为(帧、原子数、坐标)的返回数组

在 2.4.0 版本加入.

property totaltime: float

轨迹的总长度

时间的计算方式为 (n_frames - 1) * dt 也就是说,我们假设第一帧没有经过时间。因此,具有两个帧的轨迹将被视为具有单个时间步的长度 dt 并且具有单帧的“轨迹”将被报告为长度0。

property transformations

返回转换列表

units = {'length': 'Angstrom', 'time': None}

带有以下单位的词典 time长度 (及 速度 ..用于支持它的格式)