首页> 中国专利> 一种临床试验数据的快速比对方法

一种临床试验数据的快速比对方法

摘要

本发明公开一种临床试验数据的快速比对方法,通过生成键哈希表和行哈希表,在比较时,可以以接近O(R)(R是目标文件行数)的时间复杂度完成一次文件比对,并且可以应对数据库导出时各行随机排列的情况。其次通过建立键哈希簇,保证了在键哈希发生变化时,依然能够快速的查找到对应的行,避免了键哈希的个别改动导致该行记录被标记为删除和新增的情况,能够最大限度的让数据管理人员精确追踪到各个数据点的变化。再次,通过改进的行哈希比对方法,能够在数据集中发生整行变动时,依然能够以接近O(R)的时间复杂度完成比对,而不至于退化成一个逐值比对的算法。本发明针对CRO的数据库变化特性设计的,CRO业务场景中具有非常良好的应用前景与商业价值。

著录项

  • 公开/公告号CN114791916A

    专利类型发明专利

  • 公开/公告日2022-07-26

    原文格式PDF

  • 申请/专利权人 广东杰纳医药科技有限公司;

    申请/专利号CN202210709642.3

  • 发明设计人 康灿平;邓亮;

    申请日2022-06-22

  • 分类号G06F16/22;G06F16/23;G06F16/81;

  • 代理机构广州粤高专利商标代理有限公司;

  • 代理人刘俊

  • 地址 510670 广东省广州市黄埔区掬泉路3号H栋701-708房

  • 入库时间 2023-06-19 16:08:01

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-07-26

    公开

    发明专利申请公布

说明书

技术领域

本发明涉及数据比对领域,更具体地,涉及一种临床试验数据的快速比对方法。

背景技术

在医药CRO企业中,需要对临床实验中产生的各种实验数据进行分析、处理,产生的数据一般以sas7bdat或者excel格式存储。sas7bdat/excel都是一种典型的结构化数据,具有以下特点:1)以行为单位;2)行与行之间是独立关系,但存在关联,数据的每一行代表着一个受试者的个人信息、用药记录或者不良反应等等。但某些行的特定列依赖共同的数据,如若发生变化,会一起变化;3)有部分列是固定且一定会存在的,而其他列则有可能随着实验的进展新增或者被删除。随着实验的推进,一个sas7bdat/excel数据文件可能存储数十万行甚至数百万行的数据,统计分析员通常需要对两份数据进行比对,以此找出数据变化的位置,从而快速分析解决问题。

临床实验中产生的大量试验数据大多数是靠临床运营人员手工录入到数据库中。临床试验数据对准确性要求极高,因此会反复对数据进行核查和订正。因此在数据库中的各个数据点也会频繁变动,数据库也会经历较多的版本变化。在不同版本的数据库文件中,不存在唯一的数据行ID,各版本数据库中,数据行间也并不保证顺序一致,因此常见的逐行比对算法无法应用于这个任务当中。

CRO的数据清理任务通常需要保存每一个版本的数据集文件,并跟踪所有数据的变化,以判断存在的问题是否已经被修复,或者是否因数据修改出现新的问题。数据库通常到试验后期会累计起数十万行甚至数百万行的数据,如何快速准确的在行顺序不固定的数据库中找出两份数据的差异性,是CRO数据清理任务中的基本需求。

