Brief Bioinform. | 如何使用人工智能进行多种药物相互作用预测?

预测药物相关的多重相互作用对于药物开发和安全监测至关重要。近日,《Briefings in Bioinformatics》发表了一篇综述文章,系统地回顾了人工智能在药物-药物(DDI)、药物-食品(辅料)(DFI)和药物-微生物组(DMI)相互作用中的应用,包括人工智能多重交互的模型、评价指标、算法和数据库等。

常用算法和数据库

常用算法

人工智能(AI)已被用于以多种方式预测药物效果,如发现新的抗病毒药物和优化病毒感染的治疗、药物发现、预测蛋白质-配体结合亲和力。方法可以大致分为两类:机器学习(ML)和深度学习(DL)。

机器学习(ML)是一类计算的总称,可以从大量记录的信息中挖掘隐藏的标准,并将其用于预测或计算。近年来,用于计算预测的 ML 方法越来越流行,它可以帮助科学家处理大数据、总结规律和预测未知问题,常见的ML算法包括k-最近邻(KNN)、决策树(DT)、随机森林(RF)、朴素贝叶斯(NB)、支持向量机(SVM)、极限梯度提升(XGBoost)、逻辑回归(LR)、梯度提升决策树(GBDT)等。

为了实现有效的预测和分类,深度学习(DL)算法可以通过训练具有几个隐藏层的深度神经网络来学习原始数据的分布,以产生抽象的高级特征。目前,该方法可成功应用于靶点检测、蛋白质位置点预测、药物靶点预测和药物相互作用等领域。卷积神经网络(CNN)、递归神经网络(RNN)和深度神经网络(DNN)是目前用于药物发现的三种主要类型的人工神经网络。

常用数据库

多种药物相互作用的预测

体内药物相互作用包括DDI、DFI和DMI。药物在体内吸收、分布和代谢后,其疗效可能会发生变化。在肝脏中,药物或食物可以用作P450酶的抑制剂或诱导剂,以影响药物代谢。在胃肠道中,药物及其代谢产物、药物或药物代谢产物与食物之间可能存在多种相互作用。在肠道中,微生物与药物或药物代谢产物相互作用,影响药物代谢或药物作用

DDI & DTI:药物相互作用的模型应用

DFI:药物-食物相互作用的模型应用

DMI:药物-微生物相互作用的模型应用

药物相互作用检测的计算方法为实验室和临床研究提供了有利的选择。

当前数据库中有许多已知的药物相互作用和药物特征,这些生物医学实体都是相关的。它们包含复杂的关系和隐藏的结构信息。这些多模态和复杂的数据在预测模型的开发中至关重要。因此,我们考虑是否可以适当地整合两个数据源,以使结果更准确。此外,数据的质量将直接影响分析结果。然而,如何有效获取高质量数据,整合不同来源的数据,并指导其在模型学习中的合理使用,将是一个具有挑战性和关键性的研究课题。

此外,许多研究缺乏对预测结果的实验验证或仅部分验证了结果。在结果分析中,不应依赖模型或其他模型评分指标的准确性。它们的最终结果需要广泛的临床验证来证明预测的准确性。

每个研究人员都从不同的角度评估模型,由于他们的重点不同,不同模型之间没有统一的评估指标。因此,不同模型之间的测量和比较需要在没有统一标准的情况下从多个角度进行,这对研究人员来说是一个挑战,他们可能需要在实验中下载相同的数据和代码,以从其他角度进行测试和评估。

目前没有足够的模型来预测DFI和DMI,希望未来对这些主题的研究能够激发学者和科学家的兴趣。药物相互作用研究目前主要局限于涉及两种药物或两种物质的研究,关于多种相互作用的研究结果值得进一步研究。此外,还没有基于人工智能方法的综合模型来同时研究体内可能发生的药物相互作用,包括药物-药物相互作用、药物-食物相互作用和药物-微生物相互作用。这种完整的方法将大大减少临床医生的工作和开发新药的时间。

参考文献

Chen S, Li T, Yang L, et al. Artificial intelligence-driven prediction of multiple drug interactions[J]. Briefings in Bioinformatics, 2022.

图片均来源于参考文献,如有侵权请联系删除。

本文转载于网络 如有侵权请联系删除

相关文章

  • 开启和使用Win10中的内置虚拟机平台功能。

    1、点击[此电脑]2、点击[属性]3、点击[控制面板主页]4、点击[程序] 5、点击[程序和功能]6、点击[启用或关闭Windows功能]7、点击[虚拟机平台]8、点击[确定]

  • JVM深入理解-内存物理结构&类加载

    背景对于JVM这块儿的知识,我估计大部分的都是只有在需要面试的时候才会拿出来复习一下,然后就又放下来。也是因为这块儿是Java最底层的部分,非常难懂。其实如果真的说认真、细心的去撸一下,了解透彻,应该就不会那么容易忘记。今天的主要目的也是根据Oracle的官方文档来一步一步的理解与学习,并且用用一些demo来验证理论。Java虚拟机内存结构我们先来看一下JVM一个大概的物理结构图(请注意,不叫内存模型):堆的划分我们首先看一下官方地址对于运行时数据区域的一个划分:https://docs.oracle.com/javase/specs/jvms/se8/html/index.html2.5.Run-TimeDataAreas2.5.1.ThepcRegister2.5.2.JavaVirtualMachineStacks2.5.3.Heap2.5.4.MethodArea2.5.5.Run-TimeConstantPool2.5.6.NativeMethodStacks堆堆存放:对象、数组(官方证明:Theheapistherun-timedataareafromwhichmemory

  • 解决ThreadLocal的内存泄露问题

    ThreadLocal的内存泄露问题   根据上面Entry方法的源码,我们知道ThreadLocalMap是使用ThreadLocal的弱引用作为Key的。下图是本文介绍到的一些对象之间的引用关系图,实线表示强引用,虚线表示弱引用:   如上图,ThreadLocalMap使用ThreadLocal的弱引用作为key,如果一个ThreadLocal没有外部强引用引用他,那么系统gc的时候,这个ThreadLocal势必会被回收,这样一来,ThreadLocalMap中就会出现key为null的Entry,就没有办法访问这些key为null的Entry的value,如果当前线程再迟迟不结束的话,这些key为null的Entry的value就会一直存在一条强引用链: ThreadRef->Thread->ThreaLocalMap->Entry->value 永远无法回收,造成内存泄露。   ThreadLocalMap设计时的对上面问题的对策: ThreadLocalMap的getEntry函数的流程大概为:首先从ThreadLocal的直接索引位置(通过Th

  • Sentry Web 性能监控 - Metrics

    系列 1分钟快速使用Docker上手最新版Sentry-CLI-创建版本快速使用Docker上手Sentry-CLI-30秒上手SourceMapsSentryForReact完整接入详解SentryForVue完整接入详解Sentry-CLI使用详解SentryWeb性能监控-WebVitals目录Apdex失败率吞吐量(Total,TPM,TPS)延迟平均事务持续时间P50阈值P75阈值P95阈值P99阈值频率UserMisery自定义阈值ApdexApdex是一种行业标准指标,用于根据您的应用程序响应时间(responsetime)跟踪和衡量用户满意度(satisfaction)。Apdex分数提供特定transaction或端点中满意(satisfactory)、可容忍(tolerable)和失败(frustrated)请求的比率。该指标为您提供了一个标准来比较transaction性能,了解哪些可能需要额外优化或调查,并为性能设定目标。以下是Apdex的组成部分及其公式:T:目标响应时间的阈值。Satisfactory(满意度):当页面加载时间小于或等于T时,用户对使用该应用

  • dotnet core 和 dotnet Framework 启动可执行文件的差别

    在Windows下,使用.NETFramework构建出来的应用,可以只有一个可执行文件,在可执行文件里面包含了IL代码。而使用.NETCore构建出来的应用,将会包含一个Exe可执行文件,和对应的Dll文件,而IL代码将放在Dll文件里面。那么使用.NETFramework和使用.NETCore所输出的Exe可执行文件有什么差别在dotnetcore或dotnet5下,默认输出的Exe可执行文件是AppHost文件,这是一个纯Win32可执行文件,里面不包含IL代码。在用户双击运行此Exe可执行文件的时候,将会运行起来这个Win32应用,在这里面将调用起CLR引擎,执行放在Dll的IL代码。此部分逻辑相对复杂,详细请看dotnetcore应用是如何跑起来的通过AppHost理解运行过程而在.NETFramework里面,根据ManagedExecutionProcess官方文档可以了解到,输出的Exe可执行文件里面,格式是符合PE格式的文件,但是在PE文件中包含了从元数据和MSIL代码。在双击可执行程序运行的时候,首先进入的operatingsystemloader将会判断PE文件的

  • openssl1.0在mac下的编译安装(踩坑精华原创)

    踩坑回顾: 由于不小心在mac做了一下brew版本升级,然后用pip3安装一个第三方lib就报错了(涉及到openssl库):ImportError:dlopen(/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload/_ssl.cpython-36m-darwin.so,2):Librarynotloaded:/usr/local/opt/openssl/lib/libssl.1.0.0.dylib根据提示,应该是缺少了openssl1.0.0的两个库:libcrypto.1.0.0.dyliblibssl.1.0.0.dylib我的macOS版本:10.15.6(19G2021)那如何在mac上安装openssl1.0.0呢,网上大多数文章都是推荐使用brew直接安装openssl,但实际上无法安装成功,在这里我给大家分别介绍网上的安装方法和我本地编译安装的方法。brew安装 用brew安装openssl1.0.0(我试了下,按照这种方式,

  • 禁止在构造函数里调用虚函数

    在构造函数中调用虚函数会导致程序出现莫名其妙的行为,这主要是对象还没有完全构造完成。下面我们先来看一段代码:classB { protectedB() { Method(); } protectedvirtualvoidMethod() { Console.WriteLine("BMethod"); } } classA:B { privatereadonlystringstr="你好"; publicA(stringstr) { this.str=str; } protectedoverridevoidMethod() { Console.WriteLine(str); } publicstaticvoidMain() { vard=newA("AMethod"); } }复制在这里我要问一下各位读者,在上述代码中打印出的内容是什么?大部分读者会回答“AMethod”,实际上的答案是“你好”。这是为什么呢?这是因为基类的构造函数调用一个定义在本类中的但是为派生类所重写的虚函数,程序运行的时候会调用派生类的版本,程序在运行期的

  • ​走近鹅厂专家 | Ta们靠什么成为专家?

    | 导语 鹅厂的专家们,愿意学习,也很会学习;Ta们的思考方法,也各有一套。Ta们不设限、勤思辨,注重在实践中寻找真知、追求极致。 对于鹅厂专家,小伙伴们在景仰之余,也在思量着,Ta们到底是怎样的一群人?有哪些本领能让Ta们成为专家? 有哪些绝招可以让我们借鉴?如果在鹅厂只做纯专业、裸专家,到底有没有出路?   带着这些问题,企业文化部走访了公司多位专家,听他们讲述故事、分享经验、提炼方法,希望能通过专家们的访谈,为小伙伴们答疑解惑。    今天,我们专访了最近一次晋升的六位专家,Ta们中有4岁就上学的28岁“小鲜肉“、有校招进入鹅厂后就坐上“直升机”的技术美眉,有NBA直播主持人、有海归博士,也有二宝妈妈,此外,我们还采访到15级专家,请他现身说法,分享心得。    在和专家们的访谈中,让人感受最深刻的就是,Ta们愿意学习,也很会学习。他们有的通过集中式阅读快速进入新领域,有的在专业领域深钻细磨,有的则是跳出框框广泛涉猎。他们的思考方法也各有一套:有的不断复盘总结创新,修Bug的体力活也能玩出新花样;有的主动跳出舒适圈,反复警戒自己要拥抱变化;有的则是以逆向思维挑战书本经典、质疑国外

  • 动态图展示 6 个常用的数据结构,一目了然!

    数据结构的确很枯燥,尤其是初学时候,不知道到底有啥用。不过随着编码年限的增长,我们越会发现它真的很有用,巧妙的数据结构是算法高效实现的助推剂。今天的文章不会用文字和静态图展现常用的数据结构,因为这种普遍的讲解在博客、书籍太多了,根本不需要我在这里啰里啰嗦。今天我们使用动态图,展现最最基本的、常用的数据结构,让我们起航吧!1线型数组线型数组最好理解,就是逐个插入元素,逐个删除元素,有严格的顺序。 2栈栈遵循先进后出,后进先出,本动态图使用链表实现栈:3队列使用数组实现的队列,先进队列的,在执行Dequeue操作时,会先出队。如下,元素5是第一个入队的,所以Dequeue操作发生时,第一个出队:使用链表实现的队列:4线性查找线性查找的关键码如果位于序列后部,查询性能就会变差。如下查找735时,几乎快搜索一遍:5二分查找二分查找,每次搜索都会使区间减半,性能更好。每次查找,灰色显示的区间表示关键码不可能位于的区间。6二分查找树二分查找树的左子树都小于根节点,右子树都大于根节点。节点插入过程如下,依次在原有树中插入节点值等于1,4,7,3的节点节点删除过程如下,依次删除值等于4的节点,值等于5

  • HTTP请求响应状态码汇总

     HTTP请求状态码汇总,加粗的比较常见:httpStatusCodes:100:"Continue",101:"SwitchingProtocols",200:"OK",201:"Created",202:"Accepted",203:"Non-AuthoritativeInformation",204:"NoContent",205:"ResetContent",206:"PartialContent",300:"MultipleChoice",301:"MovedPermanently",302:"Found",303:"SeeOther",304:"NotModified",305:"UseProxy",307:"TemporaryRedirect",400:&q

  • Hibernate事务配置

    //Hibernate事务管理//事务 设置事务级别 事务服务层连接 01事务什么是事务?逻辑上的一组操作,要么一起成功,要么就都不算。不能有的执行了,有的没执行 事务的特性?原子性事务不能分隔隔离性执行一个事务时,不应受到其它事务的干扰一致性事务执行前后,数据的完整性要保持一致持久性操作完成后就在数据库中事务的隔离级别?Readuncommitted所有问题都会发生Readcommitted解决脏读问题Repeatableread解决脏读和不可重复读Serializable解决所有问题,效率较低隔离级别详细SQL事务 02设置事务隔离级别在核心配置文件hibernate.cfg.xml当中通过数字来代表不同的隔离级别<propertyname="hibernate.connection.isolation">4</property>复制设置的值是1,2,3,4代表四个隔离级别03事务业务层连接为什么在服务层使用事务? 在dao层的工作是连接数据库做各个基本功能,比如增删改查等。而服务层的作用才是去组织dao的小功能去实现完整的业务逻辑并返

  • Mybatis案例超详解(上)

    Mybatis案例超详解(上)前言:本来是想像之前一样继续跟新Mybatis,但由于种种原因,迟迟没有更新,快开学了,学了一个暑假,博客也更新了不少,我觉得我得缓缓,先整合一些案例练练,等我再成熟点理解再透彻点之后再详细更新,如果仅仅是为了更新博客而忽视质量的话,有违我的初心,所以我决定,暂时转移路线,整合一些案例,为了以后更新更好的博客而准备。此篇我会由浅入深进行整理,适合新手练习,希望能对一些有需求的朋友有所帮助。案例准备开发工具:IDEA前端页面:在Bootstrap官网https://getbootstrap.com/下载BootstrapCSS、JavaScript和字体的预编译的压缩版本 从jquery.com下载jQuery库 案例解析创建Maven项目创建数据库CREATEDATABASEmoocmybatis; USEmoocmybatis; ​ CREATETABLEusers( idINTAUTO_INCREMENTPRIMARYKEYCOMMENT'用户编号', usernameVARCHAR(50)NOTNULLCOMMENT'登

  • 微信小程序向左滑动删除操作(类仿微信、QQ)

    上一个小程序的项目里面做过这个功能,当时没有记录下来,今天特意做了一个小的demo放在了github上面,下次在开发中遇到的话就可以直接拿下来代码复用了。效果很简单,类似于微信扣扣删除聊天栏的效果,想左滑动,出现删除按钮,点击即可删除。github地址:https://github.com/wangxiaoting666/swipeleft-delete wxml:<!--index.wxml--> <viewclass="container"> <scroll-viewstyle='height:{{height}}px;'scroll-y='{{scrollY}}'class='msg-list'bindscroll='onScroll'> <viewwx:for="{{msgList}}"wx:key="id"class='msg-item'animation='{{it

  • leetcode-747-Largest Number At Least Twice of Others(求vector的最大值和次大值)

    题目描述:Inagivenintegerarray nums,thereisalwaysexactlyonelargestelement.Findwhetherthelargestelementinthearrayisatleasttwiceasmuchaseveryothernumberinthearray.Ifitis,returnthe index ofthelargestelement,otherwisereturn-1.Example1:Input:nums=[3,6,1,0] Output:1 Explanation:6isthelargestinteger,andforeveryothernumberinthearrayx, 6ismorethantwiceasbigasx.Theindexofvalue6is1,sowereturn1.复制Example2:Input:nums=[1,2,3,4] Output:-1 Explanation:4isn'tatleastasbigastwicethevalueof3,sowereturn-1.复制Note:num

  • 十二条Linux运维面试必备经典笔试/面试题,来挑战一下!

    又到了一年一度的秋招,作为运维方向,看了一些面经,收集了一些笔试面试题,总结了一下,贴出来仅供参考,有错误的地方还请指出.1.Linux设置环境变量暂时的:exportMYNAME=”newname”echo$MYNAMEnewname永久的:通过改变/etc/profile实现EG:exportCLASSPATH=./java_HOME/lib;$JAVA_HOME/jre/lib更改文件后执行source/etc/profile2.TCP连接的特点(1)面向连接:采用C/S模型(2)全双工(3)安全可靠:①流量控制:解决接收方不能不及时处理数据的问题②拥塞控制:解决因网络通信延迟带来的数据丢失问题③差错控制:解决数据被破坏、重复、时序和丢失的问题(4)基于字节流3.为什么TCP连接需要三次握手,两次不可以吗?为什么?两次不可以三次握手连接过程(1)建立连接时,客户端发送SYN(SYN=j)包到服务器,并进入SYN_SEND状态,等待服务器响应、、确认(2)服务器收到SYN包,必须确认客户端的SYN(ACK=j+1),同时自己也发送一个SYN包,即SYN+ACK包此时服务器进入SYN

  • 【教程】kangle配置cdn 用kangle+ep控制面板架设CDN详细图文教程

    CDN的全称是ContentDeliveryNetwork,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度。用ep控制面板来架设cdn非常方便,下面我们来说一下设置过程注意:用ep控制面板做cdn最好每台服务器上安装同版本的easypanel,本例是以2.6.28版本我们以下面4个ip来测试:ip:23.224.125.118 为主节点ip:91.134.180.118为辅节点ip:185.184.221.174 为辅节点ip:154.91.147.162 为辅节点首先把这四台服务器都安装好kanlge和ep控制面板登陆23.224.125.118这台主节点服务器的3312管理后台,点击后台左边的多节点设置然后在

  • MyBatis获取参数值的两种方式

    MyBatis获取参数值的两种方式MyBatis获取参数值的两种方式:${}和#{}${}的本质就是字符串拼接,#{}的本质就是占位符赋值${}使用字符串拼接的方式拼接sql,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引号;但是#{}使用占位符赋值的方式拼接sql,此时为字符串类型或日期类型的字段进行赋值时,可以自动添加单引号单个字面量类型的参数若mapper接口中的方法参数为单个的字面量类型此时可以使用${}和#{}以任意的名称获取参数的值,注意${}需要手动加单引号多个字面量类型的参数若mapper接口中的方法参数为多个时此时MyBatis会自动将这些参数放在一个map集合中,以arg0,arg1...为键,以参数为值;以param1,param2...为键,以参数为值;因此只需要通过${}和#{}访问map集合的键就可以获取相对应的值,注意${}需要手动加单引号map集合类型的参数若mapper接口中的方法需要的参数为多个时,此时可以手动创建map集合,将这些数据放在map中只需要通过${}和#{}访问map集合的键就可以获取相对应的值,注意${}需要手动加单引号实体

  • Properties类

    基本介绍:   1)专门用于读写配置文件的集合类     配置文件的格式:       键=值   2)注意不要有空格,之不需要用引号,默认类型是String   3)Properties的常见方法     load:加载配置文件的键值对到Properties对象     list:将数据显示指定设备     getProperty(key):根据键获取值     setProperty(key,value):设置键值对到Properties的对象     store:将Properties中的键值对存储到配置文件,在idea中,保存信息到配置文件,如果文件中含有中文,会储存为Unicode码 packagecom.javazq.java; importjava.io.FileNotFoundException; importjava.io.FileReader; importjava.io.IOException; importjava.util.Properties; /** *Copyright(C),2018-2021,Mr.Lin *Author:Mr.Lin *Dat

  • GIT使用

    拉取新项目 查看分支 刷新分支,查看新的分支 更新代码,拉取远程最新代码 方法1: 方法2: 对比代码差异: 对比不同的版本: 拉取新分支: 不积跬步,无以至千里;不积小流,无以成江海。

  • -linux-进程管理

    一进程介绍 程序:存放代码的文件 (静态) 进程:程序的运行过程 (动态) 同一个程序可能对应多个进程 父进程:程序运行时产生的第一个进程 子进程:由父进程衍生fork()出来的进程 注意:如果父进程终止,子进程也会随之被终止 (守护进程) [root@arther-linux~]#yuminstallnginx-y [root@arther-linux~]#systemctlstartnginx [root@arther-linux~]#psaux|grepnginx root20370.00.0112824980pts/0S+18:370:00grep--color=autongin 复制 1进程-进程状态(R、S、D、T、Z、X) 进程概念 正在执行的程序 正在计算机执行的程序实例 能分配处理器并有处理器执行的实体 进程的两个基本元素是程序代码和代码想关联的数据集。进程是一种动态描述,但并不代表所有的进程都在执行。这就可以引入进程状态。 进程在内存中因策会略或调度需求, 会处于各种状态: Linux下的进程状态 staticconstchar*consttask_stat

  • HTML5特性之AJAX跨域

      js跨域问题一般会考虑iframe、jsonp。   后端语言设置响应头:header('Access-Control-Allow-Origin:*),*号表示允许所有域名,可以将*号改为指定允许的访问域名。

相关推荐

推荐阅读