分子结构数据库的建立方法及搜索方法
【技术领域】
[0001] 本发明涉及数据库搜索引擎技术领域,特别涉及一种分子结构数据库的建立方法 及搜索方法。
【背景技术】
[0002] 目前,现有常用已知的分子结构数量已经超过1000万个,如何从这常用的1000多 万个已知结构中精确查找到用户所需要的那一种分子结构,如何从这1000多万个已知结 构中快速查询与某个结构相同或相似的所有分子结构,都对搜索效率有着重大的影响。
[0003] 具有超大规模分子结构数量的数据库(超过1000万)的分子结构如果使用传统算 法会遭遇巨大的计算效能瓶颈。原因在于,传统算法通常是先针对待搜索化合物进行分子 指纹筛选,而在具有1000万化合物的数据库中筛选结果集通常难以低于1万个,然后再针 对这个结果集进行严格的结构匹配计算。而严格的结构匹配计算非常耗时,其算法是图论 中的NP难题。
[0004] 通常的一个CPU内核每秒钟仅能处理不超过100次这样的比较。这样用户一次查 询通常要等待接近100秒,在一些科研计算中,这尚可接受。但是在互联网服务中,这样的 效率就完全无法忍受了。再考虑到巨大的网站并发量,使得超大规模分子结构数据库的结 构搜索难以应用于互联网服务。
[0005] 中国专利申请CN102929907A公开了一种手绘式化学分子结构式搜索方法,其包 括:用户将需要搜索的化学品的分子结构式用手绘的方式绘制在指定的网页编辑区域内; 将所述的已经绘制的分子结构式,通话浏览器提交至化学品数据库信息服务器,由搜索系 统进行解析;所述的搜索系统将搜索结果反馈给用户。
[0006] 该专利申请仅提供了一种通过手绘来搜索分子结构的方式,但仍然没有解决如何 在超大规模分子结构的数据库中快速、精确查找到所需要的分子结构的技术问题。
【发明内容】
[0007] 本发明针对以上现有技术存在的问题,提供一种可以在具有超大规模分子结构的 数据库快速、准确搜索分子结构的搜索方法。
[0008] 本发明提供一种分子结构数据库的建立方法,其包括以下步骤:
[0009] 步骤S011,读取一个分子结构A,计算其分子指纹并与数据库中所有分子结构的 分子指纹进行比较;
[0010] 其中,分子结构A与其他分子结构分子指纹的比较包括:将两个分子结构分子指 纹字符串的每个对应字符位置进行比较,将相同字符位置相同字符的数量除以总字符数 量,得到分子指纹的相似度;
[0011] 步骤S012,分子结构A与数据库中所有分子结构的分子指纹进行比较并筛选后, 将分子指纹相似度大于或等于预设值的分子结构放入第一结果集;
[0012] 步骤S013,将分子结构A与第一结果集中所有分子结构逐一进行子结构匹配计 算,其中,分子结构的子结构匹配计算包括:将分子结构和另一对比的分子结构进行严格的 基于原子类型和键连类型的化学结构图匹配;
[0013] 步骤S0141,若分子结构A的化学结构图包含第一结果集中至少一个分子结构的 化学结构图,即完成包含匹配,则将分子结构A分别存储于这些分子结构所在的群组中,并 存储分子结构A与群组内其他分子结构的相互连接关系和树形关系;
[0014] 步骤S0142,若分子结构A的化学结构图被包含于第一结果集中至少一个群组的 根节点分子结构的化学结构图,即完成隶属匹配,则将分子结构A作为这些群组的新根节 点存储,并存储分子结构A与群组内其他分子结构的相互连接关系和树形关系;
[0015] 步骤S0143,若分子结构A与第一结果集中任一分子结构均不包含或被包含,则新 建一个群组,并将该分子结构A存储于该新群组中。
[0016] 进一步地,所述分子结构分子指纹的计算包括:a.对一个分子结构的所有键和原 子进行分解;b.与一预设分子结构的所有键和原子对比,若同一个位置存在相同结构的, 记为1;否,则记为〇;C.得到该分子结构的由0和1组成的分子指纹字符串。
[0017] 进一步地,所述分子指纹计算中该分子结构与预设分子结构的所有键和原子是以 同样的线性路径排列。
[0018] 进一步地,该预设分子结构是数据库中任一分子结构或预定义的含有所有种类键 和原子的分子结构。
[0019] 进一步地,步骤S013还包括预先将数个基础分子结构分别存储入数个独立的群 组中。
[0020] 进一步地,步骤S013包括根据第一结果集在该数据库中的群组,将分子结构A和 对应的群组成员分子结构传入GPU内的计算网格中进行子结构匹配计算。
[0021] 进一步地,步骤S0141中存储分子结构A与群组内其他分子结构的相互树形关系 包括,将分子结构A与群组内其他分子结构进行子结构匹配计算,若与至少一个分子结构 完成包含匹配,则将分子结构A分别存储于这些分子结构的子节点中,同时,若这些分子结 构具有子树关系,则将分子结构A存储于这些子树关系最末端的子节点。
[0022] 其中,上述"子树关系"是指两个分子结构在树形关系中属于上下直接的包含或隶 属关系。
[0023] 本发明还提供一种基于上述方法建立的数据库的分子结构搜索方法,其包括以下 步骤:
[0024] 步骤S021,对待搜索分子B进行分子指纹计算;
[0025] 步骤S022,将待搜索分子B的分子指纹与该数据库中每一个分子结构的分子指纹 进行相似度计算并筛选,得到第二结果集;
[0026] 步骤S023,根据第二结果集在该数据库中的群组,将待搜索分子B和对应的群组 成员分子结构传入GPU内的计算网格中进行子结构匹配计算;
[0027] 步骤S024,每个GPU计算网格按群组内树形关系自上而下的顺序匹配计算;
[0028] 步骤S025,若子结构匹配计算中发现某个分子结构C与待搜索分子B完成包含匹 配,即分子结构C的化学结构图包含待搜索分子B的化学结构图,则该计算网格中该分子结 构C向下的所有子树分子结构都不再进行子结构匹配计算,并将这些子树分子结构直接加 入到返回列表中;
[0029] 步骤S026,对所有计算网格完成计算后统一返回所有得到的分子结构。
[0030] 进一步地,步骤S023是将第二结果集中隶属于该数据库中同一个群组的分子结 构放入同一个计算网格,同时传入存储于数据库中的快速剪枝信息,以加快子结构匹配计 算的剪枝速度。
[0031] 进一步地,步骤S026中返回的是按照与待搜索分子B相似度由高到低排序的分子 结构。
[0032] 本发明适用于所有分子结构的数据库,尤其适用于具有超大规模数量分子结构的 数据库,可以极大加快超大规模数据库的搜索效率。其中,"超大规模"是指分子结构数量超 过1000万的数据库,且一般单服务器小于1亿个分子结构。
[0033] 本发明提供的超大规模数据库的建立方法及分子结构搜索方法具有以下有益效 果:
[0034] 1.采用数据库相似数据分群的方式,将超大规模数量的分子结构进行预处理,分 为数个独立群组。以1000万个分子结构的数据库为例,分为20万个独立群组,每个独立群 组平均包含50个分子结构(30~200)。将大量的重复匹配工作在预先的数据库建立过程 中一次性完成,大大提高结构匹配(分子指纹相似度比较)的速度,对最耗时的子结构匹配 计算的次数从现有技术的平均上万次降低到平均100-200次左右,从而大大提高分子结构 搜索的效率,对于提高网站的并发访问数量也有巨大的意义。
[0035] 2.本发明将最耗时的子结构匹配计算移植于GPU中运行,每比较50000次耗时低 于0. 01秒,即每秒5M次的比较速度,并利用预存的剪枝数据来提高剪枝速度,使得计算效 率进一步提_。
[0036] 3.子结构匹配计算后,本发明直接调用预先存储的精确的每个计算网格内分子结 构间的相似度及计算网格相关信息,几乎不耗费计算时间,就能给出所有分子结构的严格、 精确结果。
【附图说明】
[0037]为能更清楚理解本发明的目的、特点和优点,以下将结合附图对本发明的较佳实 施例进行详细描述,其中:
[0038] 图1是本发明分子结构搜索方法的第一实施例流程图;
[0039] 图2是本发明第一实施例中某个群组中的树形关系示意图;
[0040] 图3是本发明分子指纹计算的一个实施例;
[0041] 图4是本发明第一实施例中步骤S01的计算机编程流程示意图;
[0042] 图5是本发明第一实施例中步骤S02的计算机编程流程示意图。
【具体实施方式】
[0043] 请参阅图1,本第一实施例分子结构数据库的建立方法和搜索方法包括以下步 骤:
[0044] 步骤S01,提供一存储分子结构的数据库,并对该数据库中的所有分子结构进行预 处理,该预处理过程包括:
[0045]步骤S011,读取一个分子结构A,计算其分子指纹并与数据库中所有分子结构的 分子指纹进行比较,其中,分子结构A分子指纹的计算包括:
[0046] a.对分子结构A的所有键和原子进行分解并以线性路径排列;
[0047]b.与一预设分子结构按相同线性路径排列的键和原子对比,若同一个位置存在相 同结构的,记为1 ;否,则记为〇 ;该预设分子结构是预定义的含有所有种类键和原子的分子 结构,