OpenMM——教程学习(1)

news2024/12/23 10:15:44
  1. 如何从零开始做一个蛋白小分子动力学模拟

AmberTools将被用来生成输入文件,OpenMM 将被用来运行模拟,模拟平台为在线百度AI Stuio, 并使用GPU加速。
First thing’s first, 到PDB 蛋白数据库下载一需要模拟的靶点晶体,备用。
1. H++ web server ,输入蛋白编码,预处理蛋白,下载 后缀为 crd和top 两个文件备用 (Note: If you use it regularly, please register)
(如果第一步生成失败了,请阅读一下原因,如果是因为氨基酸序列缺失,backbone boken,or missing residue,调到第5步,使用openmm-setup修复下载,再回来走完整合流程。)
2. 在线(AI Studio)使用conda 安装一个独立的python3.9 环境,取名可为AmberTools (可能需要重启命令终端) ,如有询问y/n,输入y
(请自行用手机号提前注册一个百度AI studio平台的账号,新建一个"项目",点击"启动环境",这样,你在云端就有了一台性能不错的虚拟机)

conda create --name AmberTools python=3.9
  1. 激活python环境, 并安装AmberTools21,如有询问y/n,输入y (!注意,如果你是用本地计算机需要用conda activate 但是在百度的平台我们需要用sourcre activate)
source activate AmberTools
conda install -c conda-forge ambertools=21 compilers 

运行AmberTools 所包含的一些列工具处理小分子,合并小分子和蛋白,生成新的crd和top文件(相对于第1步)

  1. Windows本地电脑安装Anaconda,然后启动Anaconda命令行,输入(与第3步类似),并安装一个用于准备OpenMM动力学输入文件的图形界面工具,如有询问y/n,输入y
conda create --name openmm python=3.9 # 这一句命令后,可能需要关掉再打开
conda activate openmm
(openmm)conda install -c conda-forge openmm-setup

5.启动openmm-setup图形界面,你的默认浏览器将会自动弹出成为一个动力学准备软件界面, 输入openmm-setup,回车即可

(openmm)openmm-setup
  1. 回到百度AI Stuido, 在公开项目中搜索”OpenMM-蛋白-小分子动力学模拟“项目,喜欢,点赞后,fork到你自己的账号中,点击,”运行一下“。上传第5步生成的输入文件,开始模拟。
  2. 下载模拟生成的output.pdb或者output.dcd到本地计算机,使用VMD进行分析,分析的教程请自行搜索,再次不在赘述。

步骤3:(在继续之前,请验证你已经成功完成了ambertools的安装)
conda activate ambertools
注意,第1步下载的两个文件的名称分别为 0.15_80_10_pH6.5_1ODX.top,和0.15_80_10_pH6.5_1ODX.crd, 数字代表了生成这些文件的H++web server条件。这些名字是什么不重要,你可以随意修改。下面一条命令是利用这两个文件来重新生成一个蛋白pdb,我们后面的模拟就用这个新的蛋白。新蛋白的名字为0.15_80_10_pH6.5_1ODX.pdb

ambpdb -p 0.15_80_10_pH6.5_1ODX.top -c 0.15_80_10_pH6.5_1ODX.crd > 0.15_80_10_pH6.5_1ODX.pdb

接下来,我们需要用到最最开始我们下载的那个PDB结构了,虽然这个结构中的蛋白部分我们不再需要(因为我们刚刚新生成了一个),但是小分子还是要从这个结构中提取。并对提取的这个小分子进行加氢,或者还原,并对其格式进行正规化矫正。从这里开始,我们下面将一共生成6个与小分子有关的结构,即ligand1到ligand6,注意命名方式。

awk '$4=="0E8"' 1ODX.pdb > ligand1.pdb # 该命令意思为提取pdb文件的第四列,小分子在这里
reduce ligand1.pdb > ligand2.pdb # 还原,也就是向小分子加氢
#如果加氢失败,请使用open babel 加氢。
#conda install -c conda-forge openbabel
#obabel -ipdb ligand1.pdb -opdb -O ligand2.pdb -h

pdb4amber -i ligand2.pdb -o ligand3.pdb # 格式美化,或者格式矫正

(选择性步骤:用txt编辑器打开确认你的clean版本的小分子pdb文件已经加氢,并且其格式不同于格式标准化之前的版本)
接下来我们需要生成小分子的mol2格式文件
(注意!如果小分子含有氧原子如酮,需要特别注意加氢是否正确,特别是如果使用pymol代替reduce加氢的情况下)

