学习torchmd分子动力学模拟

2024-05-10 01:52

本文主要是介绍学习torchmd分子动力学模拟,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

TorchMD打算提供一种简单易用的API,用于使用PyTorch进行分子动力学。这使研究人员能够更快地进行力场开发研究,并以PyTorch的简单性和强大性将神经网络潜力无缝集成到动力学中。
TorchMD使用与经典MD代码(如ACEMD)一致的化学单位,即kcal/mol表示能量,K表示温度,g/mol表示质量,Å表示距离。
TorchMD目前正在进行中,请随时提供有关API或GitHub问题跟踪器中潜在错误的反馈。
还要检查TorchMD-Net是否具有快速准确的神经网络电位https://github.com/torchmd/torchmd-net/

TorchMD intends to provide a simple to use API for performing molecular dynamics using PyTorch. This enables researchers to more rapidly do research in force-field development as well as integrate seamlessly neural network potentials into the dynamics, with the simplicity and power of PyTorch.

TorchMD uses chemical units consistent with classical MD codes such as ACEMD, namely kcal/mol for energies, K for temperatures, g/mol for masses, and Å for distances.

TorchMD is currently WIP so feel free to provide feedback on the API or potential bugs in the GitHub issue tracker.

Also check TorchMD-Net for fast and accurate neural network potentials GitHub - torchmd/torchmd-net: Neural network potentials

 首先搭建torchmd环境:

torch环境这里略,主要思路就是到官网,根据cuda信息选择合适的安装包进行安装。 

使用conda安装分子动力学相关软件:

conda install moleculekit parmed jupyter -c acellera -c conda-forge -y
conda install -c conda-forge openmm -y

安装torchmd

pip install torchmd natsort

下载torchmd源代码

git clone https://openi.pcl.ac.cn/skywalk163/torchmd

测试torchmd

进入torchmd目录,然后执行:

python tests/test_torchmd.py 

输出:


Running test: tests/data/1dihedral/angle Energy diff: 3.243e-07 Force diff: 1.107e-05bond Energy diff: -3.986e-06 Force diff: 1.173e-04dihedral Energy diff: -5.242e-08 Force diff: 2.409e-07lennardjones Energy diff: 5.268e-09 Force diff: 3.749e-08electrostatic Energy diff: 1.477e-10 Force diff: 1.158e-09
All forces. Total energy: 0.747 Energy diff: -3.709e-06 Force diff 1.210e-04Running test: tests/data/4dihedrals/angle Energy diff: 1.501e-06 Force diff: 4.117e-05bond Energy diff: -3.988e-06 Force diff: 1.139e-04dihedral Energy diff: -2.097e-07 Force diff: 2.221e-07lennardjones Energy diff: 1.472e-07 Force diff: 4.044e-07electrostatic Energy diff: -5.384e-09 Force diff: 2.444e-09
All forces. Total energy: 7.416 Energy diff: -2.555e-06 Force diff 1.446e-04Running test: tests/data/2watersperiodic/angle Energy diff: 1.437e-06 Force diff: 2.273e-04bond Energy diff: -5.145e-06 Force diff: 8.183e-04dihedral Energy diff: 0.000e+00 Force diff: 0.000e+00lennardjones Energy diff: -5.396e-09 Force diff: 4.818e-04electrostatic Energy diff: -3.844e-07 Force diff: 1.260e-06
All forces. Total energy: -0.213 Energy diff: -4.098e-06 Force diff 1.528e-03
ok----------------------------------------------------------------------
Ran 2 tests in 75.449sOK

测试通过! 

 

调试

执行test报错ModuleNotFoundError: No module named 'natsort'

安装natsort

pip install natsort

执行test报错,File tests/data/prod_alanine_dipeptide_amber/structure.prmtop was not found.

~/work/paddlemd/torchmd/tests]$ python test_torchmd.py 

Traceback (most recent call last):
  File "/usr/home/skywalk/work/paddlemd/torchmd/tests/test_torchmd.py", line 474, in test_replicas
    mol = Molecule(os.path.join(testdir, "structure.prmtop"))
  File "/home/skywalk/miniconda3/lib/python3.10/site-packages/moleculekit/molecule.py", line 412, in __init__
    self.read(filename, **kwargs)
  File "/home/skywalk/miniconda3/lib/python3.10/site-packages/moleculekit/molecule.py", line 1369, in read
    raise FileNotFoundError(f"File {ff} was not found.")
FileNotFoundError: File tests/data/prod_alanine_dipeptide_amber/structure.prmtop was not found.
原来是没有在torchmd的根目录执行,改正:

~/work/paddlemd/torchmd]$ python tests/test_torchmd.py 

报错:ModuleNotFoundError: No module named 'openmm'

安装

pip install openmm

还是报错,原来包的名字是:openmm-systems

pip install openmm-systems

还是报错,咋回事呢? 还是用conda装吧

conda install -c conda-forge openmm -y

报错Could not find or import OpenMM version 7.0+

  File "/opt/conda/lib/python3.10/site-packages/parmed/utils/decorators.py", line 17, in new_fcn
    raise ImportError('Could not find or import OpenMM version 7.0+')
ImportError: Could not find or import OpenMM version 7.0+

conda安装7.1 还是不行,7.1没装上,不过在另一台机器8.1版本是ok的

使用import openmm,发现报错:

import openmm
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/conda/lib/python3.10/site-packages/openmm/__init__.py", line 24, in <module>
    from openmm.openmm import *
  File "/opt/conda/lib/python3.10/site-packages/openmm/openmm.py", line 10, in <module>
    from . import _openmm
ImportError: /opt/conda/lib/python3.10/site-packages/openmm/../../../libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /opt/conda/lib/python3.10/site-packages/openmm/../../../libOpenMM.so.8.0)
 

按照网上讲的修改gcc版本等,都没生效。后来改为gpu环境,搞定。也就是换了个环境。不知道为什么有些环境就是会有GLIBCXX_3.4.30这样的报错。

报错Can't call numpy() on Tensor that requires grad. Use tensor.detach().numpy() instead.

Traceback (most recent call last):
  File "/usr/home/skywalk/work/paddlemd/torchmd/tests/test_torchmd.py", line 514, in test_replicas
    assert np.abs(Epot[0] + 1722.3569) < 1e-4 and np.abs(Epot[1] + 1722.3569) < 1e-4
  File "/home/skywalk/miniconda3/lib/python3.10/site-packages/torch/_tensor.py", line 1062, in __array__
    return self.numpy()
RuntimeError: Can't call numpy() on Tensor that requires grad. Use tensor.detach().numpy() instead.
把这个文件work/paddlemd/torchmd/tests/test_torchmd.py的这句代码assert np.abs(Epot[0] + 1722.3569) < 1e-4 and np.abs(Epot[1] + 1722.3569) < 1e-4改成:

assert np.abs(Epot[0].detach().numpy() + 1722.3569) < 1e-4 and np.abs(Epot[1].detach().numpy() + 1722.3569) < 1e-4

最后看结果是-1722.3567 ,就差了万分之2 ,或说这里应该再除以1722的,这样这里就过了。

最终修改成了这样:

assert np.abs(Epot[0].detach() + 1722.3569) < (1e-4 *1722) and np.abs(Epot[1].detach() + 1722.3569) < (1e-4*1722)
 

这篇关于学习torchmd分子动力学模拟的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/975105

相关文章

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

Python模拟串口通信的示例详解

《Python模拟串口通信的示例详解》pySerial是Python中用于操作串口的第三方模块,它支持Windows、Linux、OSX、BSD等多个平台,下面我们就来看看Python如何使用pySe... 目录1.win 下载虚www.chinasem.cn拟串口2、确定串口号3、配置串口4、串口通信示例5

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

CSS模拟 html 的 title 属性(鼠标悬浮显示提示文字效果)

《CSS模拟html的title属性(鼠标悬浮显示提示文字效果)》:本文主要介绍了如何使用CSS模拟HTML的title属性,通过鼠标悬浮显示提示文字效果,通过设置`.tipBox`和`.tipBox.tipContent`的样式,实现了提示内容的隐藏和显示,详细内容请阅读本文,希望能对你有所帮助... 效

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert