MDAnalysis中文教程-Universe
Universe
    If you wish to make an apple pie from scratch, you must first invent the universe.
    如果你想从零开始制作苹果派,你必须先创造一个宇宙。
—Carl Sagan, Cosmos
MDAnalysis 围绕两个基本类构建:Universe、AtomGroup。几乎MDAnalysis所有的代码都始于Universe,它包含了描述一个分子动力学系统的所有信息。Universe有两个关键性质:
- atoms:系统原子的一个AtomGroup,提供了获取(如下)重要分析方法的途径。
- trajectory:当前载入的轨迹读取器。
Universe将来自拓扑的静态信息(如原子特性)与来自轨迹动态更新的信息(如坐标)联系起来,MDAnalysis的一个关键特征就是不将完整轨迹载入内存(除非用户使用MemoryReader显式操作)。取而代之的是,trajectory属性提供了对轨迹特定帧的观察,这允许分析任意长的轨迹而不剧烈影响内存。
创建Universe
从文件载入
Universe 通常是从“拓扑”文件创建的,其中包含可选的“轨迹”文件。轨迹文件的坐标必须与拓扑中的原子具有相同的顺序。格式问题详见Formats篇。
1 | u = Universe(topology, trajectory) |
拓扑和轨迹文件之间的界限非常模糊。例如,PDB 或 GRO 文件既被视为拓扑文件,也被视为轨迹文件。不同之处在于拓扑文件提供静态信息,例如原子特性等(名称、质量等)、电荷和键连通性。轨迹文件提供动态信息,例如坐标、速度、力和箱体尺寸。
如果仅提供单个文件,则 MDAnalysis 会尝试从中读取拓扑和轨迹信息。当提供多个轨迹文件时,坐标将按给定的顺序加载。
默认参数应创建适合大多数分析应用程序的Universe。但是,Universe构造函数也采用可选参数。
- format:轨迹文件的格式,默认None,即猜格式
- topology_format:拓扑文件的格式,默认None,即猜格式
- all_coordinates:是否读取第一个文件的坐标信息,默认False,当仅提供一个文件时忽略。
- continuous:是否给多个轨迹文件设置连续的时间。目前仅支持GRO/TPR拓扑和XTC/TRR轨迹文件,与gmx trjcat相同。默认False。
1 | import MDAnalysis as mda |
以下参数修改创建的Universe:
- guess_bonds:是否猜测原子间的连接。(default: False)
- vdwradii:用于猜测成键的范德华半径字典。{element: radius}
- transformations: 用于动态轨迹变换的函数或函数列表。
- in_memory: 是否将坐标加载到内存中。(default: False)
- in_memory_step: 仅每 n 帧读取一次内存中表示。 (default: 1)
- is_anchor:在unpickling AtomGroups时是否考虑本Universe(default: True)
- anchor_name: unpickling AtomGroups时Universe的名字(default: None, 即自动生成)
您还可以传入关键字来解析拓扑或坐标。例如,许多文件格式不指定其轨迹的时间步长。在这些情况下,MDAnalysis 假定默认时间步长为 1 ps。如果这不正确,您可以传入参数dt来修改时间步长。这不会修改包含时间信息的格式的时刻。
1 | from MDAnalysis.tests.datafiles import PRM, TRJ |
从AtomGroup创建
一个新的Universe可以使用Merge()根据一个或多个AtomGroup实例创建。这些AtomGroup实例可以来自不同的Universe,这意味着可以拼接来自不同数据集的选中部分。
例如,组合来自分离PDB文件的蛋白质、配体、溶剂:
1 | u1 = mda.Universe("protein.pdb") |
从零构建
我们可以使用Universe.empty从零构建一个Universe。步骤如下:
- 指定原子数,创建一个空Universe。如果是坐标,设置.trajecory=True。
- 添加拓扑属性,如原子名。
- (可选)载入坐标。
例如,构建两个残基、六个原子的Universe:
1 | u = mda.Universe.empty(6, 2, atom_resindex=[0, 0, 0, 1, 1, 1], trajectory=True) |
猜测拓扑属性
MDAnalysis 可以猜测两种信息。有时 MDAnalysis 会猜测信息,而不是从某些文件格式中读取信息,这可能会导致错误,例如为原子分配错误的元素或电荷。请参阅可用的拓扑解析器,了解 MDAnalysis 针对每种格式猜测哪些原子属性的具体情况。请参阅猜测拓扑属性,了解如何猜测属性,以及属性具有默认值的默认值和属性级别。
Universe属性和方法
Universe拥有原子和拓扑对象的重要分组:
- atoms:系统的所有Atoms
- residues:系统的所有Residues
- segments:系统的所有Segments
- bonds:系统的所有bond TopologyObjects
- angles:系统的所有angle TopologyObjects
- dihedrals:系统的所有dihedral TopologyObjects
- impropers:系统的所有improper TopologyObjects
Residues和Segements是Atoms的化学意义上的分组。
修改拓扑通常通过Universe完成,其中包含几种添加属性的方法,如add_TopologyAttr()、add_Residues()、add_Segments(),详见topology_system篇。