CN112116951A - 一种基于图数据库的蛋白质组数据管理方法、介质和设备 - Google Patents
一种基于图数据库的蛋白质组数据管理方法、介质和设备 Download PDFInfo
- Publication number
- CN112116951A CN112116951A CN202010816554.4A CN202010816554A CN112116951A CN 112116951 A CN112116951 A CN 112116951A CN 202010816554 A CN202010816554 A CN 202010816554A CN 112116951 A CN112116951 A CN 112116951A
- Authority
- CN
- China
- Prior art keywords
- index
- nodes
- protein
- layer
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16B—BIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
- G16B20/00—ICT specially adapted for functional genomics or proteomics, e.g. genotype-phenotype associations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/319—Inverted lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Biology (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Spectroscopy & Molecular Physics (AREA)
- Genetics & Genomics (AREA)
- Biotechnology (AREA)
- Analytical Chemistry (AREA)
- Chemical & Material Sciences (AREA)
- Bioinformatics & Computational Biology (AREA)
- Proteomics, Peptides & Aminoacids (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明实施例提供了一种基于图数据库的蛋白质组数据管理方法、介质和设备,该方法包括:获取蛋白质组对应的图数据,图数据包括多个节点和边,其中,节点记录其所代表的蛋白质,边记录其连接的两个节点间的关系;根据该蛋白质组对应的图数据建立底层的双向链表,该双向链表中的节点按照其所代表蛋白质的名称的字典序依次排列;从底层的双向链表开始,每两个节点提取一个节点到上一层索引以在各索引层建立单向的索引链表,直至顶部的索引链表仅有两个节点,以建立包括多层索引的快速索引;本发明在图数据库原有的基础上建立快速索引,以提高对大规模的蛋白质组的索引效率。
Description
技术领域
本发明涉及数据库领域,具体来说涉及图数据库索引技术领域,更具体地说,涉及一种基于图数据库的蛋白质组数据管理方法、介质和设备。
背景技术
随蛋白质测定技术(如质谱分析技术)的发展,研究方向逐渐集中于蛋白质分子间复杂相互作用及衍生的网络。由此产生诸多热门方向,如蛋白质相互作用的预测、蛋白质功能预测等,蛋白质组实验数据的数据量亦随之呈指数级上升。为高效存储、管理分析和利用这些海量蛋白质组数据,通常采用数据库来管理蛋白质组数据。目前常用的关系型数据库由于频繁的连接操作,不适宜于海量半结构化数据的存储、统计和更新。以Neo4j、Tigergraph为代表的图数据库在处理蛋白质组这类非结构化数据,尤其是复杂连接的情况下,具有响应速度快、扩展性好、可靠性高等优势。基于图数据库数据结构抽象出的生物网络采用节点(Node)记录蛋白质,关系(Relationship)记录蛋白质组间相互作用,顶点有标签属性,在关系上添加边的属性(Properties)代表关系的权重。***分析大量蛋白在生物***中的相互作用关系,对于了解生物***中蛋白质的工作原理,了解疾病等特殊生理状态下生物信号和能量物质代谢的反应机制,以及了解蛋白之间的功能联系都有重要意义。
目前的图数据库通常采用原生图存储的图数据库。以Neo4j图数据库为例,在Neo4j图数据库中,节点、关系、节点和关系的属性都是分开存储的,且可以直接物理定位到节点、关系、属性的物理地址。鉴于关系是边的物理存储,后续以边作为关系的简称。边的物理结构包含边起始点的上条边、下条边,边终点的上条边、下条边。物理存储时所有边仅存储一次。当前图数据库的蛋白质组索引查找主要基于图数据库的原生图存储结构遍历,在小型的蛋白质组网络中,基于搜索引擎Elasticsearch的原始的倒排索引表现优越;但在大规模复杂的蛋白质组网络中,倒排索引的表现不佳。为此,有必要对基于倒排索引的图数据库进行改进。
发明内容
因此,本发明的目的在于克服上述现有技术的缺陷,提供一种基于图数据库的蛋白质组数据管理方法、介质和设备。
本发明的目的是通过以下技术方案实现的:
根据本发明的第一方面,一种基于图数据库的蛋白质组数据管理方法,包括:获取蛋白质组对应的图数据,图数据包括多个节点和边,其中,节点记录其所代表的蛋白质,边记录其连接的两个节点间的关系;根据该蛋白质组对应的图数据建立底层的双向链表,该双向链表中的节点按照其所代表蛋白质的名称的字典序依次排列;从底层的双向链表开始,每两个节点提取一个节点到上一层索引以在各索引层建立单向的索引链表,直至顶部的索引链表仅有两个节点,以建立包括多层索引的快速索引。
在本发明的一些实施例中,所述方法包括:响应于图数据库中任意蛋白质组对应的图数据达到预设规模的信号,按照前述方式仅为达到预设规模的蛋白质组在原始的倒排索引之外建立快速索引。所述方法包括:未达到预设规模的蛋白质组仍采用原始的倒排索引。
在本发明的一些实施例中,所述方法还包括:在向建立有快速索引的蛋白质组对应的图数据中***新的蛋白质对应的节点时,生成一个用于决定该蛋白质组对应的图数据的快速索引的更新方式的随机变量,根据随机变量所属的不同数值范围设置用于更新快速索引的不同更新方式。
在本发明的一些实施例中,所述随机变量服从参数为p的几何分布,其中,所述p=0.5。
在本发明的一些实施例中,所述数值范围包括:第一数值范围,其仅为数值1;第二数值范围(1,k+1];第三数值范围(k+1,+∞),k表示当前快速索引中索引层的总层数;其中,所述根据随机变量所属的不同数值范围设置用于更新快速索引的不同更新方式包括:在当前生成的随机变量属于第一数值范围时,在底层的双向链表中***该新的蛋白质对应的节点,不更新快速索引;在当前生成的随机变量属于第二数值范围时,在底层的双向链表中***该新的蛋白质对应的节点,并在当前生成的随机变量的数值以下层数的索引层中加入该***的新的蛋白质对应的节点;在当前生成的随机变量属于第三数值范围时,在底层的双向链表中***该新的蛋白质对应的节点,在顶部新增一个索引层且在每个索引层中均加入该***的新的蛋白质对应的节点,并且顶部的索引层从下一索引层中每两个节点提取一个节点和该***的新的蛋白质对应的节点共同构建单向链表。
在本发明的一些实施例中,所述方法还包括:响应于删除建立有快速索引的蛋白质组对应的图数据中的某个待删除蛋白质对应的节点的请求,从多层索引的顶层依次向下查找并删除每个索引层中的该待删除蛋白质对应的节点后,删除底层的双向链表中的该待删除蛋白质对应的节点。
在本发明的一些实施例中,所述方法还包括:为建立有快速索引的蛋白质组对应的图数据中的每个蛋白质对应的节点建立一个用于记录节点间的关系的哈希表,根据预先设计的哈希函数基于该节点的各邻居节点所代表的蛋白质的名称计算各邻居节点在哈希表中的存储位置,并将各邻居节点所代表的蛋白质的名称分别存储在计算得到的存储位置。
在本发明的一些实施例中,所述哈希函数为:
其中,x表示蛋白质的名称,N表示蛋白质的名称的字符串长度,xn表示蛋白质的名称的第n位的字符,ASCII(xn-A)表示蛋白质的名称的第n位字符的ASCII码与字符A的ASCII码之差,MOD表示取模,prime表示模。
根据本发明的第二方面,提供一种电子设备,包括:一个或多个处理器;以及存储器,其中存储器用于存储一个或多个可执行指令;所述一个或多个处理器被配置为经由执行所述一个或多个可执行指令以实现第一方面所述方法的步骤。
与现有技术相比,本发明的优点在于:
本发明提出一种基于图数据库的蛋白质组数据管理方法,该方法在图数据库原有的基础上建立快速索引,以提高对大规模的蛋白质组的索引效率。
附图说明
以下参照附图对本发明实施例作进一步说明,其中:
图1为根据本发明实施例的构建初始的快速索引的流程示意图;
图2为一个简化蛋白质组的示意图;
图3为根据上述简化蛋白质组构建的快速索引的示意图;
图4为根据上述简化蛋白质组构建的快速索引进行查询的示意图;
图5为根据本发明实施例的在初始的快速索引中***了新的节点时进行查询的示意图;
图6为根据本发明实施例的删除某蛋白质对应的节点的示意图;
图7为根据本发明实施例的构建某节点对应的哈希表的流程示意图;
图8为根据本发明实施例的某节点对应的哈希表的示意图。
具体实施方式
为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如在背景技术部分提到的,当前图数据库的蛋白质组索引查找主要基于图数据库的原生图存储结构遍历,在小型的蛋白质组网络中,基于搜索引擎原始的倒排索引表现优越;但在大规模复杂的蛋白质组网络中,倒排索引的表现不佳。为此,本发明提出一种基于图数据库的蛋白质组数据管理方法,该方法在图数据库原有的基础上建立快速索引,以提高对大规模的蛋白质组的索引效率。
在对本发明的实施例进行具体介绍之前,先对其中使用到的部分术语作如下解释:
图数据库(Graph Database,简称GDB),是一个使用图结构形式的数据(简称图数据)进行语义查询的数据库,图数据包括节点和边。
蛋白质组,指由一个基因组(Genome)、一个细胞或者一个组织表达的所有蛋白质。
根据本发明的一个实施例,本发明提供一种基于图数据库的蛋白质组数据管理方法,包括:为蛋白质组对应的图数据在原始的倒排索引之外建立快速索引。该实施例为蛋白质组对应的图数据都建立快速索引,优点是大规模蛋白质组的索引效率得到了显著提升,但小规模蛋白质的索引效率可能会下降。
根据本发明的另一个实施例,本发明提供一种基于图数据库的蛋白质组数据管理方法,包括:响应于图数据库中任意蛋白质组对应的图数据达到预设规模的信号,按照以下方式为该蛋白质组对应的图数据在原始的倒排索引之外建立快速索引:获取该蛋白质组对应的图数据,图数据包括多个节点和边,其中,节点记录其所代表的蛋白质,边记录其连接的两个节点间的关系;根据该蛋白质组对应的图数据建立底层的双向链表,该双向链表中的节点按照其所代表蛋白质的名称的字典序依次排列;从底层的双向链表开始,每两个节点提取一个节点到上一层索引以在各索引层建立单向的索引链表,直至顶部的索引链表仅有两个节点,得到包括多层索引的快速索引。优选的,底层的双向链表中,每个节点关联于该节点所代表蛋白质对应数据的存储地址。优选的,响应于查询特定蛋白质的请求,若该特定蛋白质存储在建立有快速索引的蛋白质组对应的图数据中,则基于该快速索引对该特定蛋白质进行查询并反馈,否则基于倒排索引对该特定蛋白质进行查询并反馈。该实施例中,仅为达到预设规模的蛋白质建立快速索引,未达到预设规模的小规模蛋白质组的索引仍采用原有的倒排索引,由此,针对不同的数据规模,本发明可以采用适合于该规模的索引机制提供查询服务,提升蛋白质组的数据查询或者分析效率。
对于图数据库,本发明可以应用于基于倒排索引的图数据库,例如Neo4j图数据库,本发明对此不作任何限制。在图数据库中,对于判断某个蛋白质组对应的图数据是否达到预设规模的过程,本发明可以为每个蛋白质组分别维护一个守护进程,用于在后台实时或者周期性地统计该蛋白质组对应的图数据的数据规模,在统计到数据规模达到预设规模时,发出该蛋白质组对应的图数据达到预设规模的信号。预设规模可以是按照数据量来设置,比如数据量达到10GB;也可以是按照节点的数量,例如节点的数量达到10万个节点;也可以是按照边的数量,例如边的数量达到50万条;当然还有其他可行的设置方式,本发明对此不作任何限制。
对于快速索引,在建立时,首先需要将节点按其所代表的蛋白质的名称进行排序,升序、降序均可。本发明后续以升序排序为例进行说明。构建初始的快速索引的流程如图1所示,构建快速索引的步骤可以包括:S110、获取该蛋白质组对应的图数据,图数据包括多个节点和边,其中,节点记录其所代表的蛋白质,边记录其连接的两个节点间的关系;S120、根据该蛋白质组对应的图数据建立底层的双向链表,该双向链表中的节点按照其所代表蛋白质的名称的字典序升序排列;S130、从最新构建好的层(i-1层)中每两个节点取一节点以构建第i个索引层,初始的i=1;S140、分析当前的第i个索引层的节点个数是否小于等于2,若是,则结束,否则转至步骤S150;S150、i=i+1,转至步骤S130。以Neo4j图数据库为例,Neo4j图数据库上每个节点的文件大小固定,但为减少搬移数据产生的时间复杂度,本发明的底层采用双向链表这种数据结构维持节点的有序,在删除节点时能够快速获知待删除节点的前一节点和后一节点,提高删除底层的节点的效率。对于快速索引的数据结构,需对底层的双向链表设计若干个索引层,每个索引层是有序单向链表。假设双向链表有n个节点,最靠近存储节点的双向链表的索引层称为第1层索引,该层索引节点有n/2个节点,以此类推,第i层索引中节点数是第i+1层节点数的2倍。索引层的高度h和链表长度n满足:2h+1=n。为了便于理解,用图2所示的某蛋白质相互作用网络(Protein-protein interaction,PPI)的子图来进行说明,该子图包括蛋白质FAA1、FAA4、FAT1、GEM1、HGM1、PCG1、PAY2、PAY3,将该子图假设为一个简化的蛋白质组进行说明,每个圆代表一个蛋白质对应的节点,节点与节点之间的连线是边,代表节点之间的关系,即蛋白质间的相互作用(Experiments),指由实验证明两个或两个以上蛋白质能通过非共价键形成蛋白质复合体。参见图3,根据该蛋白质组对应的图数据建立底层的双向链表,该双向链表中的节点按照其所代表蛋白质的名称的字典序升序排列,得到底层的双向链表FAA1、FAA4、FAT1、GEM1、HMG1、PAY2、PAY3、PGC1,然后从底层的双向链表的FAA1开始,每两个节点提取一个节点作为索引层1层的节点;索引层1层共4个节点FAA1、FAT1、HGM1、PAY3,这4个节点各自保存一个指向该顶点底层链表的指针;从索引层1层的FAA1开始,每两个节点提取一个节点作为索引层2层的节点,索引层2层共2个节点FAA1、HGM1,这2个节点各自保存一个指向索引层1层的指针;由于索引层2层只有2个节点,点索引构建结束。由此,可得到索引层的1层为FAA1、FAT1、HMG1、PAY3组成的单向链表,索引层的2层为FAA1、HMG1组成的单向链表所组成的多层索引。
对建立有快速索引的蛋白质组中的节点进行查找的方式如下:假设将待查询蛋白质简称为pro,索引排序中处于最中间的蛋白质简称为mid(即如果索引有n个点,mid是按字典序排列序号为处的蛋白质对应的节点。如果同一位需比较数字和字母,字母优先级高于数字)。对长度为n的链表,比较待查询蛋白质pro和蛋白质mid的大小,如果pro刚好和mid是同一个蛋白质,则结束查询,返回结果;如果pro的字典序在mid之前,则证明索引中所有排序位于mid之后的蛋白质都不可能满足条件;如果pro的字典序在mid之后,则证明图数据库中所有排序位于mid之前的蛋白质都不可能满足条件。假设顶层为第k层:则通过对第k层的两个元素比较,可以排除n/2个节点,同理k-1层排除n/4个节点,以此类推,直到返回结果。由于每层只需要比较2个节点的数值,查询操作的时间复杂度T主要和层数n有关,即:T(n)=O(log n)。还是基于图2建立的快速索引为例,假设要查询蛋白质PAY2,参见图4,其查询过程为:在索引层2层,比较PAY2和FAA1、HMG1的字典序,由于PAY2>HMG1,因此直接沿HMG1点下降到索引层1层;在索引层1层,比较PAY2和HMG1、PAY3的字典序;由于HMG1<PAY2<PAY3,因此沿HMG1下降到底层的双向链表,找到HMG1,再向右查找到蛋白质PAY2对应的节点。
根据本发明的一个实施例,在向建立有快速索引的蛋白质组对应的图数据中***新的蛋白质对应的节点时,生成一个用于决定该蛋白质组对应的图数据的快速索引的更新方式的随机变量,根据随机变量所属的不同数值范围设置用于更新快速索引的不同更新方式。优选的,随机变量服从参数为p的几何分布,p=0.5。优选的,数值范围包括:第一数值范围,其仅为数值1;第二数值范围(1,k+1];第三数值范围(k+1,+∞),k表示当前快速索引中索引层的总层数;其中,根据随机变量所属的不同数值范围设置用于更新快速索引的不同更新方式包括:在当前生成的随机变量属于第一数值范围时,在底层的双向链表中***该新的蛋白质对应的节点,不更新快速索引;在当前生成的随机变量属于第二数值范围时,在底层的双向链表中***该新的蛋白质对应的节点,并在当前生成的随机变量的数值以下层数的索引层中加入该***的新的蛋白质对应的节点;在当前生成的随机变量属于第三数值范围时,在底层的双向链表中***该新的蛋白质对应的节点,在顶部新增一个索引层且在每个索引层中均加入该***的新的蛋白质对应的节点,并且顶部的索引层从下一索引层中每两个节点提取一个节点和该***的新的蛋白质对应的节点共同构建单向链表。***蛋白质时,假设不断向底层双向链表某两个相邻的索引节点间增加蛋白质,则在极端情况下会该段蛋白质大量增加,使查询操作的时间复杂度退化到O(n)。为维护索引层的高效性,需在***蛋白质时更新快速索引。但是如果每次都严格按照每两个节点提取一个节点到上一个索引层这种方式来更新快速索引,在大规模的蛋白质组中将导致快速索引的更新过程带来极大的计算开销。因此,本发明定义随机变量K,K满足p=1/2的几何分布。如果K=1,则只在底层的双向链表***蛋白质对应的节点;如果1<K-1≤k,在第1~K–1个索引层***该蛋白质对应的节点;如果K-1>k,则需要在顶部新增一个索引层,在所有索引层***该蛋白质对应的节点,并且,顶部新增的索引层还从下一层的每两个节点提取一个节点。由此,本发明提高了***蛋白质操作的效率,且由于K满足p=1/2的几何分布,该快速索引的更新方式大致是按每新增两个节点将一个新增节点提取到上面的索引层,从而大致保障了快速索引的索引结构的均衡和索引效率,并且***新的蛋白质时也不会导致快速索引的更新过程占用过多的计算资源,使得***蛋白质操作的时间复杂度主要和查找该蛋白质的***位置有关。参见图5,对于快速索引的某层***有新增的蛋白质对应的节点的情况,查找蛋白质节点的步骤如下:从顶层开始查找,假设顶层只有a和b节点,如果待查询蛋白质pro和a节点或b节点的字典序相同,可视为直接找到结果,如果pro的字典序在a~b之间,沿a节点的指针下降到下个索引层;如果pro的字典序在b节点之后,沿b节点的指针下降到索引层,如果当前层是从a节点下降到该层的,该层的有序链表结构中,a节点的下一个是x节点,x的下一个为***的y节点(假设***y节点时生成的随机变量为2,所以只在索引层的1层***了y节点),y节点的下一个是b节点;此时需要比较pro和x、y的字典序,如果pro的字典序和a、x、y或者b相同,可直接向下到底层的双向链表找到结果,即pro所代表的蛋白质对应数据的存储地址。如果pro的字典序在a~x之间,沿a下降至下一层;如果在x~y之间,沿x下降至下一层;如果在y~b之间,沿y下降至下一层;如果大于b,则沿b下降至下一层并按照此方式继续查找直到返回结果。假设本次要查找的节点pro实际是节点y,则会按照图5中虚线箭头示出的路径进行查找。
根据本发明的一个实施例,响应于删除建立有快速索引的蛋白质组对应的图数据中的某个待删除蛋白质对应的节点的请求,从多层索引的顶层依次向下查找并删除每个索引层中的该待删除蛋白质对应的节点后,删除底层的双向链表中的该待删除蛋白质对应的节点。删除某蛋白质时,为维持快速索引的正确性,除了删除底层的双向链表中该蛋白质对应的节点,仍需删除多层索引中该蛋白质对应的节点。删除操作的时间复杂度主要和查找到该蛋白质的删除位置有关。删除节点时,索引需要做如下操作:按搜索的过程,从顶层k开始查找,如果第i个索引层有待删除节点,则删除第i层的待删除节点,重复前述过程直到第1个索引层;最后从底层的双向链表中删除该蛋白质对应的待删除节点。参见图6,假设本次要删除蛋白质PAY3,则按虚线箭头示出的查找路径,从顶层开始查找待删除蛋白质PAY3对应的节点,由于顶层没有蛋白质PAY3对应的节点,则继续查找下一个索引层,下一个索引层有蛋白质PAY3对应的节点,则删除该索引层中的蛋白质PAY3对应的节点,最后从底层的双向链表删除蛋白质PAY3对应的节点,得到图6所示的删除蛋白质PAY3对应的节点后的快速索引。
根据本发明的一个实施例,该方法还包括:为建立有快速索引的蛋白质组对应的图数据中的每个蛋白质对应的节点建立一个用于记录节点间的关系的哈希表,根据预先设计的哈希函数基于该节点的各邻居节点所代表的蛋白质的名称计算各邻居节点在哈希表中的存储位置,并将各邻居节点所代表的蛋白质的名称分别存储在计算得到的存储位置。参见图7,哈希表的建立过程包括:S210、根据预先设计的哈希函数计算节点的某个邻居节点的哈希值;S220、该哈希值在该节点的哈希表中是否存在冲突,若是,转至步骤S240,若否,转至步骤S230;S230、将该邻居节点直接存储在该哈希值对应的位置;S240、将该邻居节点***到该哈希值的链表尾部。即如果存在哈希值冲突,则采用链表法解决该冲突问题,相当于经过哈希函数计算后等于同一哈希值的多个邻居节点依次形成一个单向链表。优选的,预先设计的哈希函数为:其中,x表示蛋白质的名称,N表示蛋白质的名称的字符串长度,xn表示蛋白质的名称的第n位的字符,ASCII(xn-A)表示蛋白质的名称的第n位字符的ASCII码与字符A的ASCII码之差,MOD表示取模,prime表示模。prime的值可以由用户根据需要设定。优选的,prime设定为根据整个蛋白质图数据库的平均度(Degree),取大于2倍平均度的某个质数。蛋白质间作用关系的索引设计则是对每个蛋白质节点,建立一个哈希表(Hash Table)存储其相邻的蛋白质节点信息。
根据本发明的一个实施例,该方法还包括:响应于查询特定节点是否为某节点的邻居节点的请求,根据哈希函数计算特定节点所代表的蛋白质的名称的哈希值,根据该哈希值对应的存储位置到该节点的哈希表中查询是否存在该特定节点所代表的蛋白质的名称;若是,则反馈该特定节点是该节点的邻居节点;若否,则反馈该特定节点不是该节点的邻居节点。优选的,哈希表中存储的蛋白质的名称关联于该蛋白质对应的节点和该哈希表对应的节点之间的边的信息(关系)的存储地址。由此,本发明可以通过哈希表找到某节点的邻居节点后,进一步可以通过关联信息获取到两节点之间的边的信息的存储地址,以提高索引效率。通过该实施例给出的方法,本发明可以将两个蛋白质是否存在组间关系的问题转化为:对a节点,通过哈希表查找是否存在某节点与其相邻。如果不采用本结构,对边的查找需要从a节点的第一条边开始遍历,逐条查找直至返回结果。采用本发明,如果要查询a节点是否存在某节点(假设为b节点)与其相邻,则可以直接根据预先设计的哈希函数计算b节点的哈希值,再去a节点的哈希表对应该哈希值的存储位置查找是否有b节点;如果有则证明a节点和b节点相邻,没有则证明a节点和b节点不相邻,由此无需遍历图结构,以在大规模的蛋白质组中提高边索引的效率。理想情况下,在某节点的哈希表里找某边的时间复杂度为O(1),相当于将时间复杂度由O(n)降低到O(1)。
根据本发明的一个示例,仍旧以图2所示的子图中的蛋白质FAA4对应的节点为例对构建哈希表的过程进行说明,其他节点的哈希表的构建过程与FAA4类似。假设模prime被用户设置为101,则预先设计的哈希函数为可以表示为字符A的ASCII码为65,N为4,相当于H(x)=((x4-65)*8+(x3-65)*4+(x2-65)*2+xl-65)MOD101。则构建FAA4对应的哈希表的过程包括:
通过计算H(FAA1)=((70-65)*8+(65-65)*4+(65-65)*2+49-65)MOD101=24MOD101=24,此时哈希表在24的位置为空,直接将FAA1存储在24这个位置;
通过计算H(FAT1)=((70-65)*8+(65-65)*4+(84-65)*2+49-65)MOD101=62MOD101=62,此时哈希表在62的位置为空,直接将FAA1存储在62这个位置;
通过计算H(GEM1)=((71-65)*8+(69-65)*4+(77-65)*2+49-65)MOD101=72MOD101=72,此时哈希表在72的位置为空,直接将GEM1存储在72这个位置;
通过计算H(HMG1)=((72-65)*8+(77-65)*4+(71-65)*2+49-65)MOD101=100MOD101=100,此时哈希表在100的位置为空,直接将HMG1存储在100这个位置;
通过计算H(PAY2)=((80-65)*8+(65-65)*4+(89-65)*2+50-65)MOD101=153MOD101=52,此时哈希表在52的位置为空,直接将PAY2存储在52这个位置;
通过计算H(PAY3)=((80-65)*8+(65-65)*4+(89-65)*2+51-65)MOD101=154MOD101=53,此时哈希表在53的位置为空,直接将PAY3存储在53这个位置;
通过计算H(PGC1)=((80-65)*8+(71-65)*4+(67-65)*2+49-65)MOD101=132MOD101=31,此时哈希表在31的位置为空,直接将PGC1存储在31这个位置,由此,得到如图8所示FAA4对应的哈希表。
需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。
本发明可以是***、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (10)
1.一种基于图数据库的蛋白质组数据管理方法,其特征在于,包括:
获取蛋白质组对应的图数据,图数据包括多个节点和边,其中,节点记录其所代表的蛋白质,边记录其连接的两个节点间的关系;
根据该蛋白质组对应的图数据建立底层的双向链表,该双向链表中的节点按照其所代表蛋白质的名称的字典序依次排列;
从底层的双向链表开始,每两个节点提取一个节点到上一层索引以在各索引层建立单向的索引链表,直至顶部的索引链表仅有两个节点,以建立包括多层索引的快速索引。
2.根据权利要求1所述的基于图数据库的蛋白质组数据管理方法,其特征在于,所述方法包括:响应于图数据库中任意蛋白质组对应的图数据达到预设规模的信号,按照前述方式为达到预设规模的蛋白质组在原始的倒排索引之外建立快速索引。
3.根据权利要求2所述的基于图数据库的蛋白质组数据管理方法,其特征在于,所述方法还包括:
在向建立有快速索引的蛋白质组对应的图数据中***新的蛋白质对应的节点时,生成一个用于决定该蛋白质组对应的图数据的快速索引的更新方式的随机变量,根据随机变量所属的不同数值范围设置用于更新快速索引的不同更新方式。
4.根据权利要求3所述的基于图数据库的蛋白质组数据管理方法,所述随机变量服从参数为p的几何分布,其中,所述p=0.5。
5.根据权利要求4所述的基于图数据库的蛋白质组数据管理方法,其特征在于,所述数值范围包括:
第一数值范围,其仅为数值1;
第二数值范围(1,k+1];
第三数值范围(k+1,+∞),k表示当前快速索引中索引层的总层数;
其中,所述根据随机变量所属的不同数值范围设置用于更新快速索引的不同更新方式包括:
在当前生成的随机变量属于第一数值范围时,在底层的双向链表中***该新的蛋白质对应的节点,不更新快速索引;
在当前生成的随机变量属于第二数值范围时,在底层的双向链表中***该新的蛋白质对应的节点,并在当前生成的随机变量的数值以下层数的索引层中加入该***的新的蛋白质对应的节点;
在当前生成的随机变量属于第三数值范围时,在底层的双向链表中***该新的蛋白质对应的节点,在顶部新增一个索引层且在每个索引层中均加入该***的新的蛋白质对应的节点,并且顶部的索引层从下一索引层中每两个节点提取一个节点和该***的新的蛋白质对应的节点共同构建单向链表。
6.根据权利要求1所述的基于图数据库的蛋白质组数据管理方法,其特征在于,所述方法还包括:
响应于删除建立有快速索引的蛋白质组对应的图数据中的某个待删除蛋白质对应的节点的请求,从多层索引的顶层依次向下查找并删除每个索引层中的该待删除蛋白质对应的节点后,删除底层的双向链表中的该待删除蛋白质对应的节点。
7.根据权利要求1至6任一项所述的基于图数据库的蛋白质组数据管理方法,所述方法还包括:
为建立有快速索引的蛋白质组对应的图数据中的每个蛋白质对应的节点建立一个用于记录节点间的关系的哈希表,根据预先设计的哈希函数基于该节点的各邻居节点所代表的蛋白质的名称计算各邻居节点在哈希表中的存储位置,并将各邻居节点所代表的蛋白质的名称分别存储在计算得到的存储位置。
9.一种计算机可读存储介质,其特征在于,其上包含有计算机程序,所述计算机程序可被处理器执行以实现权利要求1至8中任一项所述方法的步骤。
10.一种电子设备,其特征在于,包括:
一个或多个处理器;以及
存储器,其中存储器用于存储一个或多个可执行指令;
所述一个或多个处理器被配置为经由执行所述一个或多个可执行指令以实现权利要求1至8中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010816554.4A CN112116951B (zh) | 2020-08-14 | 2020-08-14 | 一种基于图数据库的蛋白质组数据管理方法、介质和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010816554.4A CN112116951B (zh) | 2020-08-14 | 2020-08-14 | 一种基于图数据库的蛋白质组数据管理方法、介质和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112116951A true CN112116951A (zh) | 2020-12-22 |
CN112116951B CN112116951B (zh) | 2023-04-07 |
Family
ID=73804050
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010816554.4A Active CN112116951B (zh) | 2020-08-14 | 2020-08-14 | 一种基于图数据库的蛋白质组数据管理方法、介质和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112116951B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060004792A1 (en) * | 2004-06-21 | 2006-01-05 | Lyle Robert W | Hierarchical storage architecture using node ID ranges |
CN109726305A (zh) * | 2018-12-30 | 2019-05-07 | 中国电子科技集团公司信息科学研究院 | 一种基于图结构的复杂关系数据存储及检索方法 |
CN110347685A (zh) * | 2019-06-28 | 2019-10-18 | 华中科技大学 | 基于字典树的索引结构、数据查询优化方法、主存管理器 |
CN110706743A (zh) * | 2019-10-14 | 2020-01-17 | 福建师范大学 | 一种平衡采样与图检索的蛋白质互作网络模体检测方法 |
CN110929103A (zh) * | 2019-11-20 | 2020-03-27 | 车智互联(北京)科技有限公司 | 为数据集合构建索引的方法、数据查询方法及计算设备 |
-
2020
- 2020-08-14 CN CN202010816554.4A patent/CN112116951B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060004792A1 (en) * | 2004-06-21 | 2006-01-05 | Lyle Robert W | Hierarchical storage architecture using node ID ranges |
CN109726305A (zh) * | 2018-12-30 | 2019-05-07 | 中国电子科技集团公司信息科学研究院 | 一种基于图结构的复杂关系数据存储及检索方法 |
CN110347685A (zh) * | 2019-06-28 | 2019-10-18 | 华中科技大学 | 基于字典树的索引结构、数据查询优化方法、主存管理器 |
CN110706743A (zh) * | 2019-10-14 | 2020-01-17 | 福建师范大学 | 一种平衡采样与图检索的蛋白质互作网络模体检测方法 |
CN110929103A (zh) * | 2019-11-20 | 2020-03-27 | 车智互联(北京)科技有限公司 | 为数据集合构建索引的方法、数据查询方法及计算设备 |
Non-Patent Citations (1)
Title |
---|
曹皓伟等: "《基于Neo4j生物医药知识图谱的构建》", 《计算机时代》 * |
Also Published As
Publication number | Publication date |
---|---|
CN112116951B (zh) | 2023-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5604507B2 (ja) | データベース内のオブジェクトを探索する方法 | |
CN106484875B (zh) | 基于molap的数据处理方法及装置 | |
CN110851722A (zh) | 基于字典树的搜索处理方法、装置、设备和存储介质 | |
CN110291518A (zh) | 合并树无用单元指标 | |
CN110383261A (zh) | 用于多流存储装置的流选择 | |
CN110268399A (zh) | 用于维护操作的合并树修改 | |
US20100106713A1 (en) | Method for performing efficient similarity search | |
US10146818B2 (en) | Computing system | |
CN106503223B (zh) | 一种结合位置和关键词信息的在线房源搜索方法及装置 | |
CN109033314B (zh) | 内存受限情况下的大规模知识图谱的实时查询方法和*** | |
CN108681603B (zh) | 数据库中快速搜索树形结构数据的方法、存储介质 | |
CN109635037B (zh) | 一种关系型分布式数据库的分片存储方法及装置 | |
US8015195B2 (en) | Modifying entry names in directory server | |
CN110888880A (zh) | 基于空间索引的邻近分析方法、装置、设备及介质 | |
CN111858607A (zh) | 数据处理方法、装置、电子设备和计算机可读介质 | |
KR100419575B1 (ko) | 고차원 색인구조를 위한 벌크 로딩방법 | |
CN115563409A (zh) | 一种地址行政区划识别方法、装置、设备及介质 | |
CN111813744A (zh) | 文件的搜索方法、装置、设备及存储介质 | |
CN114168705B (zh) | 一种基于地址要素索引的中文地址匹配方法 | |
CN115935020A (zh) | 一种图数据存储方法和装置 | |
CN109992593A (zh) | 一种基于子图匹配的大规模数据并行查询方法 | |
CN112116951B (zh) | 一种基于图数据库的蛋白质组数据管理方法、介质和设备 | |
KR102354343B1 (ko) | 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 방법 및 장치 | |
CN112162986A (zh) | 一种并行top-k范围skyline查询方法和*** | |
CN116361287A (zh) | 路径解析方法、装置以及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |