本文主要是介绍【Chemical Science-2020】GGM: Scaffold-based molecular design with a graph generative model,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
用图生成模型生成基于scaffold的分子
paper:Scaffold-based molecular design with a graph generative model - Chemical Science (RSC Publishing)
code:GitHub - jaechanglim/GGM: graph generative model for molecule
code:GitHub - jaechanglim/GGM at branch_feature_predictor_merging
接受一个scaffold作为输入,并通过依次添加原子和键来扩展它,它可以向多个性质上进行优化,尽管搜索空间受限于固定的子结构
该模型不难,主要分为两部分:
1、Graph encoding
目标:a whole-molecule 图 G --> a latent vector z
给定一个分子图 G = (V(G), E(G)) , 首先将节点 v = V(G) 与节点特征向量连接(associate)起来,然后将每一个边 (u,v) = E(G) 与它对应的边特征向量 连接(associate)起来;
我们将原子和边的类型当成初始的节点和边的特征;
然后,我们将初始特征向量嵌入(embed)到具有更高维度的新向量中,使这些向量有足够的能力在节点和边之间表达深度信息。 为了完全编码分子的结构信息,我们希望每个嵌入向量的节点不仅包含其自身节点v的唯一信息,而且还包含v与其邻域的关系。这可以通过将每个节点的信息传播(propagate)到图中的其他节点来实现。。
编码器包括一个“ propagate ”阶段和一个" readout "阶段,我们把它写成:
(1)信息传播(propagate)包括两部分:
第一阶段:用一个信息函数 M 计算每一个结点与它邻居阶段的聚合信息:
第二阶段:用更新函数 U 将每个节点 聚合后的信息更新每个节点向量:
由公式(1)更新所有的节点的特征向量为,无论什么时候都使用一个固定的传播次数
(2)readout 阶段
如公式(2)所示,计算节点特征向量 的加权和,生成一个向量表示,将图总结为一个整体。最后,从隐空间中取出一个潜在向量z分布,其均值和方差由推出。
可以通过在计算聚合消息时引入附加向量 c 来调节图传播。在这种情况下,函数M和传播接受c作为附加参数(即,它们变为M(*,*,*,c)并且propagate(*,*,c))。
- 在编码输入图时,我们选择c与属性向量y,yS的串联,c 作为属性控制的生成。
- 在图解码过程中,我们使用y、yS和潜向向量z的串联作为条件向量。
2、Graph decoding
图解码的目的是从在图编码阶段采样的潜在矢量z中重建整个分子的图G。通过连续添加节点和边缘,从骨架图G0(分子的初始scaffold)构建整个分子图G。其中,Gt来表示由G0构造的任何瞬态(或完成)图。
图解码从准备和传播G0的初始scaffold特征开始。正如我们对G所做的那样,我们通过嵌入骨架分子的原子类型和键类型来制备G0的初始特征载体。这种初始嵌入与编码中的嵌入相同,将整个分嵌入。
然后,G0的初始特征向量由另一个交互网络传播固定的次数。
当传播结束时,通过下面的循坏添加边和节点:
第1阶段:节点添加(node addition)。选择原子类型或使用估计的概率终止构建过程,如果选择了原子类型,则在当前瞬态图Gt中添加一个新节点,例如w,并继续执行第2阶段。否则,请终止生成过程并返回图。
第2阶段:边缘添加(edge addition)。在给定新节点的情况下,选择连接类型或返回阶段1,并提供估计的概率。如果选择连接类型,则继续进行第3阶段。
第3阶段:节点选择(node selection)。从除具有估计概率的w之外的现有节点中选择一个节点,例如v。然后,使用在阶段2中选择的焊接类型将新边缘(v,w)添加到Gt。继续从阶段2添加边。
整个过程的流程如图1右侧所示。从第1-3阶段中排除的是选择合适异构体的最后阶段,我们将在下面单独描述。在每个阶段,模型通过估计候选动作的概率向量来绘制动作。根据当前阶段是否应添加原子(阶段1)、是否应添加边(阶段2)或选择要连接的原子(阶段3),概率向量由以下各项中的相应一项计算:
药物设计笔记(二)_m0_47163076的博客-CSDN博客
这篇关于【Chemical Science-2020】GGM: Scaffold-based molecular design with a graph generative model的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!