联系我们contact

电话:027-59760188-801

地址:武汉市东湖高新开发区光谷大道120号现代森林小镇A座609室

一款开源的系统生物研究数据管理系统——OpenBIS

发布时间:2018-07-09 浏览次数:1047次

一、前言导读

今天给大家介绍一款开源的专门管理生物学研究数据的管理软件openBIS,文章分为两个部分,前一部分介绍软件的一些基本特性和概念,后一部分介绍软件在一些领域中的具体应用。

OpenBIS当前已经在多个SystemX.ch 和欧盟项目(应用质谱技术研究代谢物和蛋白质,高内涵筛选,下一代的基因测序技术。)得到了非常成功的应用。对于涉及大型的系统生物学研究群体来说,OpenBIS是极其合适的,其功能丰富,系统灵活,部署简单,可扩展性强,适合管理组学研究等庞大的数据,并且能够处理几乎任何种类的生物学数据类型,甚至可以扩展到其他研究领域。

不管是系统生物学,还是组学,随着仪器技术的进步,这些新兴学科的研究方式与方法都对生物实验数据的管理和高性能计算提出了前所未有的挑战。系统生物学,基因组学、蛋白质组学、代谢组学等大科学工程往往意味着项目的长期持续,参与单位和人员众多,产生的数据量十分庞大和复杂,并且要综合生物信息学、计算机科学、数学等多学科的力量协作完成。大科学工程的长期性与复杂性要求一套系统能应对种类繁多且体量庞大的原始数据存储,研究过程的灵活多变,数据分析工具与算法的不断更新,研究团队人员变动等一系列问题。    生物实验数据管理系统需要提供一个坚实的基础平台用于存储种类繁多且体量庞大的分析仪器数据并能快速整合各种数据分析流程,包括商业的数据流程化处理软件和研究人员自己开发的数据分析方法。不同品牌、不同型号的仪器原始数据和不同方式的数据分析方法所产生的结果数据都需要长久保存,以备将来再次引用以及历史数据的比较和整合。在这期间,数据的格式与存储方式也会随着数据分析技术和相关标准的发展而逐步发生变化。这些数据在相当长的一段时间内都可能被各类数据分析人员进行分析和重新分析。作为仪器分析原始数据和数据分析所产生的结果数据的仓库,承担着为各种功能各异的分析组件提供数据来源以及作为不同阶段不同数据处理工作流之间沟通的桥梁。

我们可以设想,解决如此复杂问题的的软件肯定不是一个刚性的框架,而是模块化的,松散耦合的,这些模块分别实现某个特定的功能或者提供特定的服务,而不苛求单一模块或服务满足所有需求。同硬件一样,这些模块应该是即插即用型的,能很方便地整合进体系中。模块之间也能方便地相互整合,并对外提供接口。同时,基础科学研究过程的多变性和框架松散耦合的特点,我们很难设定一个标准的组件模型,因此组件的开发应该着重于整合的简便性上。

最初,OpenBIS系统设计目标就是建立一个用于系统生物学和各种组学(蛋白质组学、基因组学、代谢组学)研究的数据的工作平台,将来源于质谱,测序仪、显微镜等各种仪器的数据进行统一的管理,并从仪器原始数据中提取基础数据和元数据,与数据流程化处理工具以及各种可视化工具、数据分析工具整合,对数据进行分阶段的以及多样化的后处理。在开放性与灵活性方面,不同类型的用户与系统之间采取不同的交互方式访问原始数据和后处理的数据,追溯数据的起源,而不依赖于原有的仪器和软件供应商。系统可扩展性强,存储和访问大容量数据,并可配置为分布式存储。

 二、系统的数据存储结构    

openBIS 采用逻辑层级式结构存储数据。其管理的层级单元从上至下依次为:

     •  数据空间

     •  项目

     •  实验

     •  样品

     •  数据集

权限规则应用于最高层级之上,也就是数据空间。可以配置访问规则:各终端用于能看什么,以及能够执行何种操作。

层级单元之间的逻辑关系如下:数据空间包含一个或多个项目,项目包含一个或多个实验,而实验包含一个或多个样品,一个样品可以包含一个或多个数据集。这里的数据集是指一组包含实际分析数据和其衍生数据的多个文件。例如一个样品在微量滴定板上被显微镜读取了两次,那么就会产生两个数据集,这两个数据集都属于该样品。采用这种逻辑结构十分符合生物学研究中的实际情况。

