当前位置: 首页 > news >正文

机器学习与药物筛选的心得体会

机器学习在药物设计里面的应用可以说还是比较常见的,尤其是搞计算的都会或多或少的涉及到这块。比如国内做这块比较多的,浙江大学的侯廷军教授,北京化工大学的闫爱霞教授,华东理工大学的几个做模拟计算的老师,上海药物所,上海交大的张健教授等。根据我读过他们的文章,很少有人会走到实验验证这个阶段。都是拿个体系,做个模型,再做几个理论的验证,就把文章发表出去了。这其中的原因是啥子,为什么不做实验来验证,我之前也不是很明白。最近我自己结合自己的课题需要,也做了这方面的工作。在这里我给大家分享我的经验,希望帮助大家更好的理解机器学习与虚拟筛选。
机器学习最常用来分类,在各个领域都会用到。举个例子,在药物设计领域,有些化合物活性好,有些化合物活性不好,有些化合物活性适中。这里面就牵涉到分类了,Active VS Inactive。如果能建立一个理论的模型来区分Active 和 Inactive的话,那这个模型就可以用来预测未知的化合物。当前机器学习的方法主要包括:naïve Bayesian, support vector machine, recursive partitioning, andk-nearest neighbors等等。这些方法都需要一定的自变量和因变量为输入,输出当然是模型本身。自变量用的最多的是化合物的各种性质,比如分子量、极性、分子体积、分子表面积、氢键给体受体等,也可以是能够描述分子的指纹信息(Fingerprints);因变量就是分的类别(Active VS Inactive)。当然也可以分很多类,比如高活性、中活性、低活性、无活性。自变量的选择往往就决定你建立模型是不是达到一定可靠度最关键的因素(现在文章基本要求模型的准确度>80%以上吧,training set、test set、validation set)。关于自变量的选择,最常用的就是分子描述符(2D or 3D),能够计算描述的软件很多,MOE,DS,还有免费的一大堆,想知道的可以看我之前发的帖子。这里我给大家分享一下我做描述符选择的经验。
描述符优化(Molecular descriptor selection)
描述符优化方法很多,最常用的是GA方法(遗传算法来优化描述符),相关文献也很多,想了解这方法可以直接去查文献。这里我给大家说说另外一种方法。运用基本统计的方法来做,用到的软件SPSS。主要步骤,把该计算的描述符全部计算好,然后导成CSV文件,自变量是描述符,因变量是分类(比如1代表活性,-1代表非活性)这样我总结了四部,可以到达优化描述符的目的,如下:
( 1)Common values analysis
(2)Pearson correlation analysis
(3)A stepwise variable analysis
(4)Linear regression analysis
第一步主要是去除一些含有太多常值的描述符(比如0或者1等),这些描述对每个分子都一样,这样就对体系没区别性贡献,可以直接删除。
第二步主要是做描述符相关性分析,比如有些描述符就是代表类似的意思(分子量MW和分子质量MM)这样就出现描述符冗杂,这个可以再SPSS里面做,一般相关>0.9以上的都可以抹掉。
第三步主要做剔除一个描述符,对整体的影响,逐步剔除。
第四步主要做描述符和活性之前的关系回归分析,这个很关键,有些描述符和活性之前的相关性(R)就很明显,有的就不行。
经过这个过程,你可以把描述符优化到20-30个左右(我自己做的经验)。这样再去用各种机器学习的方法来做分类模型,基本上会得到不错的结果。这里我选择SVM和k-nearest neighbors(KNN)来具体说明。
SVM具体步骤:LIBSVM 3.17 package

1、把数据集转换为LibSVM能够识别的格式;这个可以用WEKA来实现转化,也可以用EXCEL里面的宏功能
2、将数据集进行简单的缩放,这个非常重要,建议必需做
3、使用一个比较合适的各函数
    一般情况下,我用都使用RBF函数:K(x,y)=exp(-r||x-y||^2)
4、优化超参数
    一般情况下用交叉验证(cross-validation)和梯度搜索(grid-search)来实现此功能;
5、用最好的超参数来训练训练集
6、测试测试集

这六步基本上就可以实现SVM的所有计算,文章里面经常出现的参数(FP,FN,TP,TN,AUC)等都可以拿到,根据模型的准确度,基本上可以判断模型的好坏,好的话,基本就可以去写文章了(很多人都这样做的)。
k-nearest neighbors方法:Orange 2.0 (Orange Data Mining),免费的软件,很好用。
步骤:
1、把数据集转换为Orange能够识别的格式;这个可以用WEKA来实现转化,也可以用EXCEL里面的CSV文件
2、选择K参数
A total of k number of vectors nearest tothe vector x are used to determine the class of that unclassified vector. Theclass of the majority of the k-nearest neighbors is decided as the predictedclass of the unclassified vector x.
4、调试参数(K)
    一般情况下用交叉验证(cross-validation)