antechamber -fi pdb -i ligand3.pdb -fo mol2 -o ligand4.mol2 -c bcc -pf y
#This step may take a little bit of time, upon finish, check "sqm.out", the last line should be
# -------------calculation complete---------------------
antechamber -i ligand4.mol2 -fi mol2 -o ligand5.prepi -fo prepi -pf y
parmchk2 -f prepi -i ligand5.prepi -o ligand6.frcmod

(ATTENTION: You DON’T have to generate prepi file, you could move on with ONLY mol2 file, but then you need modify “http://tleap.in” file accordingly.)
……………………………………………………………………………………………………………………………………
合并小分子和蛋白,并对复合物pdb格式进行标准化

cat 0.15_80_10_pH6.5_1ODX.pdb 0E8_clean_H.pdb > 1ODX_H.pdb
pdb4amber -i 1ODX_H.pdb -o 1ODX_clean_H.pdb

新建一个文件,名称与格式为 tleap.in, 写入下面的内容,保存

source leaprc.protein.ff14SB #Source leaprc file for ff14SB protein force field
source leaprc.gaff #Source leaprc file for gaff
source leaprc.water.tip3p #Source leaprc file for TIP3P water model
loadamberprep ligand5.prepi #Load the prepi file for the ligand
loadamberparams ligand6.frcmod #Load the additional frcmod file for ligand
mol = loadpdb 1ODX_clean_H.pdb #Load PDB file for protein-ligand complex
solvatebox mol TIP3PBOX 8 #Solvate the complex with a cubic water box
addions mol Cl- 0 #Add Cl- ions to neutralize the system
saveamberparm mol 1ODX.prmtop 1ODX.inpcrd #Save AMBER topology and coordinate files
quit #Quit tleap program

(As we have mentioned earlier, if you do not have a “prepi” file, that is fine, what you need do is delete the “loadamberprep” line and add a new line for loading the mol2 file directly.)

在命令终端使用AmberTools的tleap 运行这个文件

tleap -s -f 1ODX_tleap.in > 1ODX_tleap.out

这样我们就得到了新的两个文件1ODX.prmtop 1ODX.inpcrd。这两个文件将是第5步的输入文件。
步骤3是最容易出错也是最重要的一个步骤,请参考
Tutorial for the LEaP Program
在这里插入图片描述

选择 Amber 文件,然后上传上面得到的两个文件,OpenMM 会要求用户输入模拟的步数,即时长,模拟的溶剂类型,以及很多其他参数,正常情况下是都有一个默认值已经填好的,依次点击下一步,平台 platform 选择 CUDA,如果你可用的平台没有GPU则更改CUDA为CPU即可。最后保存, ”save all files" ,得到一个压缩文件。里面包含了我们openmm 模拟需要的文件和脚本。如果你不知道如何修改界面上的参数,请全部保持默认即可!
在这里插入图片描述在这里插入图片描述在这里插入图片描述

AmberInpcrdFile('SYS_gaff2.crd')

你需要把上一步生成的你的prmtop文件和inpcrd文件(或者crd)替换到以上两个括号里。

from openmm.app import *
from openmm import *
from openmm.unit import *
from sys import stdout

prmtop = AmberPrmtopFile('SYS_gaff2.prmtop')
inpcrd = AmberInpcrdFile('SYS_gaff2.crd')
system = prmtop.createSystem(nonbondedMethod=PME, nonbondedCutoff=1*nanometer,
        constraints=HBonds)
integrator = LangevinMiddleIntegrator(300*kelvin, 1/picosecond, 0.004*picoseconds)
simulation = Simulation(prmtop.topology, system, integrator)
simulation.context.setPositions(inpcrd.positions)
if inpcrd.boxVectors is not None:
    simulation.context.setPeriodicBoxVectors(*inpcrd.boxVectors)
simulation.minimizeEnergy()
simulation.reporters.append(PDBReporter('amber_output.pdb', 1000))
simulation.reporters.append(StateDataReporter(stdout, 1000, step=True,
        potentialEnergy=True, temperature=True))
simulation.step(10000)

你可以使用上面这段代码,也可以使用下面这一段,作用是一样的,模拟的参数文件稍有区别。 如果使用下面这一段,我们需要替换的两个文件是 “complex.prmtop" 和 “complex.inpcrd”

from simtk.openmm import *
from simtk.openmm.app import *
from simtk.unit import *

# Input Files

prmtop = AmberPrmtopFile('complex.prmtop')
inpcrd = AmberInpcrdFile('complex.inpcrd')

# System Configuration

nonbondedMethod = PME
nonbondedCutoff = 1.0*nanometers
ewaldErrorTolerance = 0.0005
constraints = HBonds
rigidWater = True
constraintTolerance = 0.000001
hydrogenMass = 1.5*amu

# Integration Options

dt = 0.004*picoseconds
temperature = 300*kelvin
friction = 1.0/picosecond
pressure = 1.0*atmospheres
barostatInterval = 25

# Simulation Options

steps = 1000000
equilibrationSteps = 1000
platform = Platform.getPlatformByName('CUDA')
platformProperties = {'Precision': 'single'}
dcdReporter = DCDReporter('trajectory.dcd', 10000)
dataReporter = StateDataReporter('log.txt', 1000, totalSteps=steps,
    step=True, speed=True, progress=True, potentialEnergy=True, temperature=True, separator='\t')
checkpointReporter = CheckpointReporter('checkpoint.chk', 10000)

# Prepare the Simulation

print('Building system...')
topology = prmtop.topology
positions = inpcrd.positions
system = prmtop.createSystem(nonbondedMethod=nonbondedMethod, nonbondedCutoff=nonbondedCutoff,
    constraints=constraints, rigidWater=rigidWater, ewaldErrorTolerance=ewaldErrorTolerance, hydrogenMass=hydrogenMass)
system.addForce(MonteCarloBarostat(pressure, temperature, barostatInterval))
integrator = LangevinMiddleIntegrator(temperature, friction, dt)
integrator.setConstraintTolerance(constraintTolerance)
simulation = Simulation(topology, system, integrator, platform, platformProperties)
simulation.context.setPositions(positions)
if inpcrd.boxVectors is not None:
    simulation.context.setPeriodicBoxVectors(*inpcrd.boxVectors)

# Minimize and Equilibrate

print('Performing energy minimization...')
simulation.minimizeEnergy()
print('Equilibrating...')
simulation.context.setVelocitiesToTemperature(temperature)
simulation.step(equilibrationSteps)

# Simulate

print('Simulating...')
simulation.reporters.append(dcdReporter)
simulation.reporters.append(dataReporter)
simulation.reporters.append(checkpointReporter)
simulation.currentStep = 0
simulation.step(steps)

最理想的情况是,你自己根据自己的需要或者理解用Openmm生成适合自己蛋白体系的代码区块然后替换上面的例子。如果你会使用本地Jupyter notebook, 理论上也是可以打开以上脚本运行的,但墙裂不建议这么做,因为那样速度将非常非常慢,还容易出错。自己有Linux系统的,可以考虑把步骤2和3挪到本地,这样会更容易一些。如:

https://github.com/quantaosun/Ambertools-OpenMM-MD

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

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

相关文章

告别人工校对烦恼,Kompas AI智能纠错一键搞定

在快节奏的工作环境中,撰写和校对公文是必不可少的环节。然而,传统的人工校对方式既耗时又容易出错,严重影响了工作效率和公文质量。在这里,我想向大家分享一款专业的校对助手——Kompas AI。它是一款采用先进的自然语言处理技术的…

分享:怎么做老阳分享的选品师项目比较赚钱

在当今的商业环境中,选品师项目逐渐成为了一个炙手可热的创业选择。老阳作为业内知名的选品师,其分享的经验和方法对于想要入行或提升业绩的选品师来说,无疑是宝贵的财富。那么,如何才能做好老阳分享的选品师项目,实现…

ssm088基于JAVA的汽车售票网站abo+vue

汽车售票网站的设计与实现 摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对汽车售票信息管理混乱,出错率…

【Camera KMD ISP SubSystem笔记】Request 流转与Bubble机制

ISP中断类型 SOF: 一帧图像数据开始传输 EOF: 一帧图像数据传输完成 REG_UPDATE: ISP寄存器更新完成(每个reg group都有独立的这个中断) EPOCH: ISP某一行结尾(默认20)就会产生此中断 BUFFER DONE: 一帧图像数据ISP完全写到DDR了 管理Isp request的几个List st…

系统思考——与其一样,不如不同

感谢开放大学的持续邀请,为创新创业的学生提供赋能。昨天的主题是《创业核心:从内在优势到价值创造》。在近期参与的创业活动中,我注意到许多创业者在介绍自己的公司时常说:“我们是做***的,最大的优势是比其家便宜。”…

mapbox实现3D模型飞行

贴个群号 WebGIS学习交流群461555818,欢迎大家 效果图 其实这种移动的可视化效果,在二维和三维中实现的思路都是一样的,无非是规划好路径,用几个关键节点,然后插值计算中间的点用以平滑移动效果,实时的根…

ETL中双流合并和多流合并的区别

一、ETL工具 ETLCloud数据集成平台集实时数据集成和离线数据集成以及API发布为一体的数据集成平台。与其他开源数据集成工具相比,采用轻量化架构、具有更快的部署速度、更快的数据传输速度、更低的运维成本,同时支持多租户的团队协作能力,能…

IDM下载器安装cmd注册

一、下载注册 安装包去IDM官网下载最新的试用版即可 或者直达百度网盘下载(担心被河蟹,放在txt中了)包含IDM下载器安装包和注册软件 IDM下载器安装包和注册软件下载地址链接 https://download.csdn.net/download/qq_31237581/89215452 如果…

一个自卑的人怎么变得自信

一个自卑的人怎么变得自信 自卑感是一种常见的心理状态,它可能源于个人对自己能力、外貌、价值等方面的负面评价。自卑感不仅会影响一个人的情绪状态,还可能阻碍其在生活、学习和工作中的表现。然而,自信并非一蹴而就的品质,它需要…

Elsevier——投稿系统遇到bug时的解决方法

重要:找期刊客服!!! 一、方法: 1. 点击进入与官方客服的对话 2. 按要求输入个人信息 3. 输入遇到的问题 比如: 主题:The Current Status is jammed. 详细描述:The Current State o…

Flask框架进阶-Flask流式输出和受访配置--纯净详解版

Flask流式输出🚀 在工作的项目当中遇到了一种情况,当前端页面需要对某个展示信息进行批量更新,如果直接将全部的数据算完之后,再返回更新,则会导致,前端点击刷新之后等待时间过长,开始考虑到用进…

ESP32-S3如何用socket通信

实验目的: 通过 Socket 编程实现 pyWiFi-ESP32-S3 与电脑服务器助手建立连接,相互收 发数据。 首先先来简单了解一下Socket 我们先来看看网络层级模型图,这是构成网络通信的基础: 我们看看 TCP/IP 模型的传输层和应用层&…

内网安全【1】——域信息收集/应用网络凭证/CS插件/Android/BloodHound

内容大纲: 概念名词: 局域网 (自己家) 工作组 (网吧) 内网域 (公司) 比如一家公司有1000台机器 运维人员去管理1000 不可能每台上去都进行软件的安装 环境的部署 密码的设置…

Vue+Echarts 实现中国地图和飞线效果

目录 实现效果准备 实现效果 在线预览:https://mouday.github.io/vue-demo/packages/china-map/dist/index.html 准备 高版本的echarts,不包含地图数据,需要自己下载到项目中 1、地图数据下载 https://datav.aliyun.com/portal/school/at…

大田场景下的路径检测论文汇总

文章目录 2020Visual Servoing-based Navigation for Monitoring Row-Crop Fields 2020 Visual Servoing-based Navigation for Monitoring Row-Crop Fields code: https://github.com/PRBonn/visual-crop-row-navigation 摘要: 自主导航是野外机器人执行精确农业…

vue-quill-editor富文本插件控制字数显示

最终效果 富文本编辑框&#xff0c;只统计内容&#xff0c;不包含标签以及样式&#xff0c;超出最大字数限制提示。 具体代码 html <div class"relative"><quillEditorv-model"form.nutriSuggestion"ref"myQuillEditor7":options&quo…

【Python数据库】MongoDB

文章目录 [toc]数据插入数据查询数据更新数据删除 个人主页&#xff1a;丷从心 系列专栏&#xff1a;Python数据库 学习指南&#xff1a;Python学习指南 数据插入 from pymongo import MongoClientdef insert_data():mongo_client MongoClient(hostlocalhost, port27017)co…

【网络原理】数据链路层 及 DNS域名系统

系列文章目录 【网络通信基础】网络中的常见基本概念 【网络编程】网络编程中的基本概念及Java实现UDP、TCP客户端服务器程序&#xff08;万字博文&#xff09; 【网络原理】UDP协议的报文结构 及 校验和字段的错误检测机制&#xff08;CRC算法、MD5算法&#xff09; 【网络…

为什么使用ZigBee技术开发智能家居产品?

随着智能家居市场的蓬勃发展&#xff0c;各种智能设备层出不穷&#xff0c;其中Zigbee技术因其独特的优势在这些智能设备中得到了广泛应用。那么&#xff0c;zigbee技术究竟具备哪些令人瞩目的优势&#xff0c;为什么能够得到如此广泛的应用呢&#xff1f; 什么是Zigbee协议&am…

Docker 容器操作

容器创建 就是将镜像加载到容器的过程。 新创建的容器默认处于停止状态&#xff0c;不运行任何程序&#xff0c;需要在其中发起一个进程来启动容器。 格式&#xff1a;docker create [选项] 镜像 常用选项&#xff1a; -i&#xff1a;让容器开启标准输入 -t&#xff1a;让…