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

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

【技术实现步骤摘要】

本专利技术属于化学
,涉及一种确定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每种种类的个本文档来自技高网
...

【技术保护点】
一种确定smiles表达式之间是否具有子结构关系的方法,其特征在于,包括以下步骤:步骤1:定义并存储常见原子、常见化学键和常见支链关系;步骤2:定义切片最小粒度;相邻原子与之间的化学键关系与主支链关系作为最小粒度单位;步骤3:定义起始原子和终止原子;其中起始原子为所述最小粒度对应的第一个原子,终止原子为所述最小粒度对应的第二个原子;步骤4:基于常见原子、化学键和支链关系对获取的smiles表达式进行分析以将smiles表达式切割成一个个原子对,统计smiles表达式包含的环的个数及原子对的种类、种类个数并存储到哈希表中;其中所述原子对根据相邻原子与之间的化学键关系与主支链关系确定;步骤5:对化学式切片结果,根据原子对的种类、种类个数、环的个数确定smiles表达式之间是否具有子结构关系。

【技术特征摘要】
1.一种确定smiles表达式之间是否具有子结构关系的方法,其特征在于,包括以下步骤:步骤1:定义并存储常见原子、常见化学键和常见支链关系;步骤2:定义切片最小粒度;相邻原子与之间的化学键关系与主支链关系作为最小粒度单位;步骤3:定义起始原子和终止原子;其中起始原子为所述最小粒度对应的第一个原子,终止原子为所述最小粒度对应的第二个原子;步骤4:基于常见原子、化学键和支链关系对获取的smiles表达式进行分析以将smiles表达式切割成一个个原子对,统计smiles表达式包含的环的个数及原子对的种类、种类个数并存储到哈希表中;其中所述原子对根据相邻原子与之间的化学键关系与主支链关系确定;步骤5:对化学式切片结果,根据原子对的种类、种类个数、环的个数确定smiles表达式之间是否具有子结构关系。2.根据权利要求1所述的确定smiles表达式之间是否具有子结构关系的方法,其特征在于:步骤1中所述常见原子包括:H、C、N、O、S、F、Cl、Br、[N+]、[N-]、[O+]、[O-];所述常见化学键包括:单键、双键、三键、楔型向上键、楔形向下键、离域键、顺反不确定键、空心键、不确定键;所述常见支链包括:一个原子上包含一个支链、一个原子上包含二个支链。3.根据权利要求1所述的确定smiles表达式之间是否具有子结构关系的方法,其特征在于:步骤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.根据权利要求3所述的确定smiles表达式之间是否具有子结构关系的方法,其特征在于,步骤4.2中所述统计环的个数,其具体实现包括以下子步骤:步骤4.2.1A:遍历smiles表达式每一个字符,观察是否有数字字符;步骤4.2.2A:若包含数字,记住该数字的...

【专利技术属性】
技术研发人员:顾进广彭彬黄智生范玉玲杨毅融
申请(专利权)人:武汉科技大学厦门中坤化学有限公司
类型:发明
国别省市:湖北;42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1