采用层级结构能够为存储更多更大的数据集并建立彼此之间的相互关系提供了便利。例如,原始数据和处理后数据可以分别存储为两个独立的数据集,这两者之间还能建立联系(某结果数据集来源于某个原始数据集),并同时指向一个样品或一个实验。层级关系进一步衍生可以建立样品和数据集之间的父子关系,而这在复杂的科学研究中是经常遇到的。


一款开源的系统生物研究数据管理系统——OpenBIS

元数据是关于数据的数据,为了描述数据在背景环境中的结构和意义,便于查找和使用采集的数据失去了元数据的数据没有什么意义。对元数据的管理是openBIS 十分重要的功能之一。 

openBIS提供了十分灵活的元数据定义功能,可以在数据集、样品、实验等多层次上定义结构化、半结构化、以及非结构化的元数据,为灵活的检索提供保证。为了组织这些元数据,系统定义了元数据类型这个标识,用于将创建的元数据归属到具体的系统对象上(数据集、样品、实验)

结构化与半结构化的元数据,或者叫属性(或者注释),属性就是一个数据库中的字段,包括名称,标签,描述和值类型(整数型,浮点型,日期型,逻辑型,文本型,超链接,或者之前定义的受控词汇表,或者对于半结构化的元数据而言可以采用XML结构文件作为存储值)。系统允许对实验,样品,数据集自定义属性,并通过属性类型归属到具体的数据对象上,这些属性类型透明化地存储在数据库中。openBIS中的属性还可以是动态赋值的,可以根据其他元数据通过脚本进行赋值。

在openBIS中,用户可以对项目、实验、样品三者赋予非结构化的元数据,也就是文件型的附件,就如同你在email中插入一个附件。

基于这种灵活的自定义元数据的机制,openBIS提供了通用型的方式为那些创新的具备开创性的实验建立全新的元数据模型

为了高效地存储和检索系统生物学研究中产生的海量数据,并能兼容不同的分析测试技术,openBIS采用混合式的数据存储方法。索引数据,实验相关的元数据,选择性的结果数据采用关系数据库存储(当然,文件型的元数据也可选择存储到关系数据库中),大体积数据则采用扁平化的文件存储(flatfile).默认情况下,原始数据和结果数据存储在数据存储区中(data store),这是一个由单个文件系统或多文件系统(采用分段存储模式)组成的扁平的文件型数据存储体系。

混合式的数据存储为openBIS带来了灵活性和可扩展性。系统在数据库中巧妙地存储了元数据模型,我们可以认为这些元数据模型本身就是系统数据的一部分。这样,用户可以因地制宜地为自己的研究数据选择合适的元数据模型,判断的标准可以看元数据模型是否完整地包含了原始数据文件的上下文信息,是否采用了合适的存储方式(以关系数据库存储还是以文件型存储)以应对查询效率的要求。

系统永远保持其核心数据库的数据量在一个合理的尽可能小的规模,并将其置于快速存储设备上。系统对于会引发大量数据列表显示的查询尽量进行优化,在存储大批量数据时则会采用分段存储和分布式存储。

三、系统部署方式

openBIS由客户端,应用服务器,数据存储服务器组成。

应用服务器(application server 简称AS):管理元数据并关联其指向的基础数据。

数据存储服务器(data store server 简称DSS):管理数据

应用服务器使用关系数据库来管理用户,用户身份认证信息,系统实体对象如数据空间,实验和样品的元数据以及所有数据集的索引信息。数据存储服务器DSS管理存在数据存储区中的数据集。该存储区只能由DSS负责写入,不能被系统其他部分所操作。不同类型的客户端如浏览器,图形化的Matlab客户端,命令行客户端能够通过AS和DSS访问openBIS。

