|
2018-07-08 21:38:22 翻译: 包磊; 校对: 苏耿
GROMACS提供一种能够实现进行灵活轨迹分析的框架. 这个框架由几个组件组成, 这些组件可以单独使用, 但是在大多数情况下, 最好使用所有组件的功能来充分利用这个框架. 该框架主要的特点如下:
支持灵活地选择一组坐标用于分析, 这些坐标可以是动态的, 即在不同的轨迹帧中选择不同的原子. 支持对一组原子的质量中心/几何中心的分析, 这意味着使用该框架编写的工具除了可以知道原子的真正位置外, 还可以自动分析质量中心位置(或者同时分析质量中心和原子位置).
支持每帧并行处理. 该框架的设计目的是为了支持在多帧的情况下并行分析(对不同帧可以独立处理). 目前, 真正的并行并没有实现, 但是使用该框架编写的工具可以在几乎不更改的情况下利用其优点.
访问基本分析程序库. 可重复使用模块提供了计算平均值和直方图等功能.
工具代码可以专注于实际分析. 这些工具通过将一种抽象类归入子类并且实现选择的纯虚拟方法来实现功能. 该框架负责初始化任务, 加载轨迹并对其进行循环, 评估选择, 并提供一些基本功能. 如在将结构传递给分析代码之前保持分子的完整. 还可以通过使该框架支持通用的语言绑定件, 这样此框架就可以使用来自脚本语言(如Python)的代码来进行分析(但目前尚未实现此类集成).
此外也有一些可重复使用的程序可以独立于此框架使用:
关于快速学习如何使用该框架实现分析工具, 请参阅编写轨迹分析工具的示例代码.
轨迹分析框架(轨迹分析)模块提供了将所有部分集成在一起的高级框架. 它为分析工具模块(gmx::TrajectoryAnalysisModule
轨迹分析模块)提供抽象基类, 并为运行这样一个模块作为命令行工具(gmx::TrajectoryAnalysisCommandLineRunner
轨迹分析命令行转换器)提供了代码. 有关更多详细信息, 请参阅分析模板和轨迹分析模块文档.
分析选择的分析和评估(选择)模块提供对选择的支持. 管理选择的大部分工作由命令行运行程序和框架完成, 分析工具代码只有两个大类:
gmx::SelectionOption
选择选项和关联类用于声明工具接受的选择数量和类型(选项支持的详细信息请参阅下文).
该工具接收一组gmx::Selection
选择对象作为选择选项的值. 这些类为分析过程中的选择提供了评估值. 框架对每帧选项值进行评估, 这样当调用该工具时, 它可以为当前帧访问gmx::Selection
其拥有的选择对象中的选择.
选择引擎的概念性概述可在单独的页面上找到:动态选择. 在完整的内部文档中, 此页面还提供了选择实现的概述.
选择模块文档中还提供了选择引擎的更多技术细节. 这对于理解选择的详细工作方式或者是否要在轨迹分析框架之外使用选择代码非常有用.
在分析工具中选择模块还提供进行邻域搜索的功能. 对于全3D周期边界条件的最常见情况, 可实现基于网格的搜索. 有关详细信息, 请参阅gmx::AnalysisNeighborhood
分析邻域. 此类可以独立于其他选择功能使用.
输出数据的可并行化处理(分析数据)模块提供了两件事:
支持从分析工具统一提供输出数据. 工具计算其输出值并将它们放入数据对象中以进行进一步处理. 这允许两件事:
可重复使用数据模块可通过不同的工具进行常规的后处理.
数据对象提供并行化支持.
设置可重复使用数据模块, 用于后处理数据. 这些功能包括平均数据、计算直方图以及将数据绘制到文件中等. 其中许多模块还提供其的输出作为数据对象, 允许进一步的数据模块附加到它们.
基本概念更详细地解释在一个单独的页面:分析输出数据处理. 分析数据模块文档提供了更多的技术细节.
使用选项的可扩展处理(选项)模块来声明工具的输入数据(通常是命令行选项, 包括输入文件和选择). 分析工具代码为其初始化方法接收gmx::IOptionsContainer
选项容器的实例之一, 并使用它来提供其输入选项. 在basicoptions.h
中声明了基本选项, gmx::SelectionOption
选择选项也以相同的方式使用. 对于每个选项, 该工具声明一个将接收该选项值的局部变量. 在选项从命令行解析之后(通过框架), 工具代码就可以从局部变量中读值. 填充到gmx::IOptionsContainer
选项容器对象中的选项声明也用于向用户提供帮助(也由框架处理). 有关更多详细信息, 请参阅gmx::TrajectoryAnalysisModule
轨迹分析模块文档和选项模块文档.