发明内容
针对上述技术问题,本发明提供一种效率更高效、匹配的准确度更高的原子类型定义系统及其定义方法。
具体的技术方案为:
原子类型定义系统,包括原子类型可视化UI界面、原子类型匹配模块、原子类型数据管理模块、原子类型格式转换模块;所述的原子类型数据管理模块包括原子类型定义数据包;
原子类型定义数据包,拥有原子类型定义方式,承载了原子类型的全部定义;所述的原子类型定义包括了原子类型的名称、元素、符合这种类型的原子周围化学环境的描述,以及原子类型的层级依赖关系;
原子类型数据管理模块是整个系统的底层基础,支持原子类型的增加、修改、删除和各种维度的查询和统计;
原子类型匹配模块,实现对给定分子中的每个原子高效、精准的匹配对应的原子类型;
原子类型格式转换模块,现有各力场原子类型定义互相转换;
原子类型可视化UI界面分别与原子类型匹配模块、原子类型数据管理模块、原子类型格式转换模块通信连接,原子类型匹配模块、原子类型格式转换模块分别与原子类型数据管理模块通信连接。
原子类型定义系统的原子类型匹配方法:
(1)用户在原子类型可视化UI界面选择需要匹配原子类型的分子文件,将原子类型文件和需要转换的格式传到原子类型格式转换模块,然后将转换后的分子文件传到原子类型匹配模块;
(2)原子类型匹配模块将分子文件内所有的分子键按照标准化学键类型逐一标记;将标记好的分子键和带属性的原子连接成图的数据结构。
(3)用原子类型定义数据包中的原子类型的图与上述的图做子图匹配;
匹配方法:将有n个原子的输入分子转化成一个 n*n 的矩阵,矩阵中的点 P(i,j)是第i个原子和第j个原子的边的类型,0表示不成键、1表示单键、2表示双键、3表示三键、4表示芳香键、5表示共轭键;将这个矩阵扩增成 (n+1)*(n) 的矩阵,矩阵的第一列增加每个原子按属性转换的数值;转换方法是:元素编号+电荷*100+环边数*1000+芳香性*100000+共轭性*1000000,芳香性和共轭性0表示没有、1表示有;然后将原子类型的图也按上述方法转换成矩阵;最后对原子类型的图按行遍历分子图的所有等长度组合,如果原子类型矩阵的每一行都能按相同的方式找到相同匹配,则子图匹配成功,否则匹配失败。
(4)原子类型数据管理模块将匹配成功的原子类型加入分子中对应原子的匹配列表中;
(5)全部原子类型匹配完成后,原子类型匹配模块从每个原子的匹配列表中找到层级最深的原子类型作为该原子的原子类型;
(6)原子类型格式转换模块会将匹配完成的原子类型列表转换后发送给原子类型可视化UI界面,将类型标记在2D分子图上展示给用户。
本发明提供的原子类型定义系统及其定义方法,具有技术效果:
1、本发明设计的原子类型定义方式可以描述嵌套关系、继承关系、层级关系、树形关系和各种复杂的原子化学环境。其能力远远超过现有的基于SMARTS 的定义方式,SMARTS只能描述单一原子类型,无法描述嵌套、继承、层级、树等多种关系。由于提升了描述能力,这样就能描述更丰富、更精确的原子类型,这样力场的计算就能更准确。
2、本发明的数据管理模块配合可视化UI界面,可以对原子类型实现便捷的操作,增、删、改、查、多维度统计都非常直观方便。现在已有的原子类型系统都没有实现相应的功能,增、删、改只能手动编辑文本文件,无法交互式操作,查看原子类型也只能看文本文件中的原始定义,非常晦涩,可读性非常差。而且没有对现有原子类型的统计功能,使用者很难对原子类型有一个全面的认识。由于本发明能改善这些问题,从而大幅提升了原子类型开发的效率,
3、本发明中的原子类型的算法比现有的方法效率更高效,匹配的准确度更高。
4、本发明支持现有各力场原子类型定义的互相转换,比现有系统和工具支持程度都全面。
具体实施方式
本发明的一个具体实施例是用于药物分子和生物蛋白结合计算模拟的系统中。在生物和药物研发领域有大量的计算需求需要模拟不同药物分子构象与生物蛋白靶点结合的情况,从而找到最合适的药物分子构象用于接下来的药物开发。业界已有商业的系统能完成模拟,我们也在自研功能类似的系统。这种系统中的一个关键核心就是需要用力场算准药物分子和蛋白的结合能,而力场准确的核心是有一套定义准确的原子类型。所以本发明会运用在这个系统中,用来创建和优化原子类型定义,从而为计算模拟提供更好的力场。
本发明实施的技术方案是作为子系统嵌入药物分子和生物蛋白结合计算模拟的系统,加入该系统后,研究人员可以非常方便的优化现有力场,也可以非常方便的引入新的力场。极大的优化了调优计算模拟系统的核心力场的效率。
如图1所示,这套系统由原子类型定义数据包、原子类型数据管理模块、原子类型匹配模块、原子类型可视化UI界面、原子类型格式转换模块。
原子类型定义数据包,拥有全新的原子类型定义方式,具体的数据包承载了原子类型的全部定义。原子类型定义包括了原子类型的名称、元素、符合这种类型的原子周围化学环境的描述,以及原子类型的层级依赖关系。数据包采用了JSON 作为数据包的持久化格式。
如图2所示,原子类型数据管理模块是整个系统的底层基础。我们采用了基于面向对象的模块化设计,能方便的支持原子类型的增加、修改、删除和各种维度的查询和统计.
如图3所示,原子类型匹配模块依托数据模块的底层设计,可以实现对给定分子中的每个原子高效、精准的匹配对应的原子类型。
如图4所示,原子类型可视化UI界面可以让用户方便的与原子类型数据交互。本系统设计了全新的原子化学环境2D 可视化标识。这套标识能将复杂的原子化学环境定义直观的展现出来。原子化学环境2D 可视化标识如图5所示。
如图6所示,原子类型格式转换模块支持将现有各力场原子类型定义互相转换,支持各种格式的导入导出。
原子类型定义系统以微服务的架构部署原子类型数据管理模块、原子类型匹配模块和原子类型格式转换模块,每个模块的核心功能都封装成用 Python 开发的模块包,然后利用 Flask Webservice 框架,将每个模块部署在基于 Kubernetes 的微服务框架上,各模块通过 https 协议相互通信,以及对外提供服务支持。
原子类型数据管理模块使用 PostgreSQL 作为底层数据库。数据控制层逻辑也是用 Flask 框架封装起来,部署在 Kubernetes 上。
原子类型可视化UI界面用 HTML+CSS+Javascript 开发,跟后台服务采用Client/Server 的架构模式,通过 https 协议请求数据、发送命令。
整个系统可以部署在公有云上、本地集群上,也可以部署在用户的个人电脑上。
系统运行硬件环境:Intel i7 及以上处理器、16G 以上内存、500G以上硬盘存储空间;
系统运行软件环境:Linux 4 以上内核版本,Python2.7 运行环境;
UI 界面使用环境:浏览器 IE8以上、Chrome、Safari。
用本发明创建新的原子类型步骤如下:
(1)打开原子类型可视化UI界面,在右侧树形导航控件中点击右键,添加一个新的原子类型。这时系统会弹出窗口提示输入原子类型名称,填写完成后点击确定完成添加。点击确定后,系统会将当前的原子类型数据包ID、需要新建原子类型的名称和其所在树形导航中的位置以 json 的格式用 https 协议发送到原子类型数据管理模块的微服务,数据管理模块将这些内容插入数据库,完成添加。
(2)在左侧原子类型详情页面编辑修改原子类型的化学环境,填写元素、电荷、环的边数、芳香性、周围连接原子数、共轭性。系统工作方式同上。
(3)可以调整原子类型在定义树中的位置,通过制定父节点和子节点完成。系统工作方式同上。
用本发明导入已有原子类型定义的步骤如下:
(1)在可视化UI界面右上角点击打开按钮,在本地文件系统中选择原子类型的json 文件。
(2)可视化UI界面会将用户选择的 json 文件发送到数据管理模块的微服务,数据管理模块会按结构解析 json 文件,并在按图2的数据模型将数据加载到内存中,同时将json 文件存储到 PostgreSQL 数据库里。
用本发明匹配分子的原子类型步骤如下:
(1)在可视化UI界面右上角点击打开按钮,在本地文件系统中选择需要匹配原子类型的分子文件,支持 xyz、mol、pdb等的分子文件。
(2)可视化UI界面会将分子文件传到原子类型匹配模块的微服务
(3)原子类型匹配模块将分子内所有的分子键按照单键、双键、芳香键、共轭键等标准化学键类型逐一标记。
(4)匹配模块为分子内的每个原子标记属性,属性包括元素、电荷、环的边数、芳香性、周围连接原子数、共轭性。
(5)将标记好的分子键和带属性的原子连接成图的数据结构。
(6)用原子类型定义数据包中的原子类型的图与上述分子的图做子图匹配。匹配算法是将有n个原子的输入分子转化成一个 n*n 的矩阵,矩阵中的点 P(i,j) 是第i个原子和第j个原子的边的类型0表示不成键、1表示单键、2表示双键、3表示三键、4表示芳香键、5表示共轭键。接下来将这个矩阵扩增成 (n+1)*(n) 的矩阵,矩阵的第一列增加每个原子按属性转换的数值。转换方法是:元素编号+电荷*100+环边数*1000+芳香性*100000+共轭性*1000000,芳香性和共轭性0表示没有、1表示有。然后将原子类型的图也按上述方法转换成矩阵。最后对原子类型的图按行遍历分子图的所有等长度组合,如果原子类型矩阵的每一行都能按相同的方式找到相同匹配,则子图匹配成功,否则匹配失败。
(7)原子类型匹配模块将匹配成功的原子类型加入分子中对应原子的匹配列表中。
(8)全部原子类型匹配完成后,原子类型匹配模块会从每个原子的匹配列表中找到层级最深的原子类型作为该原子的原子类型。
(9)原子类型匹配模块会将匹配完成的原子类型列表以 json 的方式发送给可视化UI界面,界面会将类型标记在2D分子图上展示给用户。
其中,用本发明转换原子类型格式的步骤如下:
(1)在原子类型可视化UI界面右上角点击打开按钮,在本地文件系统中选择需要转换的文件,支持Amber,Gromacs,Charmm,MacroModel 和 json 的数据格式的文件。
(2)原子类型可视化UI界面会将原子类型文件和需要转换的格式传到原子类型格式转换模块的微服务。
(3)原子类型格式转换模块识别输入文件的类型,根据类型调用对应文件的解释器,解释器为原子类型格式转换模块中的解释函数;
(4)解释器会按照对应文件的解释规则解释文件中的每一个原子类型,并将每个原子类型按图2中的数据结构存储在内存中。所述的内存是系统指分配给原子类型格式转换模块的内存。
(5)原子类型格式转换模块会调用需要输出的格式的编码器,编码器为原子类型格式转换模块中的编码函数;
(6)编码器会调用步骤4中的内存中的数据,将数据编码成需要输出的文件格式;原子类型格式转换模块将编码好的文件传到 原子类型可视化UI界面供用户使用。
具体的使用实例:
例子1
预测分子 CCCC 的密度。该分子4个碳原子连接的氢原子的个数不同,头尾两个碳各连接3个氢原子,中间两个碳连接2个氢原子。现有的力场的原子类型都不区分这两种碳的类型,这样在预测密度的时候与实验值的误差大概在5%左右。用本发明增加两种原子类型,区分连接3个氢原子的碳和连接2个氢原子的碳,在这个基础上优化过的力场预测密度误差可以达到2%以内。大幅提升了预测的准确度。不用本发明,如果要增加原子类型只能依靠最初定义原子类型的人员手动修改,效率低,周期长,实际用户完全没有自主性。
例子2
预测分子 C(C=O)N 的蒸发焓。该分子中的氮原子在现有力场中是按胺分子中的类型定义的,这样预测蒸发焓与实验值的误差在10%左右。通过分析,这个分子中的氮是在酰胺基团中,用本发明增加新的氮原子类型进行区分,在这个基础上优化力场,预测蒸发焓的误差可以达到5%以内,提高了1倍的精度。不用本发明,如果要增加原子类型只能依靠最初定义原子类型的人员手动修改,效率低,周期长,实际用户完全没有自主性。