基于QUBO模型的多体分子对接
技术背景
本文分享内容来自于最新的一篇名为Multibody molecular docking on a quantum annealer
的文章,这篇文章的核心思想,是使用QUBO(二次受限二元优化)模型来求解一个分子对接问题:
分子对接
如果我们考虑空间中有\(N\)个分子,这\(N\)个分子可以摆放在任意的位置,以任意的角度。那么这些不同的位置和角度,每一个都可以计算出来一个能量值,不论是使用分子力场的方法,还是使用第一性原理计算的方法。而这其中每一个能量较低的位置组合,都是一个潜在的分子对接形式。两个分子的对接就叫两体对接,两个以上分子的对接可以称为多体对接。目前大多数的分子对接软件支持的还是两体对接,随着分子数量的增长,多体对接的计算难易度有可能是随着分子数量指数增长的。具体的复杂度跟建模方式有关,例如,在这篇文章中用到的二元建模方法,采样空间就是指数增长的。
QUBO模型
QUBO(quadratic unconstrained binary optimization formulation)模型常常被应用于组合优化问题中,其哈密顿量(损失函数)的通用形式为:
\]
其中\(b_i\)是一个二元变量\(b_i\in\{0,1\}\)。使用QUBO模型解决问题的基本思路,首先要把问题映射到一个二元变量上。举一个最简单的例子,背包问题(Knapspack Problem)的二元建模,有\(M\)个物体和1个背包,如果我们决定把第\(j\)个物体放到背包中,那么对应的二元变量\(b_j=1\)。相反地,如果我们决定不把第\(j\)个物体放到背包中,那么就有\(b_j=0\)。最终完成QUBO模型的求解之后,我们会得到一串二元字符串\(000111000...10100111\),而这其中被标记为1的物体都会被放到背包里面。在我们这篇文章中要介绍的,就是如何使用QUBO模型来建模和求解多体分子对接的问题。
问题场景
这篇文章中求解的一个问题是三个\(\alpha\)螺旋的对接问题。因为主要是思想性的创新,所以用的体系简单一些,当然,这样也更加方便验证结果的正确性。而且做了一个降维的简化,实际上求解的是一个二维平面的对接问题:三个螺旋结构平行放置且没有错位:
QUBO建模
文章前面提到,我们要用QUBO模型来解决分子对接问题,首先要进行二元的建模,把问题转化为一个二元的模型。然后确定每一项所对应的系数,这样才能进入到模型的求解阶段。关于这个三螺旋的问题,QUBO模型研究的是这三个螺旋之间的两两相互作用(因为QUBO模型最高只能做到二次,对应的就是两体相互作用)。因为我们最终求解的目标是找到一些低能量的对接位点,因此我们可以启发性的使用相关的能量来作为系数。单点能好说,因为单个的分子不论放在什么位置,其能量只有内部结构决定。而两体相互作用能量(主要成分是范德华作用力)的参数需要结合QUBO建模来考虑。
这篇文章使用的方法是,对二维的空间进行打格点操作,把空间离散化。然后针对于每一个格点进行one-hot编码,例如说,2号螺旋在格点1而3号格点在格点2,那么对应的二元表述就是:
b_{(2-1)*2+0}=b_2=0;b_{(2-1)*2+1}=b_3=1
\]
之所以这里面one-hot只用到了2维,这是因为我们在处理三体问题时,其实可以把其中的一个螺旋作为中心点不动,因此实际上one-hot的维度是2维。这样一来,实际上我们的解要在\(2^{2G}\)的解空间中去寻找,这里\(G\)表示打的格点的数量,一般跟分子本身无关。可以类似的推导,如果是有\(N\)体的相互作用,那么最终解空间的大小就会是\(2^{(N-1)G}\),也就是我们作为的指数级别增长。
确定了建模方法之后,我们可以通过计算分子的单点能和格点中的两两相互作用能量,来获得QUBO模型的系数:
约束条件
聪明的小伙伴已经意识到了一个问题,在上一个章节中的建模方法,会导致一个问题是,解空间中包含了两个分子处在相邻格点甚至是同一个格点内这样的解。还有可能出现一种更加不合理的情况:得到的解里面可能只剩下一个分子,会出现分子丢失的问题,这是Non-Physical的解。为了避免此类问题,需要在建模中加上一个惩罚值Penalty。因为这里加惩罚项的主要目的是为了避免分子被抹去的问题,因此约束条件可以这样定义:
\]
这里\(x\)表示第\(x\)个分子,翻译成大白话就是:遍历所有的网格,你必然能找到且只能找到一个分子\(x\)。如果对所有的\(x\)加上这一项,那么就能尽可能的确保结果中不出现Non-Physical的解。不仅如此,一般情况下约束条件要双向约束,也就是过犹不及,因此一般都会采用二次形式的约束条件:
\]
要说明的是,这里约束条件只是作为一个目标,我们希望把\(f(b^x)\)这个约束条件优化到0,但实际上我们只能确保\(f(b^x)\)被加到QUBO模型完整的损失函数内的时候,得到完整的损失函数的最小值。
建模的最后,我们要得到带有惩罚值\(\gamma\)的最终哈密顿量(损失函数):
\]
其中\(\delta\)有:
\begin{matrix}
2\gamma, x=y\\
0, otherwise
\end{matrix}
\right.
\]
因为我们建模的时候固定了一个中心的\(\alpha\)螺旋,所以建模中的约束条件实际上是针对于可移动的单体目标的,这个集合被设定为\(X'\)。
求解QUBO模型
当QUBO建模完成后,QUBO模型的求解过程是固定的,目前而言有三种主流的方法:使用退火机求解、使用模拟退火算法求解、使用QAOA算法求解,其中QAOA算法相当于退火算法的一个离散化版本,但是因为可以在量子计算机上面进行求解,所以退火机求解和QAOA求解算法可以重点关注下。而这篇文章里面用到的是退火机和模拟退火,退火机使用的是加拿大公司Dwave的硬件,亚洲地区用光学做的退火机可能更多一些。
退火的大致原理,就是构造一个简单的哈密顿量\(H_0\)和对应的本征态\(|{\psi_0}\rangle\),以及目标哈密顿量\(H_{MBD}\)和目标量子态\(|{\psi_{MBD}}\rangle\),通过准静态过程实现\(H_{t}=\lambda H_0+(1-\lambda)H_{MBD}\)。根据绝热近似(adiabatic approximation)理论,我们最终可以制备出来目标哈密顿量的量子态,从而实现对目标哈密顿量的求解。在前面的文章中我们实现过使用绝热演化/量子退火算法求解矩阵本征态以及量子绝热算法求解最大切割问题,感兴趣的读者可以跳转去看一下退火算法的相关实现,这里不做赘述。
总而言之我们最终会得到一个本征量子态。而所谓的量子态在这个问题求解中的含义,其实对应的是一个求解空间的子空间。在这个子空间中进行采样,有更高的概率可以获得最终的最优解,并不是说这个量子态就是最终解了。而如果是通过退火机和量子计算机的体系来实现的话,可以做到高效的采样,从而做到更加快速的得到最优解。在我们引用的这篇文献中,重点介绍了一下惩罚值对于采样结果的影响,从而指导采样结果的选取。其实对于更多的工程问题而言,惩罚值的选取更多的依赖于经验,是一个经验参数。
文献里面的基本结论是这样的:如果惩罚值选取的过小,那么没办法区分开Physical的解和Non-Physical的解;如果惩罚值过高,则很难采样采到能量较低(较优)的Physical解;因此,适中的惩罚值会是一个更好的选择:
文献中还有一些更进一步的测试结果,还包含了退火机和模拟退火算法的效果比对,感兴趣的读者可以自行下载文献进行阅读。
总结概要
本文主要分享了文献Multibody molecular docking on a quantum annealer中的主要建模思路和初步的测试结果,可以实现QUBO模型求解多体分子对接的问题。在目前常见的分子对接软件中,更多的是实现的两体对接,多体对接的采样空间有可能会随着分子数量的增长而指数增长。而借助于量子退火机或者是量子计算机来求解这样的一个问题,不失为一个较好的思路。
版权声明
本文首发链接为:https://www.cnblogs.com/dechinphy/p/qubo_docking.html
作者ID:DechinPhy
更多原著文章:https://www.cnblogs.com/dechinphy/
请博主喝咖啡:https://www.cnblogs.com/dechinphy/gallery/image/379634.html
参考文献
- "Multibody molecular docking on a quantum annealer". Mohit Pandey, Tristan Zaborniak, Hans Melo, Alexey Galda, and Vikram Khipple Mulligan
基于QUBO模型的多体分子对接的更多相关文章
- 生信云实证Vol.12:王者带飞LeDock!开箱即用&一键定位分子库+全流程自动化,3.5小时完成20万分子对接
LeDock是苏黎世大学Zhao HongTao在博士期间开发的一款分子对接软件,专为快速准确地将小分子灵活对接到蛋白质而设计.LeDock优于大部分商业软件,在Astex多样性集合上实现了大于90% ...
- 大前端学习笔记整理【一】CSS盒模型与基于盒模型的6种元素居中方案
概览 CSS盒模型,规定了元素框来处理元素的 内容.内边距.边框和外边距的方式 元素部分是指内容部分,也是最实际的内容,包围内容的称之为内边距,内边距外围是边框,边框外围就是外边距:且外边距是透明的, ...
- 中国快递包裹总量的预测-基于SARIMA模型
code{white-space: pre;} pre:not([class]) { background-color: white; }if (window.hljs && docu ...
- 基于RBAC模型的通用企业权限管理系统
1. 为什么我们需要基于RBAC模型的通用企业权限管理系统 管理信息系统是一个复杂的人机交互系统,其中每个具体环节都可能受到安全威胁.构建强健的权限管理系统,保证管理信息系统的安全性是十分重要的.权限 ...
- 京东评论情感分类器(基于bag-of-words模型)
京东评论情感分类器(基于bag-of-words模型) 近期在本来在研究paraVector模型,想拿bag-of-words来做对照. 数据集是京东的评论,经过人工挑选,选出一批正面和负面的评论. ...
- 微软BI 之SSAS 系列 - 基于雪花模型的维度设计
基于雪花模型的维度以下面的 Product 产品与产品子类别,产品类别为例. DimProduct 表和 DimProductSubcategory 表有外键关系,而 DimProductSubcat ...
- AIOps探索:基于VAE模型的周期性KPI异常检测方法——VAE异常检测
AIOps探索:基于VAE模型的周期性KPI异常检测方法 from:jinjinlin.com 作者:林锦进 前言 在智能运维领域中,由于缺少异常样本,有监督方法的使用场景受限.因此,如何利用无监 ...
- 基于WSAAsyncSelect模型的两台计算机之间的通信
任务目标 编写Win32程序模拟实现基于WSAAsyncSelect模型的两台计算机之间的通信,要求编程实现服务器端与客户端之间双向数据传递.客户端向服务器端发送"请输出从1到1000内所有 ...
- 基于Select模型通信程序的编写,编译和执行
任务目标 编写Win32程序模拟实现基于Select模型的两台计算机之间的通信,要求编程实现服务器端与客户端之间双向数据传递.客户端向服务器端发送"计算从1到100的奇数和",服务 ...
- 基于EPOLL模型的局域网聊天室和Echo服务器
一.EPOLL的优点 在Linux中,select/poll/epoll是I/O多路复用的三种方式,epoll是Linux系统上独有的高效率I/O多路复用方式,区别于select/poll.先说sel ...
随机推荐
- 在.Net中使用Java代码?
前言 你没有看错,我确实在.Net6的项目中在编写java,我都using java了,算不算在写java那? using com.microsoft.sqlserver.jdbc; using ja ...
- AP渗透测试学习
1.测试指标 2.测试环境 SDK: Java JDK ,Android SDK 工具: 7zip dex2jar jd-gui apktool activity 劫持工具 3. ...
- 为什么要将Jenkins部署在k8s上
传统Jenkins的Master-Slave方案的缺陷 Master节点发生单点故障时,整个流程都不可用了 每个 Slave节点的配置环境不一样,来完成不同语言的编译打包等操作,但是这些差异化的配置导 ...
- PlatformIO+ESP32+Vscode+DS18B20温度传感器(一直输出-127)
DS18B20一直输出-127 ?? 一.硬件连线 二.代码 三.遇到的问题 一.硬件连线 将相应的线接到ESP wroom 32 二.代码 先在PlatformIO的library添加onWire库 ...
- K8S通过Yaml部署Nacos,注册服务报错503
报错信息: ErrCode:503, ErrMsg:server is DOWN now .detailed error message: Optional[Distro protocol XXXX] ...
- 逆向通达信Level-2 续六 (调试pad控件)
调试终端面版单元, 以及宿主窗口 调试大数据面版单元, 以及宿主窗口 逆向通达信Level-2 续十一 (无帐号登陆itrend研究版) 逆向通达信Level-2 续十 (trace脱壳) 逆向通达信 ...
- FFmpeg命令行之 Unknown encoder ‘libx264‘
在执行下面命令进行摄像头采集时,会报错 Unknown encoder 'libx264' ffmpeg -f dshow -i video="C1E Camera" -vcode ...
- 《TencentNCNN系列》 之param文件(网络结构文件)格式分析
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- Java-求根号n
平方,开根号在java中是很简单的,Math.sqrt(double n)或者 Math.pow(double a, double b),求a的b次方.但是我们可以自己想想,这些方法到底是怎么实现的. ...
- 记一次 .NET某施工建模软件 卡死分析
一:背景 1. 讲故事 前几天有位朋友在微信上找到我,说他的软件卡死了,分析了下也不知道是咋回事,让我帮忙看一下,很多朋友都知道,我分析dump是免费的,当然也不是所有的dump我都能搞定,也只能尽自 ...