随笔分类 - 分子动力学
基于QUBO模型的多体分子对接
摘要:
本文主要分享了文献Multibody molecular docking on a quantum annealer中的主要建模思路和初步的测试结果,可以实现QUBO模型求解多体分子对接的问题。在目前常见的分子对接软件中,更多的是实现的两体对接,多体对接的采样空间有可能会随着分子数量的增长而指数增长。而借助于量子退火机或者是量子计算机来求解这样的一个问题,不失为一个较好的思路。

MindSponge分子动力学模拟——自建力场(2024.03)
摘要:
基于力场的分子动力学模拟,其实可以看做是一个最简单的机器学习模型,具有计算成本低的特点,在药物研发、生物化学和计算物理学等研究领域存在广泛的应用。那么,如何去快速的开发一个新的力场,在传统的MD模拟软件中其实可能是一个不小的门槛,而基于MindSpore框架开发的MindSponge分子动力学模拟软件,则具有这种便捷开发的特性。本文通过一个简单的示例,介绍了如何在MindSponge分子动力学模拟框架内构建一个自定义的分子力场,可以正常的执行分子动力学模拟迭代过程并保存相应的结果和输出。

MindSponge分子动力学模拟——使用MDAnalysis工具进行后分析(2024.02)
摘要:
这篇文章我们主要介绍了MindSponge分子动力学模拟软件如何跟后分析工具MDAnalysis相配合的方法,其主要操作流程就是调用MindSponge自带的CallBack来输出拓扑文件和轨迹文件给MDAnalysis,然后就可以调用MDAnalysis的相关分析函数接口,十分的方便。

MindSponge分子动力学模拟——定义Collective Variables(2024.02)
摘要:
随着分子动力学模拟技术的应用推广、AI软件的发展和硬件算力水平的提升,我们可以更快的在分子层面去观察和研究分子体系内的相互作用。但是分子模拟的性能再好,也不一定可以复现一些在自然宏观状态下有可能发生的化学反应或者是物质相变。因此我们需要通过定义一些对反应路径有决定性影响的物理量,然后结合增强采样技术,去更快的复现和推导我们所需要的反应机理。本文主要介绍分子动力学模拟软件MindSponge在这一领域的应用和代码实现。

关于分子力场中键能项和角能项的思考
摘要:
本文介绍了在分子力场中经常有可能被使用到的键长和键角项的谐振势模型,并且分别从自动微分的Python代码实现以及解析形式的矢量化编程形式给出了初步的实现方案。虽然力场形式较为简单,但是在实际的计算中,我们统计出来,至少需要21P+28S的计算量,其中P指键的数量,S指键角的数量。这里提到的矢量化计算的实现方案,虽然从计算的角度来说有大量的冗余,但由于一般情况下,一个分子系统单个原子的成键数量都在4以内(比如C原子的sp3杂化),因此矢量化计算的实现方案也不失为一个很好的参考。

Numpy计算近邻表时间对比
摘要:
本文介绍了在Python的numpy框架下计算近邻表的两种不同算法的原理以及复杂度,另有分别对应的两种代码实现。在实际使用中,我们更偏向于第二种算法的使用。因为对于第一种算法来说,哪怕是一个10000个原子的小体系,如果要计算两两间距,也会变成10000*10000这么大的一个张量的运算。可想而知,这样计算的效率肯定是比较低下的。

双二面角耦合力场项的计算
摘要:
本文介绍了最新的一些分子力场中有可能使用到的1-5相互作用——双二面角耦合项的计算。而常规的计算方式是,通过量化的计算得到每一个Residue的α碳对应的两个二面角的数值在空间中的离散化数值。然后在分子模拟的过程中使用插值的方案,对相关的条目进行计算,例如使用双三次样条插值。但其实这种插值算法的使用有可能导致一些其他的问题,比如深度学习中可能会经常提到的“过拟合”问题。由于这个条目本身就只是一个修正项,从数值大小上来说并不算大,因此这些细节是否需要优化还有待商榷。

使用Amber计算单点能三步走
摘要:
本文主要介绍了如何使用Amber来计算一个给定分子构象的pdb文件的单点势能值。基本流程可以分为三个步骤:首先从力场文件中去寻找对应于输入构象的力场参数,然后配置一个执行参数文件,最后使用这些保存下来的文件来计算分子单点能。

MindSponge分子动力学模拟——Constraint约束(2023.09)
摘要:
本文主要介绍了在MindSponge中使用SETTLE和Lincs约束算法的方法,以及相关算法的简单原理。SETTLE约束算法主要应用于水分子体系,限制的是一个等腰三角形的拓扑结构,特点是可并行,性能较好。Lincs约束算法更多的被应用在蛋白质体系,主要限制的是每一个共价键的键长,特点是适用体系比较灵活,但总体计算量较大,且不可并行化。

MindSponge分子动力学模拟——使用迭代器进行系统演化(2023.09)
摘要:
在经过前面几篇博客的介绍之后,我们可以定义一些目标的分子体系,并且计算其单点能。而分子模拟的精髓就在于快速的迭代和演化,也就是本文所要介绍的迭代器相关的内容。在具备了分子系统、单点能和迭代器这三者之后,就可以正式开始进行分子动力学模拟。常见的模拟过程有:能量极小化、NVT恒温恒容过程、NPT恒温恒压过程以及NVE微正则系综,本文所涉及的主要是能量极小化以及NVT恒温恒容过程,更多的模拟方法有待大家一起研究探讨。

