【本期推荐专题】物联网从业人员必读:华为云专家为你详细解读LiteOS各模块开发及其实现原理。

摘要:基于MindSpore自动并行、图算融合等特性,SPONGE可高效地完成传统分子模拟过程,利用MindSpore自动微分的特性,可以将神经网络等AI方法与传统分子模拟进行结合。

本文分享自华为云社区《MindSpore新一代分子模拟库:SPONGE》,原文作者:于璠,MindSpore算法科学家

MindSpore新一代分子模拟库:SPONGE,由北大和深圳湾实验室高毅勤课题组与华为MindSpore团队联合开发,具有高性能、模块化等特性,是一个完全自主研发的分子模拟软件库。基于MindSpore自动并行、图算融合等特性,SPONGE可高效地完成传统分子模拟过程,利用MindSpore自动微分的特性,可以将神经网络等AI方法与传统分子模拟进行结合。

背景介绍

分子模拟是指利用计算机以原子水平的分子模型来模拟分子结构与行为,进而模拟分子体系的各种物理、化学性质的方法。它是在实验基础上,通过基本原理,构筑起一套模型和算法,从而计算出合理的分子结构与分子行为。近年来,分子模拟技术发展迅速并且在多个学科领域得到了广泛的应用。在药物设计领域,可用于研究病毒、药物的作用机理等;在生物科学领域,可用于表征蛋白质的多级结构与性质;在材料学领域,可用于研究结构与力学性能、材料的优化设计等;在化学领域,可用于研究表面催化及机理;在石油化工领域,可用于分子筛催化剂结构表征、合成设计、吸附扩散,可构建和表征高分子链以及晶态或非晶态本体聚合物的结构,预测包括共混行为、机械性质、扩散、内聚等重要性质。

由于模拟的时空限制,传统分子动力学仿真软件的应用受到很大的限制,科研工作者需要不断地开发新的力场、抽样方法、结合新的技术(如AI算法)来拓展分子动力学仿真的场景。因此, SPONGE应运而生,具有完全自主的知识产权。SPONGE使用模块化的设计特性,支持科学家进行高效且便捷地搭建分子动力学模拟中所需要的相关计算模块。同时, SPONGE也具有传统模拟所需要的高效性。除此之外,SPONGE也天然地支持与人工智能算法的自然融合,并且能运用MindSPore框架自身的高性能计算特性。

相比于之前在传统分子模拟软件上结合SITS方法进行生物分子增强抽样,SPONGE原生支持SITS并对计算流程进行优化使得其使用SITS方法模拟生物体系更加高效。针对极化体系,传统分子模拟采用结合量化计算等方式来解决电荷浮动等问题。即使采用机器学习降低计算量也会浪费大量时间在程序数据传送的问题上。而SPONGE利用模块化的特点可支持内存上直接与机器学习程序通信大大降低了整体计算时间。

图1:结合SITS等方法对显性溶剂中的丙氨酸二肽进行增强抽样

随MindSpore1.2版本开源的SPONGE具备以下优势:

1. 全模块化分子模拟。模块化构建分子模拟算法,易于领域研发人员进行理论和算法的快速实现,并为外部开发人员贡献子模块提供友好的开源社区环境。

2. 传统分子模拟与MindSpore结合的人工智能算法的全流程实现。在MindSpore中,研发人员能便利的将AI方法作用于分子模拟中。全算子化的SPONGE将与MindSpore进一步结合成为新一代端到端可微的分子模拟软件,实现人工智能与分子模拟的自然融合。

案例介绍

下面,这里将简单介绍一下MindSpore上的SPONGE的一个简单案例,该案例使用SPONGE模拟了丙氨酸三肽水溶液体系。

实践前,确保已经正确安装MindSpore。如果没有,可以通过MindSpore安装页面(MindSpore官网)安装MindSpore。

1. 输入文件准备

本教程模拟体系中需要加载三个输入文件,分别是:

· 属性文件(后缀为.in的文件),声明模拟的基本条件,对整个模拟过程进行参数控制。

· 拓扑文件(后缀为.param7的文件),拓扑文件描述的是体系内部分子的拓扑关系及各种参数。

· 坐标文件(后缀为.rst7的文件),坐标文件描述的是每个原子在体系中的初始时刻的坐标。

拓扑文件和坐标文件可以通过建模过程由AmberTools中自带的tleap工具建模完成,下载地址(Download Amber MD)。

通过tleap构建了所需要的拓扑文件和坐标文件后,需要通过属性文件声明模拟的基本条件,对整个模拟过程进行参数控制。以本教程中的属性文件为例,其文件内容如下:

NVT 290k

 mode = 1, # 分子动力学(MD)模式,1 表示模拟采用 NVT 系综

 dt= 0.001, # 模拟步长

 step_limit = 1, # 模拟总步数

 thermostat=1, # 控温方法,1 表示采用的是 Liujian-Langevin 方法

 langevin_gamma=1.0, # 控温器中的 Gamma_ln 参数

 target_temperature=290, # 目标温度

 write_information_interval=1000, # 输出频率

 amber_irest=0, # 输入方式,0 表示读入amber格式的输入坐标文件,其中不包含速度

 cut=10.0,  # 非键相互作用的距离

