英语原文共 11 页,剩余内容已隐藏,支付完成后下载完整资料
MD分析:一种用于快速分析分子运动模拟仿真的Python包
摘要
MD分析是一个用于结构和分子动力仿真轨道和个体蛋白结构的库。MD生物分子的仿真已经成为一种阐述分子结构和生物功能关系的重要工具。仿真使用高度优化的软件打包使用HPC资源,但是由于大多数代码会在其代码生成输出轨迹中生成自己的格式,使得开发新的被限定于专业用户机构和广泛使用以及更进一步的发展被推迟。MD分析通过抽象的过程,通过原始仿真数据和呈现一种统一的目标定向的python界面给使用者,来解决了这一问题。它因此使使用者能够快速的写代码,这种使用者界面和分子设计工作在复杂的工作中十分均衡,并能够为互动和快速原型制作在Ipython和Jupyter上工作,尤其是使用分子所提供的可视化nglview和用pandas研究的时间序列分析。MD分析用python,cython和numpy序列,易于与更广泛的科学python生态系统实现互操作性,它被广泛使用并为更专业的生物分子模拟工具奠定了基础。
引言
生物分子的分子动力学模拟已成为阐明分子结构与生理功能关系的重要工具。模拟是在HPC资源上使用高度优化的软件包执行的,但大多数代码都会生成输出轨迹,以自己的格式发展新的轨迹分析算法仅限于特定的用户社区和广泛采用和进一步发展,而这会造成延迟。典型的轨迹大小从千兆字节到兆字节不等,因此,将轨迹转换为一个范围通常是不可行的,不同的格式只是为了使用一个工具,需要这个特定的格式。相反,需要一个框架来提供一个通用的与原始模拟数据的接口。在这里,我们描述了MD分析库[MADWB11]通过抽象途径访问原始模拟数据。MDA分析提供了一个统一的面向对象的Python用户界面。从最初的在2011年出版的[MADWB11]中,MD分析得到了广泛的应用通过并经历了实质性的变化。这里我们提供MD分析及其功能和最近改进的概述。MD分析最初的灵感来自于MDTools for Python(J.C.Phillips,未出版)和MMTK[Hin00]。MDTools开创了使用可扩展和面向对象的语言,即Python,为MD分子体系的构建与分析模拟。MMTK成为构建MD仿真的工具箱和基于分子的简明对象模型的应用系统。MD分析建立在一个与之类似的对象模型上以提供通用的高水平MD轨迹分析的积木比以前更广泛的格式。MD分析自2008年1月起公开发行,是用于分析的最长的主动维护Python包分子模拟的基础。从那时起,许多其他的一揽子计划已经开始实施,似乎主要作为图书馆提供访问从Python中模拟数据。三个流行的例子是PyLOOS[RLG14]、mdtraj[MBH 15]和pytraj[NRSC16]。PyLoS[RLG14]由Python绑定到C LoSs图书馆[RG09];为了帮助新手用户,LOOS还提供大约140个小型独立工具,每个工具都专注于一项任务。mdtraj[MBH 15]在许多方面与MD分析相似,但是更侧重于成为其他应用程序的轻量级构建块包装;它还包括许多创新的性能优化。pytraj[NRSC16]是一个通用的Python前端流行而强大的cpptraj工具[RCI13],尤其是面向MD软件包用户[CCD 05]。这三个包和MD分析的共同点是基于底层数据的对象模型(例如粒子或轨迹,使用C、C 或Cython编译代码加速时间关键型瓶颈,并拥有一个“Pythonic”用户接口。LOOS和MD分析在其用户界面设计中共享类似的面向对象的哲学。相比之下,mdtraj和pytraj公开了一个功能用户界面。这两种方法都有好处优势与不同“第二代”的存在用于分析MD模拟的Python包提供了为用户提供了许多好的选择和快速的移动和刺激开发人员的环境。
概述
MD分析是专门针对分子生物学领域的模拟仿真,特别是在生物物理学、化学、生物技术以及材料科学方面。用户界面提供基于物理的抽象模拟(如原子、键、分子),以及其他用户可以轻松操作的数据。它隐藏了访问数据的复杂性,使用者不必实现不同轨迹和拓扑文件格式的详细信息。MD分析目前支持更多超过25种不同的文件格式生物分子模拟社区中使用的数据格式,包括流行的软件包,如NAMD[PBW 05]、Amber[CCD 05],Gromacs[AMS 15]、CHARMM[BBIM 09]、LAMMPS[Pli95],DL_POLY[TSTD06],HOOMD[GNA 15]以及蛋白质数据库PDB格式[BWF 00]和其他各种专门的格式。自原始出版物[MADWB11]以来,改进发生在速度和数据结构方面,现在可以使用万亿字节大小的轨道,包含多达1000万个粒子。MD分析在MDAnalysis.analysis 独有的模块,如传单查找器(在传单模块中)、用于分析脂质双层的基于图形的算法[MADWB11],或路径相似性分析(psa)用于定量比较大分子构象变化[SKTB15]。
代码库
MD分析是用Python和Cython编写的,大约有42k行代码和24k行注释和文档。它使用NumPy阵列[VCV11]便于与更广泛的科学的蟒蛇生态系统。虽然主要的依赖关系是NumPy,其他Python包,如netcdf4和BioPython[HM03]也为这些库的核心提供专业支持。
可利用性
MD分析在GNU General下以源代码形式提供GitHub的公共许可证v2作为MDAnalysis/mdanalysis,以及作为PyPi和conda包。文件内容广泛且包括介绍性教程。
开发过程
发展团体非常活跃,有五个以上的成员,活跃的核心开发人员和许多社区贡献每次发布。我们使用现代软件开发实践[WAB 14],[SM14]持续集成(由供应商提供)Travis CI)和广泛的自动化测试套件(包含超过3500项测试,核心模块覆盖率gt;92%)。GitHub上的开发是通过由核心开发人员和其他贡献者审核,由自动化测试的结果支持,提供测试覆盖率报告通过工作服和量化代码质量报告。用户和开发人员在社区邮件上广泛交流列表(googlegroups)和GitHub问题跟踪器;新用户非常欢迎开发者和大多数用户的贡献最终集成到代码库中。发展通过公开的讨论和公告以及完整的发布历史,发布过程对用户是透明的。版本根据语义进行编号版本控制约定,以便用户可以立即判断新版本对其现有代码库的影响,而不用必须查阅变更日志文档。旧代码慢慢地被淘汰,这样用户就有足够的机会进行更新,尽管我们可能会通常尝试尽可能少地破坏代码。当不相容的变化不可避免时,我们提供工具(基于Python标准库的lib2to3)自动重构代码或警告用户使用他们现有的代码可能出现的问题。
基本用法
MD分析的核心对象是充当用于访问模拟中包含的所有数据的nexus。它是通过传递拓扑和轨迹的文件名进行初始化这些支持多种不同格式的文件。拓扑结构描述系统中所有粒子,而轨迹描述了它们随时间的变化。
select-atoms方法允许根据属性、逻辑语句和几何准则来创建AtomGroups以使用人类可读的语法,AtomGroup作为一组粒子的表征,这些粒子的特性可以使用NumPy数组表示。
MD模拟的数据以轨迹的形式出现,这是对粒子运动的逐帧描述。如今,弹道数据通常可以达到数百GB。将所有这些数据读入内存是缓慢、复杂而不切实际的。更改轨迹对象的帧更新AtomGroups指向的底层数组。在这个在迭代中定位AtomGroup属性的方式在一条轨道上,可以进入每一帧的位置。通过这种方法,只有一帧数据存在于内存,通过大数据集,可以对从五十万到几千万个粒子以最少的资源进行剖析。
在某些情况下,有必要访问轨迹帧中的一种随机存取模式,或者至少能够快速存取轨道上任何地方的起始帧。这方面的例子用法是计算时间相关函数,跳过帧数(如迭代器u.trackle[5000::1000]),或者在map/reduce模式中对轨迹块进行并行化[TRB 08]。如果底层轨迹读取器仅从起始处实现线性顺序读取,搜索特定的帧将变得非常低效,有效地禁止了随机访问磁盘上的时间帧。许多轨迹格式忍受这个缺点,包括流行的Gromacs XTC和TRR格式,也常用多帧PDB文件和其他基于文本的格式,如XYZ。LOOS[RG09]实现了一种机制,通过该机制可以读取一次轨迹在加载和磁盘上的帧偏移量计算,可以用于直接搜索单个帧。基于这个想法,MD分析实现了TRR的快速帧扫描算法并将偏移量保存到磁盘(作为压缩的NumPy数组)。当轨迹再次加载时读取整个轨迹时,只读取持久偏移量(如文件名、修改时间和大小,这些文件都与偏移一起保存)。在案例中对于太字节大小的轨迹,持久偏移量方法可以节省数百秒(在扫描轨迹的初始一次性成本之后)。当前开发工作正在将持久补偿方案扩展到所有轨迹读取器。
示例
图2a中的代码显示了MD分析是如何组合的使用NumPy实现等式1。拓扑结构信息和轨迹被载入Universe实例;Calpha;原子是通过MD分析选择来选择的语法并存储为AtomGroup实例Ca使用MD分析轨迹遍历轨迹迭代器。所有选定原子的坐标在NumPy数组ca.positions 每次都会更新踏上轨道。然后在此阵列上使用快速操作计算整个轨迹的方差。最终结果以matplotlib[Hun07]作为剩余物上的RMSF绘制数字,方便地作为AtomGroup(图2b)。该示例演示了MD分析提供的抽象途径如何使用户能够编写简洁的代码,其中对数据的计算与提取来自模拟轨迹的数据。这些特点使快速原型化新算法变得很容易。根据我们的经验,大多数新的分析算法都是通过第一个原型来开发的一个简单的脚本(如图2所示),然后代码被清理、测试并打包到一个模块中。在分析模块一节中,我们描述了所包含的分析代码作为具有MDAnalysis的模块。
交互式使用和可视化
高级抽象和pythonic API,以及全面的Python文档字符串,使MD分析非常适合在IPython[PG07]和Jupyter上使用。它与交互式分析同样有效,尤其是Jupyter,其中包含可执行且有良好文档记录的分析协议易于共享,甚至可以远程访问。使用nglview可以在Jupyter笔记本中可视化原子群,自然地与MD分析API进行本机交互(图3)。其他基于笔记本电脑分析工作流程的Python包可用于快速分析时间序列分析,分布式[Roc15],用于简单并行化,复杂工作流的焰火[JOC 15],以及MDSynthesis[DGS 16]用于组织、绑定和查询许多模拟仿真。
分析模块
在MDAnalysis.analysis 模块中,我们提供了一个大范围的各种标准分析算法,如RMSD(均方根平方距离)和RMSF(均方根波动)计算,RMSD优化结构叠加[LAT10],本机接触[BHE13]、[FKDD07]或氢分析债券以及独特的算法,如传单查找在MDAnalysis.analysis.leaflet [MADWB11]和路径相似性分析(MDAnalysis.analysis.psa)[SKTB15]。历史上,这些算法是由不同的研究人员作为单独的模块来满足他们自己的需求,但这会导致用户界面出现碎片化。PersistenceLength计算持久性聚合物的长度,InterRDF计算成对径向分子内部的分布函数,线性密度沿给定轴生成密度并进行接触分析。API对这些不同的算法正在统一使用一个共同的算法,重点是将其保持为尽可能普及的泛型,这样就能够很容易地进行并行化分析。其他的大多数用于用户分析算法的工具就像黑匣子一样。我们希望避免这种情况,允许用户根据自己的需求调整分析。
新的Contacts类是泛型的一个很好的例子,它允许直接实现算法的API同时仍然为标准分析类型提供了一个简单的设置。这个Contacts类正在计算帧中原子的接触映射并将其与使用不同度量的参考图进行比较。之后,由使用的度量单位决定测量哪个数量。天然接触部分通常用于蛋白质折叠确定蛋白质何时折叠。主要类型的指标被认为是:基于可微的功能[BHE13]和基于硬截止的功能[FKDD07](我们将其设置为默认实现)。我们设计了在两个指标之间进行选择并传递用户定义的开发新指标或衡量其他数量的功能。这个通用接口允许我们实现“q1q2”分析[FKDD07]在Contacts类的顶部;q1和q2指存在于蛋白质结构中的天然接触部分相对于两个参考状态1和2。
可视化模块
新的MDAnalysis.visualization 名称空间包含主要生成分子系统可视化的模块。目前,它包含的功能,产生专门的流线型可视化脂质扩散在膜双层[CRG 14]。简言之,该算法将任意给定的膜分解成一个网格跟踪不同网格之间脂质的位移元素,强调集体脂质运动。
都是2D(MDAnalysis.visualization.streamlines)和3DMD分析中提供了实现,并显示了输出。示例输入数据文件可从流网站输出可视化。
内部拓扑数据结构的改进
最初,MD分析遵循严格的面向对象方法,每个粒子都有一个单独的原子对象实例在模拟数据中,然后AtomGroup简单地存储这些内容作为Atom实例的列表。模拟数据现在通常超过106个粒子,这改善了MD分析的可扩展性。因为所有原子都有相同的性质场(即质量,位置)可以将此信息存储为单个NumPy每个属性的数组。现在,AtomGroup可以跟踪内容作为一个简单的整数数组,可以用来切片这些属性数组以生成相关数据。
总的来说,这种方法意味着粒子数只改变数组的大小,也意味着较小的内存占用(1.3 G
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[257744],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。