针对少量的数据,最直接的文件比对方法是逐行比对,但是随着数据量的增多,逐行比对的时间复杂度高,计算资源消耗大,几十万行或者上百万行的数据,可能得花费数十分钟才能完成,严重降低工作效率(假设基准文件的行数为m,属性列为k,待目标文件的行数为n,属性列为g,那么时间复杂度为

现有技术公开一种文件比对方法,首先通过参数文件确定文件中的一列或者多列组成唯一标识,并通过哈希算法计算出这些唯一标识列的哈希值,得到内容标识编码KEY,同理将需要对比的列的值,通过哈希算法得到内容标识编码VALUE,通过对KEY和VALUE的对比,来找到基准文件和目标文件的内容差异。这种方法相对于逐行比较,确实可以显著降低算法复杂度,但是存在两个主要的问题:1. 没有考虑当唯一标识列改变,而对比列没有变化或者只有很小部分改变的情况下,此时此行并不是删除,而是属于属性或属性值修改。2.该专利只考虑了基准文件和目标文件行之间的删除和新增,以及列之间的属性修改,并没有考虑列的新增和删除,换而言之,该专利只考虑了两个文件属性一致的情况,而对于属性列可以新增或者删除的情况,则没有办法解决。

另一种现有技术中提出一种文件差异的对比方法和装置,提出将变更前以及变更后的文件内容转化为第一矩阵以及第二矩阵,并将第一矩阵和第二矩阵的第一特征列和第二特征列转换为哈希表再进行比较,该专利主要是为了比较非结构化数据差异对比的问题,并没有利用到结构化或者半结构化数据的特点,因而并不适用于本申请的情景。

发明内容

本发明的首要目的是提供一种临床试验数据的快速比对方法,快速定位结构化或半结构化文件差异位置,不仅可以更加精准的计算出行与行之间的变化,同时还能计算出每行中属性(列)的差异性。

为解决上述技术问题,本发明的技术方案如下:

一种临床试验数据的快速比对方法,临床试验数据以sas7bdat或者excel格式存储,存储时以行为单位,每一行均包含多列,将原始的存储文件为基准文件,修改后的存储文件为目标文件,所述比对方法包括以下步骤:

S1:选择临床试验数据中的某几列作为特征列,形成特征列配置文件,所述特征列的取值组合在一起在数据库内具有唯一性;

S2:根据所述特征列配置文件,确定基准文件以及目标文件共有的特征列;

S3:分别求出基准文件以及目标文件中各行位于共有的特征列的数值的哈希值;

S4:根据步骤S3求出的哈希值,分别构建基准文件以及目标文件的键哈希表;

S5:将基准文件以及目标文件中各行除了共有的特征列之外的其它的列的值按列名序取出,分别拼接成一个数组,然后整体计算其数组的哈希值,作为该行的行哈希,按照行号排列成行哈希表;

S6:将目标文件的键哈希表与基准文件的键哈希表进行比对,构建基准文件独有键哈希表和目标文件独有键哈希表;

S7:判断基准文件独有键哈希表与目标文件独有键哈希表是否均不为空,若均不为空,则进入步骤S8,若至少一个哈希表为空时,则结束比对;

S8:根据所述基准文件独有键哈希表,构建键哈希簇;

S9:将目标文件独有键哈希表与键哈希簇进行比对,标记有修改的行,并将基准文件中的对应的键哈希从所述键哈希簇以及基准文件独有键哈希表中删除,将目标文件中的对应的键哈希从所述目标文件独有键哈希表中删除;

S10:基准文件独有键哈希表中还剩下的行,即为在目标文件中已经不存在的行;目标文件独有键哈希表中还剩下的行,即为在目标文件中新增的行;完成比对。

优选地,步骤S3中分别求出基准文件以及目标文件中各行位于共有的特征列的数值的哈希值,具体为:

首先对特征列进行排序,按照特征列的列名来对特征列进行排序;

对每行数据,按序取出各特征列的值,根据值的类型计算其哈希值,对于能够提升至64位整型或双精度浮点型数据的数据类型,或者少于8个byte的字符串,将这些数据类型补齐至8byte,转换为16进制字符串后作为哈希值;对于其他数据类型,通过哈希算法将值转换为长度为8byte的哈希值。

优选地,步骤S6中构建基准文件独有键哈希表和目标文件独有键哈希表,具体为:

如果在基准文件的键哈希表中发现与目标文件相同的键哈希,则取出对应的基准文件行号,以行号在基准文件的行哈希表中取出行哈希,与目标文件的行哈希继续比对,如果行哈希也匹配,则该行在基准文件中与在目标文件中一致,没有修改;如果键哈希一致而行哈希不匹配,则逐列对比两行的值,找到不一致的数据点并输出;

如果某键哈希只出现在基准文件的键哈希表中,而未出现在目标文件的键哈希表中,则将该键哈希与行号记录到基准文件独有键哈希表中;

如果某键哈希只出现在目标文件的键哈希表中,而未出现在基准文件的键哈希表中,则将该键哈希与行号记录到目标文件独有键哈希表中。

优选地,步骤S7中判断基准文件独有键哈希表与目标文件独有键哈希表是否均不为空,若至少一个哈希表不为空,则结束比对,具体为:

当基准文件独有键哈希表与目标文件独有键哈希表均为空时,结束比对;

当目标文件独有键哈希表为空,只有基准文件独有键哈希表有值时,表明原本存在于基准文件中的行已经被删除,将这些被删除的行标记并输出后,结束比对;

当基准文件独有键哈希表为空,只有目标文件独有键哈希表有值时,表明这些行是在目标文件中新增的行,将这些新增行标记后,结束比对。

优选地,步骤S8中根据所述基准文件独有键哈希表,构建键哈希簇,具体为:

对基准文件独有键哈希表,遍历该表,将每个键哈希拆回对应特征列的哈希值序列,同时,维护C_k个哈希字典,其中,C_k为特征列的数量,每个哈希字典的KEY为对应特征列的哈希值,value则为一个由行号构成的集合;将键哈希拆出的N个特征列哈希值后,使用这些哈希值将行号插入到所述C_k个哈希字典中,所述C_k个哈希字典合起来称为键哈希簇。

优选地,步骤S9具体为:

将目标文件独有键哈希表中的键哈希拆分为特征列对应的哈希值序列,对所述哈希值序列中的每个哈希,去对应的基准文件的键哈希簇的字典中查找,如果查找命中,则将该簇中命中的行号集合提取出来,将键哈希簇中所有提取出的行号集合进行计数,并将行号按照出现次数倒序排列,得到的行号列表;若所有簇都未命中,则该键哈希为目标文件中新增的行的哈希;

按行号列表依次找到的基准文件的行,逐行与当前的目标文件中的行比对,找到最接近的行,计算这两行不一致的列数,如果不一致的列数小于预先设定的阈值,则将这两行标记为基准文件与目标文件的对应行,且有修改;标记完毕后,将基准文件中的键哈希从所述键哈希簇以及基准文件独有键哈希表中删除,将目标文件中的键哈希从所述目标文件独有键哈希表中删除。

优选地,步骤S6开始比对时,先判断目标文件的行数是否小于设定值,若小于设定值,执行步骤S6,若不小于设定值,从目标文件中随机抽取10%的行进行对比,并计算占比值和改进算法阈值,若占比值小于改进算法阈值,执行步骤S6,若占比值大于等于改进算法阈值,执行改进算法;

所述改进算法包括以下步骤:

从目标文件中随机抽取10%的行进行对比得到存在修改数据的总行数N_mod,取出修改行数超过N_mod/2的列形成集合C_d,将集合C_d中的列的列号记录下来,作为单独比对列集合;

通过键哈希匹配,找到基准文件与目标文件的对应行,将基准文件的该行中的单独比对列集合内的值取出,直接与目标文件对应行中的这些列的值比较,求得单独比对列中的不一致情况,然后将目标文件中对应位置的值替换成基准文件中的单独比对列的值,再对目标文件中的对应行计算行哈希,与基准文件的行哈希进行对比,如果对比一致则说明单独比对列以外不存在不同的值,不一致则逐值对比,找到所有不匹配的值。

优选地,所述计算占比值和改进算法阈值,具体为:

从目标文件中随机抽取10%的行进行对比,统计被修改的行中,各列的被修改次数,即各列的修改行数;

所述占比值R_Cd_mod的计算方式如下:

R_Cd_mod=N_Cd_mod/N_mod

式中,N_Cd_mod为集合C_d各列有修改的行数;

所述改进算法阈值R_th的计算方式如下:

R_th=(C-1-|C_d|)/(C-1)

式中,C为目标文件的总列数,|C_d|为集合C_d中的列数。

优选地,在改进算法中,将当前目标文件中求出的哈希和单独比对列的列号一起保存,在下一次比对时,将当前的目标文件记录为基准文件1,而将当前的基准文件记为基准文件0;在下一次比对的目标文件中,应当先使用基准文件1中的单独比对列与目标文件的对应列比对,然后将基准文件0中的单独比对列的值填充到目标文件的对应列中,计算行哈希,然后再与基准文件1的行哈希进行比对,如果行哈希一致,则目标文件与基准文件1中除单独比对列以外的其他列的值均一致,如果行哈希不一致,再逐值比对,由此可获得下一次比对时候的比对结果。

优选地,在改进算法的下一次比对中,发现有一列单独比对列在基准文件1与目标文件中超过90%一致,在比对完毕后调整单独比对列,将完全一致的列剔除出单独比对列,然后重新计算各行的行哈希,待下一次比对时使用。

一种快速临床试验数据比对系统,包括:

配置文件生成模块,所述配置文件生成模块选择临床试验数据中的某几列作为特征列,形成特征列配置文件,所述特征列的取值组合在一起在数据库内具有唯一性;

共有特征列确定模块,所述共有特征列确定模块根据所述特征列配置文件,确定基准文件以及目标文件共有的特征列;

共有特征列哈希模块,所述共有特征列哈希模块用于分别求出基准文件以及目标文件中各行位于共有的特征列的数值的哈希值;

键哈希表模块,所述键哈希表模块用于根据共有特征列哈希模块求出的哈希值,分别构建基准文件以及目标文件的键哈希表;

行哈希表模块,所述行哈希表模块用于将基准文件以及目标文件中各行除了共有的特征列之外的其它的列的值按列名序取出,分别拼接成一个数组,然后整体计算其数组的哈希值,作为该行的行哈希,按照行号排列成行哈希表;

第一次比对模块,所述第一比对模块将目标文件的键哈希表与基准文件的键哈希表进行比对,有以下情况:

如果在基准文件的键哈希表中发现与目标文件相同的键哈希,则取出对应的基准文件行号,以行号在基准文件的行哈希表中取出行哈希,与目标文件的行哈希继续比对,如果行哈希也匹配,则该行在基准文件中与在目标文件中一致,没有修改;如果键哈希一致而行哈希不匹配,则逐列对比两行的值,找到不一致的数据点并输出;

如果某键哈希只出现在基准文件的键哈希表中,而未出现在目标文件的键哈希表中,则将该键哈希与行号记录到基准文件独有键哈希表中;

如果某键哈希只出现在目标文件的键哈希表中,而未出现在基准文件的键哈希表中,则将该键哈希与行号记录到目标文件独有键哈希表中;

判断模块,所述判断模块判断基准文件独有键哈希表与目标文件独有键哈希表是否均不为空,若均不为空,则进入键哈希簇模块,若至少一个哈希表为空时,则结束比对;

键哈希簇模块,所述键哈希簇模块根据所述基准文件独有键哈希表,构建键哈希簇;

第二次比对模块,所述第二次比对模块将目标文件独有键哈希表中的键哈希拆分为特征列对应的哈希值序列,对所述哈希值序列中的每个哈希,去对应的基准文件的键哈希簇的字典中查找,如果查找命中,则将该簇中命中的行号集合提取出来,将键哈希簇中所有提取出的行号集合进行计数,并将行号按照出现次数倒序排列,得到的行号列表;若所有簇都未命中,则该键哈希为目标文件中新增的行的哈希;

按行号列表依次找到的基准文件的行,逐行与当前的目标文件中的行比对,找到最接近的行,计算这两行不一致的列数,如果不一致的列数小于预先设定的阈值,则将这两行标记为基准文件与目标文件的对应行,且有修改;标记完毕后,将基准文件中的键哈希从所述键哈希簇以及基准文件独有键哈希表中删除,将目标文件中的键哈希从所述目标文件独有键哈希表中删除;

比对完成模块,所述比对完成模块用于将基准文件独有键哈希表中还剩下的行,即为在目标文件中已经不存在的行;目标文件独有键哈希表中还剩下的行,即为在目标文件中新增的行;完成比对。

与现有技术相比,本发明技术方案的有益效果是:

针对结构化或者半结构化的数据,本发明所实现的比对算法可以快速高效的计算出文件的差异。首先,本发明算法实现过程中产生的中间数据如键哈希表,行哈希表,在比较时,可以以接近O(R) (R为目标文件行数),的时间复杂度完成一次文件比对,并且可以应对数据库导出时各行随机排列的情况。其次本发明通过建立键哈希簇,保证了在键哈希发生变化时,依然能够快速的查找到对应的行,避免了键哈希的个别改动导致该行记录被标记为删除和新增的情况,能够最大限度的让数据管理人员精确追踪到各个数据点的变化。再次,本发明通过改进的行哈希比对方法,能够在数据集中发生整行变动时,依然能够以接近O(R)的时间复杂度完成比对,而不至于退化成一个逐值比对的算法。这些算法都是针对CRO的数据库变化特性设计的,因此本发明在CRO业务场景中具有非常良好的应用前景与商业价值。

附图说明

图1为本发明的方法流程示意图。

图2为本发明的改进算法条件判断方法示意图。

图3为改进算法流程示意图。

图4为本发明的系统模块示意图。

具体实施方式

附图仅用于示例性说明,不能理解为对本专利的限制;

为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;

对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。

下面结合附图和实施例对本发明的技术方案做进一步的说明。

实施例1

本实施例提供一种临床试验数据的快速比对方法,如图1所示,临床试验数据以sas7bdat或者excel格式存储,存储时以行为单位,每一行均包含多列,将原始的存储文件为基准文件,修改后的存储文件为目标文件,所述比对方法包括以下步骤:

S1:选择临床试验数据中的某几列作为特征列,形成特征列配置文件,所述特征列的取值组合在一起在数据库内具有唯一性;

本实施例中,特征列的取值具有唯一性,但并不能认为特征列的值是不会被修改的。一个典型的例子是,通常在临床试验中,受试者ID会被取作特征列,但也存在临床运营人员看错受试者ID,错误的将一名受试者的数据记录到另一名受试者的数据表中的情况,经CRO发起数据质疑后,需要在数据库中更正受试者ID。

本发明相对于前述各专利的一大特征就是当特征列的取值发生改变时,也能追踪到是某一行的数据发生了变动,而不是认为是删除了一行旧数据,新增了一行新数据。

S2:根据所述特征列配置文件,确定基准文件以及目标文件共有的特征列;

S3:分别求出基准文件以及目标文件中各行位于共有的特征列的数值的哈希值;

S4:根据步骤S3求出的哈希值,分别构建基准文件以及目标文件的键哈希表;

S5:将基准文件以及目标文件中各行除了共有的特征列之外的其它的列的值按列名序取出,分别拼接成一个数组,然后整体计算其数组的哈希值,作为该行的行哈希,按照行号排列成行哈希表;

S6:将目标文件的键哈希表与基准文件的键哈希表进行比对,构建基准文件独有键哈希表和目标文件独有键哈希表;

S7:判断基准文件独有键哈希表与目标文件独有键哈希表是否均不为空,若均不为空,则进入步骤S8,若至少一个哈希表为空时,则结束比对;

S8:根据所述基准文件独有键哈希表,构建键哈希簇;

S9:将目标文件独有键哈希表与键哈希簇进行比对,标记有修改的行,并将基准文件中的对应的键哈希从所述键哈希簇以及基准文件独有键哈希表中删除,将目标文件中的对应的键哈希从所述目标文件独有键哈希表中删除;

S10:基准文件独有键哈希表中还剩下的行,即为在目标文件中已经不存在的行;目标文件独有键哈希表中还剩下的行,即为在目标文件中新增的行;完成比对。

实施例2

本实施例在实施例1的基础上,继续公开以下内容:

步骤S3中分别求出基准文件以及目标文件中各行位于共有的特征列的数值的哈希值,具体为:

首先对特征列进行排序,按照特征列的列名来对特征列进行排序;

对每行数据,按序取出各特征列的值,根据值的类型计算其哈希值,对于能够提升至64位整型或双精度浮点型数据的数据类型,或者少于8个byte的字符串,将这些数据类型补齐至8byte,转换为16进制字符串后作为哈希值;对于其他数据类型,通过哈希算法(例如sha1算法,但不仅限于sha1算法,其他哈希算法都可以)将值转换为长度为8byte的哈希值。

步骤S6中构建基准文件独有键哈希表和目标文件独有键哈希表,具体为:

如果在基准文件的键哈希表中发现与目标文件相同的键哈希,则取出对应的基准文件行号,以行号在基准文件的行哈希表中取出行哈希,与目标文件的行哈希继续比对,如果行哈希也匹配,则该行在基准文件中与在目标文件中一致,没有修改;如果键哈希一致而行哈希不匹配,则逐列对比两行的值,找到不一致的数据点并输出;

如果某键哈希只出现在基准文件的键哈希表中,而未出现在目标文件的键哈希表中,则将该键哈希与行号记录到基准文件独有键哈希表中;

如果某键哈希只出现在目标文件的键哈希表中,而未出现在基准文件的键哈希表中,则将该键哈希与行号记录到目标文件独有键哈希表中。

步骤S7中判断基准文件独有键哈希表与目标文件独有键哈希表是否均不为空,若至少一个哈希表不为空,则结束比对,具体为:

当基准文件独有键哈希表与目标文件独有键哈希表均为空时,结束比对;

当目标文件独有键哈希表为空,只有基准文件独有键哈希表有值时,表明原本存在于基准文件中的行已经被删除,将这些被删除的行标记并输出后,结束比对;

当基准文件独有键哈希表为空,只有目标文件独有键哈希表有值时,表明这些行是在目标文件中新增的行,将这些新增行标记后,结束比对。

步骤S8中根据所述基准文件独有键哈希表,构建键哈希簇,具体为:

对基准文件独有键哈希表,遍历该表,将每个键哈希拆回对应特征列的哈希值序列,同时,维护C_k个哈希字典,其中,C_k为特征列的数量,每个哈希字典的KEY为对应特征列的哈希值,value则为一个由行号构成的集合;将键哈希拆出的N个特征列哈希值后,使用这些哈希值将行号插入到所述C_k个哈希字典中,所述C_k个哈希字典合起来称为键哈希簇。

步骤S9具体为:

将目标文件独有键哈希表中的键哈希拆分为特征列对应的哈希值序列,对所述哈希值序列中的每个哈希,去对应的基准文件的键哈希簇的字典中查找,如果查找命中,则将该簇中命中的行号集合提取出来,将键哈希簇中所有提取出的行号集合进行计数,并将行号按照出现次数倒序排列,得到的行号列表;若所有簇都未命中,则该键哈希为目标文件中新增的行的哈希;

按行号列表依次找到的基准文件的行,逐行与当前的目标文件中的行比对,找到最接近的行,计算这两行不一致的列数,如果不一致的列数小于预先设定的阈值,则将这两行标记为基准文件与目标文件的对应行,且有修改;标记完毕后,将基准文件中的键哈希从所述键哈希簇以及基准文件独有键哈希表中删除,将目标文件中的键哈希从所述目标文件独有键哈希表中删除。

实施例3

本实施例针对表格中可能出现的新增列,或者整列删除,或者整列改变的情况,在实施例1和实施例2基本算法流程的基础上,还提供一种优化的处理方法。

当对比表格中出现了整列的变动时(包括新增列、整列删除、整列修改),步骤S6中的“如果键哈希一致而行哈希不匹配,则逐列对比两行的值,找到不一致的数据点并输出”这个流程将会对每一次行比对中执行,会使得算法在这种情况下的复杂度由O(R)退化为O(R*C),其中R为表行数,C为表列数。整行/列变更在数据集变化中非常常见,为保障算法在这种情况下的效率,本实施例在上述步骤S6的基础上提出了改进算法如下:

步骤S6开始比对时,先判断目标文件的行数是否小于设定值,若小于设定值,执行步骤S6,若不小于设定值,从目标文件中随机抽取10%的行进行对比,并计算占比值和改进算法阈值,若占比值小于改进算法阈值,执行步骤S6,若占比值大于等于改进算法阈值,执行改进算法;

所述改进算法如图3所示,包括以下步骤:

从目标文件中随机抽取10%的行进行对比得到存在修改数据的总行数N_mod,取出修改行数超过N_mod/2的列形成集合C_d,将集合C_d中的列的列号记录下来,作为单独比对列集合;

通过键哈希匹配,找到基准文件与目标文件的对应行,将基准文件的该行中的单独比对列集合内的值取出,直接与目标文件对应行中的这些列的值比较,求得单独比对列中的不一致情况,然后将目标文件中对应位置的值替换成基准文件中的单独比对列的值,再对目标文件中的对应行计算行哈希,与基准文件的行哈希进行对比,如果对比一致则说明单独比对列以外不存在不同的值,不一致则逐值对比,找到所有不匹配的值。

如图2所示,所述计算占比值和改进算法阈值,具体为:

从目标文件中随机抽取10%的行进行对比,统计被修改的行中,各列的被修改次数,即各列的修改行数;

所述占比值R_Cd_mod的计算方式如下:

R_Cd_mod=N_Cd_mod/N_mod

式中,N_Cd_mod为集合C_d各列有修改的行数;

所述改进算法阈值R_th的计算方式如下:

R_th=(C-1-|C_d|)/(C-1)

式中,C为目标文件的总列数,|C_d|为集合C_d中的列数。

阈值R_th为根据原算法执行计算量与执行改进算法预估的计算量比较后得出的阈值,高于此阈值代表执行改进算法流程较为节省计算时间,低于此阈值代表执行原算法较为节省计算时间。

在改进算法中,将当前目标文件中求出的哈希和单独比对列的列号一起保存。

当前的目标文件,在下次比对时,会变为基准文件,因此需要将当前目标文件中求出的哈希保存,以备下次使用。在原步骤中,每次计算的行哈希可以直接留存待下次对比,在改进步骤中,行哈希的计算排除了单独比对列,因此需要将单独比对列的列号也存储下来。

在改进算法中,在下一次比对时,将当前的目标文件记录为基准文件1,而将当前的基准文件记为基准文件0;在下一次比对的目标文件中,应当先使用基准文件1中的单独比对列与目标文件的对应列比对,然后将基准文件0中的单独比对列的值填充到目标文件的对应列中,计算行哈希,然后再与基准文件1的行哈希进行比对,如果行哈希一致,则目标文件与基准文件1中除单独比对列以外的其他列的值均一致,如果行哈希不一致,再逐值比对,由此可获得下一次比对时候的比对结果。

在改进算法的下一次比对中,发现有一列单独比对列在基准文件1与目标文件中超过90%一致,在比对完毕后调整单独比对列,将完全一致的列剔除出单独比对列,然后重新计算各行的行哈希,待下一次比对时使用。

经过上述改进步骤后,当数据集中出现频繁且影响较广泛的变化列时(例如记录时间戳的列),本算法依然能高效的以接近O(R)的时间复杂度执行。而当发生偶发性的整列改动后,本改进算法也能够保证增加的单独比对列能够在这一列变化完毕后2个版本内,能够重新回归到行哈希的比对,不至于随着比对次数的增多,单独比对列会逐渐增加,导致算法退化。

实施例4

本实施例提供一种快速临床试验数据比对系统,如图4所示,包括:

配置文件生成模块,所述配置文件生成模块选择临床试验数据中的某几列作为特征列,形成特征列配置文件,所述特征列的取值组合在一起在数据库内具有唯一性;

共有特征列确定模块,所述共有特征列确定模块根据所述特征列配置文件,确定基准文件以及目标文件共有的特征列;

共有特征列哈希模块,所述共有特征列哈希模块用于分别求出基准文件以及目标文件中各行位于共有的特征列的数值的哈希值;

键哈希表模块,所述键哈希表模块用于根据共有特征列哈希模块求出的哈希值,分别构建基准文件以及目标文件的键哈希表;

行哈希表模块,所述行哈希表模块用于将基准文件以及目标文件中各行除了共有的特征列之外的其它的列的值按列名序取出,分别拼接成一个数组,然后整体计算其数组的哈希值,作为该行的行哈希,按照行号排列成行哈希表;

第一次比对模块,所述第一比对模块将目标文件的键哈希表与基准文件的键哈希表进行比对,有以下情况:

如果在基准文件的键哈希表中发现与目标文件相同的键哈希,则取出对应的基准文件行号,以行号在基准文件的行哈希表中取出行哈希,与目标文件的行哈希继续比对,如果行哈希也匹配,则该行在基准文件中与在目标文件中一致,没有修改;如果键哈希一致而行哈希不匹配,则逐列对比两行的值,找到不一致的数据点并输出;

如果某键哈希只出现在基准文件的键哈希表中,而未出现在目标文件的键哈希表中,则将该键哈希与行号记录到基准文件独有键哈希表中;

如果某键哈希只出现在目标文件的键哈希表中,而未出现在基准文件的键哈希表中,则将该键哈希与行号记录到目标文件独有键哈希表中;

判断模块,所述判断模块判断基准文件独有键哈希表与目标文件独有键哈希表是否均不为空,若均不为空,则进入键哈希簇模块,若至少一个哈希表为空时,则结束比对;

键哈希簇模块,所述键哈希簇模块根据所述基准文件独有键哈希表,构建键哈希簇;

第二次比对模块,所述第二次比对模块将目标文件独有键哈希表中的键哈希拆分为特征列对应的哈希值序列,对所述哈希值序列中的每个哈希,去对应的基准文件的键哈希簇的字典中查找,如果查找命中,则将该簇中命中的行号集合提取出来,将键哈希簇中所有提取出的行号集合进行计数,并将行号按照出现次数倒序排列,得到的行号列表;若所有簇都未命中,则该键哈希为目标文件中新增的行的哈希;

按行号列表依次找到的基准文件的行,逐行与当前的目标文件中的行比对,找到最接近的行,计算这两行不一致的列数,如果不一致的列数小于预先设定的阈值,则将这两行标记为基准文件与目标文件的对应行,且有修改;标记完毕后,将基准文件中的键哈希从所述键哈希簇以及基准文件独有键哈希表中删除,将目标文件中的键哈希从所述目标文件独有键哈希表中删除;

比对完成模块,所述比对完成模块用于将基准文件独有键哈希表中还剩下的行,即为在目标文件中已经不存在的行;目标文件独有键哈希表中还剩下的行,即为在目标文件中新增的行;完成比对。

相同或相似的标号对应相同或相似的部件;

附图中描述位置关系的用语仅用于示例性说明,不能理解为对本专利的限制;

显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号