在系统部署图中,我们可以看到一个AS可以对应多个DSS。这一特性对于大科学工程非常重要,系统生物学,组学这些科学工程往往需要多个实验室和单位的参与,分布式的存储对于促进数据共享的同时进行自有知识产权保护是有双重作用的。openBIS 的分布式DSS特性允许各个实验室使用本地的数据存储服务器(DSS)存储本地仪器产生的数据。这里DSS命名为数据存储服务器而不是简单的称之为数据库服务器是自有其道理的,openBIS采用混合数据存储模式,即数据库存储和文件存储相结合,而不是单一的数据库存储模式。DSS从设计来说,并不仅仅是一个置于因特网上的文件服务器。它能以其自身存储的数据为基础进行各种自定义的查询,并启用其自身的关系数据库去存储结果型数据。这些结果数据写入数据库的操作可以在数据载入时自动进行。在下图中,用户通过命令行工具和MatLab客户端可以通过openBIS提供的API访问DSS提供的服务。进一步,在现有基础上还可以为DSS添加协处理服务器用于数据的传输,例如Datamover和CIFEX等组件用于数据的导入和导出。

一款开源的系统生物研究数据管理系统——OpenBIS


AS和DSS各司其职,AS专门处理元数据并指向原始的来源,分布式的多个DSS负责处理大规模数据。庞大的原始数据和精简的元数据得以分离,从而避免了查询和传输高通量和高内涵数据所带来的高昂的系统开销叠加,如CPU的使用,IO和带宽的占用。

3.1  OpenBIS的客户端

openBIS自带了图形化的Web应用程序,命令行工具和一些KNIME数据分析管道节点。为了方便专业用户通过客户端访问后台,系统提供了可通过TCP/IP网络调用的API。

3.2  应用服务器(AS)

AS是客户端与系统交互的中心,其配置有一个关系型的数据库,用于管理和存储关于样品,实验,数据集的元数据;实际的数据由DSS存储和管理,AS引导访问一个或多个DSS。

AS自身分解成几个层级:

展示层(Presentation layer):HTML和Java Script 用于客户端展示

域层(Domain Layer):为希望与业务对象(样品,实验)进行交互的用户提供服务

数据访问层(Data acess layer):用于AS与DSS之间的访问,由AS所私有,不由外部调用

前三个服务不仅为Web客户端所使用,还能由命令行工具程序和DSS所调用。典型的服务如样品查询,对象在数据库中的注册。

3.3、数据存储服务器(DSS)

DSS采用混合存储模式管理数据集所包括的所有数据,如图像、谱图、分析结果或特征描述。这些数据都放在数据存储系统中。DSS负责对这些数据查询,基于数据集的报告以及可视化。

在扁平的文件存储模式下,数据存储由单份组成(一般由一个文件服务器提供),分段存储模式下,一个数据存储有多个数据份,每一个文件服务器管理其中一份。

与AS类似,DSS也可分为展示层(presentation layer),域层(domain layer),数据访问层(data access layer) 

展示层(presentation layer),负责数据的展示,一般而言,不外乎类似于为某张图片用于HTML显示而提供URL地址之类的事物。更复杂一点的将以Tab键为分隔符的文件在网页上以表格的形式展示,更深层次的展示需要用户对对数据有更深入的理解,例如数据可视化中的热点图,或将代表不同通道数据的图进行组合。这些功能我们将在openBIS的第二篇文章中做简单的介绍。数据集上载器(Data Set Uploader)也属于展示层的一部分,其是基于网页的数据集批量上载工具。为避免浏览器对上载文件2GB大小的限制,该工具通过Java WebStart执行。

域层(Domain Layer),负责提供数据的访问,并能解析其数据格式和语义关系。ETL(提取,转换,上传)线程也属于该层,其负责注册新产生的数据集。举一个DSS的典型的应用的例子,ETL线程监控某个文件夹中的事件发生情况,如果该文件夹中新创建了文件或文件夹,ETL将执行相关的操作。

数据访问层(data access layer),用于生成DSS中文件存储系统的摘要。该摘要使得DSS能够利用RDBMS中的文件元数据从而加速检索和列表显示,透明地访问容器文件(HDF5容器以目录的形式显示),并将同一个数据集容器中的多个数据集的目录列表汇总显示。

3.4、CIFEX

CIFEX是openBIS系统的辅助工具,全称叫CISD文件交换工具(CISD Exchanger).CIFEX 是一个基于Web的应用程序,用于传送和交换大的数据文件。由于浏览器对于上传容量有2GB的限制,CIFEX采用基于Java Webstart 图形化工具,支持断点续传并进行校验和检查以保证文件完整性。CIFEX主要用于下载openBIS中存储的超大的数据集。如果用户能够直接访问DSS数据存储的文件系统,则CIFEX并非是必须的。但大多数用户是无法直接访问DSS文件系统的,而如果有人想把一些数据分享给没有openBIS 账号的人,那么CIFEX就可以帮助实现这一目的。大家知道,系统生物学和相关的组学的分析数据都是十分庞大的,多达几个G。此时研究人员通过邮件发送这些数据集不太现实。在这种应用下,CIFEX成为了数据与openBIS系统之间双向流通的通道。CIFEX系统同样也是开源的,并可提供下载。

3.5、Datamover

顾名思义,Datamover是用于数据从一个地点传输到另一个地点。其可使用本地发起的文件共享或是通过SSH通道(建立在应用层和传输层基础上的安全协议)或远程主机同步进行数据的传输。该工具主要是用于将仪器直接连接的计算机上的数据转移到一个过渡性的中间存储设备上。组学研究的数据往往十分庞大,与仪器相连的计算机的磁盘很快就会超过容量。将仪器相连计算机上的文件夹直接对应到DSS的存储区往往又会受制于网络的好坏。要知道,网络往往不太稳定。此时就需要在DSS存储区与分析仪器计算机之间建立一个中间过渡区,例如数据中心或者计算集群,由Datamover不断地将数据迁移过去。Datamover在传递过程中解决遇到的一切大小故障,诸如网络中断,存储设备达到上限等问题。

3.6、验证与授权

openBIS采用基于插件的机制用于用户验证,可与LDAP(如微软Active Dicrectory),Crowd等身份识别系统以及简单的文件方法进行集成。系统采用分组和角色的授权机制,解决特地用户能够看到哪些数据以及能够进行哪些操作的问题。

四、系统的功能模块

OpenBIS的核心功能包括数据和元数据的管理,数据检索,数据共享,数据导入导出,与其他系统的接口。这些基础功能都已经相当稳定,并可供下载,对于生物学家来说可谓是开箱即用。如果想要把openBIS作为一个新的系统整合到现有的工作流程中则需要一定程度的定制化开发,并可在此基础之上添加额外的功能,如可视化,数据的终端发布,定制化的查询设计等等。如果单位上配备有经验丰富的开发人员,包括生物信息学研究人员,加上与实验研究人员相互配合,我们可以将自己开发的一些特色化的程序与openBIS进行无缝整合从而开发出十分强大的应用。这样就能更加紧密地贴合用户的实际需求。毕竟系统是开源的, 我们甚至可以直接修改源码对系统进行个性化的改造。

4.1、数据与元数据管理

如前文所述,系统采用层级式结构组织数据和元数据。以数据空间为基础进行授权。一般而言,在系统中会为不同的研究小组创建不同的数据空间。数据空间下以项目,实验,样品、数据集组织数据。系统可以基于访问的需要设置观察人员(对数据只读),一般用户(添加或编辑对象)、并能以组和角色进行统一授权。在数据发布环节上,研究人员可以非常方便地改变其所拥有数据的权限设置,从而使其对外公布。openBIS为分析结果提供优良的溯源性。一个新的数据集创建会分配一个唯一的标识号并且不能再作改变。如果数据由一个或多个数据集衍生而来,系统会创建一个新的子数据集,并将该数据集归属到其来源数据集。

独立于某种专门的数据格式和存储方式,无论是仪器原始数据还是数据分析管路所提交的数据结果,都可以直接存储在openBIS 中而不需要对格式进行转化或其他改变。如果需要其他的数据格式和存储方式,也可以通过数据转换工具自动完成。一般建议用户为数据的新格式单独创建一个新的数据集,并将同样一份数据的不同格式放在一个数据集容器中。为了使得数据集容器对用户透明,openBIS会显示其文件系统视图,显示包含在该数据容器中的所有文件。

4.2数据检索、导出和分享

大规模数据的导出采用CIFEX。数据集检索基于数据集识别码、数据集类型(如原始数据,蛋白结果数据)、文件类型(mzXML,protXML)以及其他与数据集、样品、实验相关的元数据(例如数据转换软件的名称)。结合这些元数据可以进行常规的逻辑筛选操作,例如字符串的比较,数值的范围限定等,最终选择的数据可以方便地通过电子表格导出。如果查询结果涉及大规模数据,这在组学研究中经常会碰到,此时系统将会自动重定向到CIFEX进行导出,openBIS通过这种方法能够用来分享数据,例如为下游的数学建模人员提供数据。

4.3、数据导入方式

对于涉及数百M到数个G大小的蛋白质质谱数据来说,数据如何进入系统中集中管理是个比较关键的问题。根据不同的使用需要,数据上传到openBIS中采用三种不同的方式:Dropbox,网页上直接上传,通过远端API自定义程序上传。

第一种方式是采用所谓的dropbox,所谓Dropbox实际上是位于本地文件系统或文件服务器上的文件存放目录。DSS监视该目录中的写入情况。如果发现新的数据,例如新建了某个文件或文件夹,系统就会启用为该dropbox配置的ETL(提取、转换、上载)流程,使得该新产生的数据集能为openBIS系统所接受,在此过程中并将其与适当的对象关联(例如某个样品),提取相关元数据用于检索,并将这些数据集转换为预定义的格式,以便与诸如计算模拟之类的其他工具集成。ETL过程在openBIS系统中并非是固定的,而是设计为一组可配置的插件,在对新产生的数据如何处理的问题上具有很高的可配置性和自由度。一般而言,在数据存储容量够大的前提下,建议ETL处理的同时保留未经处理的原始数据。如果使用Datamover作为协处理服务器,dropbox可扩展为连接各个不同实验室的桥梁,从而实现跨单位合作。在长期需要大量交换数据的系统之间,dropbox可以充当一种非常有效的”松散耦合”的接口。

第二种方式采用网页直接上传,基于web的上传工具可以从web上触发。对于实际的数据上传步骤,会将用户重定向到Data set uploader或者重定向到CIEFX服务器。

第三种方式是API进行定制化程序开发,系统提供的远端API是一组Java类,提供基于流的编程模式用于上传任何构成数据集的文件集合。与dropbox相比,其允许与使用它的程序更紧密的集成,提供及时的反馈,支持任何允许HTTPS传输的WAN网络。由于使用Java作为编程环境在某些情况下受到限制,openBIS还包含了命令行工具用于调用远端API调用实现数据的上传。该工具已经用来实现LabView 和其他基于脚本的数据源与openBIS 的整合。

4.4、用户端接入

第一种方式是图形化的界面,适用于普通用户。 

第二种是命令行界面,适用于专家级用户,用在脚本编程环境中实现操作的自动化,方便与各种自动化的数据处理管线整合,或者整合进定制化的用户界面,尤其是在API不能使用的情况下。

第三种是API调用。该方法提供了两种方式,Java service和JSON-PRS web Service。Java 服务为开开发者提供类和方法用于将OpenBIS整合进其他应用程序,通过使用这种API ,开发者可以很方便无缝地将openBIS整合进其自己开发的应用程序,如工作流和可视化工具。这些API尽管是用Java实现的,但并不仅限于用在基于Java的应用程序。许多流行的数据处理环境,如Matlab,R都可以调用Java API的功能。事实上系统专门为MatLab提供了其API的变体-HCS-API,用于支持Matlab的语言特性。JSON-PRC Web Service虽然没有Java Service那么高级,在所有的支持Web标准的计算机环境中也都能应用。特别是任何的WEB程序对openBIS 后端的使用。

4.5、数据可视化与发布

openBIS中的数据可视化往往要借助整合其他的软件。一个简单的例子就是采用数据报告插件用于展示HTML文件,例如Illumina HiSeq2000测序仪软件产生的数据。更加复杂的展示工具,如孔板视图显示多位滴定板,特征向量的图形化展示,用于高内涵筛选和蛋白质组学的蛋白质视图(展示蛋白的定性和定量数据)。或者整合现有的视图,如使用API实现图像强度-尺度再调节工具。

就数据的终端发布而言,系统中数据的简单视图可以通过Web界面的配置快速实现。从系统的应用经验来看,基于openBIS框架可以实现满足各种需要的任何数据类型的视图。

五、总结

openBIS是一款开源的,基于Web的用于管理大规模生物学研究数据的软件,其具有异构、松散耦合、分布式等多重特性,易于与各种软件工具进行整合。系统采用项目化的结构用于管理实验数据,处理用户身份认证和授权,以及数据的导入和导出,数据溯源,支持数据格式的迁移和数据的归档。

 

下一篇文章中,我们将介绍openBIS在下一代的基因测序,高内涵筛选,定量图像,蛋白质组学,代谢组学方面的应用。