案例的输入文件完成后,分别命名为 http://NVT_290_10ns.in 、WATER_ALA.parm7和WATER_ALA_350_cool_290.rst7,这三个文件可以存放在本地工作区的自定义路径下。

2. 加载数据

从三个输入文件中,读取模拟体系所需要的参数,用于最后体系的计算,其加载代码如下:

import argparse

from mindspore import context

parser = argparse.ArgumentParser(description='Sponge Controller')

parser.add_argument('--i', type=str, default=None, help='input file')

parser.add_argument('--amber_parm', type=str, default=None, help='paramter file in AMBER type')

parser.add_argument('--c', type=str, default=None, help='initial coordinates file')

parser.add_argument('--r', type=str, default="restrt", help='')

parser.add_argument('--x', type=str, default="mdcrd", help='')

parser.add_argument('--o', type=str, default="mdout", help="")

parser.add_argument('--box', type=str, default="mdbox", help='')

parser.add_argument('--device_id', type=int, default=0, help='')

args_opt = parser.parse_args()

context.set_context(mode=context.GRAPH_MODE, device_target="GPU", device_id=args_opt.device_id, save_graphs=False)

3. 构建模拟流程

使用SPONGE中定义的计算力模块和计算能量模块,通过多次迭代进行分子动力学过程演化,使得体系达到我们所需要的平衡态,并记录每一个模拟步骤中得到的能量等数据。其模拟流程构建代码如下:

from src.simulation_initial import Simulation

from mindspore import Tensor

if __name__ == "__main__":

 simulation = Simulation(args_opt)

 save_path = args_opt.o

 for steps in range(simulation.md_info.step_limit):

 print_step = steps % simulation.ntwx

 if steps == simulation.md_info.step_limit - 1:

 print_step = 0

 temperature, total_potential_energy, sigma_of_bond_ene, sigma_of_angle_ene, sigma_of_dihedral_ene, \

 nb14_lj_energy_sum, nb14_cf_energy_sum, LJ_energy_sum, ee_ene, _ = simulation(Tensor(steps), Tensor(print_step))

 # compute energy and temperature

4. 运行脚本

python main.py --i /path/NVT_290_10ns.in \

 --amber_parm /path/WATER_ALA.parm7 \

 --c /path/WATER_ALA_350_cool_290.rst7 \

 --o /path/ala_NVT_290_10ns.out

其中,--i 为MD模拟的属性文件,控制模拟过程,--amber_parm 为MD模拟体系的拓扑文件,--c 为我们输入的初始坐标文件,--o 为我们模拟输出的记录文件,其记录了输出每步的能量等信息,--path 为输入文件所在的路径,在本教程中为 sponge_in 文件夹。

使用输入文件,通过在指定温度下进行模拟,计算力和能量,进行分子动力学过程演化。

5. 运行结果

运行得到的结果在 .out 文件中,体系的能量变化都被记录在该文件中,可以查看模拟体系的热力学信息。在 .out 文件中记录了体系的如下信息:

_steps_ _TEMP_ _TOT_POT_ENE_ _BOND_ENE_ _ANGLE_ENE_ _DIHEDRAL_ENE_ _14LJ_ENE_ _14CF_ENE_ _LJ_ENE_ _CF_PME_ENE_

其中记录了模拟过程中输出的各类能量, 分别是迭代次数(_steps_),温度(_TEMP_),总能量(_TOT_POT_E_),键长(_BOND_ENE_),键角(_ANGLE_ENE_),二面角相互作用(_DIHEDRAL_ENE_),非键相互作用,其包含静电力及Leonard-Jones相互作用。

教程文档:https://gitee.com/mindspore/docs/blob/master/tutorials/training/source_zh_cn/advanced_use/hpc_sponge.md

展望

在未来的版本中,会加入更多实用的分子动力学模拟模块,支持更多应用。之后,SPONGE各模块会逐步支持自动微分和自动并行,对于衔接机器学习方案提供更友好的支持。欢迎广大的分子动力学爱好者和研究者加入我们,共同拓展和维护SPONGE。

点击关注,第一时间了解华为云新鲜技术~

