OpenMM——教程学习(1)

  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 -hpdb4amber -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 stdoutprmtop = 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 Filesprmtop = AmberPrmtopFile('complex.prmtop')
inpcrd = AmberInpcrdFile('complex.inpcrd')# System ConfigurationnonbondedMethod = PME
nonbondedCutoff = 1.0*nanometers
ewaldErrorTolerance = 0.0005
constraints = HBonds
rigidWater = True
constraintTolerance = 0.000001
hydrogenMass = 1.5*amu# Integration Optionsdt = 0.004*picoseconds
temperature = 300*kelvin
friction = 1.0/picosecond
pressure = 1.0*atmospheres
barostatInterval = 25# Simulation Optionssteps = 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 Simulationprint('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 Equilibrateprint('Performing energy minimization...')
simulation.minimizeEnergy()
print('Equilibrating...')
simulation.context.setVelocitiesToTemperature(temperature)
simulation.step(equilibrationSteps)# Simulateprint('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.mzph.cn/news/830090.shtml

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

相关文章

一文讲清:什么是供应商管理?供应商管理怎么做?

供应商管理指的是对供应商的了解、选择、开发、使用和控制等综合性管理工作的总称。其目的在于建立起一个稳定可靠的供应商队伍,为企业生产提供可靠的物资供应。但是企业在进行供应商管理往往面临以下问题: 1、招投标,信息不透明 这主要表…

R语言的基本图形

一&#xff0c;条形图 安装包 install.packages("vcd") 绘制简单的条形图 barplot(c(1,2,4,5,6,3)) 水平条形图 barplot(c(1,2,4,5,6,3),horiz TRUE) 堆砌条形图 > d1<-c("Placebo","Treated") > d2<-c("None",&qu…

你不需要总是在 React 中使用 useState

在我审查的一个拉取请求中&#xff0c;我注意到在许多拉取请求中看到的一种模式。React 组件具有多个 UI 状态&#xff0c;例如 loading、error 和 success。 作者使用了多个 useState 钩子来管理这些状态&#xff0c;这导致代码难以阅读且容易出错&#xff0c;例如&#xff1a…

hadoop命令

hadoop命令 目录 hadoop命令 1.查看文件下面有哪些文件和目录 2.获取文件信息 查看文件内容 3.创建一个文件夹 4.剪切 1&#xff09;从本地hadoop剪切到hdfs并上传到hdfs 2&#xff09;剪切 从hdfs剪切到本地hadoop目录上 5.删除 1&#xff09;递归删除 2&#xff0…

springboot权限验证学习-下

上篇讲了rbac对于菜单的权限&#xff0c;下面准备完成按钮权限以及行数据和列数据权限 权限控制(按钮权限) 权限控制 操作权限就是将操作视为资源&#xff0c;比如删除操作&#xff0c;有些人可以有些人不行。于后端来说&#xff0c;操作就是一个接口。于前端来说&#xff0…

秋招后端开发面试题 - JVM底层原理

目录 JVM底层原理前言面试题Java 对象的创建过程&#xff1f;什么是指针碰撞&#xff1f;什么是空闲列表&#xff1f;/ 内存分配的两种方式&#xff1f;JVM 里 new 对象时&#xff0c;堆会发生抢占吗&#xff1f;JVM 是怎么设计来保证线程安全的&#xff1f;/ 内存分配并发问题…

k8s pod使用sriov

之前的文章中讲了k8s multus的使用&#xff0c;本章节来讲述下如何使用multus来实现sriov的使用。 一、sriov 简介 SR-IOV在2010年左右由Intel提出&#xff0c;但是随着容器技术的推广&#xff0c;intel官方也给出了SR-IOV技术在容器中使用的开源组件&#xff0c;例如&#…

3MF体积设计扩展

3MF 联盟最近宣布了他们最新的体积设计扩展&#xff08;volumetric design extension&#xff09;&#xff0c;用于通过基于体积的描述来编码几何形状和空间多样性属性。 该组织致力于推进 3D 打印的通用规范&#xff0c;目前正在新扩展达到 1.0 之前征求公众反馈。 NSDT工具推…

