层次性数据格式 HDF 与生物信息学和 BioHDF
HDF: http://www.hdfgroup.org
1 层次型数据格式 HDF, HDF4 与 HDF5
概述
Hierarchical Data Format,可以存储不同类型的图像和数码数据的文件格式,并且可以在不同类型的机器上传输,同时还有统一处理这种文件格式的函数库。大多数普通计算机都支持这种文件格式。
HDF
HDF是用于存储和分发科学数据的一种自我描述、多对象文件格式。HDF是由美国国家超级计算应用中心(NCSA)创建的,以满足不同群体的科学家在不同工程项目领域之需要。HDF可以表示出科学数据存储和分布的许多必要条件。HDF被设计为:
自述性:对于一个HDF文件里的每一个数据对象,有关于该数据的综合信息(元数据)。在没有任何外部信息的情况下,HDF允许应用程序解释HDF文件的结构和内容。
通用性:许多数据类型都可以被嵌入在一个HDF文件里。例如,通过使用合适的HDF数据结构,符号、数字和图形数据可以同时存储在一个HDF文件里。
灵活性:HDF允许用户把相关的数据对象组合在一起,放到一个分层结构中,向数据对象添加描述和标签。它还允许用户把科学数据放到多个HDF文件里。
扩展性:HDF极易容纳将来新增加的数据模式,容易与其他标准格式兼容。
跨平台性:HDF是一个与平台无关的文件格式。HDF文件无需任何转换就可以在不同平台上使用。
HDF4 与 HDF5
新一代的HDF5是由NCSA于1998年发布。NCSA支持HDF4并还将继续支持几年(细节如下)。HDF5被设计为改善HDF4的一些局限性。HDF4的某些局限性有:
单个文件不能存放多于20000个对象,单个文件大小也不能大于2G字节。
数据模式的兼容性不够好,有过多的对象类型,数据类型太严格。
库函数过时和过于复杂,不能有效地支持并行口的I/O,很难用于线程应用中。
HDF5包含如下的改进:
被设计为一种新的格式用来改进HDF4.x,特别是每个文件可以存储更大的文件和更多的对象。
数据模式更简洁、更全面,它包含两个基本结构:多维数组记录结构,和分组结构。
更简洁、更利于工程库和应用编程接口,支持并行I/O,线程和其他一些现代系统和应用要求。
虽然HDF5比HDF4有明显的优势,但HDF4仍然是在科学界使用得最为广泛。许多应用软件都是基于HDF4库开发的,许多数据产品是按HDF4格式生成的。把这些应用和数据产品从HDF4转换为HDF5需要花费时间和费用。因此,NCSA仍然支持HDF4并还将持续几年。
2 HDF 与生物信息学,BioHDF
Projects: http://www.hdfgroup.org/projects/
- BioHDF
The BioHDF project is a collaborative effort to develop portable, scalable, next-generation sequencing (NGS) data storage technologies in HDF5.
BioHDF 写道
BioHDF包含三个部分:
1 The data model and file organization.
This determines which data will be stored, how it will be arranged in the data file and how it will be queried. Data will be stored as fundamental building blocks such as "sequences", "alignments" and "MS/MS spectra". Unlike most file formats, which are set in stone, BioHDF files will are self-describing, flexible and extensible as they are based on HDF5.
2 The C application programming interface (API) and library.
This is the library which will provide the basic means for manipulating the data stored in a BioHDF file. C is a useful language for the basic BioHDF API since it allows for easy interfacing with the HDF5 API, can be ported easily to many operating systems and can interoperate with most higher-level languages. Much bioinformatics work is done in higher-level languages, however, and we intend to make the BioHDF API easily wrappable for these languages using packages like SWIG and XS.
3 Command-line tools
Command-line tools are provided for data I/O and manipulation. Interoperability with existing bioinformatics tools will be provided by functions which allow for import and export of the data from/to existing bioinformatics file formats.
- Bioinformatics
HDF5 has many potential applications in the growing field of bioinformatics.
Bioinfomatics 写道
1 BioHDF
2 LD Analysis
3 HapMap Data
4 Genotyping
5 Early Perl Work
3 stackoverflow 上关于 HDF 的问答: http://stackoverflow.com/questions/tagged/hdf5
PS:
在2008年8月份的时候,因为研究Broad的IGV(http://www.broadinstitute.org/igv/)而了解到HDF格式,当时的Seminar(http://bioinformatics.genomics.org.cn/bio/seminar2008.html)上内容较多,也未细讲,一带而过了;而且估计关心的人也不多。