5、构建模型
6、测试测试集
Orange结果输出很人性化,基本把所有参数都给你计算好了(FP,FN,TP,TN,AUC,GA),自己来判断模型的好坏。
还有很多人基于分子指纹作为描述符的,其实这个更合理。相对描述符而言,分子指纹代表的信息量更大,但分子指纹计算一般都牵涉到商业软件,很难去破解指纹具体的数字信息,这样就很难和免费的SVM或者KNN方法实现无缝衔接,我最近发现有个软件算出来的指纹,就是用位数代表指纹的(实数集)PaDEL-Descriptor,想用的可以去下载,很好用。计算好指纹,采用对应的方法构建模型就行,步骤就和前面一样了。这里面有几个经验给大家说说:
(1)指纹的维度,基本是越大,模型越好。但是达到一定程度,模型的准确度,也就不变了
(2)基于指纹的模型,一般会比基于描述的模型要好一点(这里我指的是各种考核参数,尤其准确度)
(3)实际应用效果,描述符会比指纹更能选到新的骨架化合物(novel scaffold)
(4)指纹的最大好处,可以分析出来优势片段和劣势片段,这对合成化学家来说非常重要!!!
也是文章比较亮的一个点
如果有可能,也可以联合2者来做模型,优势互补!!!
我们最近实验室也开发了一个基于原子中心片段的方法(Atom Center Fragments),原理很简单。片段产生是我老板的一个程序,后来被一个师弟整合到贝叶斯里面,可以实现分类,用到2个体系,其中一个就是我用的mTOR抑制剂分类,也做了一个在线的服务器(http://rcdd.sysu.edu.cn/mtor/)效果也还不错,但这个方法处理大分子(比如抗菌分子),效果不是很好。
至于用这些分类模型来做虚拟筛选,我个人感觉,还是非常吃力的。主要原因是富集的化合物数目太大(比如你预测SPECS化合物库,返回给你2W),这样后期遴选化合物就非常吃力。我做了另外一个就是单独用机器学习的方法来做的,虽然实验也验证了。但是遴选化合物的过程,非常复杂。
如果把机器学习和其他主流的方法经行串联,效果会很不错(我也是做了这方面的工作,实验的结果还是可以的),比如先机器学习,在分子对接。这样就大大减少了分子对接耗时的问题,毕竟机器学习,可以大大的缩小原始虚拟库的大小(一般20W就可以缩到2W),这样对接很快就可以做完。大家感兴趣的可以试试。
通过这些,不难发现,为什么做计算的人,尤其是用机器学习的方法来分类,都不会涉及后面的实验验证。因为单凭这一种方法,来做筛选,富集化合物太多,很难实现化合物的遴选。对需要文章毕业的人,可以搞搞文章。但对于想做药物的人,还是多思考一下,怎么才能更好的用在药物筛选过程中。

如果有想做这一块的可以和我交流。
科学无界,大爱无疆!
参考: 机器学习与药物筛选的心得体会 - Powered by Discuz!

相关文章:

机器学习与药物筛选的心得体会

机器学习在药物设计里面的应用可以说还是比较常见的,尤其是搞计算的都会或多或少的涉及到这块。比如国内做这块比较多的,浙江大学的侯廷军教授,北京化工大学的闫爱霞教授,华东理工大学的几个做模拟计算的老师,上海药物…...

初识数据结构

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝 熬过了我们不想要的生活&#xf…...

【阿里云】图像识别 智能分类识别 增加网络控制功能点(三)

一、增加网络控制功能 实现需求TCP 心跳机制解决Soket异常断开问题 二、Linux内核提供了通过sysctl命令查看和配置TCP KeepAlive参数的方法。 查看当前系统的TCP KeepAlive参数修改TCP KeepAlive参数 三、C语言实现TCP KeepAlive功能 四、setsockopt用于设置套接字选项的系…...

LeetCode 统计美丽子字符串 II【质因子分解,前缀和,哈希表】困难

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...

第一百八十一回 如何绘制阴影效果

文章目录 1. 概念介绍2. 使用方法2.1 SegmentedButton2.2 ButtonSegment 3. 代码与效果3.1 示例代码3.2 运行效果 4. 内容总结 1. 概念介绍 我们在本章回中介绍的SegmentedButton组件是一种分段式按钮,它把多个按钮连接成一组显示,组内再对不同的按钮进…...

Qt5.15.2静态编译 VS2017 with static OpenSSL

几年前编译过一次Qt静态库:VS2015编译Qt5.7.0生成支持XP的静态库,再次编译,毫无压力。 一.环境 系统:Windows 10 专业版 64位 编译器:visual studio 2017 第三方工具:perl,ruby和python python用最新的3.x.x版本也是可以的 这三个工具都需要添加到环境变量,安装时勾选…...

AIGC(生成式AI)试用 13 -- 数据时效性

数据时效性? 最新的数据,代表最新的状态,使用最新的数据也应该最有说服力。 学习需要时间,AIGC学习并接收最新数据的效果如何? 问题很简单,如何验证?这个需要找点更新快的对像进行验证。…...

Sass的嵌套CSS 规则详细教程

文章目录 前言父选择器的标识符&群组选择器的嵌套子组合选择器和同层组合选择器:>、和~嵌套属性后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:Sass和Less 🐱‍👓博主在前端领域还有很多知识和…...

Spark---SparkCore(一)

一、术语与宽窄依赖 1、术语解释 1、Master(standalone):资源管理的主节点(进程) 2、Cluster Manager:在集群上获取资源的外部服务(例如:standalone,Mesos,Yarn) 3、Worker Node(standalone):资源管理的从节点(进程)或者说管理本机资源的…...

单链表原来是这样实现的!

文章目录 前言1. 链表的概念及结构1.1在链表里,每节“车厢”是什么样的呢?1.2为什么还需要指针变量来保存下⼀个节点的位置? 2. 单链表的实现1. 定义结构体(Seqlist)2. 打印函数(SLTPrint)小插曲,创建节点函数CreateNode3. 尾插函…...

excel一个单元格换行方法

要是在同一个单元格内输入文字输入不下的话,我们是可以进行同一个单元格换行设置的,而且换行的方法也是有很多种,下面我们就一起来看一下有哪些方法吧。 excel一个单元格换行方法: 方法一: 1、我们可以直接按下alte…...

echart一键生成迁徙图

echart_move 介绍 echart迁徙图,选择起点和目的地生成迁徙图 软件架构 html echarts js 使用说明 将文件放到同一目录下打开index.html即可 默认是小飞机图标,如果想修改图标,将图片放到同一目录,如1.svg 代码修改为对应位…...

开发、测试、生产环境

开发环境:开发环境是程序猿们专门用于开发的服务器,配置可以比较随意, 为了开发调试方便,一般打开全部错误报告。简单讲就是项目尚且处于编码阶段,一般这时候会把代码放在开发环境中,不会放在生产环境中。 …...

红队攻防文库文章集锦

再救你一次,不要让欲望击溃你的意志 0.红队攻防 1.红队实战 红队攻防之特殊场景上线cs和msf CVE-2021-42287&CVE-2021-42278 域内提权 红队攻防之Goby反杀 红队攻防实战之钉钉RCE 红队攻防实战之从边界突破到漫游内网(无cs和msf) 红队攻防实战系列一之C…...

Vue框架学习笔记——键盘事件

文章目录 前文提要键盘事件(并不是所有按键都能绑定键盘事件)常用的按键不同的tab和四个按键keyCode绑定键盘事件(不推荐)Vue.config.keyCode.自定义键名 键码 神奇的猜想div标签和click.enterbutton标签和click.enter 前文提要 …...

Windows安装mysql8.0

官网地址:MySQL :: MySQL Community Downloads 选择相应版本信息下载 默认选择点击下一步 默认配置点击next 设置密码 默认配置...

Linux C++网络编程-王健伟

文章目录 1-1课程详细介绍1-2环境搭建详细介绍2-1nginx简介、选择理由、安装和使用2-2nginx整体结构、进程模型3-1学习nginx源码前的准备工作3-2nginx源码学法,终端和进程的关系说3-3信号的概念、认识、处理动作3-4Unix/Linux体系结构、信号编程初步3-5信号编程进阶…...

接收网络包的过程—— IP层->TCP层->Socket层

在 tcp_v4_rcv 中,得到 TCP 的头之后,我们可以开始处理 TCP 层的事情。因为 TCP 层是分状态的,状态被维护在数据结构 struct sock 里面,因而我们要根据 IP 地址以及 TCP 头里面的内容,在 tcp_hashinfo 中找到这个包对应…...

HTTP 响应头信息

HTTP 响应头信息 HTTP请求头提供了关于请求,响应或者其他的发送实体的信息。 在本章节中我们将具体来介绍HTTP响应头信息。 应答头说明Allow服务器支持哪些请求方法(如GET、POST等)。Content-Encoding文档的编码(Encode&#x…...

Android获取原始图片Bitmap的宽高大小尺寸,Kotlin

Android获取原始图片Bitmap的宽高大小尺寸,Kotlin val options BitmapFactory.Options()options.inJustDecodeBounds trueval decodeBmp BitmapFactory.decodeResource(resources, R.mipmap.p1, options)//此时,decode出来的decodeBmp宽高并不是原始图…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)&#xff…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦&#xff0…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...

SQL Server 触发器调用存储过程实现发送 HTTP 请求

文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...