From 3ba29b19b427a972f5f7bf300ae9864281982570 Mon Sep 17 00:00:00 2001 From: q00596439 Date: Sat, 11 Sep 2021 15:46:41 +0800 Subject: [PATCH 1/2] change reademe and del restrain --- MindSPONGE/README.md | 2 + MindSPONGE/docs/mindsponge-arch.png | Bin 0 -> 76195 bytes MindSPONGE/examples/README.md | 99 ++--------------------- MindSPONGE/examples/README_CN.md | 97 ----------------------- MindSPONGE/examples/mindsponge_numpy.md | 101 ------------------------ MindSPONGE/mindsponge/md/npt.py | 10 +-- MindSPONGE/mindsponge/md/simulation.py | 5 -- MindSPONGE/protein_msa/README_CN.md | 7 +- 8 files changed, 17 insertions(+), 304 deletions(-) create mode 100644 MindSPONGE/docs/mindsponge-arch.png delete mode 100644 MindSPONGE/examples/README_CN.md delete mode 100644 MindSPONGE/examples/mindsponge_numpy.md diff --git a/MindSPONGE/README.md b/MindSPONGE/README.md index c2984ef00..2489d86ba 100644 --- a/MindSPONGE/README.md +++ b/MindSPONGE/README.md @@ -24,6 +24,8 @@ MindSPONGE中包含了多个传统分子模拟案例,更多详情,请点击 未来,MindSPONGE中将包含更多结合AI算法的分子模拟案例,欢迎大家的关注和支持。 +MindSPONGE Architecture + ## 安装教程 ### 确认系统环境信息 diff --git a/MindSPONGE/docs/mindsponge-arch.png b/MindSPONGE/docs/mindsponge-arch.png new file mode 100644 index 0000000000000000000000000000000000000000..dc449f396ee15f113c4daf5d505d1f7318a15a89 GIT binary patch literal 76195 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 literal 0 HcmV?d00001 diff --git a/MindSPONGE/examples/README.md b/MindSPONGE/examples/README.md index 4c0d86f7e..229765233 100644 --- a/MindSPONGE/examples/README.md +++ b/MindSPONGE/examples/README.md @@ -1,97 +1,14 @@ # MindSPONGE -- [Description](#Description) -- [Dataset](#Dataset) -- [Environment Requirements](#Environment-Requirements) -- [Quick Start](#Quick-Start) -- [Script Description](#Script-Description) - - [Script and Sample Code](#Script-and-Sample-Code) - - [Simulation Process](#Simulation-Process) -- [Result](#Result) +- [简介](#简介) +- [目录](#目录) -## Description +## 简介 -MindSPONGE implemented functions for molecular modeling and many simulation cases in biology,material and drug designing, which are not only simulated in traditional molecular simulation method, but also in AI method. Your contribution and attention are very important to us! +MindSPONGE包含了分子模拟过程中相关的功能函数以及分子模拟案例集合,其中包含了生物、材料、制药领域中的不同的分子体系的模拟。分子建模中,包含了基于传统分子模拟方法的相关案例,也会在后期包含AI+分子模拟的案例,详情请查看[案例](https://gitee.com/jialiangyu/mindscience/blob/dev_yjl/MindSPONGE/examples)。欢迎大家积极参与和关注。 -The following example demonstrates how to perform high-performance molecular dynamics simulations with the built-in MindSPONGE module on a `GPU`. +## 目录 -## Dataset - -There are three inputs in the example, the property file `NVT_290_10ns.in`, the topology file `WATER_ALA.parm7` and the coordinates file `WATER_ALA_350_cool_290.rst7`, respectivelly. They are stored in `data/polypeptide`. - -![ALA Aqueous System](https://images.gitee.com/uploads/images/2021/0323/184453_4bd9b1a6_8142020.png "图片1.png") - -The topology file and coordinates file can be generated by `tleap` in `AmberTools` ([link]()). For more details, please refer to: - -- [MindSPONGE Tutorial](https://gitee.com/mindspore/mindscience/blob/master/MindSPONGE/examples/) - -## Environment Requirements - -- Hardware: `GPU` - - Prepare a hardware environment with `GPU`. -- Framework - - [MindSpore](https://www.mindspore.cn/install/en) -- For more information, visit the resources below: - - [MindSPONGE Tutorials](https://gitee.com/mindspore/mindscience/tree/master/MindSPONGE/mindsponge/examples) - - [MindSpore Python API](https://www.mindspore.cn/docs/api/en/master/index.html) - -## Quick Start - -After installing MindSpore, go to ../examples/polypeptide/src/ folder, run the following command: - -```shell -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 -``` - -`path` is the path which stores input files. In this case, they are stored in `data/polypeptide`. - -## Script Description - -### Script and Sample Code - -```shell -|-- README.md -|-- README_CN.md -|-- mindsponge_numpy.md -|-- claisen_rearrangement -| |-- data -| |-- src -| |-- main.py -| |-- simulation_cybertron.py -|-- covid -| |-- data -| | |-- deltaace2.parm7 -| | |-- deltaace2.rst7 -| | |-- s1ace2.parm7 -| | |-- s1ace2.rst7 -| |-- scripts -| | |-- run_covid.sh -| |-- src -| |-- main.py -| |-- run_npt.py -|-- polypeptide - |-- README_CN.md - |-- data - | |-- NVT_290_10ns.in - | |-- WATER_ALA.parm7 - | |-- WATER_ALA_350_cool_290.rst7 - |-- scripts - | |-- run.sh - |-- src - |-- main.py -``` - -## Result - -After training, the following results are stored in `ala_NVT_290_10ns.out`: - -```text -_steps_ _TEMP_ _TOT_POT_ENE_ _BOND_ENE_ _ANGLE_ENE_ _DIHEDRAL_ENE_ _14LJ_ENE_ _14CF_ENE_ _LJ_ENE_ _CF_PME_ENE_ - 1 0.788 -5836.521 48.745 0.891 14.904 9.041 194.479 763.169 -6867.750 - ... -``` - -There are sorts of energy in the output, steps (_steps_), temperature (_TEMP_), total energy (_TOT_POT_E_), bond energy (_BOND_ENE_), angle energy (_ANGLE_ENE_), dihedral energy (_DIHEDRAL_ENE_), non-bond energy, includes Coulomb force (_14CF_ENE_) and Lennard-Jones energy (_14LJ_ENE_), Van der Waals energy (_LJ_ENE_) and Coulomb force in PME (_CF_PME_ENE_). +- [案例](https://gitee.com/jialiangyu/mindscience/blob/dev_yjl/MindSPONGE/examples) + - [丙氨酸三肽水溶液体系](https://gitee.com/mindspore/mindscience/tree/master/MindSPONGE/examples/polypeptide) + - [克莱森重排反应](https://gitee.com/mindspore/mindscience/tree/master/MindSPONGE/examples/claisen_rearrangement) diff --git a/MindSPONGE/examples/README_CN.md b/MindSPONGE/examples/README_CN.md deleted file mode 100644 index 370ae60f9..000000000 --- a/MindSPONGE/examples/README_CN.md +++ /dev/null @@ -1,97 +0,0 @@ -# MindSPONGE - -- [简介](#简介) -- [数据](#数据) -- [环境要求](#环境要求) -- [快速入门](#快速入门) -- [脚本介绍](#脚本介绍) - - [脚本和示例代码](#脚本和示例代码) - - [模拟过程](#模拟过程) -- [结果](#结果) - -## 简介 - -MindSPONGE包含了分子模拟过程中相关的功能函数以及分子模拟案例集合,其中包含了生物、材料、制药领域中的不同的分子体系的模拟。分子建模中,包含了基于传统分子模拟方法的相关案例,也会在后期包含AI+分子模拟的案例,详情请查看[案例](https://gitee.com/jialiangyu/mindscience/blob/dev_yjl/MindSPONGE/examples/polypeptide/README_CN.md)。欢迎大家积极参与和关注。 - -下面的案例将展示如何在`GPU`上,使用MindSPONGE快速进行分子模拟。 - -## 数据 - -该案例中使用了三个不同的输入文件,分别是属性文件`NVT_290_10ns.in`,拓扑文件`WATER_ALA.parm7`,以及坐标文件 `WATER_ALA_350_cool_290.rst7`。三个输入文件都在`data/polypeptide`文件夹中。 - -拓扑文件和坐标文件可以由开源工具`AmberTools`中的`tleap`([链接]())生成,更多细节,请查看案例完整教程: - -- [MindSPONGE 教程](https://gitee.com/mindspore/mindscience/blob/master/MindSPONGE/examples/polypeptide/README_CN.md) - -![ALA Aqueous System](https://images.gitee.com/uploads/images/2021/0323/184453_4bd9b1a6_8142020.png "图片1.png") - -## 环境要求 - -- 硬件设备: `GPU` - - MindSPONGE现有案例目前只支持 `GPU`设备. -- 框架 - - [MindSpore](https://www.mindspore.cn/install/en) -- 更多信息,请查看详细介绍: - - [MindSPONGE 教程](https://gitee.com/mindspore/mindscience/blob/master/MindSPONGE/examples/) - - [MindSpore Python API](https://www.mindspore.cn/docs/api/en/master/index.html) - -## 快速入门 - -安装完成MindSpore后, 进入目录../examples/polypeptide/src/运行如下命令: - -```shell -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 -``` - -`path` 是存储输入文件的具体路径,在本案例中,该路径为`data/polypeptide`。 - -## 脚本介绍 - -### 脚本和示例代码 - -```shell -|-- README.md -|-- README_CN.md -|-- mindsponge_numpy.md -|-- claisen_rearrangement -| |-- data -| |-- src -| |-- main.py -| |-- simulation_cybertron.py -|-- covid -| |-- data -| | |-- deltaace2.parm7 -| | |-- deltaace2.rst7 -| | |-- s1ace2.parm7 -| | |-- s1ace2.rst7 -| |-- scripts -| | |-- run_covid.sh -| |-- src -| |-- main.py -| |-- run_npt.py -|-- polypeptide - |-- README_CN.md - |-- data - | |-- NVT_290_10ns.in - | |-- WATER_ALA.parm7 - | |-- WATER_ALA_350_cool_290.rst7 - |-- scripts - | |-- run.sh - |-- src - |-- main.py -``` - -## 结果 - -模拟结束后,模拟结果会存储在指定的`.out`文件中,在这里为`ala_NVT_290_10ns.out`。其存储的内容为: - -```text -_steps_ _TEMP_ _TOT_POT_ENE_ _BOND_ENE_ _ANGLE_ENE_ _DIHEDRAL_ENE_ _14LJ_ENE_ _14CF_ENE_ _LJ_ENE_ _CF_PME_ENE_ - 1 0.788 -5836.521 48.745 0.891 14.904 9.041 194.479 763.169 -6867.750 - ... -``` - -存储结果记录了模拟过程中输出的各类信息,包含步骤(_steps_),温度(_TEMP_),总能量(_TOT_POT_E_),键长(_BOND_ENE_),键角(_ANGLE_ENE_),二面角相互作用(_DIHEDRAL_ENE_),非键相互作用,其包含静电力及Leonard-Jones相互作用。 diff --git a/MindSPONGE/examples/mindsponge_numpy.md b/MindSPONGE/examples/mindsponge_numpy.md deleted file mode 100644 index fa5d73eea..000000000 --- a/MindSPONGE/examples/mindsponge_numpy.md +++ /dev/null @@ -1,101 +0,0 @@ -# MindSPONGE with numpy support - -`Linux` `GPU` - - - -- [Run MindSPONGE with MindSpore.Numpy](#Run-MindSPONGE-with-MindSpore.Numpy) -- [Under the hood of the Numpy demo](#Under-the-hood-of-the-Numpy-demo) -- [Performance](#Performance) - - - -## Run MindSPONGE with MindSpore.Numpy - -MindSPONGE has been fully supported by MindSpore.Numpy, which runs at similar speed -compared with the Cuda version, which means energy, force and coordinate calculations -are fully supported with Numpy-like syntax, which runs on top of MindSpore primitive -operators. - -For numpy version, run the following command instead: - -```shell -python main_np.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 -``` - -Detailed implementations: - -```shell -├── scripts - ├── main_np.py # launch Simulation for SPONGE-Numpy - ├── src - ├── simulation_np.py # SPONGE-numpy simulation - ├── functions # SPONGE-numpy modules - ├── angle_energy.py - ├── angle_force_with_atom_energy.py - ├── bond_energy.py - ├── bond_force_with_atom_energy.py - ├── common.py - ├── crd_to_uint_crd.py - ├── dihedral_14_cf_energy.py - ├── dihedral_14_ljcf_force_with_atom_energy.py - ├── dihedral_14_lj_energy.py - ├── dihedral_energy.py - ├── dihedral_force_with_atom_energy.py - ├── __init__.py - ├── lj_energy.py - ├── lj_force_pme_direct_force.py - ├── md_iteration_leap_frog_liujian.py - ├── md_temperature.py - ├── neighbor_list_update.py - ├── pme_common.py - ├── pme_energy.py - ├── pme_excluded_force.py - └── pme_reciprocal_force.py -``` - -For other details, please refer to the [tutorial on case tutorial](https://gitee.com/mindspore/mindscience/blob/master/MindSPONGE/mindsponge/examples/case_polypeptide.md) - -## Under the hood of the numpy demo - -For the Cuda version, every kernel lies inside MindSpore as Cuda kernels. To allow -better transparency for how molecular dynamics algorithm works, Cuda kernels were -refactored as numpy scripts and displayed in src/functions. - -MindSpore Numpy package contains a set of Numpy-like interfaces, which allows developers -to build models on MindSpore with similar syntax of Numpy. MindSpore.Numpy is a layer -of wrapper on MindSpore Primitives (mindspore.ops) which runs on MindSproe Tensors, -therefore it is compatible with other MindSpore features. See -[here](https://www.mindspore.cn/docs/programming_guide/en/master/numpy.html) for -more details. - -By default, the numpy demo runs on top of [Graph Kernel Fusion] -(https://www.mindspore.cn/docs/programming_guide/en/master/enable_graph_kernel_fusion.html) -and [Auto Kernel Generation] (https://gitee.com/mindspore/akg). These features -lead to 50% (or more) performance improvement, compared with no kernel fusion, -and brings the numpy version to comparable performance with the Cuda version. - -To setup for Graph Kernel Fusion, simply add two lines in the launch script -(mindsponge/scripts/main_np.py): - -```python -# Enable Graph Mode, with GPU as backend, and allow Graph Kernel Fusion -context.set_context(mode=context.GRAPH_MODE, device_target="GPU", device_id=args_opt.device_id, enable_graph_kernel=True) -# Make fusion rules for specific operators -context.set_context(graph_kernel_flags="--enable_expand_ops=Gather --enable_cluster_ops=TensorScatterAdd --enable_recompute_fusion=false") -``` - -## Performance - -| Parameter | GPU | -| -------------------------- |---------------------------------- | -| Resource | GPU (Tesla V100 SXM2); memory 16 GB -| Upload date | -| MindSpore version | 1.4 -| Training parameter | step=1000 -| Output | numpy file -| Speed | 5.2 ms/step -| Script | [Link](https://gitee.com/mindspore/mindscience/tree/master/MindSPONGE/mindsponge/scripts) diff --git a/MindSPONGE/mindsponge/md/npt.py b/MindSPONGE/mindsponge/md/npt.py index ee6c8b68b..d0354f2f3 100644 --- a/MindSPONGE/mindsponge/md/npt.py +++ b/MindSPONGE/mindsponge/md/npt.py @@ -640,15 +640,7 @@ class NPT(nn.Cell): else: dihedral_force = self.zero_main_force - if self.restrain_is_initialized: - _, atom_virial, restrain_frc = self.restrain_force_with_atom_energy_and_virial(self.restrain_list, - self.crd, - self.crd_ref, - self.box_length) - else: - restrain_frc = self.zero_main_force - - force = P.AddN()([lj_force, pme_force, nb14_force, bond_force, angle_force, dihedral_force, restrain_frc]) + force = P.AddN()([lj_force, pme_force, nb14_force, bond_force, angle_force, dihedral_force]) return force, self.atom_virial, self.virial, self.need_pressure def simulation_caculate_energy(self, uint_crd, uint_dr_to_dr_cof): diff --git a/MindSPONGE/mindsponge/md/simulation.py b/MindSPONGE/mindsponge/md/simulation.py index fcb64b3ad..d59020969 100644 --- a/MindSPONGE/mindsponge/md/simulation.py +++ b/MindSPONGE/mindsponge/md/simulation.py @@ -510,11 +510,6 @@ class Simulation(nn.Cell): self.pn) force = force + dihedral_force - if self.restrain_is_initialized: - _, _, restrain_frc = self.restrain_force_with_atom_energy_and_virial(self.restrain_list, - self.crd, self.crd_ref, - self.box_length) - force = force + restrain_frc return force def simulation_caculate_energy(self, uint_crd, uint_dr_to_dr_cof): diff --git a/MindSPONGE/protein_msa/README_CN.md b/MindSPONGE/protein_msa/README_CN.md index 6a87c1727..4b48b57f7 100644 --- a/MindSPONGE/protein_msa/README_CN.md +++ b/MindSPONGE/protein_msa/README_CN.md @@ -4,7 +4,12 @@ 针对蛋白质的[多序列比对](https://en.wikipedia.org/wiki/Multiple_sequence_alignment)(multiple sequence alignment; MSA)是研究蛋白质的结构、功能和进化关系等问题的重要方法。MSA数据中蕴含了构成蛋白质的氨基酸序列中的保守性质(conservation)、协同突变(co-evolution)和功能与物种进化关系(phylogenetics)的相关信息。 -![MSA与蛋白质性质的关联](../docs/MSA_Figure.png) + +

