一种改进的化学分子式切分方法与流程

文档序号:18976219发布日期:2019-10-29 03:18阅读:201来源:国知局
一种改进的化学分子式切分方法与流程

本发明属于化合物合成技术领域,尤其涉及一种改进的化学分子式切分方法。



背景技术:

在化合物合成的流程中,要对带有保护基团的试剂分子进行脱保护基、互相反应得到新化合物。从化学角度来看,这两个步骤都是化学反应;从计算的角度来看,分子脱掉保护基的化学反应是分子的“位点切分”,得到可以与其他分子反应(连接)的位点,之后互相反应则是分子间的“位点拼接”,把可发生化学反应的位点相连,得到新化合物。

计算上目前的处理方式是把第一步得到的带位点的分子记录下来,将不同反应得到的位点区分标记,如反应类型1得到的位点标记为[r1],位点的位置即分子在反应中脱去部分的原子的位置,然后将带有相同位点标记的分子进行拼接,如两个分子都带有[r1]则可以拼接。

目前的计算化学工具如openbabel、rdkit等,是通过模拟真实化学反应过程进行切分的,即输入待反应的化合物,得到反应后的化合物。



技术实现要素:

本发明的目的在于针对现有技术的不足,在分子式的图结构基础实现了一种切分方法,即用特定类型的化学反应切掉分子式的某一基团,切分模拟了化学反应中的一个子过程,在真实化学反应中,发生化学反应的化合物会被切掉一部分,之后与其他化合物结合,形成新的化合物。在通过大量试剂分子进行化合物合成的应用场景下,分子式切分是一个固有的子环节,试剂分子脱去固定基团首先要脱掉某个基团,才能与其他化合物结合。

本发明的目的是通过以下技术方案来实现的:一种改进的化学分子式切分方法,对于一个带位点或不带位点的分子式smi,将分子式中的位点记为[ri],i=0,1…n,[ri]对应于某一反应类型,n为反应类型的总数;

对一种反应类型reaction,定义一个反应类型串smi_sub和转换类型串smi_convert,表示在smi中如果存在smi_sub子串,则把该子串部分转换为smi_convert;smi_sub子串包含至少一个与smi其余部分连接的位点[ri],smi_convert在对应位置有相同的位点[ri],smi_convert还包含要切除的原子[*],切分过程如下:

(1)读入smi和smi_sub,转为图结构mol和mol_sub,生成mol_sub到mol的原子映射关系表maplist2,如果mol中不存在mol_sub子结构,则不再进行切分。如果mol中存在多个mol_sub子结构,则maplist2中保存了多个映射关系。在读入smi_sub时,保存连接位点[ri]的位置r_idx、[ri]邻接原子的位置r_connect_idx、smi_sub中[ri]以外的原子的邻接原子的邻接原子的位置connect_connect_idx。

(2)读入smi_convert,转为图结构mol_convert,保存smi_convert中连接位点[ri]的位置r_idx_convert。生成mol_convert到mol_sub的原子映射关系表maplist1,对于mol_convert中的每个原子,如果在mol_sub中找不到对应的原子,则不保存该原子的映射关系。

(3)对maplist2中的每一个映射关系,得到一个切分结果:

(3.1)把mol和mol_convert相加,得到更新后的mol。

(3.2)判断该映射关系是否会导致mol中的环状结构被切开,如果是,则跳过这个映射关系,执行下一个映射关系,否则,执行步骤3.3。

(3.3)在mol中连接smi和smi_convert的位点原子:对每个r_idx,通过maplist2找到mol中对应的原子r_a,将r_a与r_idx_convert对应原子的邻接原子r_b_neighbor相连。

(3.4)在mol中将smi的反应类型串对应部分smi_sub_map的剩余分枝和smi_convert相连:对smi_sub_map中每个原子搜索除connect_connect_idx对应原子以外的原子atom_branch,即该原子上要保留的分枝,将atom_branch与smi_convert中对应的原子相连,如果找不到对应原子则不处理。

(3.5)搜集待切除原子:搜集smi的反应类型串对应部分smi_sub_map的原子,位点原子和步骤3.4中的剩余分枝除外。

(3.6)用搜集到的待切除原子判断该映射关系是否会导致mol中的环状结构被切开,如果是,则跳过这个映射关系,执行下一个映射关系,否则,执行步骤3.7。

