学习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

相关文章

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

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

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

usaco 1.2 Transformations(模拟)

我的做法就是一个一个情况枚举出来 注意计算公式: ( 变换后的矩阵记为C) 顺时针旋转90°:C[i] [j]=A[n-j-1] [i] (旋转180°和270° 可以多转几个九十度来推) 对称:C[i] [n-j-1]=A[i] [j] 代码有点长 。。。 /*ID: who jayLANG: C++TASK: transform*/#include<

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识