Content deleted Content added
m →Criticism: avoid WP:CSECTION |
foldoc attribution Template_talk:FOLDOC#It_doesn't_matter_whether_readers_care |
||
(36 intermediate revisions by 27 users not shown) | |||
Line 1:
{{Short description|Set of file formats}}
{{distinguish|text = [[Apache_Hadoop#HDFS|HDFS]], the file system used in Apache Hadoop}}
{{Infobox file format
| name = Hierarchical Data Format
| icon =
| iconcaption =
| icon_size = 200px
| screenshot =
| caption =
|
| extension = <code>.hdf</code>, <code>.h4</code>, <code>.hdf4</code>, <code>.he2</code>, <code>.h5</code>, <code>.hdf5</code>, <code>.he5</code>
| mime =
Line 15 ⟶ 16:
| owner = The HDF Group
| released =
| latest release version = {{LSR/wikidata}}
| latest release date =
| genre = [[Scientific data format]]
| container for =
|
| contained by =
| extended from =
Line 27 ⟶ 28:
}}
'''Hierarchical Data Format''' ('''HDF''') is a set of [[file
In keeping with this goal, the HDF libraries and associated tools are available under a liberal, [[BSD licenses|BSD-like license]] for general use. HDF is supported by many commercial and non-commercial software platforms and programming languages. The freely available HDF distribution consists of the library, command-line utilities, test suite source, Java interface, and the Java-based HDF Viewer (HDFView).<ref>[http://www.hdfgroup.org/products/java/release/download.html Java-based HDF Viewer (HDFView)]</ref>
The current version, HDF5, differs significantly in design and [[API]] from the major legacy version HDF4.
==Early history==
The quest for a portable scientific data format, originally dubbed AEHOO (All Encompassing Hierarchical Object Oriented format) began in 1987 by the Graphics Foundations Task Force (GFTF) at the National Center for Supercomputing Applications (NCSA). NSF grants received in 1990 and 1992 were important to the project. Around this time [[NASA]] investigated 15 different file formats for use in the [[Earth Observing System]] (EOS) project. After a two-year review process, HDF was selected as the standard data and information system.<ref>{{cite web|url=http://www.hdfgroup.org/about/history.html|title=History of HDF Group|archive-url=https://web.archive.org/web/20160821013712/http://www.hdfgroup.org/about/history.html | access-date=15 July 2014|archive-date=21 August 2016 }}</ref>
==HDF4==
HDF4 is the older version of the format, although still actively supported by The HDF Group. It supports a proliferation of different data models, including multidimensional arrays, [[Raster graphics|raster images]], and tables. Each defines a specific aggregate data type and provides an [[Application Programming Interface|API]] for reading, writing, and organizing the data and metadata. New data models can be added by the HDF developers or users.
HDF is self-describing, allowing an application to interpret the structure and contents of a file with no outside information. One HDF file can hold a mix of related objects which can be accessed as a group or as individual objects. Users can create their own grouping structures called "vgroups."<ref name="foldoc">{{foldoc|Hierarchical+Data+Format}}</ref>
The HDF4 format has many limitations.<ref>[http://www.hdfgroup.org/h5h4-diff.html How is HDF5 different from HDF4?] {{webarchive|url=https://web.archive.org/web/20090330052722/http://www.hdfgroup.org/h5h4-diff.html |date=2009-03-30 }}</ref><ref>{{Cite web |url=http://www.hdfgroup.org/HDF-FAQ.html#6b |title=Are there limitations to HDF4 files? |access-date=2009-03-29 |archive-url=https://web.archive.org/web/20160419122423/http://www.hdfgroup.org/HDF-FAQ.html#6b |archive-date=2016-04-19 |url-status=dead }}</ref> It lacks a clear object model, which makes continued support and improvement difficult. Supporting many different interface styles (images, tables, arrays) leads to a complex API. Support for metadata depends on which interface is in use; ''SD'' (Scientific Dataset) objects support arbitrary named attributes, while other types only support predefined metadata. Perhaps most importantly, the use of 32-bit signed integers for addressing limits HDF4 files to a maximum of 2 GB, which is unacceptable in many modern scientific applications.
Line 50 ⟶ 51:
HDF5 simplifies the file structure to include only two major types of object:
[[Image:HDF-Structure-Example.gif|thumb|right|HDF Structure Example]]
*Datasets, which are typed multidimensional arrays
*Groups, which are container structures
This results in a truly hierarchical, filesystem-like data format.{{clarify|date=November 2018}}{{citation needed|date=November 2018}} In fact, resources in an HDF5 file can be accessed using the [[POSIX]]-like syntax ''/path/to/resource''. Metadata is stored in the form of user-defined, named attributes attached to groups and datasets. More complex storage APIs representing images and tables can then be built up using datasets, groups and attributes.
Line 69 ⟶ 70:
*Dataset data cannot be freed in a file without generating a file copy using an external tool (h5repack).<ref>{{cite web|last1=Rossant|first1=Cyrille|title=Moving away from HDF5|url=http://cyrille.rossant.net/moving-away-hdf5/|website=cyrille.rossant.net|access-date=21 April 2016}}</ref>
▲===Officially supported APIs===
* [[C (programming language)|C]]
* [[C++]]
* [[Common Language Infrastructure|CLI]] - .
* [[Fortran]], [[Fortran 90]]
* HDF5 Lite (H5LT) – a light-weight interface for C
Line 82 ⟶ 81:
* HDF5 Dimension Scale (H5DS) – allows dimension scales to be added to HDF5
*[[Java (programming language)|Java]]
==See also==
Line 130 ⟶ 95:
==External links==
*{{Official website}}
*[https://web.archive.org/web/20180806024407/https://support.hdfgroup.org/HDF5/whatishdf5.html What is HDF5?]
*[http://hdfeos.org/ HDF-EOS Tools and Information Center]
*[http://www.opennavsurf.org/ Open Navigation Surface]
[[Category:C (programming language) libraries]]
|