MindSponge分子动力学模拟——计算单点能(2023.08)
摘要:
本文主要衔接前面的文章,继“MindSponge的安装与使用”、“MindSponge软件架构”以及“MindSponge中定义一个分子系统”系列文章之后,再讲解一下如何根据一个定义好的分子系统进行力场建模,使用力场来计算单点能,就是一个比较简单的案例。

MindSponge分子动力学模拟——定义一个分子系统(2023.08)
摘要:
本文通过解析MindSponge的源码实现,详细介绍了在MindSponge中Molecule基础分子类的内置属性和内置函数,以及三种相应的分子系统定义方法:我们既可以使用yaml模板文件来定义一个分子系统,也可以从mol2和pdb文件格式中直接加载一个Molecule,还可以直接使用python列表的形式传入一些手动定义的内容,直接构建一个Molecule。有了最基础的分子系统之后,后面就可以开始定义一些能量项和迭代器,开始分子动力学模拟。

MindSponge分子动力学模拟——软件架构(2023.08)
摘要:
分子模拟具有众多的应用场景,比如制药领域和材料领域,做好分子模拟的工作,可以极大程度上缩减新药物新材料的研发成本和研发周期。近几年随着GPT-4和Diffusion Model的大火,让大家意识到了AI已经具备了相当的解决问题的能力。因此基于AI的框架和模型,对比AI训练与分子模拟之间的共性,可以实现一个面向AI时代的分子模拟框架。本文主要介绍基于MindSpore框架实现的,MindSponge分子动力学模拟框架的软件架构。

MindSponge分子动力学模拟——安装与使用(2023.08)
摘要:
本文主要介绍MindSponge框架的免安装使用和编译构建使用这两种使用方法,MindSponge是一款可以在MindSpore上进行分子动力学模拟的,模块化、高通量、端到端可微的下一代智能分子模拟程序库。通过MindSponge,我们可以在GPU上更加便捷的开发分子动力学模拟算法和应用,并且原生的支持神经网络力场和增强采样,使得我们可以用一个框架就完成绝大部分的分子模拟工作。

在Linux上安装和使用免费版本的PyMol
摘要:
这篇文章主要介绍在Linux平台下安装开源版PyMol的简单方法。由于官方主要提供商业版的安装方法,而提供whl安装包的平台也只有Windows系统下的编译包。其实在Anaconda的库中是有提供pymol的开源版本的,这里借这篇文章顺便推广一下。

使用numpy计算分子内坐标
摘要:
本文主要介绍了在numpy的框架下实现的分子内坐标的计算,类似的方法可以应用于MindSpore和Pytorch、Jax等深度学习相关的框架中。分子的内坐标,可以更加直观的描述分子内的相对运动,通过键长键角和二面角这三个参数。

AlphaFold2中的残基刚体表示
摘要:
本文主要通过MindSpore复现了一个AlphaFold2文章中的算法21,该算法可以用于将蛋白质构象中的每一个氨基酸转化成一个归一化的空间三角形表示,更方便用于深度学习模型中的参数优化。有了这样一个抽象的模型,再定义一系列的梯度优化和损失函数,就可以得到一个用于预测蛋白质构象的生成模型。

在博客园随笔中插入3D分子模型
摘要:
前端作为一项重要技术,其本身就旨在给用户更好的展示效果和更好的交互模式,然而很多时候再博客中我们只能够采用一些截图的方法来保存我们的结果,然后再放到博客的内容中。而这样操作会带来很大程度上的失真,尤其是生物化学中常见的分子结构的展示,如果直接截图则无法更加全面的展示其结构内容。而3Dmol这个工具则使能了我们使用js的技术,将一个分子的3D模型集成到我们的博客内容中,从很大程度上优化了展示的效果。

Gimbal Lock欧拉角死锁问题
摘要:
本文通过两个案例——旋转矩阵和分子动力学模拟中的SETTLE约束算法,介绍了一下Gimbal Lock问题,简单来说就是,用旋转矩阵去表示三维空间的向量旋转有可能会遇到奇点,使得三维空间原本的三个自由度在某一个点变成两个自由度。而使用我们这里所介绍的四元数Quaternion则不会有这样的问题,同时本文也介绍了一些四元数的基本运算法则和sympy中的代码实现。后续会再单独写三篇博客介绍一下四元数的具体运算细则、四元数在SETTLE算法中的应用以及四元数的物理含义等,敬请期待。

SETTLE约束算法中的坐标变换问题
摘要:
在已知两个三角形顶点坐标的情况下,我们要以其中的一个三角形平面去构造一个新的坐标系,并且需要找到新旧坐标系之间的变换关系。这是一个比较简单的立体几何的问题,寻找两个坐标系之间的变换矩阵。如果是常规思路,可以先根据两个三角形之间的相对位置去计算一下在新坐标系下两个三角形的新的顶点坐标,从而可以取三个点来构造一个坐标变换矩阵,进而推广到所有向量在这两个坐标系之间的变换关系。而本文提供了一种相对更容易求解、也比较直接的思路,并给出了相关的Python代码实现过程。
