首页> 中国专利> 一种确定smiles表达式之间是否具有子结构关系的方法

一种确定smiles表达式之间是否具有子结构关系的方法

摘要

本发明公开了一种确定smiles表达式之间是否具有子结构关系的方法,包括:定义并存储常见原子、化学键和支链关系;定义切片最小粒度:相邻原子与之间的化学键关系与主支链关系作为最小粒度单位;定义起始原子和终止原子,其中起始原子为所述最小粒度对应的第一个原子,终止原子为所述最小粒度对应的第二个原子;基于常见原子、化学键和支链关系对获取的smiles表达式进行分析以将smiles表达式切割成一个个原子对,统计smiles表达式包含的环的个数及原子对的种类、种类个数并存储到哈希表中;根据原子对的种类、种类个数、环的个数确定smiles表达式之间是否具有子结构关系。本发明方法可用于化学式部分结构检索,方法简单,执行效率高。

著录项

  • 公开/公告号CN106021474A

    专利类型发明专利

  • 公开/公告日2016-10-12

    原文格式PDF

  • 申请/专利号CN201610330605.6

  • 申请日2016-05-18

  • 分类号G06F17/30(20060101);G06F17/22(20060101);

  • 代理机构武汉科皓知识产权代理事务所(特殊普通合伙);

  • 代理人魏波

  • 地址 430081 湖北省武汉市青山区建设一路

  • 入库时间 2023-06-19 00:39:52

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-04-15

    专利实施许可合同备案的生效 IPC(主分类):G06F16/31 专利申请号:2016103306056 专利号:ZL2016103306056 合同备案号:X2022420000026 让与人:武汉科技大学 受让人:武汉比邻软件有限公司 发明名称:一种确定smiles表达式之间是否具有子结构关系的方法 申请日:20160518 申请公布日:20161012 授权公告日:20190625 许可种类:普通许可 备案日期:20220330

    专利实施许可合同备案的生效、变更及注销

  • 2019-06-25

    授权

    授权

  • 2016-11-09

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20160518

    实质审查的生效

  • 2016-10-12

    公开

    公开

说明书

技术领域

本发明属于化学技术领域,涉及一种确定smiles表达式之间是否具有子结构关系的方法,具体涉及一种通过分析化学式的smiles结构,去判断此化学式与其他化学式是否具有子结构匹配关系的方法;应用于化合物子结构查询。

背景技术

化合物子结构查询在化学的许多领域中都有应用,如QSAR中对意义片段(子结构)的抽取,分子设计中对单元片段(子结构)的建模,合成设计中对合成子(子结构)的分割,以及光谱解析中对发色团(子结构)的组合等等都离不开结构匹配,而结构匹配又是进行结构性质研究的前提,也就是子结构查询的前提。

Smiles是一种线性码,即是一种用ASCII字符串明确描述分子结构的规范。线性码的实质是将分子中原子、键以及其它信息通过一定的命名规则进行符号化,然后按一定顺序进行排列而成的线性符号(一般为英文字符和ASCH码符号)序列。线性码具有命名的唯一性和单一性,且具有存储空间要求低的特点,能够满足子结构查询的基本要求。是一种比较理想的计算机内表示化学结构的方法。

化学式结构匹配中。如今常用的方法是采用对smiles编码改进后的smarts编码进行化学式结构匹配。Smarts是一种扩展形式,专门用于化学数据子结构查询的一种化学描述编码。而如今很多软件只是支持smiles来表达化学式信息,且smiles可很方便与分子式文件进行转换。而如何通过只分析smiles来判断化学结构子结构关系至今还没有较好的方式。

发明内容

为了解决上述技术问题,本发明提供了一种通过分析化学式的smiles结构,去判断此化学式与其他化学式是否具有子结构匹配关系的方法。

本发明所采用的技术方案是:1.一种确定smiles表达式之间是否具有子结构关系的方法,其特征在于,包括以下步骤:

步骤1:定义并存储常见原子、常见化学键和常见支链关系;

步骤2:定义切片最小粒度;相邻原子与之间的化学键关系与主支链关系作为最小粒度单位;

步骤3:定义起始原子和终止原子;其中起始原子为所述最小粒度对应的第 一个原子,终止原子为所述最小粒度对应的第二个原子;

步骤4:基于常见原子、化学键和支链关系对获取的smiles表达式进行分析以将smiles表达式切割成一个个原子对,统计smiles表达式包含的环的个数及原子对的种类、种类个数并存储到哈希表中;其中所述原子对根据相邻原子与之间的化学键关系与主支链关系确定;

步骤5:对化学式切片结果,根据原子对的种类、种类个数、环的个数确定smiles表达式之间是否具有子结构关系。

作为优选,步骤1中所述常见原子包括:H、C、N、O、S、F、Cl、Br、[N+]、[N-]、[O+]、[O-];所述常见化学键包括:单键、双键、三键、楔型向上键、楔形向下键、离域键、顺反不确定键、空心键、不确定键;所述常见支链包括:一个原子上包含一个支链、一个原子上包含二个支链。

作为优选,步骤4中所述将smiles表达式切割成一个个原子对,具体实现包括以下子步骤:

步骤4.1、首先对那些存储异构smiles的字符串剔除异构字符;

步骤4.2、统计环的个数与环边拆分位置的原子对;

步骤4.3、对经过预处理与去环结构后的smiles字符串进行循环遍历,判断ch[stop]的值情况,其中ch[stop]代表遍历字符串时,下标所处位置对应的字符值;

若为“=”,则化学键=“=”;起始原子为紧靠该位置前的第一个原子,终止原子为该位置后的第一个原子;

若为“#”,则化学键=“#”;起始原子为紧靠该位置前的第一个原子,终止原子为该位置后的第一个原子;

若为“(”,该位置前的第一个原子也就是起始原子与左括号内的内容,组成新的字符串,设置为str1;起始原子与对应右括号后的内容,组成新的字符串,设置为str2;将str1,str2作为新的smiles表达式进行切片流程处理;

若为“)”,位置指针向左寻找,找到与该括号匹配的左括号位置,并将左括号左边的第一个原子作为起始原子,位置为起始位置;

若为其他字符,则化学键=“”;起始原子为紧靠该位置前的第一个原子,终止原子为该位置后的第一个原子;

步骤4.4、根据公式:原子对=起始原子+化学键+终止原子。得到原子对, 并存储到哈希表map中;

步骤4.5、将此次切片结果存储到哈希表map中,key值为片段名,value存储为该片段的个数;切片结果展示的是smiles结构式切成片段的种类与个数。

作为优选,步骤4.2中所述统计环的个数,其具体实现包括以下子步骤:

步骤4.2.1A:遍历smiles表达式每一个字符,观察是否有数字字符;

步骤4.2.2A:若包含数字,记住该数字的位置,从该位置后继续遍历直到找到包含同样数字字符,环的个数加1;过滤掉这两个位置的数字,组成新的字符串;

步骤4.2.3A:对新组成的字符串进行遍历,寻找新的数字字符;

步骤4.2.4A:当新组成的字符串无数字符,存储环的个数,则环的个数统计结束。

作为优选,步骤4.2中所述统计环边拆分位置的原子对,其具体实现包括以下子步骤:

步骤4.2.1B:遍历smiles表达式,统计环边拆分位置的原子对及对应原子对种类数量加1;

步骤4.2.2B:对剔除数字后的smiles表达式遍历,统计表达式存在原子对与对应原子对数量。

作为优选,步骤4.3中获取起始原子的具体实现包括以下子步骤:

步骤4.3.1A:定义常见的双原子列表,目前有常见的Br,Cl原子,将该列表存入配置文件中;

步骤4.3.2A:判断是否为双原子;列表中存在的第一个字符,设置为ch1,若是的话,继续判断第二个字符ch2,若第二个原子也是,则起始原子=ch1+ch2+“”;若第二个原子不是,则起始原子=ch1+“”;