(3.7)拷贝键属性:从mol_sub中复制键属性到mol中新增的键。搜集新增原子,即新增键的两端的原子。

(3.8)更新双键的\和/空间属性:如果mol的空间属性结构中包含要切除的原子,则需要更新空间属性。双键空间属性结构中存储了双键两端的原子及与它们相连的原子,如果双键空间属性结构中的两端原子与上一步的新增原子之间有键,则把结构中的对应原子替换为新增原子。

(3.9)将搜集的要切除的原子切除。

(3.10)输出一个maplist2映射关系的切分后的分子。

进一步地,所述步骤(1)中,读入的分子式格式为canonicalsmiles,其他格式的输入转换为该格式。

进一步地,所述(3.2)中,判断该映射关系是否会导致mol中的环状结构被切开即判断mol_sub是否映射到了mol的环状结构的一部分,具体为:通过maplist2中的映射关系找到mol中待切位点[ri]的对应原子a,如果a有一个相邻原子a_neighbor不在要切除的列表中,且a_neighbor在环上,则环会被切开。

进一步地,所述(3.5)中,搜集待切除原子具体为:首先搜集smi_sub_map中位点原子的邻接原子atom_neighbor,搜集smi_convert中的位点原子atom_r,然后递归搜集smi_sub_map中每个原子的除位点原子和步骤3.4剩余分枝以外的原子及该原子分枝上的原子。

进一步地,所述(3.6)中,判断该映射关系是否会导致mol中的环状结构被切开具体为:对每个待切除原子,如果它有一个相邻原子a_neighbor不在搜集到的待切除原子中,且a_neighbor在环上,则环会被切分。

进一步地,所述(3.7)中,从mol_sub中复制键属性到mol中新增的键,即找到mol_sub中每个键两端的原子,找到在mol中对应的两个原子,将这两个原子之间的键属性更新为mol_sub中对应键的属性值。

本发明的有益效果是:本发明在原子、化学键的图结构上实现分子式的切分,操作灵活性强,可定制性强,适用于对于多种情形的切分。通过找出待切分化学式中与表示反应类型的反应类型串匹配的部分,用表示转换类型的反应类型串替换这一部分,并保留化学式中与反应类型串相连的分枝,实现正确的切分。

附图说明

图1为本发明方法流程图;

图2为本发明的切分示例1。

图3为本发明的切分示例2。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明提供的一种改进的化学分子式切分方法,具体如下:

对于一个带位点或不带位点的分子式smi(假设输入格式为canonicalsmiles,其他格式的输入也可转换为该格式),将分子式中的位点记为[ri],i=0,1…n,[ri]对应于某一反应类型,是用试剂分子进行该类型的化学反应得到的,n为反应类型的总数;

对一种反应类型reaction,定义一个反应类型串smi_sub和转换类型串smi_convert,表示在smi中如果存在smi_sub子串,则把该子串部分转换为smi_convert。smi_sub子串包含至少一个与smi其余部分连接的位点[ri],smi_convert在对应位置有相同的位点[ri],smi_convert还包含要切除的原子[*]。切分过程大致是找到化学式中与反应类型串匹配的部分,用转换类型串替换这一部分,并保留化学式中与反应类型串相连的分枝,切分过程如下:

1.读入smi和smi_sub,转为图结构mol和mol_sub,生成mol_sub到mol的原子映射关系表maplist2,如果mol中不存在mol_sub子结构,则不再进行切分,说明分子式smi不能发生反应类型reaction的化学反应。如果mol中存在多个mol_sub子结构,则maplist2中保存了多个映射关系,此时说明分子式smi有多个基团可以发生该类型的化学反应。

在读入smi_sub时,保存连接位点[ri]的位置r_idx、[ri]邻接原子的位置r_connect_idx、smi_sub中[ri]以外的原子的邻接原子的邻接原子的位置connect_connect_idx。

2.读入smi_convert,转为图结构mol_convert,保存smi_convert中连接位点[ri]的位置r_idx_convert。生成mol_convert到mol_sub的原子映射关系表maplist1(有的反应变化较大,不能得到完全对应关系),对于mol_convert中的每个原子,如果在mol_sub中找不到对应的原子,则不保存该原子的映射关系。