+ +

+ +*图片致谢:Sergey Ovchinnikov* 人类已知的存在于自然界中的蛋白质序列数目已经上亿并在快速增长,但仅凭这些蛋白质单序列的数据很难了解蛋白之间的关系。Protein MSA数据库,就是一个对不同蛋白质序列之间的关系进行了标记的大规模“关系型”数据库,被标记为关联的蛋白质序列之间的相似度、进化关系和突变所在位点的分布等信息对蛋白质结构和功能的预测极为重要。例如在AlphaFold2模型[1]中,目标蛋白序列的MSA信息就是预测结构的必要输入信息之一。 -- Gitee From 0e14fa62a26aadb5cc16fd22ec99f7818f3a9e67 Mon Sep 17 00:00:00 2001 From: "jun.zhang" Date: Mon, 13 Sep 2021 15:26:28 +0000 Subject: [PATCH 2/2] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20MindSPONGE/protein=5Fm?= =?UTF-8?q?sa/README=5FCN.md=20=E6=96=87=E6=A1=A3=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=92=8C=E5=9B=BE=E6=B3=A8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MindSPONGE/protein_msa/README_CN.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/MindSPONGE/protein_msa/README_CN.md b/MindSPONGE/protein_msa/README_CN.md index 4b48b57f7..227ac8c6f 100644 --- a/MindSPONGE/protein_msa/README_CN.md +++ b/MindSPONGE/protein_msa/README_CN.md @@ -6,10 +6,9 @@

- +

- -*图片致谢:Sergey Ovchinnikov* +
*图片致谢:Sergey Ovchinnikov*
人类已知的存在于自然界中的蛋白质序列数目已经上亿并在快速增长,但仅凭这些蛋白质单序列的数据很难了解蛋白之间的关系。Protein MSA数据库,就是一个对不同蛋白质序列之间的关系进行了标记的大规模“关系型”数据库,被标记为关联的蛋白质序列之间的相似度、进化关系和突变所在位点的分布等信息对蛋白质结构和功能的预测极为重要。例如在AlphaFold2模型[1]中,目标蛋白序列的MSA信息就是预测结构的必要输入信息之一。 -- Gitee