一种大规模基因表达数据的索引构建方法及数据检索方法

未命名 07-15 阅读:133 评论:0


1.本发明属于应用生物信息学技术领域,涉及一种大规模基因表达数据的索引构建方法及数据检索方法,主要应用于生物、基因等相关领域的利用公开共享的基因表达数据进行数据挖掘的处理方法。


背景技术:

2.基因表达数据中蕴含着基因活动的丰富信息,可用于研究扰动基因、基因间关系、基因调控机制等生物学问题。基因表达数据分析已广泛应用于基因功能预测、疾病发生机制、临床诊断治疗、药物筛选研发,病原体侵染等生物医学领域。
3.随着cdna微阵列等高通量检测技术的发展,研究者可以从全基因组水平定性或定量检测基因表达的产物。目前已积累了大量的公共基因表达数据,例如ncbi的gene expression omnibus(geo)database是一个国际公共存储库,用于存档和免费分发研究界提交的微阵列、下一代测序和其他形式的高通量功能基因组学数据(tanya barrett,ron edgar,methods in enzymology,2006)。截至2022年11月,geo收录了560多万多套数据,来自24523个平台,包含539万多个样本。
4.在公开共享的基因表达数据中,样本(samples)记录描述了处理单个样本的元信息及获得的基因表达丰度。平台(platforms)记录由微阵列或测序仪的摘要描述组成,对于基于微阵列的平台,还包括定义模板的数据表。系列(series)记录将一组相关样本关联在一起,并提供整个研究的焦点和描述。系列记录还可能包含描述数据提取、总结结论或分析的表格。数据集(datasets)代表了具有生物学和统计学可比性的基因组学样本集合。表达谱(profiles)记录包含从数据集数据库衍生的基因表达图谱。profiles数据展示了每个数据集中的单个基因在所有样本中的表达水平,可用于快速判断一个基因是否在不同的实验条件下有差异表达。这五类数据按类别分别存储,但同时彼此关联。例如,一个平台记录可引用来自不同提交者的多个样本,而样本实体只能引用一个平台,但可包含在多个系列中。
5.当前整合公共数据已成为基因表达数据分析的重要需求。而海量公共数据使得大规模基因表达数据挖掘分析中持续流式处理和统一视图呈现等技术手段成为必需,此外用户使用效率也影响了数据的利用有效性。因此,在实际应用中,特别在大规模基因表达数据的数据关联和精确检索的实施中,如何针对大数据文件进行持续流式处理,如何基于用户提供统一视图同时针对性地展示每类数据的关键信息,如何处理并存储表格数据以便用户基于此进行检索及信息获取、如何在用户检索后返回相关联的各类数据并提供直接链接是要解决的关键问题。


技术实现要素:

6.针对现有技术中存在的问题,本发明的目的在于提供一种大规模基因表达数据的索引构建方法及数据检索方法。
7.本发明提出针对大数据文件进行流式处理、针对大矩阵文件进行转换解析以解决
实际索引构建过程种的难点问题。同时,本发明基于底层多个索引构建统一检索视图,并提供一种能够获取数据间的关联关系的数据检索方法以反馈给用户较完整的数据视图。
8.因此,本发明需要解决下述几个具体问题:
9.(1)针对大数据文件进行持续流式处理:基因表达原始数据表现为大量的独立压缩文件。构建可中断-继续的解析程序,以便处理中断时可基于中断处继续解析。
10.(2)针对大矩阵文件的转换解析处理:一些数据记录以文本格式包含了表格数据,需要对这些数据进行提取并转换成相应的内存模型如二维矩阵,随后依各类数据特征对二维矩阵进行相应计算,在解析时将相应结果填充至相应字段,以便用户据此进行检索或上层应用基于此数据做可视化等。
11.(3)提供统一检索视图并针对性地提供每类数据的关键信息:考虑每类数据的差异性,为每类数据分别构建解析器,但此差异性需对用户透明;检索结果则应考虑每类数据的差异性,即除了展示共有的信息,也需展示各类数据独有的信息。
12.(4)进行数据间关联关系的处理,包括存储和引用:基因表达各类数据间彼此关联,如何在检索及结果呈现时展示这种关联性需要在构建元数据时对此种关联关系做提取并存储。
13.本发明解决上述问题采用的实现方式是:
14.对于问题(1):本发明将所有待解析的目标文件的绝对路径按行存储至文本文件。在解析过程中跟踪当前正进行解析处理的文件所在的行,中断发生后记录该行号并持久化至硬盘或保存至其他缓存组件,继续执行解析程序时则读取该行号并忽略该行号之前的文件,以便从上次中断的文件开始继续解析。
15.对于问题(2):原始数据包括key:value的行数据以及tab分隔的表格记录。对于表格数据,本发明的处理方式为首先按行读取原始文件,并将tab分隔的表格记录存入一临时csv文件。随后在构建元数据时,读取该临时csv文件并以其内容构建二维矩阵,利用矩阵处理工具进行行、列处理并填充键值对。
16.对于问题(3):本发明为不同类别的基因表达数据构建不同的解析器,各解析器的构建方法基本一致,但因目标数据不同,具体的数据处理上存在差异,比如要提取不同的字段,所提取字段的值在原始文件中的表现形式也不尽相同。将每类共有信息存储为同名key:value;将各类独有的信息存储为不同的key:value,将无需检索但需展示的信息仅存储,如上图1中索引部分所示。解析后的数据利用nosql分别作索引存储,索引差异的透明性利用nosql的特性实现,本发明为每一类别的基因表达数据构建一个对应的元数据库,将每类元数据库设置为具有相同的别名,且仅对上层应用暴露该别名。检索结果则返回所有字段,上层应用根据数据类型填充并展示给用户。
17.对于问题(4):基因表达数据的各子类数据间互相关联,检索结果需要展示目标数据及与其相关联的其他类别的数据条目。为此,在构建索引元数据字典时,需要将相关联数据的id一并存储并做索引。另一方面,在展示某一数据的详细信息时,存在重复的多-多映射,即某类关联信息可能被重复引用。如果实际存储这些重复的关联实体信息将造成巨大的存储空间浪费。本发明借鉴关系型数据库中多表通过外键关联的处理方式,仅在每条记录中存储关联数据的id,而将关联数据实体信息唯一地存储在相应的数据记录中。此种做法在构建完整的查询结果时,需要多做一次额外的查询(即通过关联id获取关联实体)。
18.本发明解决上述问题所采用的技术方案为:
19.一种大规模基因表达数据的索引构建方法,其步骤包括:
20.1)为每一类别的基因表达数据分别构建一对应的解析器;类别i的基因表达数据对应的解析器记为解析器i;i=1~n,n为类别总数;
21.2)针对每一条类别i的基因表达数据,利用解析器i对其进行解析,得到该条基因表达数据的元数据并将其保存到一json文档,然后根据检索需求将类别i中的json文档中的不同字段设置不同的索引类型,如text,keyword,dates等,以此构建类别i的索引;
22.3)将同类别数据的索引设置相同的别名且仅对上层应用暴露该别名,将各所述索引中具有相同语义的键key设置相同的名称和索引设置;将各所述索引的键key做并集,并将每类索引返回的键值基于这个并集做投影从而获取各类数据的公共信息和独有信息,生成统一检索视图。
23.进一步的,所述基因表达数据包括datasets,series,platforms,samples,profiles。
24.进一步的,所述profiles数据对应的解析器对所述profiles数据进行解析的方法为:首先对所述profiles数据中的二维表格数据,按二维表格的列计算该二维表格中每一样本的rank值,按二维表格的行计算该二维表格中不同样本的方差;然后按行取rank值的最大、最小值并填充至所述profiles数据对应的json文档。
25.进一步的,解析目标文件过程中若发生中断,则重启对应解析器将从上次未处理完的文件开始,按行读取目标文本文件,并按需对读取行进行字符串分隔、模式匹配,提取元数据并存入对应json文档。
26.进一步的,所述解析器对目标文件进行解析时,首先获取目标文件的绝对路径并存入文本文件path_list.txt中,维护两个全局变量:curprocessline用于记录当前处理的目标文件行号,curcounter用于记录当前已处理的文档数;如发生中断则将两全局变量curprocessline、curcounter持久化;重启对应解析器时获取两变量curprocessline、curcounter。
27.一种基于所构建索引的数据检索方法,其步骤为:
28.1)应用层根据待查询文档id,在索引的别名中进行查询,返回所有包含该文档id的元数据;
29.2)根据所返回的包含该文档id的元数据查询想要的其他数据集,得到包含该文档id的文档及与之关联的数据文档;
30.3)根据步骤2)返回的数据文档的元数据生成数据视图。
31.本发明的优点如下:
32.提出一种大规模基因表达数据的索引构建方法,解决不同类型的基因表达数据的统一视图构建,并提出一种处理文本表现形式的表格数据的方法。对于不同类型的基因表达数据间的关系,给出一种存储及引用此种关联关系的方法。同时,针对大批量数据,给出一种可中断-继续的解析处理方法。
附图说明
33.图1为基因表达数据的处理流程图。
34.图2为api实现隐藏不同的解析索引图。
35.图3为二维矩阵实验记录的处理示例图。
36.图4为关联关系的引用应用图。
具体实施方式
37.下面结合附图对本发明进行进一步详细描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
38.本发明实施例以geo原始数据处理作为实施方案展开。geo原始数据表现为每一行为一个key:value键值信息,key信息可能重复以便表达跨越多行的value。实验数据每行表现为tab分隔的数值记录。而每类数据虽然格式基本一致,但具体的信息存在差异,因此需要分别进行解析处理,即分别实现解析器。同时,因数据集(datasets),系列(series),平台(platforms),样本(samples),表达谱(profiles)彼此关联,处理时需要关注这一点以便保留这种关联关系,亦可减少数据冗余。
39.考虑原始数据的特性,本发明针对上述问题的具体实施过程如下:
40.具体流程:
41.针对上述五类geo原始数据,对每一类数据分别解析构建索引。每一类数据的原始目标数据均表现为一系列压缩文本文件。解析程序按序处理这些目标数据文件,处理过程中如若发生中断,重启解析器将从上次未处理完的文件开始,而忽略已经处理的文件。在每类数据的具体解析过程中,解析程序按行读取目标文本文件,并按需对读取行进行字符串分隔、模式匹配等操作从而从中提取字段构建json文档,同时注意将具有相同语义的信息提取构建为相同的键值对;如若原始文本文件中存在有检索需求的表格数据,则对其进行“矩阵数据处理”;提取并在json文档中存储当前解析数据条目的关联信息。五类子类数据的索引构建完成后,利用存储索引引擎的特性基于这些索引构建统一逻辑索引。数据检索基于统一逻辑索引进行。
42.(1)中断可继续的持续流式处理
43.具体实施过程中,首先通过os.walk获取目标文件的绝对路径并存入文本文件(path_list.txt)中。解析过程中维护两个全局变量:curprocessline用于表示当前处理到了path_list.txt中的哪行文件(其记录的是文件在path_list.txt的行号),以及curcounter用于构建一计数器表示当前已处理了多少文档。如处理因各种原因发生中断,中断发生时将这两个全局变量持久化。后续继续处理时从硬盘读取这两个变量。curprocessline用于忽略行号小于此的文件。此种实现方式也利于应对重新处理的需求——只需重置这两个变量为1即可。在解析脚本的实现中,通过添加命令行参数的方式让用户选择是重新解析还是继续解析。同时,对于中断时正解析的数据,其部分文档可能已入库,使用每条文档的唯一id作为特殊字段_id的值可避免将相同文档重复入库。
44.(2)矩阵数据的处理
45.geo原始数据中有多处存在表格数据。例如,样本数据的原始数据为系列文件。一条系列记录对应多条样本记录。系列67781对应的样本记录包括样本1655691,样本1655692,样本1655693等,如表1所示。
46.表1示例实验数据
47.id_ref样本1655691样本1655692样本1655693
……
8295_0003_00350.9192581370.6976082570.457529294
……
8295_0003_0041-0.156084579-0.394908346-0.023449314
……
48.而上述样本数据实际需要列数据作为其某一字段的值。
49.又如,profiles数据需要对二维表格先按列计算样本的排名值rank,按行计算不同样本的方差,最终按行取值填充每条profile数据。具体实施过程应用csv模块将csv文件映射为内存中的二维矩阵、应用pandas模块的dataframe对矩阵进行行、列、方差等计算,最终按行取rank值的最大、最小值并填充至json文档以便存入elasticsearch。计算过程如图3所示,具体步骤为:

按行计算标准差,

按列计算rank值,

取百分比,

按列取rank最大值、最小值,

按行取原始数组。
50.(3)提供统一检索视图并针对性地提供每类数据的差异化信息
51.具体实施过程中,采用elasticsearch作为元数据的存储、索引引擎。对每类数据构建一解析器生产json格式的文档并存入不同的索引。透明性的实现方式如下:为每类数据的索引设置相同的别名,且仅对上层应用暴露该别名。对于不同的索引,语义相同的key设置具有相同的名称和索引设置,这样在某个字段检索将会在所有元数据中进行查找。例如,对物种id使用同样的名字如taxonmyid,在该字段检索将查询出taxonmyid为某一值的所有平台、样本、系列、数据集、表达谱数据。有针对性地展示各类数据需要在api实现时将各个索引相关信息的key做并集,并将每类索引返回的键值基于这个并集做投影从而获取各类数据的公共信息和独有信息。接口实现如图2所示。
52.(4)数据间关联关系的处理
53.geo各子类数据间互相关联,如下表2所示。
54.表2geo各类数据间的关联
[0055][0056][0057]
具体实施过程中,在解析目标数据时,从原始数据中提取这些关联数据的id并将其与该目标数据的自身id构成数组作为一键值对的值进行存储。例如根据表2,数据集、平台、系列、表达谱均与样本存在关联,因而这些数据在处理成元数据的过程中,均将样本的id包含在其id字段中。根据elasticsearch的倒排索引特性,在索引的别名中进行样本id为1655691的查询时,查询将返回所有id包含样本1655691的文档,即该条数据以及与之关联的所有数据文档。
[0058]
关联关系的引用则借用编程语言中的指针(引用)概念以及数据库中的外键概念,仅在json文档中存储相关联数据的id而不是相关联数据的实体信息。例如,表达谱数据每
条记录包含了其所属数据集(datasets)的一系列样本(samples)的信息:样本的名称、实验值及值的rank等。其中,样本名称对于属于某一特定数据集的表达谱记录而言都是一致的,而通常一个数据集对应几千至几万条表达谱记录。如果对每条表达谱记录都存储样本名称信息,将造成巨大存储空间占用。为此,将样本名称信息这种实体信息作为数据集记录的属性进行存储,而仅在表达谱记录中存储数据集id。在获取表达谱记录时,首先从表达谱索引中查找所有信息,然后根据其数据集属性进行额外的数据集索引查询获取样本名称信息,从而构建完整的表达谱信息。上述依赖关联关系获取完整元数据信息的示意如图4所示。
[0059]
此种不同数据间的关联关系的应用贯穿于整个基因表达数据的解析过程中。
[0060]
数据查询过程中,以表达谱数据查询为例。通过应用接口api查询与某一profile id相关的数据记录时,首先根据profile id在表达谱索引中查询,获取该条profile数据记录的元数据信息。该元数据将包含profile数据记录所属的数据集id,由此数据集id在数据集索引中查询获取samples信息。api整合来自不同索引的数据构建该条profile数据及与其关联的其他类别数据信息。具体步骤为:

应用根据profile id向api接口查询表达谱所有元数据信息,

api接口根据profile id查询表达谱索引,

返回profile数据记录的元数据信息,包含profile数据记录所属的数据集id,

根据数据集id向数据集索引查询,

数据集返回所查询的samples信息给api接口,

api接口根据返回的samples信息构建完整的profile元数据返回给应用。
[0061]
尽管为说明目的公开了本发明的具体实施例,其目的在于帮助理解本发明的内容并据以实施,本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。因此,本发明不应局限于最佳实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。

技术特征:
1.一种大规模基因表达数据的索引构建方法,其步骤包括:1)为每一类别的基因表达数据分别构建一对应的解析器;类别i的基因表达数据对应的解析器记为解析器i;i=1~n,n为类别总数;2)针对每一条类别i的基因表达数据,利用解析器i对其进行解析,得到该条基因表达数据的元数据并将其保存到一json文档,然后根据检索需求将类别i中的json文档中的不同字段设置不同的索引类型,得到类别i的索引;3)将同类别数据的索引设置相同的别名且仅对上层应用暴露该别名,将各所述索引中具有相同语义的键key设置相同的名称和索引设置;将各所述索引的键key做并集,并将每类索引返回的键值基于这个并集做投影从而获取各类数据的公共信息和独有信息,生成统一检索视图。2.根据权利要求1所述的方法,其特征在于,所述基因表达数据包括数据集datasets、系列数据series、平台数据platforms、样本数据samples和表达谱profile。3.根据权利要求2所述的方法,其特征在于,所述表达谱profile对应的解析器对所述表达谱profile进行解析的方法为:首先对所述表达谱profile中的二维表格数据,按二维表格的列计算该二维表格中每一样本的排名值rank,按二维表格的行计算该二维表格中不同样本的方差;然后按行取rank值的最大、最小值并填充至所述表达谱profile对应的json文档。4.根据权利要求1或2或3所述的方法,其特征在于,解析目标文件过程中若发生中断,则重启对应解析器将从上次未处理完的文件开始,按行读取目标文本文件,并按需对读取行进行字符串分隔、模式匹配,提取元数据并存入对应json文档。5.根据权利要求4所述的方法,其特征在于,所述解析器对目标文件进行解析时,首先获取目标文件的绝对路径并存入文本文件path_list.txt中,维护两个全局变量:curprocessline用于记录当前处理的目标文件行号,curcounter用于记录当前已处理的文档数;如发生中断则将两全局变量curprocessline、curcounter持久化;重启对应解析器时获取两变量curprocessline、curcounter。6.一种基于权利要求1所构建索引的数据检索方法,其特征在于,根据待查询文档id,在索引的别名中进行查询,返回所有包含该文档id的元数据,然后根据所返回的包含该文档id的元数据查询数据集,得到包含该文档id的文档及与之关联的数据文档。

技术总结
本发明公开了一种大规模基因表达数据的索引构建方法及数据检索方法,其中索引构建方法为:1)为每一类别的基因表达数据分别构建一对应的解析器;类别i的基因表达数据对应的解析器记为解析器i;2)针对每一条类别i的基因表达数据,利用解析器i对其进行解析,得到该条数据的元数据并保存到一文档,然后根据检索需求将类别i中的文档中的不同字段设置不同的索引类型,得到类别i的索引;3)将同类别数据的索引设置相同的别名且仅对上层应用暴露该别名,将各索引中具有相同语义的键key设置相同的名称和索引设置;将各键key做并集,并将每类索引返回的键值基于这个并集做投影从而获取各类数据的公共信息和独有信息,生成统一检索视图。生成统一检索视图。生成统一检索视图。


技术研发人员:易秀娟 孟珍 汪嘉葭 王学志
受保护的技术使用者:中国科学院计算机网络信息中心
技术研发日:2023.03.13
技术公布日:2023/7/12
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