3.对maplist2中的每一个映射关系,得到一个切分结果:

3.1.把mol和mol_convert相加,即将两者的数据结构堆叠,得到更新后的mol。

3.2.判断该映射关系是否会导致mol中的环状结构被切开,如果是,则跳过这个映射关系,执行下一个映射关系,否则,执行步骤3.3;判断该映射关系是否会导致mol中的环状结构被切开即判断mol_sub是否映射到了mol的环状结构的一部分,具体为:通过maplist2中的映射关系找到mol中待切位点[ri]的对应原子a,如果a有一个相邻原子a_neighbor不在要切除的列表中,且a_neighbor在环上,则环会被切开。

3.3.在mol中连接smi和smi_convert的位点原子:对每个r_idx,通过maplist2找到mol中对应的原子r_a,将r_a与r_idx_convert对应原子(即“r_idx_convert+smi中的原子个数”位置的原子)的邻接原子r_b_neighbor相连。

3.4.在mol中将smi的反应类型串对应部分smi_sub_map的剩余分枝和smi_convert相连:对smi_sub_map中每个原子搜索除connect_connect_idx对应原子以外的原子atom_branch,即该原子上要保留的分枝,将atom_branch与smi_convert中对应的原子相连(通过maplist1找到smi_convert中对应的原子),如果找不到对应原子则不处理。

3.5.搜集待切除原子,主要是smi的反应类型串对应部分smi_sub_map的原子,位点原子和步骤3.4中的剩余分枝除外:首先搜集smi_sub_map中位点原子的邻接原子atom_neighbor,搜集smi_convert中的位点原子atom_r,然后递归搜集smi_sub_map中每个原子的除位点原子和步骤3.4剩余分枝以外的原子及该原子分枝上的原子。

3.6.用搜集到的待切除原子判断该映射关系是否会导致mol中的环状结构被切开,如果是,则跳过这个映射关系,执行下一个映射关系,否则,执行步骤3.7;判断该映射关系是否会导致mol中的环状结构被切开具体为:对每个待切除原子,如果它有一个相邻原子a_neighbor不在搜集到的待切除原子中,且a_neighbor在环上,则环会被切分。

3.7.拷贝键属性:从mol_sub中复制键属性到mol中新增的键,即找到mol_sub中每个键两端的原子,找到在mol中对应的两个原子,将这两个原子之间的键属性更新为mol_sub中对应键的属性值。搜集新增原子,即新增键的两端的原子。

3.8.更新双键的\和/空间属性:由于空间属性是单独存储的,需要单独处理,如果mol的空间属性结构中包含要切除的原子,则需要更新空间属性。双键空间属性结构中存储了双键两端的原子及与它们相连的原子,如果双键空间属性结构中的两端原子与上一步的新增原子之间有键,则把结构中的对应原子替换为新增原子。

3.9.将搜集的要切除的原子切除。

3.10.输出一个maplist2映射关系的切分后的分子,即把mol转换为canonicalsmiles格式。

切分示例1:如图2所示,(a)、(b)、(c)、(d)、(e)依次为:待切分子式、反应类型、转换类型、待切分子式与转换类型分子相加、切分的最终结果,为了显示方便,用s代替了[r],用[sc]代替了[*],对应的化学式依次为:

o=c=nc1cccc1

o=c=n[s]

[s]nc([sc])=o

o=c=nc1(cccc1)n(c)c(=o)[sc]

c1(cccc1)nc(=o)[sc]

切分示例2:如图3所示,(a)、(b)、(c)、(d)依次为:反应类型、转换类型、待切分子式、切分的最终结果,其中xx即为[*]原子,s为[r]原子,对应的化学式依次为:

[s]c=c

[s]c([*])c[*]

ccoc(=o)/c=c/c(o)=o

ccoc(=o)c(c(c(=o)o)[*])[*]

在切分处理过程中,对反应类型串(第1个分子式)对应部分的剩余分枝c(o)=o和=o进行了保留,并与smi_convert(第2个分子式)对应原子相连。

需要声明的是,本发明内容及具体实施方式意在证明本发明所提供技术方案的实际应用,不应解释为对本发明保护范围的限定。在本发明的精神和权利要求的保护范围内,对本发明作出的任何修改和改变,都落入本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1