步骤4.3.3A:判断是否为括号;若为括号,起始位置加1,继续对新的字符判断;

步骤4.3.4A:判断是否存在离子;若存在“[”字符,则继续寻找直到遇到“]”字符;则“[”与“]”之间组成的字符串即为起始原子,起始原子=“[”+ch1+ch2+……+chn+”]”。

作为优选,步骤4.3中获取终止原子的具体实现包括以下子步骤:

步骤4.3.1B:定义常见的双原子列表,目前有常见的Br,Cl原子,将该列表存入配置文件中;

步骤4.3.2B:判断是否为双原子;列表中存在的第一个字符,设置为ch1,若是的话,继续判断第二个字符ch2,若第二个原子也是,则终止原子=ch1+ch2+“”;若第二个原子不是,则终止原子=ch1+“”;

步骤4.3.3B:判断是否为括号;若为括号,起始位置加1,继续对新的字符判断;

步骤4.3.4B:判断是否存在离子;若存在“[”字符,则继续寻找直到遇到“]”字符;则“[”与“]”之间组成的字符串即为终止原子,终止原子=“[”+ch1+ch2+……+chn+“]”。

作为优选,步骤5的具体实现包括以下子步骤:

步骤5.1:将两个待匹配的smiles表达式进行切片处理,待匹配的smiles表达式切片结果记为A,被匹配的smiles表达式结果切片结果记为B;

步骤5.2:判断,A环的个数是否大于B环的个数;

若是,则不具有子结构关系,本流程结束;

若否,则继续执行下述步骤5.3;

步骤5.3:判断,A的种类是否大于B的种类;

若是,则不具有子结构关系,本流程结束;

若否,则继续执行下述步骤5.4;

步骤5.4:判断,A每种种类的个数是否大于B对应种类的个数;

若是,则不具有子结构关系,本流程结束;

若否,则具有子结构关系,本流程结束。

使用本方法可用于判断两个化学结构式之间是否一个结构式是另一个结构式的部分结构,也可用于化学结构式检索;方法简单,执行效率高。

附图说明

图1为本发明实施例的切片整体流程图;

图2为本发明实施例的获取起始原子流程图;

图3为本发明实施例的获取终止原子流程图;

图4为本发明实施例的匹配流程图。

具体实施方式

为了便于本领域普通技术人员理解和实施本发明,下面结合附图及实施例对本发明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不用于限定本发明。

本发明提供的一种确定smiles表达式之间是否具有子结构关系的方法,包括以下步骤:

1.确定常见原子,化学键,支链关系。常见的原子(Atom):H,C,N,O,S,F,Cl,Br,[N+],[N-],[O+],[O-]。常见的化学键(Bond):单键,双键,三键,楔型向上键,楔形向下键,离域键,顺反不确定键,空心键,不确定键。

2.分析smiles表达式包含的信息。smiles存储的信息主要包含,原子种类,化学键,支链关系。

3.定义切片最小粒度:相邻原子与之间的化学键关系与主支链关系作为最小粒度单位。决定化学式分子式结构的主要因素有,原子的种类个数,原子之间的化学键,支链。

4.定义起始原子和终止原子,其中起始原子为所述最小粒度为应的第一个原子;终止原子为所述最小粒度对应的第二个原子。

5.将匹配的smiles表达式与待匹配的smiles通过切片算法处理,将smiles表达式切割成一个个原子对。统计原子对的种类,个数,并存储到哈希表中。

6.对化学式切片结果通过匹配算法判断是否具有部分结构关系。

接下来详细讲解切片算法与匹配算法。

本算法会设置常用五个变量,起始原子,终止原子,化学键值,起始原子位置,终止原子位置。附图上分别以startAtom,stopAtom,bond,start,stop命名。

一、切片流程图参照附图1,切片算法描述如下:

Step1:预处理。此次匹配流程是不考虑异构smiles情况,所以首先会对那些存储异构smiles的字符串剔除异构字符。如“/”,“”。

Step2:统计环的个数与环边拆分位置的原子对。

其详细过程如下:

(1)遍历smiles表达式每一个字符,观察是否有数字字符;

(2)若包含数字,记住该数字的位置,从该位置后继续遍历直到找到包含同 样数字字符。环的个数加1。存储环边拆分位置的原子对。过滤掉这两个位置的数字,组成新的字符串;

(3)对新组成的字符串进行遍历,寻找新的数字字符;

(4)当新组成的字符串无数字符,存储环的个数。则环的个数统计结束;

Step3:对经过预处理与去环结构后的smiles字符串进行循环遍历,判断ch[stop]的值情况。

Step4:若为“=”,则化学键=“=”。起始原子为紧靠该位置前的第一个原子,终止原子为该位置后的第一个原子。

Step5:若为“#”,则化学键=“#”。起始原子为紧靠该位置前的第一个原子,终止原子为该位置后的第一个原子。

Step6:若为“(”,该位置前的第一个原子也就是起始原子与左括号内的内容,组成新的字符串,设置为str1;起始原子与对应右括号后的内容,组成str2;将str1,str2作为新的smiles表达式进行切片流程处理。此方式运用的迭代算法。

Step7:若为“)”,位置指针向左寻找,找到与该括号匹配的左括号位置,并将左括号左边的第一个原子作为起始原子,位置为起始位置。

Step8:若为其他字符,则化学键=“”。起始原子为紧靠该位置前的第一个原子,终止原子为该位置后的第一个原子。

Step9:根据原子对=起始原子+化学键+终止原子。得到原子对,并存储到哈希表map中。

Step10:此次切片结果存储到哈希表map中,key值为片段名,value存储为该片段的个数。切片结果展示的是smiles结构式切成片段的种类与个数。

二、其中起始原子的getStartAtom()方法为获取起始原子,获取流程图参照附图2,获取起始原子流程说明如下:

Step1:从起始位置对应的字符进行判断,会将常用的双原子列表存入配置文件中;

Step2:判断是否为双原子。列表中存在的第一个字符,设置为ch1,若是的话,继续判断第二个字符ch2,若第二个原子也是,则起始原子=ch1+ch2+“”。若第二个原子不是,则起始原子=ch1+“”;

Step3:判断是否为括号。若为括号,起始位置加1,继续对新的字符判断;

Step4:判断是否存在离子。若存在“[”字符,则继续寻找直到遇到“]”字符。则“[”与“]”之间组成的字符串即为起始原子,起始原子=“[”+ch1+ch2+……+chn+”]”;

三、获取getStopAtom()终止原子的流程图参照附图3,获取终止原子流程说明如下:

Step1:从终止位置对应的字符进行判断,会将常用的双原子列表存入配置文件中;

Step2:判断是否为双原子。列表中存在的第一个字符,设置为ch1,若是的话,继续判断第二个字符ch2,若第二个原子也是,则终止原子=ch1+ch2+“”。若第二个原子不是,则终止原子=ch1+“”;

Step3:判断是否为括号。若为括号,起始位置加1,继续对新的字符判断;

Step4:判断是否存在离子。若存在“[”字符,则继续寻找直到遇到“]”字符。则“[”与“]”之间组成的字符串即为终止原子,终止原子=“[”+ch1+ch2+……+chn+“]”;

四、以上为切片算法描述。获取切片结果集后,需要根据切片结果集进行,匹配检测。匹配流程图参照附图4。匹配算法描述如下:

将两个待匹配的smiles表达式进行切片处理,待匹配的smiles表达式切片结果记为A,被匹配的smiles表达式结果记为B。对A跟B的结果进行比较:

Step1:若A的环的个数大于B的环的个数,则匹配不成功,不具有子结构关系

Step2:若A的种类大于B的种类,则匹配不成功,不具有子结构关系;

Step3:若A每种种类的个数大于B对应种类的个数,则匹配不成功,不具有子结构关系;

Step4:在不满足上述三个条件时,匹配成功,具有子结构关系。

应当理解的是,本说明书未详细阐述的部分均属于现有技术。

应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号