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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/9244.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

引入OSS

前置条件 AccessKey 引入依赖 都是官网上的&#xff1a;https://help.aliyun.com/zh/oss/developer-reference/java-installation?spma2c4g.11186623.0.i16 <!--若是创建项目的时候这个依赖勾选了就不用了--><!--不加启动会报错No active profile set, falling back…

JavaScript之数据类型(2)——复杂类型(object)

object的介绍&#xff1a; 我对于object的理解是和C/C中的结构体一样&#xff0c;是一个自定义的数据类型&#xff0c;我们可以通过多个简单的数据类型来定义一个便于我们使用的新的数据类型。 在网上某佬对于其解释如下&#xff1a; Object类型&#xff0c;我们也称为一个对象…

Windows命令行一键安装、配置WSL的方法

本文介绍在Windows电脑中&#xff0c;通过命令行的方式&#xff0c;快速、方便安装适用于Linux的Windows子系统&#xff08;Windows Subsystem for Linux&#xff0c;WSL&#xff09;的方法。 WSL是由微软开发的一项功能&#xff0c;允许在Windows操作系统上运行Linux发行版系统…

【Linux的文件篇章 - 磁盘文件】

Linux学习笔记---012 Linux之进程程序替换理解1、磁盘文件1.1、文件如何存取的问题1.2、了解磁盘的存储结构1.3、如何找到指定位置的扇区&#xff1f;1.4、对磁盘的存储进行逻辑抽象(了解OS对磁盘这样的硬件设备的抽象与管理) 2、磁盘级文件系统2.1、Linux文件系统特定2.2、文件…

Ansible--Templates 模块 Tags模块 Roles模块

一 Templates 模块 ①Jinja是基于Python的模板引擎。Template类是Jinja的一个重要组件&#xff0c;可看作一个编译过的模 板文件&#xff0c;用来产生目标文本&#xff0c;传递Python的变量给模板去替换模板中的标记。 ②在配置文件中&#xff0c;会有一些数据&#xff08;如…

Java毕设之基于SpringBoot的在线拍卖系统

运行环境 开发语言:java 框架:springboot&#xff0c;vue JDK版本:JDK1.8 数据库:mysql5.7(推荐5.7&#xff0c;8.0也可以) 数据库工具:Navicat11 开发软件:idea/eclipse(推荐idea) 系统详细设计 管理员功能模块 管理员登录&#xff0c;管理员通过输入用户名、密码、角色等信…

UE4_Water插件_Buoyancy组件使用

water插件提供了一个浮力Actor蓝图类。 需要注意的几个问题&#xff1a; 1、StaticMesh需要替换根组件。 2、需要模拟物理设置质量。 3、需要添加浮力组件&#xff0c;设置浮力点&#xff0c;应用水中牵引力。 4、最重要的是需要激活——自动启用。 5、调水波长的地方 双击图片…

FreeRTOS学习 -- 任务相关API函数

一、任务创建和删除API函数 FreeRTOS 最基本的功能就是任务管理&#xff0c;而任务管理最基本的操作就是创建和删除任务。 FreeRTOS的任务创建和删除API函数如下&#xff1a; 1、函数 xTaskCreate() 此函数用来创建一个任务&#xff0c;任务需要 RAM 来保存于任务有关的状…

前端js面试题--从字符串中删除删除注释代码

问题&#xff1a;从字符串中删除删除注释代码 描述&#xff1a; solution(weex,rex # and react\nflutter\nnative ssss !hybrid app, [#, !]) 写一个solution函数清除后面参数数组里面的字符串 打印效果 代码1 思路&#xff1a; 将字符全凡是有去掉标志符号的全部添加\n…

Java_File

介绍&#xff1a; File对象表示路径&#xff0c;可以是文件&#xff0c;也可以是文件夹。这个路径可以是存在的&#xff0c;也可以是不存在的&#xff0c;带盘符的路径是绝对路径&#xff0c;不带盘符的路径是相对路径&#xff0c;相对路径默认到当前项目下去找 构造方法&…

基于SSM的校园短期闲置资源置换平台(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的校园短期闲置资源置换平台&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过…

燃气电力瓶装气行业入户安检小程序开发

我们开发的小区业主入户安检小程序&#xff0c;旨在满足燃气、电力以及其他需要入户安检的行业需求。该程序支持自定义安检项目&#xff0c;实现线下实地安检与线上数据保存的完美结合。在安检过程中&#xff0c;我们可以拍照或录像&#xff0c;以确保安检的透明性和可追溯性&a…

渲染管线中光照的计算

文章目录 渲染管线中光照的计算前言法向量朗伯余弦定律漫反射环境光照镜面光照菲涅尔效应 表面粗糙度光照模型平行光源点光源衰减 聚光灯 渲染管线中光照的计算 前言 首先我们来看一下同一个模型在有光与无光下的区别&#xff1a; 无光&#xff1a; 有光 很明显的感知就是…

加速科技突破2.7G高速数据接口测试技术

随着显示面板分辨率的不断提升&#xff0c;显示驱动芯片&#xff08;DDIC&#xff09;的数据接口传输速率越来越高&#xff0c;MIPI、LVDS/mLVDS、HDMI等高速数据接口在DDIC上广泛应用。为满足高速数据接口的ATE测试需求&#xff0c;作为国内少数拥有完全自研的LCD Driver测试解…

WebSocket 来单提醒和客户催单功能

一&#xff1a;WebSocket &#xff1a; WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手&#xff0c;两者之间就可以创建持久性的连接&#xff0c; 并进行双向数据传输。 HTTP协议和WebSocket协议对比&#…

vue 代码样式问题

部分电脑存在样式错乱问题&#xff0c;部分电脑样式正常。最后发现是样式写在 el-col 里面导致的。 注意&#xff1a;写样式不要放在 el-row 或者 el-row &#xff0c;导致部分电脑会出现莫名其妙的样式问题 <el-row class"detail"><el-col class"it…

OSPF NSSA区域

原理概述 OSPF 协议定义了 Stub 区域和 Totally Stub 区域这两种特殊的非骨干区域&#xff0c;为的是精简 LSDB 中 LSA 的数量&#xff0c;同时也精简路由表中的路由条目数量&#xff0c;实现优化设备和网络性能的目的。根据定义&#xff0c; Stub 区域或 Totally Stub 区域中是…

Springboot项目使用redis实现session共享

1.安装redis&#xff0c;并配置密码 这里就不针对于redis的安装约配置进行说明了&#xff0c;直接在项目中使用。 redis在windows环境下安装&#xff1a;Window下Redis的安装和部署详细图文教程&#xff08;Redis的安装和可视化工具的使用&#xff09;_redis安装-CSDN博客 2…

PHP+MySQL组合开发 自定义商城系统源码 带完整的安装代码包以及安装部署教程

随着电子商务的蓬勃发展&#xff0c;越来越多的企业和个人希望拥有自己的在线商城系统。小编给大家分享一款基于PHP和MySQL技术栈&#xff0c;开发的一套自定义商城系统源码。该系统旨在帮助用户快速搭建稳定、高效的电子商务平台&#xff0c;并提供灵活的自定义功能&#xff0…

ORA-02020:过多的数据库链接在使用

一、问题描述 今天同事说&#xff0c;有一个查询功能&#xff0c;同时查了几个子平台的dblink&#xff0c;页面返回报错。 提示ORA-02020&#xff1a;过多的数据库链接在使用&#xff1b; bad SQL grammar 二、解决办法 1&#xff09;分析业务需求 分析业务场景 &#xff0c;发…