OpenCV 实现重新映射

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;OpenCV 实现霍夫圆变换 下一篇 :OpenCV实现仿射变换 目标 在本教程中&#xff0c;您将学习如何&#xff1a; 一个。使用 OpenCV 函数 cv&#xff1a;&#xff1a;remap 实现简单的重新…

20240428如何利用IDM下载磁链视频

缘起&#xff1a; https://weibo.com/tv/show/1034:4864336909500449 中国获奖独立纪录片《阿辉》揭秘红灯区“教父”的生存法则 5,751次观看 1年前 发布于 陕西 身为里中横 67.7万粉丝 互联网科技博主 微博原创视频博主 头条文章作者 https://weibo.com/tv/show/1034:4864…

数据通信-A

数据通信 一、数据通信网络基础二、VRP系统三、eNSP配置命令 不是从零开始&#xff0c;有一些基础&#xff0c;主要记录配置命令。一、数据通信网络基础 图标&#xff1a;主要是认识第一行。 常见术语&#xff1a;数据通信网络最基本的功能是实现数据互通。 数据载荷&#…

解决IDEA下springboot项目打包没有主清单属性

1.问题出现在SpringBoot学习中 , 运行maven打包后无法运行 报错为spring_boot01_Demo-0.0.1-SNAPSHOT.jar中没有主清单属性 SpringBoot版本为 2.6.13 Java 版本用的8 解决方法 1.执行clean 删除之前的打包 2.进行打包规范设置 2.1 3.进行问题解决 (借鉴了阿里开发社区) 使用…

[嵌入式系统-53]:嵌入式系统集成开发环境大全

目录 一、嵌入式系统集成开发环境分类 二、由MCU芯片厂家提供的集成开发工具 三、由嵌入式操作提供的集成开发工具 四、由第三方工具厂家提供的集成开发工具 一、嵌入式系统集成开发环境分类 嵌入式系统集成开发工具和集成开发环境可以按照不同的分类方式进行划分&#xff…

【LAMMPS学习】八、基础知识(5.2)粒度模型

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语&#xff0c;以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

将针孔模型相机 应用到3DGS

Motivation 3DGS 的 投影采用的是 CG系的投影矩阵 P P P, 默认相机的 principal point (相机光心) 位于图像的中点处。但是 实际应用的 绝大多数的 相机 并不满足这样一个设定&#xff0c; 因此我们 需要根据 f , c x , c y {f,c_x, c_y} f,cx​,cy​ 这几个参数重新构建3D …

centos 7 yum install -y nagios

centos 7 systemctl disable firewalld --now vi /etc/selinux/config SELINUXdisabled yum install -y epel-release httpd nagios yum install -y httpd nagios systemctl enable httpd --now systemctl enable nagios --now 浏览器 IP/nagios 用户名&#xff1a;…

vue学习的预备知识为学好vue打好基础

目录 Vue是什么 &#xff1f;如何使用Vue &#xff1f;Vue ApiVue入口apiVue实例apiVue函数api 无构建过程的渐进式增强静态HTMLVue模块化构建工具npmyarnWebpackvue-cliVite Vue是什么 &#xff1f; 文章基于Vue3叙述。 Vue (发音为 /vjuː/&#xff0c;类似 view) 是一款用于…

十大USDT交易平台大全XEX交易所

USDT是一种基于比特币区块链网络的加密代币&#xff0c;主要运用于数字货币交易平台&#xff0c;以稳定币为主。USDT的核心价值在于其与真实货币的固定兑换比率1:1&#xff0c;所以被称为Tether。随着加密货币市场的不断壮大&#xff0c;越来越多的交易平台开始支持USDT&#x…

2024深圳杯(东北三省)数学建模C题完整论文讲解(含完整python代码及所有残骸音爆位置求解结果)

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了2024深圳杯&#xff08;东北三省数学建模联赛&#xff09;A题多个火箭残骸的准确定位完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊…

【vscode环境配置系列】vscode远程debug配置

VSCODE debug环境配置 插件安装配置文件debug 插件安装 安装C/C, C/C Runner 配置文件 在项目下建立.vscode文件夹&#xff0c;然后分别建立c_cpp_properties.json&#xff0c; launch.json&#xff0c;tasks.json&#xff0c;内容如下&#xff1a; c_cpp_properties.json:…