一文带你认识MindSpore新一代分子模拟库SPONGE的更多相关文章

  1. Istio是啥?一文带你彻底了解!

    原标题:Istio是啥?一文带你彻底了解! " 如果你比较关注新兴技术的话,那么很可能在不同的地方听说过 Istio,并且知道它和 Service Mesh 有着牵扯. 这篇文章可以作为了解 ...

  2. 一文带您了解5G的价值与应用

    一文带您了解5G的价值与应用 5G最有趣的一点是:大多数产品都是先有明确应用场景而后千呼万唤始出来.而5G则不同,即将到来的5G不仅再一次印证了科学技术是第一生产力还给不少用户带来了迷茫——我们为什么 ...

  3. 一文带你了解elasticsearch

    一文带你了解elasticsearch cxf2102100人评论160人阅读2019-07-02 21:31:36   elasticsearch es基本概念 es术语介绍 文档Document ...

  4. 【转帖】Istio是啥?一文带你彻底了解!

    Istio是啥?一文带你彻底了解! http://www.sohu.com/a/270131876_463994 原始位置来源: https://cizixs.com 如果你比较关注新兴技术的话,那么 ...

  5. 一文带你了解 C# DLR 的世界

    一文带你了解 C# DLR 的世界 在很久之前,我写了一片文章dynamic结合匿名类型 匿名对象传参,里面我以为DLR内部是用反射实现的.因为那时候是心中想当然的认为只有反射能够在运行时解析对象的成 ...

  6. 一文带你看清HTTP所有概念(转)

    一文带你看清HTTP所有概念   上一篇文章我们大致讲解了一下 HTTP 的基本特征和使用,大家反响很不错,那么本篇文章我们就来深究一下 HTTP 的特性.我们接着上篇文章没有说完的 HTTP 标头继 ...

  7. 一文带你了解js数据储存及深复制(深拷贝)与浅复制(浅拷贝)

    背景 在日常开发中,偶尔会遇到需要复制对象的情况,需要进行对象的复制. 由于现在流行标题党,所以,一文带你了解js数据储存及深复制(深拷贝)与浅复制(浅拷贝) 理解 首先就需要理解 js 中的数据类型 ...

  8. 【项目实践】一文带你搞定Spring Security + JWT

    以项目驱动学习,以实践检验真知 前言 关于认证和授权,R之前已经写了两篇文章: [项目实践]在用安全框架前,我想先让你手撸一个登陆认证 [项目实践]一文带你搞定页面权限.按钮权限以及数据权限 在这两篇 ...

  9. 一文带你看遍 JDK9~14 的重要新特性!

    Java9 发布于 2017 年 9 月 21 日 .作为 Java8 之后 3 年半才发布的新版本,Java 9 带 来了很多重大的变化其中最重要的改动是 Java 平台模块系统的引入,其他还有诸如 ...

  10. 让自己写的电子笔记连文带图全平台兼容(MarkDown图片显示兼容)

    目录 一.工具使用 语言使用:MarkDown 简介 使用原因 使用方法 软件使用:Typora 简介 环境设置搭建 1)搭建图床 2)配置PicGo 3)配置typora 4)测试 图片上传测试 平 ...

随机推荐

  1. C++中const和constexpr的多文件链接问题

    C++语言支持分离编译,在多文件编程中:变量或函数可以被声明多次,但却只能被定义一次.如果要在多个文件中使用同一个变量,变量的定义能且只能出现在一个文件中,在其他使用该变量的文件中需要声明该变量.如果 ...

  2. YbtOJ 做题记录-总集版

    感觉每章都开一篇博客过于占据版面 (以及写不动题了想摸一会鱼 于是就有了您现在看到的这篇博客. upd:不知道啥时候咕了.懒得补,那就继续咕着吧(bushi 基础算法 第1章 递推算法 第2章 贪心算 ...

  3. Error resolving template [sys/prod/prod/list], template might not exist or might not be accessible by any of the configured Template Resolvers

    新的商城模板调试接口,一个商品列表的接口调用,返回报错 org.thymeleaf.exceptions.TemplateInputException: Error resolving templat ...

  4. JAVA多线程(1)——线程

    1.定义:线程是一个程序里面不同的执行路径   例子1:只有一个执行路径 (一个分支,即主线程)

  5. [Python急救站课程]天天向上的力量

    我们要"好好学习,天天向上."那么天天向上的力量到底有多强呢? 1.一年365天,以第1天的能力值为基数,记为1.0,当好好学习时能力值相比前一天提高1‰,当没有学习时由于遗忘等原 ...

  6. 文心一言 VS 讯飞星火 VS chatgpt (133)-- 算法导论11.2 5题

    五.用go语言,假设将一个具有n个关键字的集合存储到一个大小为 m 的散列表中.试说明如果这些关键字均源于全域U,且|U|>nm,则U 中还有一个大小为n 的子集,其由散列到同一槽位中的所有关键 ...

  7. OpenCL任务调度基础介绍

    当前,科学计算需求急剧增加,基于CPU-GPU异构系统的异构计算在科学计算领域得到了广泛应用,OpenCL由于其跨平台特性在异构计算领域渐为流行,其调度困难的问题也随之暴露,传统的OpenCL任务调度 ...

  8. 思科4331 语音网关配置, cisco 4331 router 配置文件

    GW01#cisco_ROUTER01#cisco_ROUTER01#sh clocisco_ROUTER01#cisco_ROUTER01#cisco_ROUTER01#cisco_ROUTER01 ...

  9. 创建一个循环写入数据有事务提交的oracle函数示例

    /*创建函数*/create or replace function fnc_testtempInfo(startDate IN varchar2, endDate in varchar2) retu ...

  10. 10 个免费的 AI 图片生成工具分享

    原文: https://openaigptguide.com/ai-picture-generator/ 在人工智能(AI)图像生成技术的推动下,各类AI图片生成网站如雨后春笋般涌现,为我们的日常生活 ...