develop Merge doxygen from 1.12 branch (#2095)
@@ -12,6 +12,11 @@ if (POLICY CMP0083)
|
|||||||
cmake_policy (SET CMP0083 NEW)
|
cmake_policy (SET CMP0083 NEW)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
# Avoid warning about DOWNLOAD_EXTRACT_TIMESTAMP in CMake 3.24:
|
||||||
|
if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0")
|
||||||
|
cmake_policy(SET CMP0135 NEW)
|
||||||
|
endif()
|
||||||
|
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
# Instructions for use : Normal Build
|
# Instructions for use : Normal Build
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
## This file should be placed in the root directory of your project.
|
## This file should be placed in the root directory of your project.
|
||||||
## Then modify the CMakeLists.txt file in the root directory of your
|
## Then modify the CMakeLists.txt file in the root directory of your
|
||||||
## project to incorporate the testing dashboard.
|
## project to incorporate the testing dashboard.
|
||||||
## # The following are required to use Dart and the CDash dashboard.
|
## # The following are required to use Dart and the CDash dashboard
|
||||||
## ENABLE_TESTING()
|
## ENABLE_TESTING()
|
||||||
## INCLUDE(CTest)
|
## INCLUDE(CTest)
|
||||||
set (CTEST_PROJECT_NAME "HDF5")
|
set (CTEST_PROJECT_NAME "HDF5")
|
||||||
|
|||||||
@@ -1448,6 +1448,7 @@ function(create_javadoc _target)
|
|||||||
|
|
||||||
add_custom_target(${_target}_javadoc ALL
|
add_custom_target(${_target}_javadoc ALL
|
||||||
COMMAND ${Java_JAVADOC_EXECUTABLE}
|
COMMAND ${Java_JAVADOC_EXECUTABLE}
|
||||||
|
-Xdoclint:none
|
||||||
${_javadoc_options}
|
${_javadoc_options}
|
||||||
${_javadoc_files}
|
${_javadoc_files}
|
||||||
${_javadoc_packages}
|
${_javadoc_packages}
|
||||||
|
|||||||
@@ -1213,6 +1213,7 @@ if test "X$HDF5_DOXYGEN" = "Xyes"; then
|
|||||||
|
|
||||||
AC_SUBST([DOXYGEN_PACKAGE])
|
AC_SUBST([DOXYGEN_PACKAGE])
|
||||||
AC_SUBST([DOXYGEN_VERSION_STRING])
|
AC_SUBST([DOXYGEN_VERSION_STRING])
|
||||||
|
AC_SUBST([DOXYGEN_DIR])
|
||||||
AC_SUBST([DOXYGEN_INCLUDE_ALIASES])
|
AC_SUBST([DOXYGEN_INCLUDE_ALIASES])
|
||||||
AC_SUBST([DOXYGEN_PROJECT_LOGO])
|
AC_SUBST([DOXYGEN_PROJECT_LOGO])
|
||||||
AC_SUBST([DOXYGEN_PROJECT_BRIEF])
|
AC_SUBST([DOXYGEN_PROJECT_BRIEF])
|
||||||
@@ -1237,6 +1238,7 @@ if test "X$HDF5_DOXYGEN" = "Xyes"; then
|
|||||||
# SRCDIR Environment variables used inside doxygen macro for the source location:
|
# SRCDIR Environment variables used inside doxygen macro for the source location:
|
||||||
DOXYGEN_PACKAGE=${PACKAGE_NAME}
|
DOXYGEN_PACKAGE=${PACKAGE_NAME}
|
||||||
DOXYGEN_VERSION_STRING=${PACKAGE_VERSION}
|
DOXYGEN_VERSION_STRING=${PACKAGE_VERSION}
|
||||||
|
DOXYGEN_DIR='$(SRCDIR)/doxygen'
|
||||||
DOXYGEN_INCLUDE_ALIASES='$(SRCDIR)/doxygen/aliases'
|
DOXYGEN_INCLUDE_ALIASES='$(SRCDIR)/doxygen/aliases'
|
||||||
DOXYGEN_PROJECT_LOGO='$(SRCDIR)/doxygen/img/HDFG-logo.png'
|
DOXYGEN_PROJECT_LOGO='$(SRCDIR)/doxygen/img/HDFG-logo.png'
|
||||||
DOXYGEN_PROJECT_BRIEF=''
|
DOXYGEN_PROJECT_BRIEF=''
|
||||||
@@ -1249,14 +1251,14 @@ if test "X$HDF5_DOXYGEN" = "Xyes"; then
|
|||||||
DOXYGEN_HTML_HEADER='$(SRCDIR)/doxygen/hdf5_header.html'
|
DOXYGEN_HTML_HEADER='$(SRCDIR)/doxygen/hdf5_header.html'
|
||||||
DOXYGEN_HTML_FOOTER='$(SRCDIR)/doxygen/hdf5_footer.html'
|
DOXYGEN_HTML_FOOTER='$(SRCDIR)/doxygen/hdf5_footer.html'
|
||||||
DOXYGEN_HTML_EXTRA_STYLESHEET='$(SRCDIR)/doxygen/hdf5doxy.css'
|
DOXYGEN_HTML_EXTRA_STYLESHEET='$(SRCDIR)/doxygen/hdf5doxy.css'
|
||||||
DOXYGEN_HTML_EXTRA_FILES='$(SRCDIR)/doxygen/hdf5_navtree_hacks.js $(SRCDIR)/doxygen/img/FF-IH_FileGroup.gif $(SRCDIR)/doxygen/img/FF-IH_FileObject.gif $(SRCDIR)/doxygen/img/FileFormatSpecChunkDiagram.jpg $(SRCDIR)/doxygen/img/ftv2node.png $(SRCDIR)/doxygen/img/ftv2pnode.png $(SRCDIR)/doxygen/img/HDFG-logo.png $(SRCDIR)/doxygen/img/IOFlow2.gif $(SRCDIR)/doxygen/img/IOFlow3.gif $(SRCDIR)/doxygen/img/IOFlow.gif $(SRCDIR)/doxygen/img/PaletteExample1.gif $(SRCDIR)/doxygen/img/Palettes.fm.anc.gif'
|
DOXYGEN_HTML_EXTRA_FILES='$(SRCDIR)/doxygen/hdf5_navtree_hacks.js'
|
||||||
DOXYGEN_TAG_FILE=hdf5.tag
|
DOXYGEN_TAG_FILE=hdf5.tag
|
||||||
DOXYGEN_SERVER_BASED_SEARCH=NO
|
DOXYGEN_SERVER_BASED_SEARCH=NO
|
||||||
DOXYGEN_EXTERNAL_SEARCH=NO
|
DOXYGEN_EXTERNAL_SEARCH=NO
|
||||||
DOXYGEN_SEARCHENGINE_URL=
|
DOXYGEN_SEARCHENGINE_URL=
|
||||||
DOXYGEN_STRIP_FROM_PATH='$(SRCDIR)'
|
DOXYGEN_STRIP_FROM_PATH='$(SRCDIR)'
|
||||||
DOXYGEN_STRIP_FROM_INC_PATH='$(SRCDIR)'
|
DOXYGEN_STRIP_FROM_INC_PATH='$(SRCDIR)'
|
||||||
DOXYGEN_PREDEFINED='H5_HAVE_DIRECT H5_HAVE_LIBHDFS H5_HAVE_MAP_API H5_HAVE_PARALLEL H5_HAVE_ROS3_VFD'
|
DOXYGEN_PREDEFINED='H5_HAVE_DIRECT H5_HAVE_LIBHDFS H5_HAVE_MAP_API H5_HAVE_PARALLEL H5_HAVE_ROS3_VFD H5_DOXYGEN_FORTRAN'
|
||||||
|
|
||||||
DX_INIT_DOXYGEN([HDF5], [./doxygen/Doxyfile], [hdf5lib_docs])
|
DX_INIT_DOXYGEN([HDF5], [./doxygen/Doxyfile], [hdf5lib_docs])
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -7,11 +7,12 @@ project (HDF5_DOXYGEN C)
|
|||||||
if (DOXYGEN_FOUND)
|
if (DOXYGEN_FOUND)
|
||||||
set (DOXYGEN_PACKAGE ${HDF5_PACKAGE_NAME})
|
set (DOXYGEN_PACKAGE ${HDF5_PACKAGE_NAME})
|
||||||
set (DOXYGEN_VERSION_STRING ${HDF5_PACKAGE_VERSION_STRING})
|
set (DOXYGEN_VERSION_STRING ${HDF5_PACKAGE_VERSION_STRING})
|
||||||
|
set (DOXYGEN_DIR ${HDF5_DOXYGEN_DIR})
|
||||||
set (DOXYGEN_INCLUDE_ALIASES_PATH ${HDF5_DOXYGEN_DIR})
|
set (DOXYGEN_INCLUDE_ALIASES_PATH ${HDF5_DOXYGEN_DIR})
|
||||||
set (DOXYGEN_INCLUDE_ALIASES aliases)
|
set (DOXYGEN_INCLUDE_ALIASES aliases)
|
||||||
set (DOXYGEN_VERBATIM_VARS DOXYGEN_INCLUDE_ALIASES)
|
set (DOXYGEN_VERBATIM_VARS DOXYGEN_INCLUDE_ALIASES)
|
||||||
set (DOXYGEN_PROJECT_LOGO ${HDF5_DOXYGEN_DIR}/img/HDFG-logo.png)
|
set (DOXYGEN_PROJECT_LOGO ${HDF5_DOXYGEN_DIR}/img/HDFG-logo.png)
|
||||||
set (DOXYGEN_PROJECT_BRIEF "C-API Reference")
|
set (DOXYGEN_PROJECT_BRIEF "API Reference")
|
||||||
set (DOXYGEN_INPUT_DIRECTORY "${HDF5_SOURCE_DIR} ${HDF5_DOXYGEN_DIR}/dox ${HDF5_GENERATED_SOURCE_DIR}")
|
set (DOXYGEN_INPUT_DIRECTORY "${HDF5_SOURCE_DIR} ${HDF5_DOXYGEN_DIR}/dox ${HDF5_GENERATED_SOURCE_DIR}")
|
||||||
set (DOXYGEN_OPTIMIZE_OUTPUT_FOR_C YES)
|
set (DOXYGEN_OPTIMIZE_OUTPUT_FOR_C YES)
|
||||||
set (DOXYGEN_MACRO_EXPANSION YES)
|
set (DOXYGEN_MACRO_EXPANSION YES)
|
||||||
@@ -28,7 +29,7 @@ if (DOXYGEN_FOUND)
|
|||||||
set (DOXYGEN_SEARCHENGINE_URL)
|
set (DOXYGEN_SEARCHENGINE_URL)
|
||||||
set (DOXYGEN_STRIP_FROM_PATH ${HDF5_SOURCE_DIR})
|
set (DOXYGEN_STRIP_FROM_PATH ${HDF5_SOURCE_DIR})
|
||||||
set (DOXYGEN_STRIP_FROM_INC_PATH ${HDF5_SOURCE_DIR})
|
set (DOXYGEN_STRIP_FROM_INC_PATH ${HDF5_SOURCE_DIR})
|
||||||
set (DOXYGEN_PREDEFINED "H5_HAVE_DIRECT H5_HAVE_LIBHDFS H5_HAVE_MAP_API H5_HAVE_PARALLEL H5_HAVE_ROS3_VFD H5_HAVE_SUBFILING_VFD H5_HAVE_IOC_VFD")
|
set (DOXYGEN_PREDEFINED "H5_HAVE_DIRECT H5_HAVE_LIBHDFS H5_HAVE_MAP_API H5_HAVE_PARALLEL H5_HAVE_ROS3_VFD H5_DOXYGEN_FORTRAN H5_HAVE_SUBFILING_VFD H5_HAVE_IOC_VFD")
|
||||||
|
|
||||||
# This configure and individual custom targets work together
|
# This configure and individual custom targets work together
|
||||||
# Replace variables inside @@ with the current values
|
# Replace variables inside @@ with the current values
|
||||||
|
|||||||
@@ -280,13 +280,13 @@ OPTIMIZE_OUTPUT_FOR_C = YES
|
|||||||
# qualified scopes will look different, etc.
|
# qualified scopes will look different, etc.
|
||||||
# The default value is: NO.
|
# The default value is: NO.
|
||||||
|
|
||||||
OPTIMIZE_OUTPUT_JAVA = NO
|
OPTIMIZE_OUTPUT_JAVA = YES
|
||||||
|
|
||||||
# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
|
# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
|
||||||
# sources. Doxygen will then generate output that is tailored for Fortran.
|
# sources. Doxygen will then generate output that is tailored for Fortran.
|
||||||
# The default value is: NO.
|
# The default value is: NO.
|
||||||
|
|
||||||
OPTIMIZE_FOR_FORTRAN = NO
|
OPTIMIZE_FOR_FORTRAN = YES
|
||||||
|
|
||||||
# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
|
# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
|
||||||
# sources. Doxygen will then generate output that is tailored for VHDL.
|
# sources. Doxygen will then generate output that is tailored for VHDL.
|
||||||
@@ -875,7 +875,11 @@ FILE_PATTERNS = H5*public.h \
|
|||||||
H5VLconnector.h \
|
H5VLconnector.h \
|
||||||
H5VLconnector_passthru.h \
|
H5VLconnector_passthru.h \
|
||||||
H5VLnative.h \
|
H5VLnative.h \
|
||||||
|
H5Zdevelop.h \
|
||||||
H5version.h \
|
H5version.h \
|
||||||
|
H5*.java \
|
||||||
|
HDF*.java \
|
||||||
|
*.F90 \
|
||||||
*.dox
|
*.dox
|
||||||
|
|
||||||
# The RECURSIVE tag can be used to specify whether or not subdirectories should
|
# The RECURSIVE tag can be used to specify whether or not subdirectories should
|
||||||
@@ -944,7 +948,7 @@ EXAMPLE_RECURSIVE = NO
|
|||||||
# that contain images that are to be included in the documentation (see the
|
# that contain images that are to be included in the documentation (see the
|
||||||
# \image command).
|
# \image command).
|
||||||
|
|
||||||
IMAGE_PATH = @HDF5_DOXYGEN_DIR@/img
|
IMAGE_PATH = @DOXYGEN_DIR@/img
|
||||||
|
|
||||||
# The INPUT_FILTER tag can be used to specify a program that doxygen should
|
# The INPUT_FILTER tag can be used to specify a program that doxygen should
|
||||||
# invoke to filter for each input file. Doxygen will invoke the filter program
|
# invoke to filter for each input file. Doxygen will invoke the filter program
|
||||||
|
|||||||
@@ -379,4 +379,4 @@ ALIASES += obj_info_fields="<table><tr><th>Flag</th><th>Purpose</th></tr><tr><td
|
|||||||
|
|
||||||
ALIASES += fortran_error="Returns 0 if successful and -1 if it fails."
|
ALIASES += fortran_error="Returns 0 if successful and -1 if it fails."
|
||||||
ALIASES += fortran_approved="The preferred API, Fortran 2003 version."
|
ALIASES += fortran_approved="The preferred API, Fortran 2003 version."
|
||||||
ALIASES += fortran_obsolete="Obsolete API, use the Fortran 2003 version instead."
|
ALIASES += fortran_obsolete="Obsolete API, use the Fortran 2003 version instead."
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ This section contains a brief explanation of the symbols used in the DDL.
|
|||||||
|
|
||||||
<reference> ::= H5T_REFERENCE { <ref_type> }
|
<reference> ::= H5T_REFERENCE { <ref_type> }
|
||||||
|
|
||||||
<ref_type> ::= H5T_STD_REF_OBJECT | H5T_STD_REF_DSETREG | H5T_STD_REF | UNDEFINED
|
<ref_type> ::= H5T_STD_REF_OBJECT | H5T_STD_REF_DSETREG
|
||||||
|
|
||||||
<compound_type> ::= H5T_COMPOUND {
|
<compound_type> ::= H5T_COMPOUND {
|
||||||
<member_type_def>+
|
<member_type_def>+
|
||||||
|
|||||||
23
doxygen/dox/FileFormatSpec.dox
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
/** \page FMT3 HDF5 File Format Specification Version 3.0
|
||||||
|
|
||||||
|
\htmlinclude H5.format.html
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** \page FMT2 HDF5 File Format Specification Version 2.0
|
||||||
|
|
||||||
|
\htmlinclude H5.format.2.0.html
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** \page FMT11 HDF5 File Format Specification Version 1.1
|
||||||
|
|
||||||
|
\htmlinclude H5.format.1.1.html
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** \page FMT1 HDF5 File Format Specification Version 1.0
|
||||||
|
|
||||||
|
\htmlinclude H5.format.1.0.html
|
||||||
|
|
||||||
|
*/
|
||||||
@@ -1,3 +1,100 @@
|
|||||||
/** \page GettingStarted \Code{Hello, HDF5!}
|
/** @page GettingStarted Getting Started with HDF5
|
||||||
|
|
||||||
*/
|
Navigate back: \ref index "Main"
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
\section sec_learn Learning HDF5
|
||||||
|
There are several resources for learning about HDF5. The HDF Group provides an on-line HDF5 tutorial,
|
||||||
|
documentation, examples, and videos. There are also tutorials provided by other organizations that are very useful for learning about HDF5.
|
||||||
|
|
||||||
|
\subsection subsec_learn_intro The HDF Group Resources
|
||||||
|
For a quick introduction to HDF5 see the following:
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td style="background-color:#F5F5F5">
|
||||||
|
@ref IntroHDF5
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
A very brief introduction to HDF5 and the HDF5 programming model and APIs
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="background-color:#F5F5F5">
|
||||||
|
@ref LearnHDFView
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
A tutorial for learning how to use HDFView. NO programming involved!
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="background-color:#F5F5F5">
|
||||||
|
@ref LearnBasics
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Step by step instructions for learning HDF5 that include programming examples
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
\subsection subsec_learn_tutor The HDF Group Tutorials and Examples
|
||||||
|
These tutorials and examples are available for learning about the HDF5 High Level APIs, tools,
|
||||||
|
Parallel HDF5, and the HDF5-1.10 VDS and SWMR new features:
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td style="background-color:#F5F5F5">
|
||||||
|
<a href="https://portal.hdfgroup.org/display/HDF5/Introduction+to+the+HDF5+High+Level+APIs">Using the High Level APIs</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
\ref H5LT \ref H5IM \ref H5TB \ref H5PT \ref H5DS
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="background-color:#F5F5F5">
|
||||||
|
<a href="https://portal.hdfgroup.org/display/HDF5/Introduction+to+Parallel+HDF5">Introduction to Parallel HDF5</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
A brief introduction to Parallel HDF5. If you are new to HDF5 please see the @ref LearnBasics topic first.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="background-color:#F5F5F5">
|
||||||
|
\ref ViewTools
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
\li @ref LearnHDFView
|
||||||
|
\li @ref ViewToolsCommand
|
||||||
|
\li @ref ViewToolsJPSS
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="background-color:#F5F5F5">
|
||||||
|
HDF5-1.10 New Features
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
\li <a href="https://portal.hdfgroup.org/display/HDF5/Introduction+to+the+Virtual+Dataset++-+VDS">Introduction to the Virtual Dataset - VDS</a>
|
||||||
|
\li <a href="https://portal.hdfgroup.org/pages/viewpage.action?pageId=48812567">Introduction to Single-Writer/Multiple-Reader (SWMR)</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="background-color:#F5F5F5">
|
||||||
|
Example Programs
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
\ref HDF5Examples
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="background-color:#F5F5F5">
|
||||||
|
Videos
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
\li <a href="https://www.youtube.com/watch?v=BAjsCldRMMc">Introduction to HDF5</a>
|
||||||
|
\li <a href="https://www.youtube.com/watch?v=qrI27pI0P1E">Parallel HDF5</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
Navigate back: \ref index "Main"
|
||||||
|
|
||||||
|
*/
|
||||||
|
|||||||
627
doxygen/dox/IntroHDF5.dox
Normal file
@@ -0,0 +1,627 @@
|
|||||||
|
/** @page IntroHDF5 Introduction to HDF5
|
||||||
|
|
||||||
|
Navigate back: \ref index "Main" / \ref GettingStarted
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
\section sec_intro_desc HDF5 Description
|
||||||
|
HDF5 consists of a file format for storing HDF5 data, a data model for logically organizing and accessing
|
||||||
|
HDF5 data from an application, and the software (libraries, language interfaces, and tools) for working with this format.
|
||||||
|
|
||||||
|
\subsection subsec_intro_desc_file File Format
|
||||||
|
HDF5 consists of a file format for storing HDF5 data, a data model for logically organizing and accessing HDF5 data from an application,
|
||||||
|
and the software (libraries, language interfaces, and tools) for working with this format.
|
||||||
|
|
||||||
|
\subsection subsec_intro_desc_dm Data Model
|
||||||
|
The HDF5 Data Model, also known as the HDF5 Abstract (or Logical) Data Model consists of
|
||||||
|
the building blocks for data organization and specification in HDF5.
|
||||||
|
|
||||||
|
An HDF5 file (an object in itself) can be thought of as a container (or group) that holds
|
||||||
|
a variety of heterogeneous data objects (or datasets). The datasets can be images, tables,
|
||||||
|
graphs, and even documents, such as PDF or Excel:
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html fileobj.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
The two primary objects in the HDF5 Data Model are groups and datasets.
|
||||||
|
|
||||||
|
There are also a variety of other objects in the HDF5 Data Model that support groups and datasets,
|
||||||
|
including datatypes, dataspaces, properties and attributes.
|
||||||
|
|
||||||
|
\subsubsection subsec_intro_desc_dm_group Groups
|
||||||
|
HDF5 groups (and links) organize data objects. Every HDF5 file contains a root group that can
|
||||||
|
contain other groups or be linked to objects in other files.
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<caption>There are two groups in the HDF5 file depicted above: Viz and SimOut.
|
||||||
|
Under the Viz group are a variety of images and a table that is shared with the SimOut group.
|
||||||
|
The SimOut group contains a 3-dimensional array, a 2-dimensional array and a link to a 2-dimensional
|
||||||
|
array in another HDF5 file.</caption>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html group.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
Working with groups and group members is similar in many ways to working with directories and files
|
||||||
|
in UNIX. As with UNIX directories and files, objects in an HDF5 file are often described by giving
|
||||||
|
their full (or absolute) path names.
|
||||||
|
\li / signifies the root group.
|
||||||
|
\li /foo signifies a member of the root group called foo.
|
||||||
|
\li /foo/zoo signifies a member of the group foo, which in turn is a member of the root group.
|
||||||
|
|
||||||
|
\subsubsection subsec_intro_desc_dm_dset Datasets
|
||||||
|
HDF5 datasets organize and contain the “raw” data values. A dataset consists of metadata
|
||||||
|
that describes the data, in addition to the data itself:
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<caption>In this picture, the data is stored as a three dimensional dataset of size 4 x 5 x 6 with an integer datatype.
|
||||||
|
It contains attributes, Time and Pressure, and the dataset is chunked and compressed.</caption>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html dataset.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
Datatypes, dataspaces, properties and (optional) attributes are HDF5 objects that describe a dataset.
|
||||||
|
The datatype describes the individual data elements.
|
||||||
|
|
||||||
|
\subsection subsec_intro_desc_props Datatypes, Dataspaces, Properties and Attributes
|
||||||
|
|
||||||
|
\subsubsection subsec_intro_desc_prop_dtype Datatypes
|
||||||
|
The datatype describes the individual data elements in a dataset. It provides complete information for
|
||||||
|
data conversion to or from that datatype.
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<caption>In the dataset depicted, each element of the dataset is a 32-bit integer.</caption>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html datatype.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
Datatypes in HDF5 can be grouped into:
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<b>Pre-Defined Datatypes</b>: These are datatypes that are created by HDF5. They are actually opened (and closed)
|
||||||
|
by HDF5 and can have different values from one HDF5 session to the next. There are two types of pre-defined datatypes:
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
Standard datatypes are the same on all platforms and are what you see in an HDF5 file. Their names are of the form
|
||||||
|
H5T_ARCH_BASE where ARCH is an architecture name and BASE is a programming type name. For example, #H5T_IEEE_F32BE
|
||||||
|
indicates a standard Big Endian floating point type.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Native datatypes are used to simplify memory operations (reading, writing) and are NOT the same on different platforms.
|
||||||
|
For example, #H5T_NATIVE_INT indicates an int (C).
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<b>Derived Datatypes</b>: These are datatypes that are created or derived from the pre-defined datatypes.
|
||||||
|
An example of a commonly used derived datatype is a string of more than one character. Compound datatypes
|
||||||
|
are also derived types. A compound datatype can be used to create a simple table, and can also be nested,
|
||||||
|
in which it includes one more other compound datatypes.
|
||||||
|
<table>
|
||||||
|
<caption>This is an example of a dataset with a compound datatype. Each element in the dataset consists
|
||||||
|
of a 16-bit integer, a character, a 32-bit integer, and a 2x3x2 array of 32-bit floats (the datatype).
|
||||||
|
It is a 2-dimensional 5 x 3 array (the dataspace). The datatype should not be confused with the dataspace.
|
||||||
|
</caption>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html cmpnddtype.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
\subsubsection subsec_intro_desc_prop_dspace Dataspaces
|
||||||
|
A dataspace describes the layout of a dataset’s data elements. It can consist of no elements (NULL),
|
||||||
|
a single element (scalar), or a simple array.
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<caption>This image illustrates a dataspace that is an array with dimensions of 5 x 3 and a rank (number of dimensions) of 2.</caption>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html dataspace1.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
A dataspace can have dimensions that are fixed (unchanging) or unlimited, which means they can grow
|
||||||
|
in size (i.e. they are extendible).
|
||||||
|
|
||||||
|
There are two roles of a dataspace:
|
||||||
|
\li It contains the spatial information (logical layout) of a dataset stored in a file. This includes the rank and dimensions of a dataset, which are a permanent part of the dataset definition.
|
||||||
|
\li It describes an application’s data buffers and data elements participating in I/O. In other words, it can be used to select a portion or subset of a dataset.
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<caption>The dataspace is used to describe both the logical layout of a dataset and a subset of a dataset.</caption>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html dataspace.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
\subsubsection subsec_intro_desc_prop_property Properties
|
||||||
|
A property is a characteristic or feature of an HDF5 object. There are default properties which
|
||||||
|
handle the most common needs. These default properties can be modified using the HDF5 Property
|
||||||
|
List API to take advantage of more powerful or unusual features of HDF5 objects.
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html properties.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
For example, the data storage layout property of a dataset is contiguous by default. For better
|
||||||
|
performance, the layout can be modified to be chunked or chunked and compressed:
|
||||||
|
|
||||||
|
\subsubsection subsec_intro_desc_prop_attr Attributes
|
||||||
|
Attributes can optionally be associated with HDF5 objects. They have two parts: a name and a value.
|
||||||
|
Attributes are accessed by opening the object that they are attached to so are not independent objects.
|
||||||
|
Typically an attribute is small in size and contains user metadata about the object that it is attached to.
|
||||||
|
|
||||||
|
Attributes look similar to HDF5 datasets in that they have a datatype and dataspace. However, they
|
||||||
|
do not support partial I/O operations, and they cannot be compressed or extended.
|
||||||
|
|
||||||
|
\subsection subsec_intro_desc_soft HDF5 Software
|
||||||
|
The HDF5 software is written in C and includes optional wrappers for C++, FORTRAN (90 and F2003),
|
||||||
|
and Java. The HDF5 binary distribution consists of the HDF5 libraries, include files, command-line
|
||||||
|
utilities, scripts for compiling applications, and example programs.
|
||||||
|
|
||||||
|
\subsubsection subsec_intro_desc_soft_apis HDF5 APIs and Libraries
|
||||||
|
There are APIs for each type of object in HDF5. For example, all C routines in the HDF5 library
|
||||||
|
begin with a prefix of the form H5*, where * is one or two uppercase letters indicating the type
|
||||||
|
of object on which the function operates:
|
||||||
|
\li @ref H5A <b>A</b>ttribute Interface
|
||||||
|
\li @ref H5D <b>D</b>ataset Interface
|
||||||
|
\li @ref H5F <b>F</b>ile Interface
|
||||||
|
|
||||||
|
The HDF5 High Level APIs simplify many of the steps required to create and access objects, as well
|
||||||
|
as providing templates for storing objects. Following is a list of the High Level APIs:
|
||||||
|
\li @ref H5LT – simplifies steps in creating datasets and attributes
|
||||||
|
\li @ref H5IM – defines a standard for storing images in HDF5
|
||||||
|
\li @ref H5TB – condenses the steps required to create tables
|
||||||
|
\li @ref H5DS – provides a standard for dimension scale storage
|
||||||
|
\li @ref H5PT – provides a standard for storing packet data
|
||||||
|
|
||||||
|
\subsubsection subsec_intro_desc_soft_tools Tools
|
||||||
|
Useful tools for working with HDF5 files include:
|
||||||
|
\li h5dump: A utility to dump or display the contents of an HDF5 File
|
||||||
|
\li h5cc, h5c++, h5fc: Unix scripts for compiling applications
|
||||||
|
\li HDFView: A java browser to view HDF (HDF4 and HDF5) files
|
||||||
|
|
||||||
|
<h4>h5dump</h4>
|
||||||
|
The h5dump utility displays the contents of an HDF5 file in Data Description Language (\ref DDLBNF110).
|
||||||
|
Below is an example of h5dump output for an HDF5 file that contains no objects:
|
||||||
|
\code
|
||||||
|
$ h5dump file.h5
|
||||||
|
HDF5 "file.h5" {
|
||||||
|
GROUP "/" {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
With large files and datasets the output from h5dump can be overwhelming.
|
||||||
|
There are options that can be used to examine specific parts of an HDF5 file.
|
||||||
|
Some useful h5dump options are included below:
|
||||||
|
\code
|
||||||
|
-H, --header Display header information only (no data)
|
||||||
|
-d <name> Display a dataset with a specified path and name
|
||||||
|
-p Display properties
|
||||||
|
-n Display the contents of the file
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
<h4>h5cc, h5fc, h5c++</h4>
|
||||||
|
The built HDF5 binaries include the h5cc, h5fc, h5c++ compile scripts for compiling applications.
|
||||||
|
When using these scripts there is no need to specify the HDF5 libraries and include files.
|
||||||
|
Compiler options can be passed to the scripts.
|
||||||
|
|
||||||
|
<h4>HDFView</h4>
|
||||||
|
The HDFView tool allows browsing of data in HDF (HDF4 and HDF5) files.
|
||||||
|
|
||||||
|
\section sec_intro_pm Introduction to the HDF5 Programming Model and APIs
|
||||||
|
The HDF5 Application Programming Interface is extensive, but a few functions do most of the work.
|
||||||
|
|
||||||
|
To introduce the programming model, examples in Python and C are included below. The Python examples
|
||||||
|
use the HDF5 Python APIs (h5py). See the Examples from "Learning the Basics" page for complete examples
|
||||||
|
that can be downloaded and run for C, FORTRAN, C++, Java and Python.
|
||||||
|
|
||||||
|
The general paradigm for working with objects in HDF5 is to:
|
||||||
|
\li Open the object.
|
||||||
|
\li Access the object.
|
||||||
|
\li Close the object.
|
||||||
|
|
||||||
|
The library imposes an order on the operations by argument dependencies. For example, a file must be
|
||||||
|
opened before a dataset because the dataset open call requires a file handle as an argument. Objects
|
||||||
|
can be closed in any order. However, once an object is closed it no longer can be accessed.
|
||||||
|
|
||||||
|
Keep the following in mind when looking at the example programs included in this section:
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
C routines begin with the prefix “H5*” where * is a single letter indicating the object on which the
|
||||||
|
operation is to be performed.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
FORTRAN routines are similar; they begin with “h5*” and end with “_f”.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Java routines are similar; the routine names begin with “H5*” and are prefixed with “H5.” as the class. Constants are
|
||||||
|
in the HDF5Constants class and are prefixed with "HDF5Constants.". The function arguments
|
||||||
|
are usually similar, @see @ref HDF5LIB
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
For example:
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
File Interface:<ul><li>#H5Fopen (C)</li><li>h5fopen_f (FORTRAN)</li><li>H5.H5Fopen (Java)</li></ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Dataset Interface:<ul><li>#H5Dopen (C)</li><li>h5dopen_f (FORTRAN)</li><li>H5.H5Dopen (Java)</li></ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Dataspace interface:<ul><li>#H5Sclose (C)</li><li>h5sclose_f (FORTRAN)</li><li>H5.H5Sclose (Java)</li></ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
The HDF5 Python APIs use methods associated with specific objects.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
For portability, the HDF5 library has its own defined types. Some common types that you will see
|
||||||
|
in the example code are:
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
#hid_t is used for object handles
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
hsize_t is used for dimensions
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
#herr_t is used for many return values
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Language specific files must be included in applications:
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
Python: Add <code>"import h5py / import numpy"</code>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
C: Add <code>"#include hdf5.h"</code>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
FORTRAN: Add <code>"USE HDF5"</code> and call h5open_f and h5close_f to initialize and close the HDF5 FORTRAN interface
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Java: Add <code>"import hdf.hdf5lib.H5;
|
||||||
|
import hdf.hdf5lib.HDF5Constants;"</code>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
\subsection subsec_intro_pm_file Steps to create a file
|
||||||
|
To create an HDF5 file you must:
|
||||||
|
\li Specify property lists (or use the defaults).
|
||||||
|
\li Create the file.
|
||||||
|
\li Close the file (and property lists if needed).
|
||||||
|
|
||||||
|
Example:
|
||||||
|
<table>
|
||||||
|
<caption>The following Python and C examples create a file, file.h5, and then close it.
|
||||||
|
The resulting HDF5 file will only contain a root group:</caption>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html crtf-pic.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
Calling h5py.File with ‘w’ for the file access flag will create a new HDF5 file and overwrite
|
||||||
|
an existing file with the same name. “file” is the file handle returned from opening the file.
|
||||||
|
When finished with the file, it must be closed. When not specifying property lists, the default
|
||||||
|
property lists are used:
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<em>Python</em>
|
||||||
|
\code
|
||||||
|
import h5py
|
||||||
|
file = h5py.File (‘file.h5’, ‘w’)
|
||||||
|
file.close ()
|
||||||
|
\endcode
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
The H5Fcreate function creates an HDF5 file. #H5F_ACC_TRUNC is the file access flag to create a new
|
||||||
|
file and overwrite an existing file with the same name, and #H5P_DEFAULT is the value specified to
|
||||||
|
use a default property list.
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<em>C</em>
|
||||||
|
\code
|
||||||
|
#include “hdf5.h”
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
hid_t file_id;
|
||||||
|
herr_t status;
|
||||||
|
|
||||||
|
file_id = H5Fcreate ("file.h5", H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
|
||||||
|
status = H5Fclose (file_id);
|
||||||
|
}
|
||||||
|
\endcode
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
\subsection subsec_intro_pm_dataset Steps to create a dataset
|
||||||
|
As described previously, an HDF5 dataset consists of the raw data, as well as the metadata that
|
||||||
|
describes the data (datatype, spatial information, and properties). To create a dataset you must:
|
||||||
|
\li Define the dataset characteristics (datatype, dataspace, properties).
|
||||||
|
\li Decide which group to attach the dataset to.
|
||||||
|
\li Create the dataset.
|
||||||
|
\li Close the dataset handle from step 3.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
<table>
|
||||||
|
<caption>The code excerpts below show the calls that need to be made to create a 4 x 6 integer dataset dset
|
||||||
|
in a file dset.h5. The dataset will be located in the root group:</caption>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html crtdset.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
With Python, the creation of the dataspace is included as a parameter in the dataset creation method.
|
||||||
|
Just one call will create a 4 x 6 integer dataset dset. A pre-defined Big Endian 32-bit integer datatype
|
||||||
|
is specified. The create_dataset method creates the dataset in the root group (the file object).
|
||||||
|
The dataset is close by the Python interface.
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<em>Python</em>
|
||||||
|
\code
|
||||||
|
dataset = file.create_dataset("dset",(4, 6), h5py.h5t.STD_I32BE)
|
||||||
|
\endcode
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
To create the same dataset in C, you must specify the dataspace with the #H5Screate_simple function,
|
||||||
|
create the dataset by calling #H5Dcreate, and then close the dataspace and dataset with calls to #H5Dclose
|
||||||
|
and #H5Sclose. #H5P_DEFAULT is specified to use a default property list. Note that the file identifier
|
||||||
|
(file_id) is passed in as the first parameter to #H5Dcreate, which creates the dataset in the root group.
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<em>C</em>
|
||||||
|
\code
|
||||||
|
// Create the dataspace for the dataset.
|
||||||
|
dims[0] = 4;
|
||||||
|
dims[1] = 6;
|
||||||
|
|
||||||
|
dataspace_id = H5Screate_simple(2, dims, NULL);
|
||||||
|
|
||||||
|
// Create the dataset.
|
||||||
|
dataset_id = H5Dcreate (file_id, "/dset", H5T_STD_I32BE, dataspace_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
|
||||||
|
|
||||||
|
// Close the dataset and dataspace
|
||||||
|
status = H5Dclose(dataset_id);
|
||||||
|
status = H5Sclose(dataspace_id);
|
||||||
|
\endcode
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
\subsection subsec_intro_pm_write Writing to or reading from a dataset
|
||||||
|
Once you have created or opened a dataset you can write to it:
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<em>Python</em>
|
||||||
|
\code
|
||||||
|
data = np.zeros((4,6))
|
||||||
|
for i in range(4):
|
||||||
|
for j in range(6):
|
||||||
|
data[i][j]= i*6+j+1
|
||||||
|
|
||||||
|
dataset[...] = data <-- Write data to dataset
|
||||||
|
data_read = dataset[...] <-- Read data from dataset
|
||||||
|
\endcode
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
#H5S_ALL is passed in for the memory and file dataspace parameters to indicate that the entire dataspace
|
||||||
|
of the dataset is specified. These two parameters can be modified to allow subsetting of a dataset.
|
||||||
|
The native predefined datatype, #H5T_NATIVE_INT, is used for reading and writing so that HDF5 will do
|
||||||
|
any necessary integer conversions:
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<em>C</em>
|
||||||
|
\code
|
||||||
|
status = H5Dwrite (dataset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset_data);
|
||||||
|
status = H5Dread (dataset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset_data);
|
||||||
|
\endcode
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
\subsection subsec_intro_pm_group Steps to create a group
|
||||||
|
An HDF5 group is a structure containing zero or more HDF5 objects. Before you can create a group you must
|
||||||
|
obtain the location identifier of where the group is to be created. Following are the steps that are required:
|
||||||
|
\li Decide where to put the group – in the “root group” (or file identifier) or in another group. Open the group if it is not already open.
|
||||||
|
\li Define properties or use the default.
|
||||||
|
\li Create the group.
|
||||||
|
\li Close the group.
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<caption>Creates attributes that are attached to the dataset dset</caption>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html crtgrp.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
The code below opens the dataset dset.h5 with read/write permission and creates a group MyGroup in the root group.
|
||||||
|
Properties are not specified so the defaults are used:
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<em>Python</em>
|
||||||
|
\code
|
||||||
|
import h5py
|
||||||
|
file = h5py.File('dset.h5', 'r+')
|
||||||
|
group = file.create_group ('MyGroup')
|
||||||
|
file.close()
|
||||||
|
\endcode
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
To create the group MyGroup in the root group, you must call #H5Gcreate, passing in the file identifier returned
|
||||||
|
from opening or creating the file. The default property lists are specified with #H5P_DEFAULT. The group is then
|
||||||
|
closed:
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<em>C</em>
|
||||||
|
\code
|
||||||
|
group_id = H5Gcreate (file_id, "MyGroup", H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
|
||||||
|
status = H5Gclose (group_id);
|
||||||
|
\endcode
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
\subsection subsec_intro_pm_attr Steps to create and write to an attribute
|
||||||
|
To create an attribute you must open the object that you wish to attach the attribute to. Then you can create,
|
||||||
|
access, and close the attribute as needed:
|
||||||
|
\li Open the object that you wish to add an attribute to.
|
||||||
|
\li Create the attribute
|
||||||
|
\li Write to the attribute
|
||||||
|
\li Close the attribute and the object it is attached to.
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<caption>Creates attributes that are attached to the dataset dset</caption>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html crtatt.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
The dataspace, datatype, and data are specified in the call to create an attribute in Python:
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<em>Python</em>
|
||||||
|
\code
|
||||||
|
dataset.attrs["Units"] = “Meters per second” <-- Create string
|
||||||
|
attr_data = np.zeros((2,))
|
||||||
|
attr_data[0] = 100
|
||||||
|
attr_data[1] = 200
|
||||||
|
dataset.attrs.create("Speed", attr_data, (2,), “i”) <-- Create Integer
|
||||||
|
\endcode
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
To create an integer attribute in C, you must create the dataspace, create the attribute, write
|
||||||
|
to it and then close it in separate steps:
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<em>C</em>
|
||||||
|
\code
|
||||||
|
hid_t attribute_id, dataspace_id; // identifiers
|
||||||
|
hsize_t dims;
|
||||||
|
int attr_data[2];
|
||||||
|
herr_t status;
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
// Initialize the attribute data.
|
||||||
|
attr_data[0] = 100;
|
||||||
|
attr_data[1] = 200;
|
||||||
|
|
||||||
|
// Create the data space for the attribute.
|
||||||
|
dims = 2;
|
||||||
|
dataspace_id = H5Screate_simple(1, &dims, NULL);
|
||||||
|
|
||||||
|
// Create a dataset attribute.
|
||||||
|
attribute_id = H5Acreate2 (dataset_id, "Units", H5T_STD_I32BE,
|
||||||
|
dataspace_id, H5P_DEFAULT, H5P_DEFAULT);
|
||||||
|
|
||||||
|
// Write the attribute data.
|
||||||
|
status = H5Awrite(attribute_id, H5T_NATIVE_INT, attr_data);
|
||||||
|
|
||||||
|
// Close the attribute.
|
||||||
|
status = H5Aclose(attribute_id);
|
||||||
|
|
||||||
|
// Close the dataspace.
|
||||||
|
status = H5Sclose(dataspace_id);
|
||||||
|
\endcode
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
Navigate back: \ref index "Main" / \ref GettingStarted
|
||||||
|
|
||||||
|
|
||||||
|
@page HDF5Examples HDF5 Examples
|
||||||
|
Example programs of how to use HDF5 are provided below.
|
||||||
|
For HDF-EOS specific examples, see the <a href="http://hdfeos.org/zoo/index.php">examples</a>
|
||||||
|
of how to access and visualize NASA HDF-EOS files using IDL, MATLAB, and NCL on the
|
||||||
|
<a href="http://hdfeos.org/">HDF-EOS Tools and Information Center</a> page.
|
||||||
|
|
||||||
|
\section secHDF5Examples Examples
|
||||||
|
\li \ref LBExamples
|
||||||
|
\li <a href="https://portal.hdfgroup.org/display/HDF5/Examples+by+API">Examples by API</a>
|
||||||
|
\li <a href="https://portal.hdfgroup.org/display/HDF5/Examples+in+the+Source+Code">Examples in the Source Code</a>
|
||||||
|
\li <a href="https://portal.hdfgroup.org/display/HDF5/Other+Examples">Other Examples</a>
|
||||||
|
|
||||||
|
\section secHDF5ExamplesCompile How To Compile
|
||||||
|
For information on compiling in C, C++ and Fortran, see: \ref LBCompiling
|
||||||
|
|
||||||
|
\section secHDF5ExamplesOther Other Examples
|
||||||
|
<a href="http://hdfeos.org/zoo/index.php">IDL, MATLAB, and NCL Examples for HDF-EOS</a>
|
||||||
|
Examples of how to access and visualize NASA HDF-EOS files using IDL, MATLAB, and NCL.
|
||||||
|
|
||||||
|
<a href="https://support.hdfgroup.org/ftp/HDF5/examples/misc-examples/">Miscellaneous Examples</a>
|
||||||
|
These (very old) examples resulted from working with users, and are not fully tested. Most of them are in C, with a few in Fortran and Java.
|
||||||
|
|
||||||
|
<a href="https://support.hdfgroup.org/ftp/HDF5/examples/special_values_HDF5_example.tar">Using Special Values</a>
|
||||||
|
These examples show how to create special values in an HDF5 application.
|
||||||
|
|
||||||
|
*/
|
||||||
183
doxygen/dox/LearnBasics.dox
Normal file
@@ -0,0 +1,183 @@
|
|||||||
|
/** @page LearnBasics Learning the Basics
|
||||||
|
|
||||||
|
Navigate back: \ref index "Main" / \ref GettingStarted
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
\section secIntro Introduction
|
||||||
|
The following topics cover the basic features in HDF5. The topics build on each other and are
|
||||||
|
intended to be completed in order. Some sections use files created in earlier sections. The
|
||||||
|
examples used can also be found on the \ref LBExamples
|
||||||
|
page and in the HDF5 source code (C, C++, Fortran).
|
||||||
|
|
||||||
|
\section Topics Topics
|
||||||
|
\li @subpage LBFileOrg
|
||||||
|
\li @subpage LBAPI
|
||||||
|
\li @subpage LBProg
|
||||||
|
\li @subpage LBFileCreate
|
||||||
|
\li @subpage LBDsetCreate
|
||||||
|
\li @subpage LBDsetRW
|
||||||
|
\li @subpage LBAttrCreate
|
||||||
|
\li @subpage LBGrpCreate
|
||||||
|
\li @subpage LBGrpCreateNames
|
||||||
|
\li @subpage LBGrpDset
|
||||||
|
\li @subpage LBDsetSubRW
|
||||||
|
\li @subpage LBDatatypes
|
||||||
|
\li @subpage LBPropsList
|
||||||
|
\li @subpage LBDsetLayout
|
||||||
|
\li @subpage LBExtDset
|
||||||
|
\li @subpage LBComDset
|
||||||
|
\li @subpage LBContents
|
||||||
|
\li @subpage LBQuiz
|
||||||
|
\li @subpage LBQuizAnswers
|
||||||
|
\li @subpage LBCompiling
|
||||||
|
\li @subpage LBTraining
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
Navigate back: \ref index "Main" / \ref GettingStarted
|
||||||
|
|
||||||
|
|
||||||
|
@page LBExamples Examples from Learning the Basics
|
||||||
|
|
||||||
|
Navigate back: \ref index "Main" / \ref GettingStarted / \ref LearnBasics
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
\section secLBExamples
|
||||||
|
These examples are used in the \ref LearnBasics topic. See \ref LBCompiling for details on compiling them.
|
||||||
|
PLEASE NOTE that the example programs are listed in the order they are expected to be run. Some example
|
||||||
|
programs use files created in earlier examples.
|
||||||
|
|
||||||
|
\section secLBExamplesSrc HDF5 Source Code Examples
|
||||||
|
These examples (C, C++, Fortran) are provided in the HDF5 source code and (Unix) binaries.
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>Feature
|
||||||
|
</th>
|
||||||
|
<th>Examples
|
||||||
|
</th>
|
||||||
|
<th>Comments
|
||||||
|
</th>
|
||||||
|
<tr>
|
||||||
|
<td>Create a file
|
||||||
|
</td>
|
||||||
|
<td>C Fortran C++ <a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/java/examples/intro/H5_CreateFile.java">Java</a> Python
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Create a dataset
|
||||||
|
</td>
|
||||||
|
<td><a href="https://raw.githubusercontent.com//HDFGroup/hdf5/hdf5_1_10/examples/h5_crtdat.c">C</a> <a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/fortran/examples/h5_crtdat.f90">Fortran</a> <a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/c++/examples/h5tutr_crtdat.cpp">C++</a> <a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/java/examples/intro/H5_CreateDataset.java">Java</a> <a href="https://support.hdfgroup.org/ftp/HDF5/examples/Py/h5_crtdat.py">Python</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Read and write to a dataset
|
||||||
|
</td>
|
||||||
|
<td><a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/examples/h5_rdwt.c">C</a> <a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/fortran/examples/h5_rdwt.f90">Fortran</a> <a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/c++/examples/h5tutr_rdwt.cpp">C++</a> <a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/java/examples/intro/H5_ReadWrite.java">Java</a> <a href="https://support.hdfgroup.org/ftp/HDF5/examples/Py/h5_rdwt.py">Python</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Create an attribute
|
||||||
|
</td>
|
||||||
|
<td><a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/examples/h5_crtatt.c">C</a> <a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/fortran/examples/h5_crtatt.f90">Fortran</a> <a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/c++/examples/h5tutr_crtatt.cpp">C++</a> <a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/java/examples/intro/H5_CreateAttribute.java">Java</a> <a href="https://support.hdfgroup.org/ftp/HDF5/examples/Py/h5_crtatt.py">Python</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Create a group
|
||||||
|
</td>
|
||||||
|
<td><a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/examples/h5_crtgrp.c">C</a> <a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/fortran/examples/h5_crtgrp.f90">Fortran</a> <a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/c++/examples/h5tutr_crtgrp.cpp">C++</a> <a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/java/examples/intro/H5_CreateGroup.java">Java</a> <a href="https://support.hdfgroup.org/ftp/HDF5/examples/Py/h5_crtgrp.py">Python</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Create groups in a file using absolute and relative paths
|
||||||
|
</td>
|
||||||
|
<td><a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/examples/h5_crtgrpar.c">C</a> <a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/fortran/examples/h5_crtgrpar.f90">Fortran</a> <a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/c++/examples/h5tutr_crtgrpar.cpp">C++</a> <a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/java/examples/intro/H5_CreateGroupAbsoluteRelative.java">Java</a> <a href="https://support.hdfgroup.org/ftp/HDF5/examples/Py/h5_crtgrpar.py">Python</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Create datasets in a group
|
||||||
|
</td>
|
||||||
|
<td><a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/examples/h5_crtgrpd.c">C</a> <a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/fortran/examples/h5_crtgrpd.f90">Fortran</a> <a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/c++/examples/h5tutr_crtgrpd.cpp">C++</a> <a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/java/examples/intro/H5_CreateGroupDataset.java">Java</a> <a href="https://support.hdfgroup.org/ftp/HDF5/examples/Py/h5_crtgrpd.py">Python</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Create a file and dataset and select/read a subset from the dataset
|
||||||
|
</td>
|
||||||
|
<td><a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/examples/h5_subset.c">C</a> <a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/fortran/examples/h5_subset.f90">Fortran</a> <a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/c++/examples/h5tutr_subset.cpp">C++</a> Java Python
|
||||||
|
</td>
|
||||||
|
<td>Also see examples to Write by row (and column) below.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Create an extendible (unlimited dimension) dataset
|
||||||
|
</td>
|
||||||
|
<td><a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/examples/h5_extend.c">C</a> <a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/fortran/examples/h5_extend.f90">Fortran</a> <a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/c++/examples/h5tutr_extend.cpp">C++</a> Java Python
|
||||||
|
</td>
|
||||||
|
<td>Also see examples to Extend by row (and column) below
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Create a chunked and compressed dataset
|
||||||
|
</td>
|
||||||
|
<td><a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/examples/h5_cmprss.c">C</a> <a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/fortran/examples/h5_cmprss.f90">Fortran</a> <a href="https://raw.githubusercontent.com/HDFGroup/hdf5/hdf5_1_10/c++/examples/h5tutr_cmprss.cpp">C++</a> Java <a href="https://support.hdfgroup.org/ftp/HDF5/examples/Py/h5_cmprss.py">Python</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
*See <a href="https://github.com/scotmartin1234/HDF5Mathematica">HDF5Mathematica</a> for user-contributed
|
||||||
|
HDF5 Mathematica Wrappers and Introductory Tutorial Examples. The examples use P/Invoke.
|
||||||
|
|
||||||
|
\section secLBExamplesAddl Additional Examples
|
||||||
|
These examples make minor changes to the tutorial examples.
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>Feature
|
||||||
|
</th>
|
||||||
|
<th>Examples
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Write by row
|
||||||
|
</td>
|
||||||
|
<td><a href="">C</a> <a href="">Fortran</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Write by column
|
||||||
|
</td>
|
||||||
|
<td><a href="">C</a> <a href="">Fortran</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Extend by row
|
||||||
|
</td>
|
||||||
|
<td><a href="">C</a> <a href="">Fortran</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Extend by column
|
||||||
|
</td>
|
||||||
|
<td><a href="">C</a> <a href="">Fortran</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
Navigate back: \ref index "Main" / \ref GettingStarted / \ref LearnBasics
|
||||||
|
|
||||||
|
*/
|
||||||
1023
doxygen/dox/LearnBasics1.dox
Normal file
1159
doxygen/dox/LearnBasics2.dox
Normal file
1015
doxygen/dox/LearnBasics3.dox
Normal file
472
doxygen/dox/LearnHDFView.dox
Normal file
@@ -0,0 +1,472 @@
|
|||||||
|
/** @page LearnHDFView Learning HDF5 with HDFView
|
||||||
|
|
||||||
|
Navigate back: \ref index "Main" / \ref GettingStarted
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
This tutorial enables you to get a feel for HDF5 by using the HDFView browser. It does NOT require
|
||||||
|
any programming experience.
|
||||||
|
|
||||||
|
\section sec_learn_hv_install HDFView Installation
|
||||||
|
\li Download and install HDFView. It can be downloaded from the <a href="https://portal.hdfgroup.org/display/support/Download+HDFView">Download HDFView</a> page.
|
||||||
|
\li Obtain the <a href="https://support.hdfgroup.org/ftp/HDF5/examples/files/tutorial/storm1.txt">storm1.txt</a> text file, used in the tutorial.
|
||||||
|
|
||||||
|
\section sec_learn_hv_begin Begin Tutorial
|
||||||
|
Once you have HDFView installed, bring it up and you are ready to begin the tutorial.
|
||||||
|
|
||||||
|
<table style="background-color:#FAFAD2">
|
||||||
|
<caption>
|
||||||
|
Unable to complete tutorial because fields are greyed out?
|
||||||
|
</caption>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
This tutorial requires that the default HDFView File Access Mode be Read / Write. If fields are greyed out so that you cannot select them, then the File Access Mode is Read Only.
|
||||||
|
|
||||||
|
To change the File Access Mode follow these steps:
|
||||||
|
<ul>
|
||||||
|
<li>Bring up HDFView</li>
|
||||||
|
<li>Left-mouse click on the Tools pull-down menu and select User Options.</li>
|
||||||
|
<li>A Preferences window pops up with the General Settings tab selected.
|
||||||
|
About half-way down you will see Default File Access Mode.
|
||||||
|
Select Read / Write.</li>
|
||||||
|
<li>Click on Apply and Close at the bottom of the window.</li>
|
||||||
|
<li>Close down HDFView.</li>
|
||||||
|
<li>Bring HDFView back up and try the tutorial again.</li>
|
||||||
|
PLEASE BE AWARE that selecting a File Access Mode of Read / Write can result in changes to the timestamp of HDF files that are viewed with HDFView. In general, a File Access Mode
|
||||||
|
of Read Only should be used to ensure that this does not occur.
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
\subsection subsec_learn_hv_begin_topics Topics Covered
|
||||||
|
Following are the topics covered in the tutorial. The first topic creates the file that is used in
|
||||||
|
the subsequent topics.
|
||||||
|
<ul>
|
||||||
|
<li>@ref subsec_learn_hv_topics_file</li>
|
||||||
|
<li>@ref subsec_learn_hv_topics_image</li>
|
||||||
|
<li>@ref subsec_learn_hv_topics_attr</li>
|
||||||
|
<li>@ref subsec_learn_hv_topics_compress</li>
|
||||||
|
<li>@ref subsec_learn_hv_topics_subset</li>
|
||||||
|
<li>@ref subsec_learn_hv_topics_table</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
\section sec_learn_hv_topics Topics
|
||||||
|
|
||||||
|
\subsection subsec_learn_hv_topics_file Creating a New HDF5 File with a Contiguous Dataset
|
||||||
|
The steps below describe how to create a file (storm.h5), group (/Data), and a contiguous dataset
|
||||||
|
(/Data/Storm) using HDFView. A group is an HDF5 object that allows objects to be collected together.
|
||||||
|
A dataset is an array of data values. A contiguous dataset is one that is stored as a single block
|
||||||
|
in the HDF5 file.
|
||||||
|
<ul>
|
||||||
|
<li>Select the <em>File</em> pull-down menu at the top left, and then select <em>New -> HDF5</em>.</li>
|
||||||
|
<li>Specify a location and type in <em>storm.h5</em> for the name of your file, and click on the <em>Save</em> button.
|
||||||
|
You will see the <em>storm.h5</em> file in the TableView:
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html storm.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</li>
|
||||||
|
<li>Right click on <em>storm.h5</em>, and select <em>New -> Group</em>.</li>
|
||||||
|
<li>Enter <em>Data</em> for the name of the group and then click the <em>Ok</em> button. You will see the group <em>Data</em> in the TableView.
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html DataGroup.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</li>
|
||||||
|
<li>Right click on the group <em>Data</em> and select <em>New -> Dataset</em>.</li>
|
||||||
|
<li>A window pops up on the right. Fill in the information as follows, and then click <em>Ok</em> (leave the
|
||||||
|
Datatype information as is):
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>Dataset Name
|
||||||
|
</th>
|
||||||
|
<td><em>Storm</em>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Under Dataspace, Current size
|
||||||
|
</th>
|
||||||
|
<td>57x57
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Layout
|
||||||
|
</th>
|
||||||
|
<td><em>Contiguous</em> (default)
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</li>
|
||||||
|
<li>Click to expand the <em>Data</em> group in the tree view to see the <em>Storm</em> dataset:
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html StormDataset.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</li>
|
||||||
|
<li>Double left click on the <em>Storm</em> dataset in the tree view. A window with an empty spreadsheet pops open.</li>
|
||||||
|
<li>Copy the data from the <a href="https://support.hdfgroup.org/ftp/HDF5/examples/files/tutorial/storm1.txt">storm1.txt</a> file into the dataset.
|
||||||
|
|
||||||
|
If you downloaded <a href="https://support.hdfgroup.org/ftp/HDF5/examples/files/tutorial/storm1.txt">storm1.txt</a>,
|
||||||
|
then click on the <em>Import/Export Data</em> menu and select <em>Import Data from -> Text File</em>.
|
||||||
|
Specify a location, select <a href="https://support.hdfgroup.org/ftp/HDF5/examples/files/tutorial/storm1.txt">storm1.txt</a>
|
||||||
|
and click on the <em>Open</em> button. Answer <em>Yes</em> in the dialog box that
|
||||||
|
pops up (which asks if you wish to paste the selected data).
|
||||||
|
|
||||||
|
Alternately, you can copy/paste directly. Select and copy the data in a separate window. Position your
|
||||||
|
cursor at (0,0) in your table, and select <em>Paste</em> from the <em>Table</em> menu.
|
||||||
|
|
||||||
|
The values will be entered into the spreadsheet.
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html datasetwdata.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</li>
|
||||||
|
<li><em>Table -> Close</em> the dataset, and save the data.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
\subsection subsec_learn_hv_topics_image Displaying a Dataset as an Image
|
||||||
|
Any dataset can be viewed as an image in HDFView. Below are the steps that demonstrate this.
|
||||||
|
<ul>
|
||||||
|
<li>Right click on <em>Storm</em> in the tree view, and select <em>Open As</em>.</li>
|
||||||
|
<li>Select the <em>Image</em> button under <em>Display As</em> (near the top) in the Dataset Selection window that pops
|
||||||
|
up. Then click <em>OK</em> at the bottom of the window to display the image.
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html showasimage.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</li>
|
||||||
|
<li>The rainbow icon brings you to the Image Palette window. Click on that to play with the palette
|
||||||
|
(GrayWave probably is the best choice). Close.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
\subsection subsec_learn_hv_topics_attr Creating Attributes
|
||||||
|
Additional information to describe an object can be stored in attributes. An attribute can be
|
||||||
|
added to a group or dataset with HDFView.
|
||||||
|
|
||||||
|
The following illustrates how to add an attribute to the group <em>/Data</em>:
|
||||||
|
<ul>
|
||||||
|
<li>Click on the <em>/Data</em> folder in the tree view. You will see two tabs, <em>Object Attribute Info</em> and
|
||||||
|
<em>General Object Info</em>, in the pane on the right site of the HDFView window.
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html noattrs.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</li>
|
||||||
|
<li>With the left mouse button, select the <em>Add Attribute</em> button.</li>
|
||||||
|
<li>Select the <em>Add Attribute</em> button to add an attribute with these values:</li>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>Name
|
||||||
|
</th>
|
||||||
|
<td><em>BatchID</em>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Type
|
||||||
|
</th>
|
||||||
|
<td>INTEGER
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Size (bits)
|
||||||
|
</th>
|
||||||
|
<td>32
|
||||||
|
</td>
|
||||||
|
</table>
|
||||||
|
<li>Select the <em>Ok</em> button. The attribute will show up under the <em>Object Attribute Info</em> tab.</li>
|
||||||
|
<li>Double-click the BatchID attribute line to open the data table for BatchID.</li>
|
||||||
|
<li>Click in the first cell and enter <em>3343</em> followed by the enter key.</li>
|
||||||
|
<li><em>Table -> Close</em>, answer <em>Yes</em> in the dialog box that
|
||||||
|
pops up (which asks if you wish to paste the selected data).</li>
|
||||||
|
</ul>
|
||||||
|
Adding an attribute to a dataset is very similar to adding an attribute to a group. For example,
|
||||||
|
the following adds an attribute to the <em>/Storm</em> dataset:
|
||||||
|
<ul>
|
||||||
|
<li>Left mouse click on the <em>/Storm</em> dataset in the tree view. You will see the <em>Object Attribute
|
||||||
|
Info</em> and <em>General Object Info</em> tabs on the right</li>
|
||||||
|
<li>In the <em>Object Attribute Info</em> pane select the <em>Add Attribute</em> button and enter an attribute with
|
||||||
|
these values. (Be sure to add a <em>String Length</em> or the string will be truncated to one character!):</li>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>Name
|
||||||
|
</th>
|
||||||
|
<td><em>Units</em>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Type
|
||||||
|
</th>
|
||||||
|
<td>STRING
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>String Length
|
||||||
|
</th>
|
||||||
|
<td>3
|
||||||
|
</td>
|
||||||
|
</table>
|
||||||
|
<li>Select the <em>Ok</em> button. The attribute will show up under the <em>Object Attribute Info</em> tab.</li>
|
||||||
|
<li>Double-click the Units attribute line to open the data table for Units.</li>
|
||||||
|
<li>Click in the first cell and enter <em>m/s</em> followed by the enter key.</li>
|
||||||
|
<li><em>Table -> Close</em>, answer <em>Yes</em> in the dialog box that
|
||||||
|
pops up (which asks if you wish to paste the selected data).
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html scarletletter.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
\subsection subsec_learn_hv_topics_compress Creating a Compressed and Chunked Dataset
|
||||||
|
A chunked and compressed dataset can be created using HDFView. A compressed dataset is a dataset
|
||||||
|
whose size has been compressed to take up less space. In order to compress an HDF5 dataset, the
|
||||||
|
dataset must be stored with a chunked dataset layout (as multiple <em>chunks</em> that are stored separately
|
||||||
|
in the file).
|
||||||
|
|
||||||
|
Please note that the chunk sizes used in this topic are for demonstration purposes only. For
|
||||||
|
information on chunking and specifying an appropriate chunk size, see the
|
||||||
|
<a href="https://confluence.hdfgroup.org/display/HDF5/Chunking+in+HDF5">Chunking in HDF5</a> documentation.
|
||||||
|
|
||||||
|
Also see the HDF5 Tutorial topic on \ref secLBComDsetCreate.
|
||||||
|
<ul>
|
||||||
|
<li>Right click on storm.h5. Select <em>New -> Group</em>.</li>
|
||||||
|
<li>Enter <em>Image</em> for the name of the group, and click the <em>OK</em> button to create the group.
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html newgroupimage.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</li>
|
||||||
|
<li>Right click on the <em>Image</em> group, and select <em>New -> Dataset</em>.</li>
|
||||||
|
<li>Enter the following information for the dataset. Leave the <em>Datatype</em> as is (INTEGER):
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>Dataset name
|
||||||
|
</th>
|
||||||
|
<td><em>Another Storm</em>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Under Dataspace, Current size
|
||||||
|
</th>
|
||||||
|
<td>57x57
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Storage Layout
|
||||||
|
</th>
|
||||||
|
<td>Chunked
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Chunk Size
|
||||||
|
</th>
|
||||||
|
<td>20x20
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Compression
|
||||||
|
</th>
|
||||||
|
<td>gzip
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Compression Level
|
||||||
|
</th>
|
||||||
|
<td>9
|
||||||
|
</td>
|
||||||
|
</table>
|
||||||
|
You will see the <em>Another Storm</em> dataset in the <em>Image</em> group:
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html hdfview-anthrstrm.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</li>
|
||||||
|
<li>Double left-mouse click on the <em>Another Storm</em> dataset to display the spreadsheet:
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html hdfview-anthrstrm-sprdsht.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</li>
|
||||||
|
<li>Copy the data from the <a href="https://support.hdfgroup.org/ftp/HDF5/examples/files/tutorial/storm1.txt">storm1.txt</a> file into the dataset. (See the previous topic for copying
|
||||||
|
<a href="https://support.hdfgroup.org/ftp/HDF5/examples/files/tutorial/storm1.txt">storm1.txt</a> into a dataset.)</li>
|
||||||
|
<li><em>Table -> Close</em>, and save the data.</li>
|
||||||
|
<li>Right click on <em>Another Storm</em>, and select <em>Open As</em>.</li>
|
||||||
|
<li>Select the <em>Image</em> button in the Dataset Selection window that pops up. Click the <em>Ok</em> button at the
|
||||||
|
bottom of the window to view the dataset as an image.
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html hdfview-anthrstrm-img.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
\subsection subsec_learn_hv_topics_subset Creating an Image and a Subset
|
||||||
|
A previous topic demonstrated how to view any dataset as an image in HDFView. With HDFView you can also
|
||||||
|
create an image to begin with, as is shown below.
|
||||||
|
<ul>
|
||||||
|
<li>Right click on the <em>Data</em> group and select <em>New -> Image</em>.</li>
|
||||||
|
<li>A window pops up on the right. Enter the following and then click <em>Ok</em>:</li>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>Image name
|
||||||
|
</th>
|
||||||
|
<td><em>Storm Image</em>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Height
|
||||||
|
</th>
|
||||||
|
<td>57
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Width
|
||||||
|
</th>
|
||||||
|
<td>57
|
||||||
|
</td>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<li>Close the dataset.</li>
|
||||||
|
<li>Expand the <em>Data</em> group to see its contents. You will see the <em>Storm Image</em> dataset.
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html hdfview-imgicon.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Add data to the <em>Storm Image</em> dataset as was shown previously:
|
||||||
|
<ul>
|
||||||
|
<li>Right click on <em>Storm Image</em>, and select <em>Open As</em> to open the Dataset Selection window.</li>
|
||||||
|
<li>Click on the <em>Spreadsheet</em> button at the top left of the Dataset Selection window to view the image
|
||||||
|
as a spreadsheet.</li>
|
||||||
|
<li>Copy the data from the <a href="https://support.hdfgroup.org/ftp/HDF5/examples/files/tutorial/storm1.txt">storm1.txt</a> file into the dataset.</li>
|
||||||
|
<li>Close the dataset and save the data.</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Left double click on <em>Storm Image</em> to see the image. Close the dataset.</li>
|
||||||
|
<li>Right click on <em>Storm Image</em> and select <em>Open As</em> to bring up the Data Selection window.</li>
|
||||||
|
<li>Select a subset by clicking the left mouse on the image in the window and dragging the mouse.
|
||||||
|
Notice that the Height and Width values change. Select to display it as an image. Click <em>Ok</em>.
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html hdfview-imgsubset.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</li>
|
||||||
|
<li>Position the cursor in the middle of the image. Press Shift+Left Mouse button and hold, and then
|
||||||
|
drag the mouse to select another subset.</li>
|
||||||
|
<li>Select <em>Image->Write Selection to Image</em>. Enter <em>Subset</em> for the new image name. Click <em>Ok</em>. The <em>Subset</em>
|
||||||
|
image will appear in the tree view on the left.</li>
|
||||||
|
<li>Left double click on the image <em>Subset</em> to bring it up on the right.
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html hdfview-newimgsubset.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</li>
|
||||||
|
<li>Close the <em>Subset</em> image.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
\subsection subsec_learn_hv_topics_table Creating a Table (Compound Dataset)
|
||||||
|
A dataset with a compound datatype contains data elements that consist of multiple fields. If the
|
||||||
|
dataspace for the compound dataset is one-dimensional, then the dataset can be viewed as a table in
|
||||||
|
HDFView, as is shown below.
|
||||||
|
<ul>
|
||||||
|
<li>Right button click on the group <em>Data</em>. Select <em>New -> Compound DS</em>.</li>
|
||||||
|
<li>A window pops up. Only fill in the following fields:
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>Dataset name
|
||||||
|
</th>
|
||||||
|
<td>Table
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Dataspace (Current size only)
|
||||||
|
</th>
|
||||||
|
<td>4
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Compound Datatype Properties:
|
||||||
|
<br />Number of Members
|
||||||
|
</th>
|
||||||
|
<td>3
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Compound Datatype Properties:
|
||||||
|
<br /><em>Name</em> / Datatype / Size
|
||||||
|
</th>
|
||||||
|
<td><em>Description</em> / string / 4
|
||||||
|
<br /><em>Temperature</em> / float / 1
|
||||||
|
<br /><em>Pressure</em> / double / 1
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html hdfview-newcmpd.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</li>
|
||||||
|
<li>Click Ok at the bottom.</li>
|
||||||
|
<li>Open the Data group (if it is not open) and double left click on the Table object.
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html hdfview-table.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</li>
|
||||||
|
<li>Close the dataset.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
Navigate back: \ref index "Main" / \ref GettingStarted
|
||||||
|
|
||||||
|
*/
|
||||||
@@ -1,53 +1,32 @@
|
|||||||
/** \page RM HDF5 Reference Manual
|
/** \page RM HDF5 Reference Manual
|
||||||
|
|
||||||
The functions provided by the HDF5 C-API are grouped into the following
|
The functions provided by the HDF5 API are grouped into the following
|
||||||
\Emph{modules}:
|
\Emph{modules}:
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tr><th>Modules</th></tr>
|
<tr><th>Modules</th></tr>
|
||||||
<tr valign="top">
|
<tr valign="top">
|
||||||
<td>
|
<td>
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tr valign="top"><td style="border: none;">
|
<tr valign="top"><td style="border: none;">
|
||||||
\li \ref H5A "Attributes (H5A)"
|
\include{doc} core_menu.md
|
||||||
\li \ref H5D "Datasets (H5D)"
|
</td>
|
||||||
\li \ref H5S "Dataspaces (H5S)"
|
</tr>
|
||||||
\li \ref H5T "Datatypes (H5T)"
|
<tr valign="top"><td style="border: none;">
|
||||||
\li \ref H5E "Error Handling (H5E)"
|
<!-- High-level library -->
|
||||||
\li \ref H5ES "Event Sets (H5ES)"
|
\include{doc} high_level_menu.md
|
||||||
\li \ref H5F "Files (H5F)"
|
</td>
|
||||||
\li \ref H5Z "Filters (H5Z)"
|
</tr>
|
||||||
\li \ref H5G "Groups (H5G)"
|
<tr valign="top"><td style="border: none;">
|
||||||
</td><td style="border: none;">
|
<!-- Fortran library -->
|
||||||
\li \ref H5I "Identifiers (H5I)"
|
\include{doc} fortran_menu.md
|
||||||
\li \ref H5 "Library General (H5)"
|
</td>
|
||||||
\li \ref H5L "Links (H5L)"
|
</tr>
|
||||||
\li \ref H5M "Maps (H5M)"
|
<tr valign="top"><td style="border: none;">
|
||||||
\li \ref H5O "Objects (H5O)"
|
<!-- Java library -->
|
||||||
\li \ref H5P "Property Lists (H5P)"
|
\include{doc} java_menu.md
|
||||||
\li \ref H5PL "Dynamically-loaded Plugins (H5PL)"
|
</td>
|
||||||
\li \ref H5R "References (H5R)"
|
</tr>
|
||||||
\li \ref H5VL "Virtual Object Layer (H5VL)"
|
|
||||||
</td><td style="border: none;">
|
|
||||||
\li \ref high_level
|
|
||||||
<ul>
|
|
||||||
<li>\ref H5LT "Lite (H5LT, H5LD)"
|
|
||||||
<li>\ref H5IM "Images (H5IM)"
|
|
||||||
<li>\ref H5TB "Table (H5TB)"
|
|
||||||
<li>\ref H5PT "Packet Table (H5PT)"
|
|
||||||
<li>\ref H5DS "Dimension Scale (H5DS)"
|
|
||||||
<li>\ref H5DO "Optimizations (H5DO)"
|
|
||||||
<li>\ref H5LR "Extensions (H5LR, H5LT)"
|
|
||||||
</ul>
|
|
||||||
</td></tr>
|
|
||||||
<tr><td colspan="3" style="border: none;">
|
|
||||||
\a Core \a library: \ref H5 \ref H5A \ref H5D \ref H5E \ref H5ES \ref H5F \ref H5G \ref H5I \ref H5L
|
|
||||||
\ref H5M \ref H5O \ref H5P \ref H5PL \ref H5R \ref H5S \ref H5T \ref H5VL \ref H5Z
|
|
||||||
</td></tr>
|
|
||||||
<tr><td colspan="3" style="border: none;">
|
|
||||||
\a High-level \a library: \ref H5LT \ref H5IM \ref H5TB \ref H5PT \ref H5DS \ref H5DO \ref H5LR
|
|
||||||
</td></tr>
|
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="./deprecated.html">Deprecated functions</a></td>
|
<td><a href="./deprecated.html">Deprecated functions</a></td>
|
||||||
<td>Functions with \ref ASYNC</td>
|
<td>Functions with \ref ASYNC</td>
|
||||||
|
|||||||
@@ -2,20 +2,20 @@
|
|||||||
|
|
||||||
\section DDL
|
\section DDL
|
||||||
|
|
||||||
\li \ref DDLBNF110 "DDL in BNF through HDF5 1.10"
|
\li \ref DDLBNF110
|
||||||
\li \ref DDLBNF112 "DDL in BNF for HDF5 1.12 and above"
|
\li \ref DDLBNF112
|
||||||
|
|
||||||
\section File Format
|
\section File Format
|
||||||
|
|
||||||
\li \ref FMT1 "HDF5 File Format Specification Version 1.0"
|
\li \ref FMT1
|
||||||
\li \ref FMT11 "HDF5 File Format Specification Version 1.1"
|
\li \ref FMT11
|
||||||
\li \ref FMT2 "HDF5 File Format Specification Version 2.0"
|
\li \ref FMT2
|
||||||
\li \ref FMT3 "HDF5 File Format Specification Version 3.0"
|
\li \ref FMT3
|
||||||
|
|
||||||
\section Other
|
\section Other
|
||||||
|
|
||||||
\li \ref IMG "HDF5 Image and Palette Specification Version 1.2"
|
\li \ref IMG
|
||||||
\li \ref TBL "HDF5 Table Specification Version 1.0"
|
\li \ref TBL
|
||||||
\li <a href="https://support.hdfgroup.org/HDF5/doc/HL/H5DS_Spec.pdf">
|
\li <a href="https://support.hdfgroup.org/HDF5/doc/HL/H5DS_Spec.pdf">
|
||||||
HDF5 Dimension Scale Specification</a>
|
HDF5 Dimension Scale Specification</a>
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
/** \page TN Technical Notes
|
/** \page TN Technical Notes
|
||||||
|
|
||||||
\li \link api-compat-macros API Compatibility Macros \endlink
|
\li \ref api-compat-macros
|
||||||
\li \ref APPDBG "Debugging HDF5 Applications"
|
\li \ref APPDBG
|
||||||
\li \ref FMTDISC "File Format Walkthrough"
|
\li \ref FMTDISC
|
||||||
\li \ref FILTER "Filters"
|
\li \ref FILTER
|
||||||
\li \ref IOFLOW "HDF5 Raw I/O Flow Notes"
|
\li \ref IOFLOW
|
||||||
\li \ref TNMDC "Metadata Caching in HDF5"
|
\li \ref TNMDC
|
||||||
\li \ref MT "Thread Safe library"
|
\li \ref MT
|
||||||
\li \ref VFL "Virtual File Layer"
|
\li \ref VFL
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
403
doxygen/dox/UsersGuide.dox
Normal file
@@ -0,0 +1,403 @@
|
|||||||
|
/** \page UG HDF5 User Guide
|
||||||
|
|
||||||
|
<center>
|
||||||
|
HDF5 Release 1.14
|
||||||
|
|
||||||
|
\image html HDFG-logo.png "The HDF Group"
|
||||||
|
|
||||||
|
</center>
|
||||||
|
|
||||||
|
\ref sec_data_model
|
||||||
|
\li \ref subsec_data_model_intro
|
||||||
|
\li \ref subsec_data_model_abstract
|
||||||
|
<ul>
|
||||||
|
<li> \ref subsubsec_data_model_abstract_file
|
||||||
|
<li> \ref subsubsec_data_model_abstract_group
|
||||||
|
<li> \ref subsubsec_data_model_abstract_dataset
|
||||||
|
<li> \ref subsubsec_data_model_abstract_space
|
||||||
|
<li> \ref subsubsec_data_model_abstract_type
|
||||||
|
<li> \ref subsubsec_data_model_abstract_attr
|
||||||
|
<li> \ref subsubsec_data_model_abstract_plist
|
||||||
|
<li> \ref subsubsec_data_model_abstract_link
|
||||||
|
</ul>
|
||||||
|
\li \ref subsec_data_model_storage
|
||||||
|
<ul>
|
||||||
|
<li> \ref subsubsec_data_model_storage_spec
|
||||||
|
<li> \ref subsubsec_data_model_storage_imple
|
||||||
|
</ul>
|
||||||
|
\li \ref subsec_data_model_structure
|
||||||
|
<ul>
|
||||||
|
<li> \ref subsubsec_data_model_structure_file
|
||||||
|
<li> \ref subsubsec_data_model_structure_path
|
||||||
|
<li> \ref subsubsec_data_model_structure_example
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
\ref sec_program
|
||||||
|
\li \ref subsec_program_intro
|
||||||
|
\li \ref subsec_program_model
|
||||||
|
<ul>
|
||||||
|
<li> \ref subsubsec_program_model_create
|
||||||
|
<li> \ref subsubsec_program_model_dset
|
||||||
|
<li> \ref subsubsec_program_model_close
|
||||||
|
<li> \ref subsubsec_program_model_data
|
||||||
|
<li> \ref subsubsec_program_model_partial
|
||||||
|
<li> \ref subsubsec_program_model_info
|
||||||
|
<li> \ref subsubsec_program_model_compound
|
||||||
|
<li> \ref subsubsec_program_model_extend
|
||||||
|
<li> \ref subsubsec_program_model_group
|
||||||
|
<li> \ref subsubsec_program_model_attr
|
||||||
|
</ul>
|
||||||
|
\li \ref subsec_program_transfer_pipeline
|
||||||
|
|
||||||
|
\ref sec_file
|
||||||
|
\li \ref subsec_file_intro
|
||||||
|
\li \ref subsec_file_access_modes
|
||||||
|
\li \ref subsec_file_creation_access
|
||||||
|
\li \ref subsec_file_drivers
|
||||||
|
\li \ref subsec_file_program_model
|
||||||
|
<ul>
|
||||||
|
<li> \ref subsubsec_file_program_model_create
|
||||||
|
<li> \ref subsubsec_file_program_model_open
|
||||||
|
<li> \ref subsubsec_file_program_model_close
|
||||||
|
</ul>
|
||||||
|
\li \ref subsec_file_h5dump
|
||||||
|
\li \ref subsec_file_summary
|
||||||
|
\li \ref subsec_file_create
|
||||||
|
\li \ref subsec_file_closes
|
||||||
|
\li \ref subsec_file_property_lists
|
||||||
|
<ul>
|
||||||
|
<li> \ref subsubsec_file_property_lists_create
|
||||||
|
<li> \ref subsubsec_file_property_lists_props
|
||||||
|
<li> \ref subsubsec_file_property_lists_access
|
||||||
|
</ul>
|
||||||
|
\li \ref subsec_file_alternate_drivers
|
||||||
|
<ul>
|
||||||
|
<li> \ref subsubsec_file_alternate_drivers_id
|
||||||
|
<li> \ref subsubsec_file_alternate_drivers_sec2
|
||||||
|
<li> \ref subsubsec_file_alternate_drivers_direct
|
||||||
|
<li> \ref subsubsec_file_alternate_drivers_log
|
||||||
|
<li> \ref subsubsec_file_alternate_drivers_win
|
||||||
|
<li> \ref subsubsec_file_alternate_drivers_stdio
|
||||||
|
<li> \ref subsubsec_file_alternate_drivers_mem
|
||||||
|
<li> \ref subsubsec_file_alternate_drivers_family
|
||||||
|
<li> \ref subsubsec_file_alternate_drivers_multi
|
||||||
|
<li> \ref subsubsec_file_alternate_drivers_split
|
||||||
|
<li> \ref subsubsec_file_alternate_drivers_par
|
||||||
|
</ul>
|
||||||
|
\li \ref subsec_file_examples
|
||||||
|
<ul>
|
||||||
|
<li> \ref subsubsec_file_examples_trunc
|
||||||
|
<li> \ref subsubsec_file_examples_props
|
||||||
|
<li> \ref subsubsec_file_examples_access
|
||||||
|
</ul>
|
||||||
|
\li \ref subsec_file_multiple
|
||||||
|
|
||||||
|
\ref sec_group
|
||||||
|
\li \ref subsec_group_intro
|
||||||
|
\li \ref subsec_group_descr
|
||||||
|
<ul>
|
||||||
|
<li> \ref subsubsec_group_descr_object
|
||||||
|
<li> \ref subsubsec_group_descr_model
|
||||||
|
<li> \ref subsubsec_group_descr_path
|
||||||
|
<li> \ref subsubsec_group_descr_impl
|
||||||
|
</ul>
|
||||||
|
\li \ref subsec_group_h5dump
|
||||||
|
\li \ref subsec_group_function
|
||||||
|
\li \ref subsec_group_program
|
||||||
|
<ul>
|
||||||
|
<li> \ref subsubsec_group_program_create
|
||||||
|
<li> \ref subsubsec_group_program_open
|
||||||
|
<li> \ref subsubsec_group_program_dataset
|
||||||
|
<li> \ref subsubsec_group_program_close
|
||||||
|
<li> \ref subsubsec_group_program_links
|
||||||
|
<li> \ref subsubsec_group_program_info
|
||||||
|
<li> \ref subsubsec_group_program_objs
|
||||||
|
<li> \ref subsubsec_group_program_all
|
||||||
|
</ul>
|
||||||
|
\li \ref subsec_group_examples
|
||||||
|
|
||||||
|
\ref sec_dataset
|
||||||
|
\li \ref subsec_dataset_intro
|
||||||
|
\li \ref subsec_dataset_function
|
||||||
|
\li \ref subsec_dataset_program
|
||||||
|
<ul>
|
||||||
|
<li> \ref subsubsec_dataset_program_general
|
||||||
|
<li> \ref subsubsec_dataset_program_create
|
||||||
|
<li> \ref subsubsec_dataset_program_transfer
|
||||||
|
<li> \ref subsubsec_dataset_program_read
|
||||||
|
</ul>
|
||||||
|
\li \ref subsec_dataset_transfer Data Transfer
|
||||||
|
<ul>
|
||||||
|
<li> \ref subsubsec_dataset_transfer_pipe
|
||||||
|
<li> \ref subsubsec_dataset_transfer_filter
|
||||||
|
<li> \ref subsubsec_dataset_transfer_drive
|
||||||
|
<li> \ref subsubsec_dataset_transfer_props
|
||||||
|
<li> \ref subsubsec_dataset_transfer_store
|
||||||
|
<li> \ref subsubsec_dataset_transfer_partial
|
||||||
|
</ul>
|
||||||
|
\li \ref subsec_dataset_allocation
|
||||||
|
<ul>
|
||||||
|
<li> \ref subsubsec_dataset_allocation_store
|
||||||
|
<li> \ref subsubsec_dataset_allocation_delete
|
||||||
|
<li> \ref subsubsec_dataset_allocation_release
|
||||||
|
<li> \ref subsubsec_dataset_allocation_ext
|
||||||
|
</ul>
|
||||||
|
\li \ref subsec_dataset_filters
|
||||||
|
<ul>
|
||||||
|
<li> \ref subsubsec_dataset_filters_nbit
|
||||||
|
<li> \ref subsubsec_dataset_filters_scale
|
||||||
|
<li> \ref subsubsec_dataset_filters_szip
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
\ref sec_datatype
|
||||||
|
\li \ref subsec_datatype_intro
|
||||||
|
\li \ref subsec_datatype_model
|
||||||
|
<ul>
|
||||||
|
<li> \ref subsubsec_datatype_model_class
|
||||||
|
<li> \ref subsubsec_datatype_model_predefine
|
||||||
|
</ul>
|
||||||
|
\li \ref subsec_datatype_usage
|
||||||
|
<ul>
|
||||||
|
<li> \ref subsubsec_datatype_usage_object
|
||||||
|
<li> \ref subsubsec_datatype_usage_create
|
||||||
|
<li> \ref subsubsec_datatype_usage_transfer
|
||||||
|
<li> \ref subsubsec_datatype_usage_discover
|
||||||
|
<li> \ref subsubsec_datatype_usage_user
|
||||||
|
</ul>
|
||||||
|
\li \ref subsec_datatype_function
|
||||||
|
\li \ref subsec_datatype_program
|
||||||
|
<ul>
|
||||||
|
<li> \ref subsubsec_datatype_program_discover
|
||||||
|
<li> \ref subsubsec_datatype_program_define
|
||||||
|
</ul>
|
||||||
|
\li \ref subsec_datatype_other
|
||||||
|
<ul>
|
||||||
|
<li> \ref subsubsec_datatype_other_strings
|
||||||
|
<li> \ref subsubsec_datatype_other_refs
|
||||||
|
<li> \ref subsubsec_datatype_other_enum
|
||||||
|
<li> \ref subsubsec_datatype_other_opaque
|
||||||
|
<li> \ref subsubsec_datatype_other_bitfield
|
||||||
|
</ul>
|
||||||
|
\li \ref subsec_datatype_fill
|
||||||
|
\li \ref subsec_datatype_complex
|
||||||
|
<ul>
|
||||||
|
<li> \ref subsubsec_datatype_complex_create
|
||||||
|
<li> \ref subsubsec_datatype_complex_analyze
|
||||||
|
</ul>
|
||||||
|
\li \ref subsec_datatype_life
|
||||||
|
\li \ref subsec_datatype_transfer
|
||||||
|
\li \ref subsec_datatype_text
|
||||||
|
|
||||||
|
\ref sec_dataspace
|
||||||
|
\li \ref subsec_dataspace_intro
|
||||||
|
\li \ref subsec_dataspace_function
|
||||||
|
\li \ref subsec_dataspace_program
|
||||||
|
<ul>
|
||||||
|
<li> \ref subsubsec_dataspace_program_object
|
||||||
|
<li> \ref subsubsec_dataspace_program_model
|
||||||
|
</ul>
|
||||||
|
\li \ref subsec_dataspace_transfer
|
||||||
|
<ul>
|
||||||
|
<li> \ref subsubsec_dataspace_transfer_select
|
||||||
|
<li> \ref subsubsec_dataspace_transfer_model
|
||||||
|
</ul>
|
||||||
|
\li \ref subsec_dataspace_select
|
||||||
|
\li \ref subsec_dataspace_refer
|
||||||
|
<ul>
|
||||||
|
<li> \ref subsubsec_dataspace_refer_use
|
||||||
|
<li> \ref subsubsec_dataspace_refer_create
|
||||||
|
<li> \ref subsubsec_dataspace_refer_read
|
||||||
|
</ul>
|
||||||
|
\li \ref subsec_dataspace_sample
|
||||||
|
|
||||||
|
\ref sec_attribute
|
||||||
|
\li \ref subsec_attribute_intro
|
||||||
|
\li \ref subsec_attribute_program
|
||||||
|
<ul>
|
||||||
|
<li> <!-- \subsubsection subsubsec_attribute_program_exist --> To Open and Read or Write an Existing Attribute </li>
|
||||||
|
</ul>
|
||||||
|
\li \ref subsec_error_H5A
|
||||||
|
\li \ref subsec_attribute_work
|
||||||
|
<ul>
|
||||||
|
<li> \ref subsubsec_attribute_work_struct
|
||||||
|
<li> \ref subsubsec_attribute_work_create
|
||||||
|
<li> \ref subsubsec_attribute_work_access
|
||||||
|
<li> \ref subsubsec_attribute_work_info
|
||||||
|
<li> \ref subsubsec_attribute_work_iterate
|
||||||
|
<li> \ref subsubsec_attribute_work_delete
|
||||||
|
<li> \ref subsubsec_attribute_work_close
|
||||||
|
</ul>
|
||||||
|
\li \ref subsec_attribute_special
|
||||||
|
|
||||||
|
\ref sec_error
|
||||||
|
\li \ref subsec_error_intro
|
||||||
|
\li \ref subsec_error_program
|
||||||
|
\li \ref subsec_error_H5E
|
||||||
|
\li \ref subsec_error_ops
|
||||||
|
<ul>
|
||||||
|
<li> \ref subsubsec_error_ops_stack
|
||||||
|
<li> \ref subsubsec_error_ops_print
|
||||||
|
<li> \ref subsubsec_error_ops_mute
|
||||||
|
<li> \ref subsubsec_error_ops_custom_print
|
||||||
|
<li> \ref subsubsec_error_ops_walk
|
||||||
|
<li> \ref subsubsec_error_ops_travers
|
||||||
|
</ul>
|
||||||
|
\li \ref subsec_error_adv
|
||||||
|
<ul>
|
||||||
|
<li> \ref subsubsec_error_adv_more
|
||||||
|
<li> \ref subsubsec_error_adv_app
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
\ref sec_plist
|
||||||
|
\li \ref subsec_plist_intro
|
||||||
|
\li \ref subsec_plist_class
|
||||||
|
<ul>
|
||||||
|
<li> \ref subsubsec_plist_class
|
||||||
|
<li> \ref subsubsec_plist_lists
|
||||||
|
<li> \ref subsubsec_plist_props
|
||||||
|
</ul>
|
||||||
|
\li \ref subsec_plist_program
|
||||||
|
<ul>
|
||||||
|
<li> \ref subsubsec_plist_default
|
||||||
|
<li> \ref subsubsec_plist_basic
|
||||||
|
<li> \ref subsubsec_plist_additional
|
||||||
|
</ul>
|
||||||
|
\li \ref subsec_plist_generic
|
||||||
|
\li \ref subsec_plist_H5P
|
||||||
|
\li \ref subsec_plist_resources
|
||||||
|
\li \ref subsec_plist_notes
|
||||||
|
|
||||||
|
\ref sec_vol
|
||||||
|
\li \ref subsec_vol_intro
|
||||||
|
\li \ref subsec_vol_abstract_layer
|
||||||
|
\li \ref subsec_vol_connect
|
||||||
|
\li \ref subsec_vol_use
|
||||||
|
|
||||||
|
\ref sec_async
|
||||||
|
\li \ref subsec_async_intro
|
||||||
|
|
||||||
|
\ref sec_map
|
||||||
|
|
||||||
|
\ref sec_addition
|
||||||
|
|
||||||
|
\page AR_UG Additional Resources
|
||||||
|
|
||||||
|
\section sec_addition Additional Resources
|
||||||
|
These documents provide additional information for the use and tuning of specific HDF5 features.
|
||||||
|
<table style=" border-spacing:0; padding-left:6.00pt; padding-top:6.00pt; padding-right:6.00pt; padding-bottom:6.00pt; float:aligncenter; width:100%; max-width:432.00pt;" cellspacing="0">
|
||||||
|
<caption x-list-start="1" style="font-size: 12.0pt;">Table of Additional resources</caption>
|
||||||
|
<tr style="height: 23.00pt;">
|
||||||
|
<th style="width: 234.000pt; border-top-style: solid; border-top-width: 1px; border-top-color: #228a22; border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #228a22; vertical-align : top;padding-left: 6.00pt; padding-top: 3.00pt; padding-right: 6.00pt; padding-bottom: 3.00pt;">
|
||||||
|
<p>Document</p>
|
||||||
|
</th>
|
||||||
|
<th style="width: 198.000pt; border-top-style: solid; border-top-width: 1px; border-top-color: #228a22; border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #228a22; vertical-align : top;padding-left: 6.00pt; padding-top: 3.00pt; padding-right: 6.00pt; padding-bottom: 3.00pt;">
|
||||||
|
<p>Comments</p>
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
<tr style="height: 23.00pt;">
|
||||||
|
<td style="width: 234.000pt; border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #228a22; vertical-align: top;padding-left: 6.00pt; padding-top: 3.00pt; padding-right: 6.00pt; padding-bottom: 3.00pt;">
|
||||||
|
<p style="font-style: italic; color: #0000ff;"><span>@ref HDF5Examples</span></p>
|
||||||
|
</td>
|
||||||
|
<td style="width: 198.000pt; border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #228a22; vertical-align: top;padding-left: 6.00pt; padding-top: 3.00pt; padding-right: 6.00pt; padding-bottom: 3.00pt;">
|
||||||
|
<p>Code examples by API. </p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr style="height: 36.00pt;">
|
||||||
|
<td style="width: 234.000pt; border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #228a22; vertical-align: top;padding-left: 6.00pt; padding-top: 3.00pt; padding-right: 6.00pt; padding-bottom: 3.00pt;">
|
||||||
|
<p style="font-style: italic; color: #0000ff;"><span><a href="http://www.hdfgroup.org/HDF5/doc/Advanced/Chunking/index.html">Chunking in HDF5</a></span></p>
|
||||||
|
</td>
|
||||||
|
<td style="width: 198.000pt; border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #228a22; vertical-align: top;padding-left: 6.00pt; padding-top: 3.00pt; padding-right: 6.00pt; padding-bottom: 3.00pt;">
|
||||||
|
<p>Structuring the use of chunking and tuning it for performance.</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr style="height: 36.00pt;">
|
||||||
|
<td style="width: 234.000pt; border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #228a22; vertical-align: top;padding-left: 6.00pt; padding-top: 3.00pt; padding-right: 6.00pt; padding-bottom: 3.00pt;">
|
||||||
|
<p style="font-style: italic; color: #0000ff;"><span class="FM_LT_LinkText"><a href="http://www.hdfgroup.org/HDF5/doc/Advanced/DirectChunkWrite/UsingDirectChunkWrite.pdf">Using the Direct Chunk Write Function</a></span></p>
|
||||||
|
</td>
|
||||||
|
<td style="width: 198.000pt; border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #228a22; vertical-align: top;padding-left: 6.00pt; padding-top: 3.00pt; padding-right: 6.00pt; padding-bottom: 3.00pt;">
|
||||||
|
<p>Describes another way that chunks can be written to datasets.</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr style="height: 88.00pt;">
|
||||||
|
<td style="width: 234.000pt; border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #228a22; vertical-align: top;padding-left: 6.00pt; padding-top: 3.00pt; padding-right: 6.00pt; padding-bottom: 3.00pt;">
|
||||||
|
<p style="font-style: italic; color: #0000ff;"><span><a href="http://www.hdfgroup.org/HDF5/doc/Advanced/CommittedDatatypeCopying/CopyingCommittedDatatypesWithH5Ocopy.pdf">Copying Committed Datatypes with H5Ocopy</a></span></p>
|
||||||
|
</td>
|
||||||
|
<td style="width: 198.000pt; border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #228a22; vertical-align: top;padding-left: 6.00pt; padding-top: 3.00pt; padding-right: 6.00pt; padding-bottom: 3.00pt;">
|
||||||
|
<p>Describes how to copy to another file a dataset that uses a committed datatype or an object with an attribute that uses a committed datatype so that the committed datatype in the destination file can be used by multiple objects.</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr style="height: 36.00pt;">
|
||||||
|
<td style="width: 234.000pt; border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #228a22; vertical-align: top;padding-left: 6.00pt; padding-top: 3.00pt; padding-right: 6.00pt; padding-bottom: 3.00pt;">
|
||||||
|
<p style="font-style: italic; color: #0000ff;"><span><a href="http://www.hdfgroup.org/HDF5/doc/Advanced/MetadataCache/index.html">Metadata Caching in HDF5</a></span></p>
|
||||||
|
</td>
|
||||||
|
<td style="width: 198.000pt; border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #228a22; vertical-align: top;padding-left: 6.00pt; padding-top: 3.00pt; padding-right: 6.00pt; padding-bottom: 3.00pt;">
|
||||||
|
<p>Managing the HDF5 metadata cache and tuning it for performance.</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr style="height: 49.00pt;">
|
||||||
|
<td style="width: 234.000pt; border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #228a22; vertical-align: top;padding-left: 6.00pt; padding-top: 3.00pt; padding-right: 6.00pt; padding-bottom: 3.00pt;">
|
||||||
|
<p style="font-style: italic; color: #0000ff;"><span><a href="http://www.hdfgroup.org/HDF5/doc/Advanced/DynamicallyLoadedFilters/HDF5DynamicallyLoadedFilters.pdf">HDF5 Dynamically Loaded Filters</a></span></p>
|
||||||
|
</td>
|
||||||
|
<td style="width: 198.000pt; border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #228a22; vertical-align: top;padding-left: 6.00pt; padding-top: 3.00pt; padding-right: 6.00pt; padding-bottom: 3.00pt;">
|
||||||
|
<p>Describes how an HDF5 application can apply a filter that is not registered with the HDF5 Library.</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr style="height: 62.00pt;">
|
||||||
|
<td style="width: 234.000pt; border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #228a22; vertical-align: top;padding-left: 6.00pt; padding-top: 3.00pt; padding-right: 6.00pt; padding-bottom: 3.00pt;">
|
||||||
|
<p style="font-style: italic; color: #0000ff;"><span><a href="http://www.hdfgroup.org/HDF5/doc/Advanced/FileImageOperations/HDF5FileImageOperations.pdf">HDF5 File Image Operations</a></span></p>
|
||||||
|
</td>
|
||||||
|
<td style="width: 198.000pt; border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #228a22; vertical-align: top;padding-left: 6.00pt; padding-top: 3.00pt; padding-right: 6.00pt; padding-bottom: 3.00pt;">
|
||||||
|
<p>Describes how to work with HDF5 files in memory. Disk I/O is not required when file images are opened, created, read from, or written to.</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr style="height: 62.00pt;">
|
||||||
|
<td style="width: 234.000pt; border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #228a22; vertical-align: top;padding-left: 6.00pt; padding-top: 3.00pt; padding-right: 6.00pt; padding-bottom: 3.00pt;">
|
||||||
|
<p style="font-style: italic; color: #0000ff;"><span><a href="http://www.hdfgroup.org/HDF5/doc/Advanced/ModifiedRegionWrites/ModifiedRegionWrites.pdf">Modified Region Writes</a></span></p>
|
||||||
|
</td>
|
||||||
|
<td style="width: 198.000pt; border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #228a22; vertical-align: top;padding-left: 6.00pt; padding-top: 3.00pt; padding-right: 6.00pt; padding-bottom: 3.00pt;">
|
||||||
|
<p>Describes how to set write operations for in-memory files so that only modified regions are written to storage. Available when the Core (Memory) VFD is used.</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr style="height: 36.00pt;">
|
||||||
|
<td style="width: 234.000pt; border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #228a22; vertical-align: top;padding-left: 6.00pt; padding-top: 3.00pt; padding-right: 6.00pt; padding-bottom: 3.00pt;">
|
||||||
|
<p style="font-style: italic; color: #0000ff;"><span><a href="http://www.hdfgroup.org/HDF5/doc/Advanced/UsingIdentifiers/index.html">Using Identifiers</a></span></p>
|
||||||
|
</td>
|
||||||
|
<td style="width: 198.000pt; border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #228a22; vertical-align: top;padding-left: 6.00pt; padding-top: 3.00pt; padding-right: 6.00pt; padding-bottom: 3.00pt;">
|
||||||
|
<p>Describes how identifiers behave and how they should be treated.</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr style="height: 36.00pt;">
|
||||||
|
<td style="width: 234.000pt; border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #228a22; vertical-align: top;padding-left: 6.00pt; padding-top: 3.00pt; padding-right: 6.00pt; padding-bottom: 3.00pt;">
|
||||||
|
<p style="font-style: italic; color: #0000ff;"><span><a href="http://www.hdfgroup.org/HDF5/doc/Advanced/UsingUnicode/index.html">Using UTF-8 Encoding in HDF5 Applications</a></span></p>
|
||||||
|
</td>
|
||||||
|
<td style="width: 198.000pt; border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #228a22; vertical-align: top;padding-left: 6.00pt; padding-top: 3.00pt; padding-right: 6.00pt; padding-bottom: 3.00pt;">
|
||||||
|
<p>Describes the use of UTF-8 Unicode character encodings in HDF5 applications.</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr style="height: 49.00pt;">
|
||||||
|
<td style="width: 234.000pt; border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #228a22; vertical-align: top;padding-left: 6.00pt; padding-top: 3.00pt; padding-right: 6.00pt; padding-bottom: 3.00pt;">
|
||||||
|
<p style="font-style: italic; color: #0000ff;"><span><a href="http://www.hdfgroup.org/HDF5/doc/Advanced/FreeingMemory/FreeingMemoryAllocatedByTheHdf5Library.pdf">Freeing Memory Allocated by the HDF5 Library</a></span></p>
|
||||||
|
</td>
|
||||||
|
<td style="width: 198.000pt; border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #228a22; vertical-align: top;padding-left: 6.00pt; padding-top: 3.00pt; padding-right: 6.00pt; padding-bottom: 3.00pt;">
|
||||||
|
<p>Describes how inconsistent memory management can cause heap corruption or resource leaks and possible solutions.</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr style="height: 23.00pt;">
|
||||||
|
<td style="width: 234.000pt; border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #228a22; vertical-align: top;padding-left: 6.00pt; padding-top: 3.00pt; padding-right: 6.00pt; padding-bottom: 3.00pt;">
|
||||||
|
<p style="font-style: italic; color: #0000ff;"><span><a href="http://www.hdfgroup.org/HDF5/doc/Glossary.html">HDF5 Glossary</a></span></p>
|
||||||
|
</td>
|
||||||
|
<td style="width: 198.000pt; border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #228a22; vertical-align: top;padding-left: 6.00pt; padding-top: 3.00pt; padding-right: 6.00pt; padding-bottom: 3.00pt;">
|
||||||
|
<p>A glossary of terms.</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
Previous Chapter \ref sec_plist
|
||||||
|
|
||||||
|
\par Don't like what you see? - You can help to improve this User Guide
|
||||||
|
Complete the survey linked near the top of this page!\n
|
||||||
|
We treat documentation like code: Fork the
|
||||||
|
<a href="https://github.com/HDFGroup/hdf5">HDF5 repo</a>, make changes, and create a
|
||||||
|
<a href="https://github.com/HDFGroup/hdf5/pulls">pull request</a> !\n
|
||||||
|
|
||||||
|
*/
|
||||||
1198
doxygen/dox/ViewTools.dox
Normal file
786
doxygen/dox/ViewTools2.dox
Normal file
@@ -0,0 +1,786 @@
|
|||||||
|
/** @page ViewToolsEdit Command-line Tools For Editing HDF5 Files
|
||||||
|
Navigate back: \ref index "Main" / \ref GettingStarted / \ref ViewToolsCommand
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
\section secViewToolsEditTOC Contents
|
||||||
|
<ul>
|
||||||
|
<li>\ref secViewToolsEditRemove</li>
|
||||||
|
<li>\ref secViewToolsEditChange</li>
|
||||||
|
<li>\ref secViewToolsEditApply</li>
|
||||||
|
<li>\ref secViewToolsEditCopy</li>
|
||||||
|
<li>\ref secViewToolsEditAdd</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
\section secViewToolsEditRemove Remove Inaccessible Objects and Unused Space in a File
|
||||||
|
HDF5 files may accumulate unused space when they are read and rewritten to or if objects are deleted within
|
||||||
|
them. With many edits and deletions this unused space can add up to a sizable amount.
|
||||||
|
|
||||||
|
The <code style="background-color:whitesmoke;">h5repack</code> tool can be used to remove unused space in an HDF5
|
||||||
|
file. If no options other than the input and output HDF5 files are specified on the
|
||||||
|
<code style="background-color:whitesmoke;">h5repack</code> command line, it will write the file to the new
|
||||||
|
file, getting rid of the unused space:
|
||||||
|
\code
|
||||||
|
h5repack <input file> <output file>
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
\section secViewToolsEditChange Change a Dataset's Storage Layout
|
||||||
|
The <code style="background-color:whitesmoke;">h5repack</code> utility can be used to change a dataset's storage
|
||||||
|
layout. By default, the storage layout of a dataset is defined at creation time and it cannot be changed.
|
||||||
|
However, with h5repack you can write an HDF5 file to a new file and change the layout for objects in the new file.
|
||||||
|
|
||||||
|
The <code style="background-color:whitesmoke;">-l</code> option in <code style="background-color:whitesmoke;">h5repack</code>
|
||||||
|
is used to change the layout for an object. The string following the <code style="background-color:whitesmoke;">-l</code>
|
||||||
|
option defines the layout type and parameters for specified objects (or all objects):
|
||||||
|
\code
|
||||||
|
h5repack -l [list of objects:]<layout type>=<layout parameters> <input file> <output file>
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
If no object is specified, then everything in the input file will be written to the output file with the specified
|
||||||
|
layout type and parameters. If objects are specified then everything in the input file will be written to the
|
||||||
|
output file as is, except for those specified objects. They will be written to the output file with the given
|
||||||
|
layout type and parameters.
|
||||||
|
|
||||||
|
Following is a description of the dataset layouts and the <code style="background-color:whitesmoke;">h5repack</code>
|
||||||
|
options to use to change a dataset:
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>Storage Layout</th><th>h5repack Option</th><th>Description</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Contiguous
|
||||||
|
</td>
|
||||||
|
<td>CONTI
|
||||||
|
</td>
|
||||||
|
<td>Data is stored physically together
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Chunked
|
||||||
|
</td>
|
||||||
|
<td>CHUNK=DIM[xDIM...xDIM]
|
||||||
|
</td>
|
||||||
|
<td>Data is stored in DIM[xDIM...xDIM] chunks
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Compact
|
||||||
|
</td>
|
||||||
|
<td>COMPA
|
||||||
|
</td>
|
||||||
|
<td>Data is stored in the header of the object (less I/O)
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
If you type <code style="background-color:whitesmoke;">h5repack -h</code> on the command line, you will see
|
||||||
|
a detailed usage statement with examples of modifying the layout.
|
||||||
|
|
||||||
|
In the following example, the dataset <code style="background-color:whitesmoke;">/dset</code> in the file
|
||||||
|
dset.h5 is contiguous, as shown by the <code style="background-color:whitesmoke;">h5dump -pH</code> command.
|
||||||
|
The <code style="background-color:whitesmoke;">h5repack</code> utility writes dset.h5 to a new file, dsetrpk.h5,
|
||||||
|
where the dataset <code style="background-color:whitesmoke;">dset</code> is chunked. This can be seen by examining
|
||||||
|
the resulting dsetrpk.h5 file with <code style="background-color:whitesmoke;">h5dump</code>, as shown:
|
||||||
|
\code
|
||||||
|
$ h5dump -pH dset.h5
|
||||||
|
HDF5 "dset.h5" {
|
||||||
|
GROUP "/" {
|
||||||
|
DATASET "dset" {
|
||||||
|
DATATYPE H5T_STD_I32BE
|
||||||
|
DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) }
|
||||||
|
STORAGE_LAYOUT {
|
||||||
|
CONTIGUOUS
|
||||||
|
SIZE 96
|
||||||
|
OFFSET 1400
|
||||||
|
}
|
||||||
|
FILTERS {
|
||||||
|
NONE
|
||||||
|
}
|
||||||
|
FILLVALUE {
|
||||||
|
FILL_TIME H5D_FILL_TIME_IFSET
|
||||||
|
VALUE 0
|
||||||
|
}
|
||||||
|
ALLOCATION_TIME {
|
||||||
|
H5D_ALLOC_TIME_LATE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$ h5repack -l dset:CHUNK=4x6 dset.h5 dsetrpk.h5
|
||||||
|
|
||||||
|
$ h5dump -pH dsetrpk.h5
|
||||||
|
HDF5 "dsetrpk.h5" {
|
||||||
|
GROUP "/" {
|
||||||
|
DATASET "dset" {
|
||||||
|
DATATYPE H5T_STD_I32BE
|
||||||
|
DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) }
|
||||||
|
STORAGE_LAYOUT {
|
||||||
|
CHUNKED ( 4, 6 )
|
||||||
|
SIZE 96
|
||||||
|
}
|
||||||
|
FILTERS {
|
||||||
|
NONE
|
||||||
|
}
|
||||||
|
FILLVALUE {
|
||||||
|
FILL_TIME H5D_FILL_TIME_IFSET
|
||||||
|
VALUE 0
|
||||||
|
}
|
||||||
|
ALLOCATION_TIME {
|
||||||
|
H5D_ALLOC_TIME_INCR
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
There can be many reasons that the storage layout needs to be changed for a dataset. For example,
|
||||||
|
there may be a performance issue with a dataset due to a small chunk size.
|
||||||
|
|
||||||
|
\section secViewToolsEditApply Apply Compression Filter to a Dataset
|
||||||
|
The <code style="background-color:whitesmoke;">h5repack</code> utility can be used to compress or
|
||||||
|
remove compression from a dataset in a file. By default, compression cannot be added to or removed
|
||||||
|
from a dataset once it has been created. However, with <code style="background-color:whitesmoke;">h5repack</code>
|
||||||
|
you can write a file to a new file and specify a compression filter to apply to a dataset or datasets in the new file.
|
||||||
|
|
||||||
|
To apply a filter to an object in an HDF5 file, specify the <code style="background-color:whitesmoke;">-f</code> option,
|
||||||
|
where the string following the <code style="background-color:whitesmoke;">-f</code> option defines the filter and
|
||||||
|
its parameters (if there are any) to apply to a given object or objects:
|
||||||
|
\code
|
||||||
|
h5repack -f [list of objects:]<name of filter>=<filter parameters> <input file> <output file>
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
If no objects are specified then everything in the input file will be written to the output file with
|
||||||
|
the filter and parameters specified. If objects are specified, then everything in the input file will
|
||||||
|
be written to the output file as is, except for the specified objects. They will be written to the
|
||||||
|
output file with the filter and parameters specified.
|
||||||
|
|
||||||
|
If you type <code style="background-color:whitesmoke;">h5repack --help</code> on the command line,
|
||||||
|
you will see a detailed usage statement with examples of modifying a filter. There are actually
|
||||||
|
numerous filters that you can apply to a dataset:
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>Filter<th></th>Options</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>GZIP compression (levels 1-9)
|
||||||
|
<td>GZIP=<deflation level>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>SZIP compression
|
||||||
|
<td>SZIP=<pixels per block,coding>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Shuffle filter
|
||||||
|
<td>SHUF
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Checksum filter
|
||||||
|
<td>FLET
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>NBIT compression
|
||||||
|
<td>NBIT
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>HDF5 Scale/Offset filter
|
||||||
|
<td>SOFF=<scale_factor,scale_type>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>User defined filter
|
||||||
|
<td>UD=<filter_number,cd_value_count,value_1[,value_2,...,value_N]>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Remove ALL filters
|
||||||
|
</td>
|
||||||
|
<td>NONE
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
Be aware that a dataset must be chunked to apply compression to it. If the dataset is not already chunked,
|
||||||
|
then <code style="background-color:whitesmoke;">h5repack</code> will apply chunking to it. Both chunking
|
||||||
|
and compression cannot be applied to a dataset at the same time with <code style="background-color:whitesmoke;">h5repack</code>.
|
||||||
|
|
||||||
|
In the following example,
|
||||||
|
\li <em>h5dump</em> lists the properties for the objects in <em>dset.h5</em>. Note that the dataset <em>dset</em> is contiguous.
|
||||||
|
\li <em>h5repack</em> writes dset.h5 into a new file <em>dsetrpk.h5</em>, applying GZIP Level 5 compression to the dataset <em>/dset</em> in dsetrpk.h5.
|
||||||
|
\li <em>h5dump</em> lists the properties for the new <em>dsetrpk.h5</em> file. Note that <em>/dset</em> is both compressed and chunked.
|
||||||
|
|
||||||
|
<em>Example</em>
|
||||||
|
\code
|
||||||
|
$ h5dump -pH dset.h5
|
||||||
|
HDF5 "dset.h5" {
|
||||||
|
GROUP "/" {
|
||||||
|
DATASET "dset" {
|
||||||
|
DATATYPE H5T_STD_I32BE
|
||||||
|
DATASPACE SIMPLE { ( 12, 18 ) / ( 12, 18 ) }
|
||||||
|
STORAGE_LAYOUT {
|
||||||
|
CONTIGUOUS
|
||||||
|
SIZE 864
|
||||||
|
OFFSET 1400
|
||||||
|
}
|
||||||
|
FILTERS {
|
||||||
|
NONE
|
||||||
|
}
|
||||||
|
FILLVALUE {
|
||||||
|
FILL_TIME H5D_FILL_TIME_IFSET
|
||||||
|
VALUE 0
|
||||||
|
}
|
||||||
|
ALLOCATION_TIME {
|
||||||
|
H5D_ALLOC_TIME_LATE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$ h5repack -f dset:GZIP=5 dset.h5 dsetrpk.h5
|
||||||
|
|
||||||
|
$ h5dump -pH dsetrpk.h5
|
||||||
|
HDF5 "dsetrpk.h5" {
|
||||||
|
GROUP "/" {
|
||||||
|
DATASET "dset" {
|
||||||
|
DATATYPE H5T_STD_I32BE
|
||||||
|
DATASPACE SIMPLE { ( 12, 18 ) / ( 12, 18 ) }
|
||||||
|
STORAGE_LAYOUT {
|
||||||
|
CHUNKED ( 12, 18 )
|
||||||
|
SIZE 160 (5.400:1 COMPRESSION)
|
||||||
|
}
|
||||||
|
FILTERS {
|
||||||
|
COMPRESSION DEFLATE { LEVEL 5 }
|
||||||
|
}
|
||||||
|
FILLVALUE {
|
||||||
|
FILL_TIME H5D_FILL_TIME_IFSET
|
||||||
|
VALUE 0
|
||||||
|
}
|
||||||
|
ALLOCATION_TIME {
|
||||||
|
H5D_ALLOC_TIME_INCR
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
\section secViewToolsEditCopy Copy Objects to Another File
|
||||||
|
The <code style="background-color:whitesmoke;">h5copy</code> utility can be used to copy an object or
|
||||||
|
objects from one HDF5 file to another or to a different location in the same file. It uses the
|
||||||
|
#H5Ocopy and #H5Lcopy APIs in HDF5.
|
||||||
|
|
||||||
|
Following are some of the options that can be used with <code style="background-color:whitesmoke;">h5copy</code>.
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>h5copy Options</th><th>Description</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>-i, --input
|
||||||
|
</td>
|
||||||
|
<td>Input file name
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>-o, --output
|
||||||
|
</td>
|
||||||
|
<td>Output file name
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>-s, --source
|
||||||
|
</td>
|
||||||
|
<td>Source object name
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>-d, --destination
|
||||||
|
</td>
|
||||||
|
<td>Destination object name
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>-p, --parents
|
||||||
|
</td>
|
||||||
|
<td>Make parent groups as needed
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>-v, --verbose
|
||||||
|
</td>
|
||||||
|
<td>Verbose mode
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>-f, --flag
|
||||||
|
</td>
|
||||||
|
<td>Flag type
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
For a complete list of options and information on using <code style="background-color:whitesmoke;">h5copy</code>, type:
|
||||||
|
\code
|
||||||
|
h5copy --help
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
In the example below, the dataset <code style="background-color:whitesmoke;">/MyGroup/Group_A/dset2</code>
|
||||||
|
in <code style="background-color:whitesmoke;">groups.h5</code> gets copied to the root
|
||||||
|
("<code style="background-color:whitesmoke;">/</code>") group of a new file,
|
||||||
|
<code style="background-color:whitesmoke;">newgroup.h5</code>, with the name
|
||||||
|
<code style="background-color:whitesmoke;">dset3</code>:
|
||||||
|
\code
|
||||||
|
$h5dump -H groups.h5
|
||||||
|
HDF5 "groups.h5" {
|
||||||
|
GROUP "/" {
|
||||||
|
GROUP "MyGroup" {
|
||||||
|
GROUP "Group_A" {
|
||||||
|
DATASET "dset2" {
|
||||||
|
DATATYPE H5T_STD_I32BE
|
||||||
|
DATASPACE SIMPLE { ( 2, 10 ) / ( 2, 10 ) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
GROUP "Group_B" {
|
||||||
|
}
|
||||||
|
DATASET "dset1" {
|
||||||
|
DATATYPE H5T_STD_I32BE
|
||||||
|
DATASPACE SIMPLE { ( 3, 3 ) / ( 3, 3 ) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$ h5copy -i groups.h5 -o newgroup.h5 -s /MyGroup/Group_A/dset2 -d /dset3
|
||||||
|
|
||||||
|
$ h5dump -H newgroup.h5
|
||||||
|
HDF5 "newgroup.h5" {
|
||||||
|
GROUP "/" {
|
||||||
|
DATASET "dset3" {
|
||||||
|
DATATYPE H5T_STD_I32BE
|
||||||
|
DATASPACE SIMPLE { ( 2, 10 ) / ( 2, 10 ) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
There are also <code style="background-color:whitesmoke;">h5copy</code> flags that can be specified
|
||||||
|
with the <code style="background-color:whitesmoke;">-f</code> option. In the example below, the
|
||||||
|
<code style="background-color:whitesmoke;">-f shallow</code> option specifies to copy only the
|
||||||
|
immediate members of the group <code style="background-color:whitesmoke;">/MyGroup</code> from
|
||||||
|
the <code style="background-color:whitesmoke;">groups.h5</code> file mentioned above to a new
|
||||||
|
file <code style="background-color:whitesmoke;">mygrouponly.h5</code>:
|
||||||
|
\code
|
||||||
|
h5copy -v -i groups.h5 -o mygrouponly.h5 -s /MyGroup -d /MyGroup -f shallow
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
The output of the above command is shown below. The verbose option <code style="background-color:whitesmoke;">-v</code>
|
||||||
|
describes the action that was taken, as shown in the highlighted text.
|
||||||
|
\code
|
||||||
|
Copying file <groups.h5> and object </MyGroup> to file <mygrouponly.h5> and object </MyGroup>
|
||||||
|
Using shallow flag
|
||||||
|
|
||||||
|
$ h5dump -H mygrouponly.h5
|
||||||
|
HDF5 "mygrouponly.h5" {
|
||||||
|
GROUP "/" {
|
||||||
|
GROUP "MyGroup" {
|
||||||
|
GROUP "Group_A" {
|
||||||
|
}
|
||||||
|
GROUP "Group_B" {
|
||||||
|
}
|
||||||
|
DATASET "dset1" {
|
||||||
|
DATATYPE H5T_STD_I32BE
|
||||||
|
DATASPACE SIMPLE { ( 3, 3 ) / ( 3, 3 ) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
\section secViewToolsEditAdd Add or Remove User Block from File
|
||||||
|
The user block is a space in an HDF5 file that is not interpreted by the HDF5 library. It is a property
|
||||||
|
list that can be added when creating a file. See the #H5Pset_userblock API in the \ref RM for more
|
||||||
|
information regarding this property.
|
||||||
|
|
||||||
|
Once created in a file, the user block cannot be removed. However, you can use the
|
||||||
|
<code style="background-color:whitesmoke;">h5jam</code> and <code style="background-color:whitesmoke;">h5unjam</code>
|
||||||
|
utilities to add or remove a user block from a file into a new file.
|
||||||
|
|
||||||
|
These two utilities work similarly, except that <code style="background-color:whitesmoke;">h5jam</code>
|
||||||
|
adds a user block to a file and <code style="background-color:whitesmoke;">h5unjam</code> removes the user
|
||||||
|
block. You can also overwrite or delete a user block in a file.
|
||||||
|
|
||||||
|
Specify the <code style="background-color:whitesmoke;">-h</code> option to see a complete list of options
|
||||||
|
that can be used with <code style="background-color:whitesmoke;">h5jam</code> and
|
||||||
|
<code style="background-color:whitesmoke;">h5unjam</code>. For example:
|
||||||
|
\code
|
||||||
|
h5jam -h
|
||||||
|
h5unjam -h
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
Below are the basic options for adding or removing a user block with <code style="background-color:whitesmoke;">h5jam</code>
|
||||||
|
and <code style="background-color:whitesmoke;">h5unjam</code>:
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>h5copy Options</th><th>Description</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>-i
|
||||||
|
</td>
|
||||||
|
<td>Input File
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>-o
|
||||||
|
</td>
|
||||||
|
<td>Output File
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>-u
|
||||||
|
</td>
|
||||||
|
<td>File to add or remove from user block
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
Let's say you wanted to add the program that creates an HDF5 file to its user block. As an example, you
|
||||||
|
can take the <code style="background-color:whitesmoke;">h5_crtgrpar.c</code> program from the
|
||||||
|
\ref LBExamples
|
||||||
|
and add it to the file it creates, <code style="background-color:whitesmoke;">groups.h5</code>. This can
|
||||||
|
be done with <code style="background-color:whitesmoke;">h5jam</code>, as follows:
|
||||||
|
\code
|
||||||
|
h5jam -i groups.h5 -u h5_crtgrpar.c -o groupsub.h5
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
You can actually view the file with more <code style="background-color:whitesmoke;">groupsub.h5</code>
|
||||||
|
to see that the <code style="background-color:whitesmoke;">h5_crtgrpar.c</code> file is indeed included.
|
||||||
|
|
||||||
|
To remove the user block that was just added, type:
|
||||||
|
\code
|
||||||
|
h5unjam -i groupsub.h5 -u h5_crtgrparNEW.c -o groups-noub.h5
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
This writes the user block in the file <code style="background-color:whitesmoke;">groupsub.h5</code>
|
||||||
|
into <code style="background-color:whitesmoke;">h5_crtgrparNEW.c</code>. The new HDF5 file,
|
||||||
|
<code style="background-color:whitesmoke;">groups-noub.h5</code>, will not contain a user block.
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
Navigate back: \ref index "Main" / \ref GettingStarted / \ref ViewToolsCommand
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @page ViewToolsConvert Command-line Tools For Converting HDF5 Files
|
||||||
|
Navigate back: \ref index "Main" / \ref GettingStarted / \ref ViewToolsCommand
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
\section secViewToolsConvertTOC Contents
|
||||||
|
<ul>
|
||||||
|
<li>\ref secViewToolsConvertASCII</li>
|
||||||
|
<li>\ref secViewToolsConvertBinary</li>
|
||||||
|
<li>\ref secViewToolsConvertExport</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
\section secViewToolsConvertASCII Output HDF5 Dataset into an ASCII File (to Import into Excel and Other Applications)
|
||||||
|
The <code style="background-color:whitesmoke;">h5dump</code> utility can be used to convert an HDF5 dataset
|
||||||
|
into an ASCII file, which can then be imported into Excel and other applications. The following options are used:
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>Options</th><th>Description</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> -d D, --dataset=D
|
||||||
|
</td>
|
||||||
|
<td>Display dataset D
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> -o F, --output=F
|
||||||
|
</td>
|
||||||
|
<td>Output raw data into file F
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> -y, --noindex
|
||||||
|
</td>
|
||||||
|
<td>Suppress printing of array indices with the data
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> -w N, --width=N
|
||||||
|
</td>
|
||||||
|
<td>Set N number of columns of output. A value of 0
|
||||||
|
sets the number to 65535 (the maximum)
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
As an example, <code style="background-color:whitesmoke;">h5_crtdat.c</code> from the \ref LBDsetCreate
|
||||||
|
HDF5 Tutorial topic, creates the file <code style="background-color:whitesmoke;">dset.h5</code> with
|
||||||
|
a dataset <code style="background-color:whitesmoke;">/dset</code> that is a 4 x 6 integer array. The
|
||||||
|
following is displayed when viewing <code style="background-color:whitesmoke;">dset.h5</code> with
|
||||||
|
<code style="background-color:whitesmoke;">h5dump</code>:
|
||||||
|
\code
|
||||||
|
$ h5dump dset.h5
|
||||||
|
HDF5 "dset.h5" {
|
||||||
|
GROUP "/" {
|
||||||
|
DATASET "dset" {
|
||||||
|
DATATYPE H5T_STD_I32BE
|
||||||
|
DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) }
|
||||||
|
DATA {
|
||||||
|
(0,0): 1, 2, 3, 4, 5, 6,
|
||||||
|
(1,0): 7, 8, 9, 10, 11, 12,
|
||||||
|
(2,0): 13, 14, 15, 16, 17, 18,
|
||||||
|
(3,0): 19, 20, 21, 22, 23, 24
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
The following command will output the values of the <code style="background-color:whitesmoke;">/dset</code>
|
||||||
|
dataset to the ASCII file <code style="background-color:whitesmoke;">dset.asci</code>:
|
||||||
|
\code
|
||||||
|
h5dump -d /dset -o dset.asci -y -w 50 dset.h5
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
In particular, note that:
|
||||||
|
\li The default behavior of <code style="background-color:whitesmoke;">h5dump</code> is to print indices,
|
||||||
|
and the <code style="background-color:whitesmoke;">-y</code> option suppresses this.
|
||||||
|
\li The <code style="background-color:whitesmoke;">-w 50</code> option tells
|
||||||
|
<code style="background-color:whitesmoke;">h5dump</code> to allow 50 columns for outputting the data. The
|
||||||
|
value specified must be large enough to accommodate the dimension size of the dataset multiplied by the
|
||||||
|
number of positions and spaces needed to print each value. If the value is not large enough, the output
|
||||||
|
will wrap to the next line, and the data will not display as expected in Excel or other applications. To
|
||||||
|
ensure that the output does not wrap to the next line, you can also specify 0 (zero) for the
|
||||||
|
<code style="background-color:whitesmoke;">-w</code> option.
|
||||||
|
|
||||||
|
In addition to creating the ASCII file <code style="background-color:whitesmoke;">dset.asci</code>, the
|
||||||
|
above command outputs the metadata of the specified dataset:
|
||||||
|
\code
|
||||||
|
HDF5 "dset.h5" {
|
||||||
|
DATASET "/dset" {
|
||||||
|
DATATYPE H5T_STD_I32BE
|
||||||
|
DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) }
|
||||||
|
DATA {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
The <code style="background-color:whitesmoke;">dset.asci</code> file will contain the values for the dataset:
|
||||||
|
\code
|
||||||
|
1, 2, 3, 4, 5, 6,
|
||||||
|
7, 8, 9, 10, 11, 12,
|
||||||
|
13, 14, 15, 16, 17, 18,
|
||||||
|
19, 20, 21, 22, 23, 24
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
\section secViewToolsConvertBinary Output HDF5 Dataset into Binary File
|
||||||
|
The <code style="background-color:whitesmoke;">h5dump</code> utility can be used to convert an
|
||||||
|
HDF5 dataset to a binary file with the following options:
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>Options</th><th>Description</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>-d D, --dataset=D
|
||||||
|
</td>
|
||||||
|
<td>Display dataset D
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>-o F, --output=F
|
||||||
|
</td>
|
||||||
|
<td>Output raw data into file F
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>-b B, --binary=B
|
||||||
|
</td>
|
||||||
|
<td>Binary file output of form B.
|
||||||
|
Valid values are: LE, BE, NATIVE, FILE
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
As an example, <code style="background-color:whitesmoke;">h5_crtdat.c</code> from the
|
||||||
|
\ref LBDsetCreate HDF5 Tutorial topic, creates the file dset.h5 with a dataset
|
||||||
|
<code style="background-color:whitesmoke;">/dset</code> that is a 4 x 6 integer array. The
|
||||||
|
following is displayed when viewing <code style="background-color:whitesmoke;">dset.h5</code>
|
||||||
|
with <code style="background-color:whitesmoke;">h5dump</code>:
|
||||||
|
\code
|
||||||
|
$ h5dump -d /dset/ dset.h5
|
||||||
|
HDF5 "dset.h5" {
|
||||||
|
DATASET "/dset/" {
|
||||||
|
DATATYPE H5T_STD_I32BE
|
||||||
|
DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) }
|
||||||
|
DATA {
|
||||||
|
(0,0): 1, 2, 3, 4, 5, 6,
|
||||||
|
(1,0): 7, 8, 9, 10, 11, 12,
|
||||||
|
(2,0): 13, 14, 15, 16, 17, 18,
|
||||||
|
(3,0): 19, 20, 21, 22, 23, 24
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
As specified by the <code style="background-color:whitesmoke;">-d</code> and
|
||||||
|
<code style="background-color:whitesmoke;">-o</code> options, the following
|
||||||
|
<code style="background-color:whitesmoke;">h5dump</code> command will output the values of the dataset
|
||||||
|
<code style="background-color:whitesmoke;">/dset </code>to a file called
|
||||||
|
<code style="background-color:whitesmoke;">dset.bin</code>. The <code style="background-color:whitesmoke;">-b</code>
|
||||||
|
option specifies that the output will be binary in Little Endian format (LE).
|
||||||
|
|
||||||
|
\code
|
||||||
|
h5dump -d /dset -b LE -o dset.bin dset.h5
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
This command outputs the metadata for the dataset, as well as creating the binary file
|
||||||
|
<code style="background-color:whitesmoke;">dset.bin</code>:
|
||||||
|
\code
|
||||||
|
HDF5 "dset.h5" {
|
||||||
|
DATASET "/dset" {
|
||||||
|
DATATYPE H5T_STD_I32BE
|
||||||
|
DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) }
|
||||||
|
DATA {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
If you look at the resulting <code style="background-color:whitesmoke;">dset.bin</code> file with
|
||||||
|
a binary editor, you will see that it contains the dataset's values. For example (on Linux) you will see:
|
||||||
|
\code
|
||||||
|
$ od -t d dset.bin
|
||||||
|
0000000 1 2 3 4
|
||||||
|
0000020 5 6 7 8
|
||||||
|
0000040 9 10 11 12
|
||||||
|
0000060 13 14 15 16
|
||||||
|
0000100 17 18 19 20
|
||||||
|
0000120 21 22 23 24
|
||||||
|
0000140
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
\section secViewToolsConvertExport Export from h5dump and Import into HDF5
|
||||||
|
The <code style="background-color:whitesmoke;">h5import</code> utility can use the output of
|
||||||
|
<code style="background-color:whitesmoke;">h5dump</code> as input to create a dataset or file.
|
||||||
|
|
||||||
|
The <code style="background-color:whitesmoke;">h5dump</code> utility must first create two files:
|
||||||
|
\li A DDL file, which will be used as an <code style="background-color:whitesmoke;">h5import</code> configuration file
|
||||||
|
\li A raw data file containing the data to be imported
|
||||||
|
|
||||||
|
The DDL file must be generated with the <code style="background-color:whitesmoke;">h5dump -p</code> option, to generate properties.
|
||||||
|
|
||||||
|
The raw data file that can be imported into HDF5 using this method may contain either numeric or string data with the following restrictions:
|
||||||
|
\li Numeric data requires the use of the <code style="background-color:whitesmoke;">h5dump -b</code> option to produce a binary data file.
|
||||||
|
\li String data must be written with the <code style="background-color:whitesmoke;">h5dump -y</code> and
|
||||||
|
<code style="background-color:whitesmoke;">--width=1</code> options, generating a single column of strings without indices.
|
||||||
|
|
||||||
|
Two examples follow: the first imports a dataset with a numeric datatype. Note that numeric data requires
|
||||||
|
the use of the <code style="background-color:whitesmoke;">h5dump -b</code> option to produce a binary data
|
||||||
|
file. The example program (<code style="background-color:whitesmoke;">h5_crtdat.c</code>) that creates this
|
||||||
|
file is included with the \ref IntroHDF5 tutorial and can be obtained from the \ref LBExamples page:
|
||||||
|
\code
|
||||||
|
h5dump -p -d "/dset" --ddl=dsetbin.dmp -o dset.bin -b dset.h5
|
||||||
|
h5import dset.bin -c dsetbin.dmp -o new-dset.h5
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
The output before and after running these commands is shown below:
|
||||||
|
\code
|
||||||
|
$ h5dump dset.h5
|
||||||
|
HDF5 "dset.h5" {
|
||||||
|
GROUP "/" {
|
||||||
|
DATASET "dset" {
|
||||||
|
DATATYPE H5T_STD_I32BE
|
||||||
|
DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) }
|
||||||
|
DATA {
|
||||||
|
(0,0): 1, 2, 3, 4, 5, 6,
|
||||||
|
(1,0): 7, 8, 9, 10, 11, 12,
|
||||||
|
(2,0): 13, 14, 15, 16, 17, 18,
|
||||||
|
(3,0): 19, 20, 21, 22, 23, 24
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$ h5dump -p -d "/dset" --ddl=dsetbin.dmp -o dset.bin -b dset.h5
|
||||||
|
|
||||||
|
$ h5import dset.bin -c dsetbin.dmp -o new-dset.h5
|
||||||
|
|
||||||
|
$ h5dump new-dset.h5
|
||||||
|
HDF5 "new-dset.h5" {
|
||||||
|
GROUP "/" {
|
||||||
|
DATASET "dset" {
|
||||||
|
DATATYPE H5T_STD_I32BE
|
||||||
|
DATASPACE SIMPLE { ( 4, 6 ) / ( 4, 6 ) }
|
||||||
|
DATA {
|
||||||
|
(0,0): 1, 2, 3, 4, 5, 6,
|
||||||
|
(1,0): 7, 8, 9, 10, 11, 12,
|
||||||
|
(2,0): 13, 14, 15, 16, 17, 18,
|
||||||
|
(3,0): 19, 20, 21, 22, 23, 24
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
The second example imports string data. The example program that creates this file can be downloaded
|
||||||
|
from the <a href="https://portal.hdfgroup.org/display/HDF5/Examples+by+API">Examples by API</a> page.
|
||||||
|
|
||||||
|
Note that string data requires use of the <code style="background-color:whitesmoke;">h5dump -y</code>
|
||||||
|
option to exclude indexes and the <code style="background-color:whitesmoke;">h5dump --width=1</code>
|
||||||
|
option to generate a single column of strings. The <code style="background-color:whitesmoke;">-o</code>
|
||||||
|
option outputs the data into an ASCII file.
|
||||||
|
\code
|
||||||
|
h5dump -p -d "/DS1" -O vlstring.dmp -o vlstring.ascii -y --width=1 h5ex_t_vlstring.h5
|
||||||
|
h5import vlstring.ascii -c vlstring.dmp -o new-vlstring.h5
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
The output before and after running these commands is shown below:
|
||||||
|
\code
|
||||||
|
$ h5dump h5ex_t_vlstring.h5
|
||||||
|
HDF5 "h5ex_t_vlstring.h5" {
|
||||||
|
GROUP "/" {
|
||||||
|
DATASET "DS1" {
|
||||||
|
DATATYPE H5T_STRING {
|
||||||
|
STRSIZE H5T_VARIABLE;
|
||||||
|
STRPAD H5T_STR_SPACEPAD;
|
||||||
|
CSET H5T_CSET_ASCII;
|
||||||
|
CTYPE H5T_C_S1;
|
||||||
|
}
|
||||||
|
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
|
||||||
|
DATA {
|
||||||
|
(0): "Parting", "is such", "sweet", "sorrow."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$ h5dump -p -d "/DS1" -O vlstring.dmp -o vlstring.ascii -y --width=1 h5ex_t_vlstring.h5
|
||||||
|
|
||||||
|
$ h5import vlstring.ascii -c vlstring.dmp -o new-vlstring.h5
|
||||||
|
|
||||||
|
$ h5dump new-vlstring.h5
|
||||||
|
HDF5 "new-vlstring.h5" {
|
||||||
|
GROUP "/" {
|
||||||
|
DATASET "DS1" {
|
||||||
|
DATATYPE H5T_STRING {
|
||||||
|
STRSIZE H5T_VARIABLE;
|
||||||
|
STRPAD H5T_STR_NULLTERM;
|
||||||
|
CSET H5T_CSET_ASCII;
|
||||||
|
CTYPE H5T_C_S1;
|
||||||
|
}
|
||||||
|
DATASPACE SIMPLE { ( 4 ) / ( 4 ) }
|
||||||
|
DATA {
|
||||||
|
(0): "Parting", "is such", "sweet", "sorrow."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
Navigate back: \ref index "Main" / \ref GettingStarted / \ref ViewToolsCommand
|
||||||
|
|
||||||
|
*/
|
||||||
763
doxygen/dox/ViewToolsJPSS.dox
Normal file
@@ -0,0 +1,763 @@
|
|||||||
|
/** @page ViewToolsJPSS Use Case: Examining a JPSS NPP File With HDF5 Tools
|
||||||
|
Navigate back: \ref index "Main" / \ref GettingStarted / \ref ViewToolsCommand
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
\section secViewToolsJPSSTOC Contents
|
||||||
|
<ul>
|
||||||
|
<li>\ref secViewToolsJPSSDeter</li>
|
||||||
|
<li>\ref secViewToolsJPSSView</li>
|
||||||
|
<li>\ref secViewToolsJPSSExam</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
This tutorial illustrates how to use the HDF5 tools to examine NPP files from the JPSS project. The following files are discussed:
|
||||||
|
\code
|
||||||
|
SVM09_npp_d20120229_t0849107_e0854511_b01759_c20120229145452682127_noaa_ops.h5 (<a href="https://support.hdfgroup.org/ftp/HDF5/examples/files/tutorial/SVM09_npp_d20120229_t0849107_e0854511_b01759_c20120229145452682127_noaa_ops.h5.gz">gzipped file</a>)
|
||||||
|
SVM01_npp_d20130524_t1255132_e1256374_b08146_c20130524192048864992_noaa_ops.h5 (<a href="https://support.hdfgroup.org/ftp/HDF5/examples/files/tutorial/SVM01_npp_d20130524_t1255132_e1256374_b08146_c20130524192048864992_noaa_ops.h5.gz">gzipped file</a>)
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
\section secViewToolsJPSSDeter Determining File Contents
|
||||||
|
The first thing you may want to do is determine what is in your file. You can use the command-line tools or HDFView to do this:
|
||||||
|
\li @ref subsecViewToolsJPSSDeter_h5dump
|
||||||
|
\li @ref subsecViewToolsJPSSDeter_h5ls
|
||||||
|
\li @ref subsecViewToolsJPSSDeter_HDFView
|
||||||
|
|
||||||
|
JPSS NPP files all contain two root level groups:
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>Group</th><th>Description</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>/All_Data
|
||||||
|
</td>
|
||||||
|
<td>Contains the raw data and optional geo-location information.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>/Data_Products
|
||||||
|
</td>
|
||||||
|
<td>Contains a dataset ending in <code style="background-color:whitesmoke;">Aggr</code> with
|
||||||
|
references to objects in the <code style="background-color:whitesmoke;">/All_Data</code> group.
|
||||||
|
Contains granules (datasets with a name ending in <code style="background-color:whitesmoke;">Gran_#</code>)
|
||||||
|
with references to selected regions in datasets under <code style="background-color:whitesmoke;">/All_Data</code>.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
\subsection subsecViewToolsJPSSDeter_h5dump h5dump
|
||||||
|
With <code style="background-color:whitesmoke;">h5dump</code> you can see a list of the objects
|
||||||
|
in the file using the <code style="background-color:whitesmoke;">-n</code> option:
|
||||||
|
\code
|
||||||
|
h5dump -n <file>
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
For example:
|
||||||
|
\code
|
||||||
|
$ h5dump -n SVM09_npp_d20120229_t0849107_e0854511_b01759_c20120229145452682127_noaa_ops.h5
|
||||||
|
HDF5 "SVM09_npp_d20120229_t0849107_e0854511_b01759_c20120229145452682127_noaa_ops.h5" {
|
||||||
|
FILE_CONTENTS {
|
||||||
|
group /
|
||||||
|
group /All_Data
|
||||||
|
group /All_Data/VIIRS-M9-SDR_All
|
||||||
|
dataset /All_Data/VIIRS-M9-SDR_All/ModeGran
|
||||||
|
dataset /All_Data/VIIRS-M9-SDR_All/ModeScan
|
||||||
|
dataset /All_Data/VIIRS-M9-SDR_All/NumberOfBadChecksums
|
||||||
|
dataset /All_Data/VIIRS-M9-SDR_All/NumberOfDiscardedPkts
|
||||||
|
dataset /All_Data/VIIRS-M9-SDR_All/NumberOfMissingPkts
|
||||||
|
dataset /All_Data/VIIRS-M9-SDR_All/NumberOfScans
|
||||||
|
dataset /All_Data/VIIRS-M9-SDR_All/PadByte1
|
||||||
|
dataset /All_Data/VIIRS-M9-SDR_All/QF1_VIIRSMBANDSDR
|
||||||
|
dataset /All_Data/VIIRS-M9-SDR_All/QF2_SCAN_SDR
|
||||||
|
dataset /All_Data/VIIRS-M9-SDR_All/QF3_SCAN_RDR
|
||||||
|
dataset /All_Data/VIIRS-M9-SDR_All/QF4_SCAN_SDR
|
||||||
|
dataset /All_Data/VIIRS-M9-SDR_All/QF5_GRAN_BADDETECTOR
|
||||||
|
dataset /All_Data/VIIRS-M9-SDR_All/Radiance
|
||||||
|
dataset /All_Data/VIIRS-M9-SDR_All/RadianceFactors
|
||||||
|
dataset /All_Data/VIIRS-M9-SDR_All/Reflectance
|
||||||
|
dataset /All_Data/VIIRS-M9-SDR_All/ReflectanceFactors
|
||||||
|
group /Data_Products
|
||||||
|
group /Data_Products/VIIRS-M9-SDR
|
||||||
|
dataset /Data_Products/VIIRS-M9-SDR/VIIRS-M9-SDR_Aggr
|
||||||
|
dataset /Data_Products/VIIRS-M9-SDR/VIIRS-M9-SDR_Gran_0
|
||||||
|
dataset /Data_Products/VIIRS-M9-SDR/VIIRS-M9-SDR_Gran_1
|
||||||
|
dataset /Data_Products/VIIRS-M9-SDR/VIIRS-M9-SDR_Gran_2
|
||||||
|
dataset /Data_Products/VIIRS-M9-SDR/VIIRS-M9-SDR_Gran_3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
In the output above you can see that there are four granules (ending in
|
||||||
|
<code style="background-color:whitesmoke;">Gran_#</code>) in the
|
||||||
|
<code style="background-color:whitesmoke;">/Data_Products/VIIRS-M9-SDR/</code> group.
|
||||||
|
|
||||||
|
\subsection subsecViewToolsJPSSDeter_h5ls h5ls
|
||||||
|
With <code style="background-color:whitesmoke;">h5ls</code> you can see a list of the objects in the
|
||||||
|
file using the <code style="background-color:whitesmoke;">-lr</code>
|
||||||
|
options. The <code style="background-color:whitesmoke;">h5ls</code> utility also shows shape and size
|
||||||
|
(dataspace) information about datasets.
|
||||||
|
\code
|
||||||
|
h5ls -lr <file>
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
For example:
|
||||||
|
\code
|
||||||
|
$ h5ls -lr SVM09_npp_d20120229_t0849107_e0854511_b01759_c20120229145452682127_noaa_ops.h5
|
||||||
|
/ Group
|
||||||
|
/All_Data Group
|
||||||
|
/All_Data/VIIRS-M9-SDR_All Group
|
||||||
|
/All_Data/VIIRS-M9-SDR_All/ModeGran Dataset {4/Inf}
|
||||||
|
/All_Data/VIIRS-M9-SDR_All/ModeScan Dataset {192/Inf}
|
||||||
|
/All_Data/VIIRS-M9-SDR_All/NumberOfBadChecksums Dataset {192/Inf}
|
||||||
|
/All_Data/VIIRS-M9-SDR_All/NumberOfDiscardedPkts Dataset {192/Inf}
|
||||||
|
/All_Data/VIIRS-M9-SDR_All/NumberOfMissingPkts Dataset {192/Inf}
|
||||||
|
/All_Data/VIIRS-M9-SDR_All/NumberOfScans Dataset {4/Inf}
|
||||||
|
/All_Data/VIIRS-M9-SDR_All/PadByte1 Dataset {12/Inf}
|
||||||
|
/All_Data/VIIRS-M9-SDR_All/QF1_VIIRSMBANDSDR Dataset {3072/Inf, 3200/Inf}
|
||||||
|
/All_Data/VIIRS-M9-SDR_All/QF2_SCAN_SDR Dataset {192/Inf}
|
||||||
|
/All_Data/VIIRS-M9-SDR_All/QF3_SCAN_RDR Dataset {192/Inf}
|
||||||
|
/All_Data/VIIRS-M9-SDR_All/QF4_SCAN_SDR Dataset {3072/Inf}
|
||||||
|
/All_Data/VIIRS-M9-SDR_All/QF5_GRAN_BADDETECTOR Dataset {64/Inf}
|
||||||
|
/All_Data/VIIRS-M9-SDR_All/Radiance Dataset {3072/Inf, 3200/Inf}
|
||||||
|
/All_Data/VIIRS-M9-SDR_All/RadianceFactors Dataset {8/Inf}
|
||||||
|
/All_Data/VIIRS-M9-SDR_All/Reflectance Dataset {3072/Inf, 3200/Inf}
|
||||||
|
/All_Data/VIIRS-M9-SDR_All/ReflectanceFactors Dataset {8/Inf}
|
||||||
|
/Data_Products Group
|
||||||
|
/Data_Products/VIIRS-M9-SDR Group
|
||||||
|
/Data_Products/VIIRS-M9-SDR/VIIRS-M9-SDR_Aggr Dataset {16/Inf}
|
||||||
|
/Data_Products/VIIRS-M9-SDR/VIIRS-M9-SDR_Gran_0 Dataset {16/Inf}
|
||||||
|
/Data_Products/VIIRS-M9-SDR/VIIRS-M9-SDR_Gran_1 Dataset {16/Inf}
|
||||||
|
/Data_Products/VIIRS-M9-SDR/VIIRS-M9-SDR_Gran_2 Dataset {16/Inf}
|
||||||
|
/Data_Products/VIIRS-M9-SDR/VIIRS-M9-SDR_Gran_3 Dataset {16/Inf}
|
||||||
|
\endcode
|
||||||
|
Note that the <code style="background-color:whitesmoke;">Inf</code> indicates that those datasets are appendable or unlimited in size.
|
||||||
|
|
||||||
|
\subsection subsecViewToolsJPSSDeter_HDFView HDFView
|
||||||
|
If you open the file in HDFView, it will display the file and the root level groups within
|
||||||
|
it in the TreeView on the left. An HDF5 file is a folder with a "5" in the middle, followed
|
||||||
|
by the file name. There are two folders (groups) within the JPSS file
|
||||||
|
(<code style="background-color:whitesmoke;">All_Data/</code> and <code style="background-color:whitesmoke;">Data Products/</code>),
|
||||||
|
which you can select to see their contents:
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html hdfview-tree.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
If you click twice with the left-mouse button on a folder or group in the TreeView, the contents
|
||||||
|
of the folder will be listed. If you click twice on an object such as a dataset, a window with
|
||||||
|
the object's values will be displayed.
|
||||||
|
|
||||||
|
Underneath the <code style="background-color:whitesmoke;">VIIRS-M1-SDR</code> folder are what HDF5
|
||||||
|
calls datasets. The scarlet letter <code style="background-color:whitesmoke;">"A"</code> attached
|
||||||
|
to the group and datasets under <code style="background-color:whitesmoke;">Data_Products/</code>
|
||||||
|
indicates that there are attributes associated with them.
|
||||||
|
|
||||||
|
\section secViewToolsJPSSView Viewing the User Block
|
||||||
|
All JPSS files contain a user block in XML with information about the file. The user block is an
|
||||||
|
optional space allocated at the beginning of an HDF5 file that is not interpreted by the HDF5
|
||||||
|
library. Its size is a multiple of 512.
|
||||||
|
|
||||||
|
Since the user block in JPSS files is stored in ASCII and it is stored at the beginning of an
|
||||||
|
HDF5 file, you could use a text editor or viewer to examine it. However, there are HDF5 utilities
|
||||||
|
that can help with this:
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>Utility</th><th>Description</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>h5unjam
|
||||||
|
</td>
|
||||||
|
<td>Extracts a user block from an HDF5 file
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>h5dump
|
||||||
|
</td>
|
||||||
|
<td>The -B (--superblock) option displays the size of the user block in an HDF5 file
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
\subsection subsecViewToolsJPSSView_h5unjam h5unjam
|
||||||
|
The \ref secViewToolsEditAdd tutorial topic discusses the use of the
|
||||||
|
<code style="background-color:whitesmoke;">h5jam</code> and <code style="background-color:whitesmoke;">h5unjam</code>
|
||||||
|
utilities for adding or removing a user block from a file. An input HDF5 file
|
||||||
|
(<code style="background-color:whitesmoke;">-i</code>), output HDF5 file
|
||||||
|
(<code style="background-color:whitesmoke;">-o</code>), and user block text file
|
||||||
|
(<code style="background-color:whitesmoke;">-u</code>) can be specified with these tools. You can use the
|
||||||
|
<code style="background-color:whitesmoke;">h5unjam</code> tool to extract and view the user block in a JPSS file:
|
||||||
|
\code
|
||||||
|
h5unjam -i <Input HDF5 File> -o <Output HDF5 File> -u <User Block File>
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
For example this command will extract the user block into the file UB.xml:
|
||||||
|
\code
|
||||||
|
$ h5unjam -i SVM09_npp_d20120229_t0849107_e0854511_b01759_c20120229145452682127_noaa_ops.h5
|
||||||
|
-o svm09-noUB.h5 -u UB.xml
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
The input HDF5 file remains unchanged. The output HDF5 file will not contain the user block.
|
||||||
|
The <code style="background-color:whitesmoke;">UB.xml</code> file contains the user block
|
||||||
|
which can be viewed with a browser.
|
||||||
|
|
||||||
|
\subsection subsecViewToolsJPSSView_h5dump h5dump
|
||||||
|
The h5dump utility has the <code style="background-color:whitesmoke;">-B (--superblock)</code> option for displaying the superblock in an HDF5 file.
|
||||||
|
The superblock contains information about the file such as the file signature, file consistency flags,
|
||||||
|
the number of bytes to store addresses and size of an object, as well as the size of the user block:
|
||||||
|
\code
|
||||||
|
h5dump -B (--superblock)
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
Below is an example (Unix):
|
||||||
|
\code
|
||||||
|
$ h5dump -B -H SVM09_npp_d20120229_t0849107_e0854511_b01759_c20120229145452682127_noaa_ops.h5 | more
|
||||||
|
HDF5 "SVM09_npp_d20120229_t0849107_e0854511_b01759_c20120229145452682127_noaa_ops.h5" {
|
||||||
|
SUPER_BLOCK {
|
||||||
|
SUPERBLOCK_VERSION 0
|
||||||
|
FREELIST_VERSION 0
|
||||||
|
SYMBOLTABLE_VERSION 0
|
||||||
|
OBJECTHEADER_VERSION 0
|
||||||
|
OFFSET_SIZE 8
|
||||||
|
LENGTH_SIZE 8
|
||||||
|
BTREE_RANK 16
|
||||||
|
BTREE_LEAF 4
|
||||||
|
ISTORE_K 32
|
||||||
|
USER_BLOCK {
|
||||||
|
USERBLOCK_SIZE 1024
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
Once you have the size of the user block, you can extract it from the file using system commands.
|
||||||
|
For example, on Unix platforms you can use the head command-line tool:
|
||||||
|
\code
|
||||||
|
head -c <USERBLOCK_SIZE> <JPSS File> >& USERBLOCK.xml
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
There are Unix tools for Windows that may work, such as <a href="http://gnuwin32.sourceforge.net/packages/coreutils.htm">CoreUtils for Windows</a>.
|
||||||
|
|
||||||
|
\section secViewToolsJPSSExam Examining a Granule
|
||||||
|
<ul>
|
||||||
|
<li>@ref subsecViewToolsJPSSExam_h5dump<br />
|
||||||
|
<ul>
|
||||||
|
<li>@ref subsubsecViewToolsJPSSExam_h5dumpRegRef</li>
|
||||||
|
<li>@ref subsubsecViewToolsJPSSExam_h5dumpQuality</li>
|
||||||
|
<li>@ref subsubsecViewToolsJPSSExam_h5dumpProps</li>
|
||||||
|
</ul></li>
|
||||||
|
<li>@ref subsecViewToolsJPSSExamr_HDFView</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
\subsection subsecViewToolsJPSSExam_h5dump h5dump
|
||||||
|
There are several options that you may first want to use when examining a granule with h5dump:
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th>Option</th><th>Description</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>-H, --header
|
||||||
|
</td>
|
||||||
|
<td>Prints header (metadata) information only
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>-d D, --dataset=D
|
||||||
|
</td>
|
||||||
|
<td>Specifies the granule dataset
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>-A 0, --onlyattr=0
|
||||||
|
</td>
|
||||||
|
<td>Suppresses attributes
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>-p, --properties
|
||||||
|
</td>
|
||||||
|
<td>Show properties of datasets
|
||||||
|
(See Properties)
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
You would specify the dataset (<code style="background-color:whitesmoke;">-d D</code>) and the
|
||||||
|
<code style="background-color:whitesmoke;">-H</code> options to view the metadata associated with
|
||||||
|
a specific granule. There are many attributes associated with a granule and
|
||||||
|
<code style="background-color:whitesmoke;">-A 0</code> can be used to suppress those.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
\code
|
||||||
|
h5dump -H -A 0 -d "/Data_Products/VIIRS-M9-SDR/VIIRS-M9-SDR_Gran_0"
|
||||||
|
SVM09_npp_d20120229_t0849107_e0854511_b01759_c20120229145452682127_noaa_ops.h5
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
This command displays:
|
||||||
|
\code
|
||||||
|
HDF5 "SVM09_npp_d20120229_t0849107_e0854511_b01759_c20120229145452682127_noaa_ops.h5" {
|
||||||
|
DATASET "/Data_Products/VIIRS-M9-SDR/VIIRS-M9-SDR_Gran_0" {
|
||||||
|
DATATYPE H5T_REFERENCE { H5T_STD_REF_DSETREG }
|
||||||
|
DATASPACE SIMPLE { ( 16 ) / ( H5S_UNLIMITED ) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
To see the actual contents of the granule remove the <code style="background-color:whitesmoke;">-H</code> option:
|
||||||
|
\code
|
||||||
|
h5dump -A 0 -d "/Data_Products/VIIRS-M9-SDR/VIIRS-M9-SDR_Gran_0"
|
||||||
|
SVM09_npp_d20120229_t0849107_e0854511_b01759_c20120229145452682127_noaa_ops.h5
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
The above command displays:
|
||||||
|
\code
|
||||||
|
HDF5 "SVM09_npp_d20120229_t0849107_e0854511_b01759_c20120229145452682127_noaa_ops.h5" {
|
||||||
|
DATASET "/Data_Products/VIIRS-M9-SDR/VIIRS-M9-SDR_Gran_0" {
|
||||||
|
DATATYPE H5T_REFERENCE { H5T_STD_REF_DSETREG }
|
||||||
|
DATASPACE SIMPLE { ( 16 ) / ( H5S_UNLIMITED ) }
|
||||||
|
DATA {
|
||||||
|
DATASET /All_Data/VIIRS-M9-SDR_All/Radiance {(0,0)-(767,3199)},
|
||||||
|
DATASET /All_Data/VIIRS-M9-SDR_All/Reflectance {(0,0)-(767,3199)},
|
||||||
|
DATASET /All_Data/VIIRS-M9-SDR_All/ModeScan {(0)-(47)},
|
||||||
|
DATASET /All_Data/VIIRS-M9-SDR_All/ModeGran {(0)-(0)},
|
||||||
|
DATASET /All_Data/VIIRS-M9-SDR_All/PadByte1 {(0)-(2)},
|
||||||
|
DATASET /All_Data/VIIRS-M9-SDR_All/NumberOfScans {(0)-(0)},
|
||||||
|
DATASET /All_Data/VIIRS-M9-SDR_All/NumberOfMissingPkts {(0)-(47)},
|
||||||
|
DATASET /All_Data/VIIRS-M9-SDR_All/NumberOfBadChecksums {(0)-(47)},
|
||||||
|
DATASET /All_Data/VIIRS-M9-SDR_All/NumberOfDiscardedPkts {(0)-(47)},
|
||||||
|
DATASET /All_Data/VIIRS-M9-SDR_All/QF1_VIIRSMBANDSDR {(0,0)-(767,3199)},
|
||||||
|
DATASET /All_Data/VIIRS-M9-SDR_All/QF2_SCAN_SDR {(0)-(47)},
|
||||||
|
DATASET /All_Data/VIIRS-M9-SDR_All/QF3_SCAN_RDR {(0)-(47)},
|
||||||
|
DATASET /All_Data/VIIRS-M9-SDR_All/QF4_SCAN_SDR {(0)-(767)},
|
||||||
|
DATASET /All_Data/VIIRS-M9-SDR_All/QF5_GRAN_BADDETECTOR {(0)-(15)},
|
||||||
|
DATASET /All_Data/VIIRS-M9-SDR_All/RadianceFactors {(0)-(1)},
|
||||||
|
DATASET /All_Data/VIIRS-M9-SDR_All/ReflectanceFactors {(0)-(1)}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
As you can see in the output above, the datatype for this dataset is:
|
||||||
|
\code
|
||||||
|
DATATYPE H5T_REFERENCE { H5T_STD_REF_DSETREG }
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
This indicates that it is a dataset specifically for storing references to regions (or subsets)
|
||||||
|
in other datasets. The dataset contains 16 such references, and more can be added to it, as
|
||||||
|
indicated by the dataspace (in other words it is unlimited):
|
||||||
|
\code
|
||||||
|
DATASPACE SIMPLE { ( 16 ) / ( H5S_UNLIMITED ) }
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
\subsubsection subsubsecViewToolsJPSSExam_h5dumpRegRef Viewing a Region Reference
|
||||||
|
What if we wanted to look at the <code style="background-color:whitesmoke;">NumberOfScans</code> data for a specific granule in a file?
|
||||||
|
|
||||||
|
First, we may be interested in determining whether the scans were done at night or in the day. If a scan was at night, there will be no data.
|
||||||
|
|
||||||
|
The attribute <code style="background-color:whitesmoke;">N_Day_Night_Flag</code> is used to determine when the scan was done. If you don't know where this attribute is located, you can use the <code style="background-color:whitesmoke;">-N</code> option to search for it in the file. If you were to run this command on the <code style="background-color:whitesmoke;">SVM09</code> file used above, you would see that the <code style="background-color:whitesmoke;">N_Day_Night_Flag</code> attribute has a value of <code style="background-color:whitesmoke;">Night</code> for the four granules in the file. Indeed, if you actually examine the <code style="background-color:whitesmoke;">NumberOfScans</code> data, you will see that only fill values are written.
|
||||||
|
|
||||||
|
For that reason we will examine the <code style="background-color:whitesmoke;">NumberOfScans</code> data for the <code style="background-color:whitesmoke;">SVMO1</code> file below, as it was obtained during the day:
|
||||||
|
\code
|
||||||
|
h5dump -N N_Day_Night_Flag SVM01_npp_d20130524_t1255132_e1256374_b08146_c20130524192048864992_noaa_ops.h5
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
It displays:
|
||||||
|
\code
|
||||||
|
HDF5 "SVM01_npp_d20130524_t1255132_e1256374_b08146_c20130524192048864992_noaa_ops.h5" {
|
||||||
|
ATTRIBUTE "N_Day_Night_Flag" {
|
||||||
|
DATATYPE H5T_STRING {
|
||||||
|
STRSIZE 4;
|
||||||
|
STRPAD H5T_STR_NULLTERM;
|
||||||
|
CSET H5T_CSET_ASCII;
|
||||||
|
CTYPE H5T_C_S1;
|
||||||
|
}
|
||||||
|
DATASPACE SIMPLE { ( 1, 1 ) / ( 1, 1 ) }
|
||||||
|
DATA {
|
||||||
|
(0,0): "Day"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
There is just one granule in this <code style="background-color:whitesmoke;">SVM01</code> file, as shown below:
|
||||||
|
\code
|
||||||
|
$ h5dump -n SVM01_npp_d20130524_t1255132_e1256374_b08146_c20130524192048864992_noaa_ops.h5
|
||||||
|
HDF5 "SVM01_npp_d20130524_t1255132_e1256374_b08146_c20130524192048864992_noaa_ops.h5" {
|
||||||
|
FILE_CONTENTS {
|
||||||
|
group /
|
||||||
|
group /All_Data
|
||||||
|
group /All_Data/VIIRS-M1-SDR_All
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/ModeGran
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/ModeScan
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/NumberOfBadChecksums
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/NumberOfDiscardedPkts
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/NumberOfMissingPkts
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/NumberOfScans
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/PadByte1
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/QF1_VIIRSMBANDSDR
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/QF2_SCAN_SDR
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/QF3_SCAN_RDR
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/QF4_SCAN_SDR
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/QF5_GRAN_BADDETECTOR
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/Radiance
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/RadianceFactors
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/Reflectance
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/ReflectanceFactors
|
||||||
|
group /Data_Products
|
||||||
|
group /Data_Products/VIIRS-M1-SDR
|
||||||
|
dataset /Data_Products/VIIRS-M1-SDR/VIIRS-M1-SDR_Aggr
|
||||||
|
dataset /Data_Products/VIIRS-M1-SDR/VIIRS-M1-SDR_Gran_0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
Now examine the references in the <code style="background-color:whitesmoke;">VIIRS-M1-SDR_Gran_0</code> granule
|
||||||
|
\code
|
||||||
|
$ h5dump -A 0 -d "/Data_Products/VIIRS-M1-SDR/VIIRS-M1-SDR_Gran_0"
|
||||||
|
SVM01_npp_d20130524_t1255132_e1256374_b08146_c20130524192048864992_noaa_ops.h5
|
||||||
|
HDF5 "SVM01_npp_d20130524_t1255132_e1256374_b08146_c20130524192048864992_noaa_ops.h5" {
|
||||||
|
DATASET "/Data_Products/VIIRS-M1-SDR/VIIRS-M1-SDR_Gran_0" {
|
||||||
|
DATATYPE H5T_REFERENCE { H5T_STD_REF_DSETREG }
|
||||||
|
DATASPACE SIMPLE { ( 16 ) / ( H5S_UNLIMITED ) }
|
||||||
|
DATA {
|
||||||
|
DATASET /All_Data/VIIRS-M1-SDR_All/Radiance {(0,0)-(767,3199)},
|
||||||
|
DATASET /All_Data/VIIRS-M1-SDR_All/Reflectance {(0,0)-(767,3199)},
|
||||||
|
DATASET /All_Data/VIIRS-M1-SDR_All/ModeScan {(0)-(47)},
|
||||||
|
DATASET /All_Data/VIIRS-M1-SDR_All/ModeGran {(0)-(0)},
|
||||||
|
DATASET /All_Data/VIIRS-M1-SDR_All/PadByte1 {(0)-(2)},
|
||||||
|
DATASET /All_Data/VIIRS-M1-SDR_All/NumberOfScans {(0)-(0)},
|
||||||
|
DATASET /All_Data/VIIRS-M1-SDR_All/NumberOfMissingPkts {(0)-(47)},
|
||||||
|
DATASET /All_Data/VIIRS-M1-SDR_All/NumberOfBadChecksums {(0)-(47)},
|
||||||
|
DATASET /All_Data/VIIRS-M1-SDR_All/NumberOfDiscardedPkts {(0)-(47)},
|
||||||
|
DATASET /All_Data/VIIRS-M1-SDR_All/QF1_VIIRSMBANDSDR {(0,0)-(767,3199)},
|
||||||
|
DATASET /All_Data/VIIRS-M1-SDR_All/QF2_SCAN_SDR {(0)-(47)},
|
||||||
|
DATASET /All_Data/VIIRS-M1-SDR_All/QF3_SCAN_RDR {(0)-(47)},
|
||||||
|
DATASET /All_Data/VIIRS-M1-SDR_All/QF4_SCAN_SDR {(0)-(767)},
|
||||||
|
DATASET /All_Data/VIIRS-M1-SDR_All/QF5_GRAN_BADDETECTOR {(0)-(15)},
|
||||||
|
DATASET /All_Data/VIIRS-M1-SDR_All/RadianceFactors {(0)-(1)},
|
||||||
|
DATASET /All_Data/VIIRS-M1-SDR_All/ReflectanceFactors {(0)-(1)}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
In the output above, you can see that the <code style="background-color:whitesmoke;">NumberOfScans</code>
|
||||||
|
reference is the sixth reference in the granule counting from the top.
|
||||||
|
|
||||||
|
The list of references shown above is a 0-based index to the dataset. Therefore, to specify
|
||||||
|
<code style="background-color:whitesmoke;">NumberOfScans</code>, enter a start offset of
|
||||||
|
<code style="background-color:whitesmoke;">5</code> for the <code style="background-color:whitesmoke;">-s</code>
|
||||||
|
option (the sixth reference minus 1). To see the region reference data, use the <code style="background-color:whitesmoke;">-R</code> option.
|
||||||
|
|
||||||
|
This command will display the data in the <code style="background-color:whitesmoke;">NumberOfScans</code> region reference:
|
||||||
|
\code
|
||||||
|
h5dump -A 0 -d "/Data_Products/VIIRS-M1-SDR/VIIRS-M1-SDR_Gran_0" -s 5 -R
|
||||||
|
SVM01_npp_d20130524_t1255132_e1256374_b08146_c20130524192048864992_noaa_ops.h5
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
It displays the number of scans (48):
|
||||||
|
\code
|
||||||
|
HDF5 "SVM01_npp_d20130524_t1255132_e1256374_b08146_c20130524192048864992_noaa_ops.h5" {
|
||||||
|
DATASET "/Data_Products/VIIRS-M1-SDR/VIIRS-M1-SDR_Gran_0" {
|
||||||
|
DATATYPE H5T_REFERENCE { H5T_STD_REF_DSETREG }
|
||||||
|
DATASPACE SIMPLE { ( 16 ) / ( H5S_UNLIMITED ) }
|
||||||
|
SUBSET {
|
||||||
|
START ( 5 );
|
||||||
|
STRIDE ( 1 );
|
||||||
|
COUNT ( 1 );
|
||||||
|
BLOCK ( 1 );
|
||||||
|
DATA {
|
||||||
|
(5): DATASET /All_Data/VIIRS-M1-SDR_All/NumberOfScans {
|
||||||
|
(5): REGION_TYPE BLOCK (0)-(0)
|
||||||
|
(5): DATATYPE H5T_STD_I32BE
|
||||||
|
(5): DATASPACE SIMPLE { ( 1 ) / ( H5S_UNLIMITED ) }
|
||||||
|
(5): DATA {
|
||||||
|
(0): 48
|
||||||
|
(5): }
|
||||||
|
(5): }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
The <code style="background-color:whitesmoke;">-s</code> option may be familiar as one of the options
|
||||||
|
that was described in the \ref secViewToolsViewSub tutorial topic. The other subsetting options are not included,
|
||||||
|
indicating that the default values are used.
|
||||||
|
|
||||||
|
If you leave off the <code style="background-color:whitesmoke;">-R</code> option, you will see the subset selection, but not the data:
|
||||||
|
\code
|
||||||
|
$ h5dump -A 0 -d "/Data_Products/VIIRS-M1-SDR/VIIRS-M1-SDR_Gran_0" -s 5
|
||||||
|
SVM01_npp_d20130524_t1255132_e1256374_b08146_c20130524192048864992_noaa_ops.h5
|
||||||
|
HDF5 "SVM01_npp_d20130524_t1255132_e1256374_b08146_c20130524192048864992_noaa_ops.h5" {
|
||||||
|
DATASET "/Data_Products/VIIRS-M1-SDR/VIIRS-M1-SDR_Gran_0" {
|
||||||
|
DATATYPE H5T_REFERENCE { H5T_STD_REF_DSETREG }
|
||||||
|
DATASPACE SIMPLE { ( 16 ) / ( H5S_UNLIMITED ) }
|
||||||
|
SUBSET {
|
||||||
|
START ( 5 );
|
||||||
|
STRIDE ( 1 );
|
||||||
|
COUNT ( 1 );
|
||||||
|
BLOCK ( 1 );
|
||||||
|
DATA {
|
||||||
|
DATASET /All_Data/VIIRS-M1-SDR_All/NumberOfScans {(0)-(0)}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
\subsubsection subsubsecViewToolsJPSSExam_h5dumpQuality Viewing a Quality Flag
|
||||||
|
The quality flags in an NPP file can be viewed with h5dump using the <code style="background-color:whitesmoke;">-M</code>
|
||||||
|
option. Quality flags are packed into each integer value in a quality flag dataset. Quality flag datasets in NPP
|
||||||
|
files begin with the letters <code style="background-color:whitesmoke;">QF</code>.
|
||||||
|
|
||||||
|
In the following NPP file, there are five Quality Flag datasets
|
||||||
|
(<code style="background-color:whitesmoke;">/All_Data/VIIRS-M1-SDR_All/QF*</code>):
|
||||||
|
\code
|
||||||
|
$ h5dump -n SVM01_npp_d20130524_t1255132_e1256374_b08146_c20130524192048864992_noaa_ops.h5
|
||||||
|
HDF5 "SVM01_npp_d20130524_t1255132_e1256374_b08146_c20130524192048864992_noaa_ops.h5" {
|
||||||
|
FILE_CONTENTS {
|
||||||
|
group /
|
||||||
|
group /All_Data
|
||||||
|
group /All_Data/VIIRS-M1-SDR_All
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/ModeGran
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/ModeScan
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/NumberOfBadChecksums
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/NumberOfDiscardedPkts
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/NumberOfMissingPkts
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/NumberOfScans
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/PadByte1
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/QF1_VIIRSMBANDSDR
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/QF2_SCAN_SDR
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/QF3_SCAN_RDR
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/QF4_SCAN_SDR
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/QF5_GRAN_BADDETECTOR
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/Radiance
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/RadianceFactors
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/Reflectance
|
||||||
|
dataset /All_Data/VIIRS-M1-SDR_All/ReflectanceFactors
|
||||||
|
group /Data_Products
|
||||||
|
group /Data_Products/VIIRS-M1-SDR
|
||||||
|
dataset /Data_Products/VIIRS-M1-SDR/VIIRS-M1-SDR_Aggr
|
||||||
|
dataset /Data_Products/VIIRS-M1-SDR/VIIRS-M1-SDR_Gran_0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
The flags in this particular dataset happen to be stored in every two bits of each quality flag dataset
|
||||||
|
element, and the values range from 0 to 2. In other words, to see the quality flag values for this
|
||||||
|
dataset, these bits would be examined: 0 and 1, 2 and 3, 4 and 5, or 6 and 7 (This information was
|
||||||
|
obtained from the Product Profile XML File.)
|
||||||
|
|
||||||
|
For example, bits 0 and 1 in the <code style="background-color:whitesmoke;">VQF1_VIIRSMBANDSDR</code> dataset specify the flag that
|
||||||
|
"Indicates calibration quality due to bad space view offsets, OBC view offsets, etc or use of a
|
||||||
|
previous calibration view". It has 3 values: Good (0), Poor (1), or No Calibration (2).
|
||||||
|
|
||||||
|
The <code style="background-color:whitesmoke;">-M</code> option is used to specify the quality
|
||||||
|
flag bit offset (<code style="background-color:whitesmoke;">O</code>) and length (<code style="background-color:whitesmoke;">L</code>):
|
||||||
|
\code
|
||||||
|
h5dump -d DATASET -M O,L FILE
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
To view the first quality flag (0-1) in a 5 x 6 subset of the <code style="background-color:whitesmoke;">QF1_VIIRSMBANDSDR</code> dataset, specify:
|
||||||
|
\code
|
||||||
|
h5dump -d "/All_Data/VIIRS-M1-SDR_All/QF1_VIIRSMBANDSDR[0,0;;5,6;]"
|
||||||
|
-M 0,2 SVM01_npp_d20130524_t1255132_e1256374_b08146_c20130524192048864992_noaa_ops.h5
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
This outputs:
|
||||||
|
\code
|
||||||
|
HDF5 "SVM01_npp_d20130524_t1255132_e1256374_b08146_c20130524192048864992_noaa_ops.h5" {
|
||||||
|
DATASET "/All_Data/VIIRS-M1-SDR_All/QF1_VIIRSMBANDSDR" {
|
||||||
|
DATATYPE H5T_STD_U8BE
|
||||||
|
DATASPACE SIMPLE { ( 768, 3200 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) }
|
||||||
|
PACKED_BITS OFFSET=0 LENGTH=2
|
||||||
|
SUBSET {
|
||||||
|
START ( 0, 0 );
|
||||||
|
STRIDE ( 1, 1 );
|
||||||
|
COUNT ( 5, 6 );
|
||||||
|
BLOCK ( 1, 1 );
|
||||||
|
DATA {
|
||||||
|
(0,0): 2, 2, 2, 2, 2, 2,
|
||||||
|
(1,0): 2, 2, 2, 2, 2, 2,
|
||||||
|
(2,0): 0, 0, 0, 0, 0, 0,
|
||||||
|
(3,0): 0, 0, 0, 0, 0, 0,
|
||||||
|
(4,0): 0, 0, 0, 0, 0, 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
To view more than one quality flag at a time simply add the bit offset and length values to
|
||||||
|
<code style="background-color:whitesmoke;">-M</code>, separated by commas. For example, this
|
||||||
|
<code style="background-color:whitesmoke;">-M</code> option specifies bits 0-1 and 2-3:
|
||||||
|
\code
|
||||||
|
h5dump -d DATASET -M 0,2,2,2 FILE
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
\subsubsection subsubsecViewToolsJPSSExam_h5dumpProps Properties
|
||||||
|
To view properties of a specific dataset with <code style="background-color:whitesmoke;">h5dump</code>
|
||||||
|
use the <code style="background-color:whitesmoke;">-p</code> option along with the
|
||||||
|
<code style="background-color:whitesmoke;">-d</code> option. Depending on the number of attributes
|
||||||
|
and the amount of data, the <code style="background-color:whitesmoke;">-A 0</code> and
|
||||||
|
<code style="background-color:whitesmoke;">-H</code> options can also be specified to suppress
|
||||||
|
printing of attributes and data values:
|
||||||
|
\code
|
||||||
|
h5dump -p -H -A 0 -d DATASET
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
The <code style="background-color:whitesmoke;">-p</code> option shows any compression filters
|
||||||
|
associated with a dataset, as well as layout and fill value information. This option can be helpful
|
||||||
|
in diagnosing performance and other issues.
|
||||||
|
|
||||||
|
As an example, examine the <code style="background-color:whitesmoke;">/All_Data/VIIRS-M1-SDR_All/Radiance</code>
|
||||||
|
dataset in the <code style="background-color:whitesmoke;">SVM01</code> file:
|
||||||
|
\code
|
||||||
|
$ h5dump -p -H -A 0 -d "/All_Data/VIIRS-M1-SDR_All/Radiance"
|
||||||
|
SVM01_npp_d20130524_t1255132_e1256374_b08146_c20130524192048864992_noaa_ops.h5
|
||||||
|
HDF5 "SVM01_npp_d20130524_t1255132_e1256374_b08146_c20130524192048864992_noaa_ops.h5" {
|
||||||
|
DATASET "/All_Data/VIIRS-M1-SDR_All/Radiance" {
|
||||||
|
DATATYPE H5T_STD_U16BE
|
||||||
|
DATASPACE SIMPLE { ( 768, 3200 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) }
|
||||||
|
STORAGE_LAYOUT {
|
||||||
|
CHUNKED ( 768, 3200 )
|
||||||
|
SIZE 4915200
|
||||||
|
}
|
||||||
|
FILTERS {
|
||||||
|
NONE
|
||||||
|
}
|
||||||
|
FILLVALUE {
|
||||||
|
FILL_TIME H5D_FILL_TIME_IFSET
|
||||||
|
VALUE 65529
|
||||||
|
}
|
||||||
|
ALLOCATION_TIME {
|
||||||
|
H5D_ALLOC_TIME_INCR
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
We can see that the chunk size for this dataset is 768 x 3200, and the storage size is 4915200.
|
||||||
|
|
||||||
|
What if the chunk size were smaller?
|
||||||
|
|
||||||
|
The dataset was modified to have a chunk size of 1 x 10, using the
|
||||||
|
<code style="background-color:whitesmoke;">h5repack</code> utility, as shown below.
|
||||||
|
\code
|
||||||
|
$ h5repack -l /All_Data/VIIRS-M1-SDR_All/Radiance:CHUNK=1x10
|
||||||
|
SVM01_npp_d20130524_t1255132_e1256374_b08146_c20130524192048864992_noaa_ops.h5 SVM01repack.h5
|
||||||
|
|
||||||
|
$ h5dump -p -H -A 0 -d "/All_Data/VIIRS-M1-SDR_All/Radiance" SVM01repack.h5
|
||||||
|
HDF5 "SVM01repack.h5" {
|
||||||
|
DATASET "/All_Data/VIIRS-M1-SDR_All/Radiance" {
|
||||||
|
DATATYPE H5T_STD_U16BE
|
||||||
|
DATASPACE SIMPLE { ( 768, 3200 ) / ( H5S_UNLIMITED, H5S_UNLIMITED ) }
|
||||||
|
STORAGE_LAYOUT {
|
||||||
|
CHUNKED ( 1, 10 )
|
||||||
|
SIZE 4915200
|
||||||
|
}
|
||||||
|
FILTERS {
|
||||||
|
NONE
|
||||||
|
}
|
||||||
|
FILLVALUE {
|
||||||
|
FILL_TIME H5D_FILL_TIME_IFSET
|
||||||
|
VALUE 65529
|
||||||
|
}
|
||||||
|
ALLOCATION_TIME {
|
||||||
|
H5D_ALLOC_TIME_INCR
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
In this case, the storage size of the dataset is the same, but the size of the file almost doubled!:
|
||||||
|
\code
|
||||||
|
$ ls -1sh
|
||||||
|
total 35M
|
||||||
|
12M SVM01_npp_d20130524_t1255132_e1256374_b08146_c20130524192048864992_noaa_ops.h5
|
||||||
|
23M SVM01repack.h5
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
In general, the smaller the chunk size, the more chunks that HDF5 has to keep track of, which increases
|
||||||
|
the size of the file and can affect performance.
|
||||||
|
|
||||||
|
\subsection subsecViewToolsJPSSExamr_HDFView HDFView
|
||||||
|
As mentioned previously, the structure of an HDF5 file is displayed in the TreeView on the left side of the HDFView screen,
|
||||||
|
and you can click on objects and have metadata information displayed on the right side.
|
||||||
|
|
||||||
|
To discover more about the granule <code style="background-color:whitesmoke;">/Data_Products/VIIRS-M1-SDR/VIIRS-M1-SDR_Gran_0</code>
|
||||||
|
in the <code style="background-color:whitesmoke;">SVM01</code> file shown below in the TreeView, position
|
||||||
|
the mouse over the granule and click to select. Properties for the object is displayed on the right side of the HDFView screen.
|
||||||
|
You can see Datatype and Dataspace information on the <code style="background-color:whitesmoke;">General Object Info</code>
|
||||||
|
tab, any Attributes associated with the granulewill be on the
|
||||||
|
<code style="background-color:whitesmoke;">Object Attribute Info</code> tab. In the
|
||||||
|
<code style="background-color:whitesmoke;">General Object Info</code>, you can see that the dataset is a
|
||||||
|
Region Reference dataset, and that there are sixteen Region References in this dataset:
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html hdfview-prop.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
To examine the data in the granule, click twice on it with the left mouse button in the TreeView,
|
||||||
|
and it will open in a new window.:
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html hdfview-regref.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
If you click twice with the left mouse button on the fifth Region Reference
|
||||||
|
<code style="background-color:whitesmoke;">/All_Data/VIIRS-M1-SDR_All/NumberOfScans</code> a window
|
||||||
|
will pop up with the value(s) of the reference:
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html hdfview-regref2.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
You can also set a user option to automatically show the value(s) in a Region Reference. Under the
|
||||||
|
<code style="background-color:whitesmoke;">Tools</code> pull-down menu, select
|
||||||
|
<code style="background-color:whitesmoke;">User Options</code> and then select
|
||||||
|
<code style="background-color:whitesmoke;">HDF Settings</code> and then select
|
||||||
|
<code style="background-color:whitesmoke;">Show RegRef Values</code> in the
|
||||||
|
<code style="background-color:whitesmoke;">Data</code> section (see the middle of the image below):
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html hdfview-regrefval.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
Then you will automatically see the values of the Region Reference when you open it and select an entry:
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html hdfview-regref1.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
You can view and set quality flags by clicking the right mouse button over a quality flags dataset under
|
||||||
|
<code style="background-color:whitesmoke;">All_Data</code> and selecting
|
||||||
|
<code style="background-color:whitesmoke;">Open As</code> from the pop-up menu. In the middle of
|
||||||
|
the window that pops up, you will see where you can specify <code style="background-color:whitesmoke;">Bitmask</code> options.
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
\image html hdfview-qf.png
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
Navigate back: \ref index "Main" / \ref GettingStarted / \ref ViewToolsCommand
|
||||||
|
|
||||||
|
*/
|
||||||
@@ -1,60 +1,51 @@
|
|||||||
/** \defgroup H5LR Extensions
|
/** \defgroup H5LR Extensions
|
||||||
*
|
*
|
||||||
* <em>Working with region references, hyperslab selections,
|
* <em>Working with region references, hyperslab selections,
|
||||||
* and bit-fields (H5LR, H5LT)</em>
|
* and bit-fields (H5LR, H5LT)</em>
|
||||||
*
|
*
|
||||||
* The following reference manual entries describe high-level HDF5 C and Fortran APIs
|
* The following reference manual entries describe high-level HDF5 C and Fortran APIs
|
||||||
* for working with region references, hyperslab selections, and bit-fields.
|
* for working with region references, hyperslab selections, and bit-fields.
|
||||||
* These functions were created as part of a project supporting
|
* These functions were created as part of a project supporting
|
||||||
* NPP/NPOESS Data Production and Exploitation (
|
* NPP/NPOESS Data Production and Exploitation (
|
||||||
* <a href="https://support.hdfgroup.org/projects/jpss/documentation">
|
* <a href="https://support.hdfgroup.org/projects/jpss/documentation">
|
||||||
* project </a>,
|
* project</a>, <a href="https://gamma.hdfgroup.org/ftp/pub/outgoing/NPOESS/source">
|
||||||
* <a href="https://gamma.hdfgroup.org/ftp/pub/outgoing/NPOESS/source">
|
* software </a>).
|
||||||
* software </a>).
|
* While they were written to facilitate access to NPP, NPOESS, and JPSS
|
||||||
* While they were written to facilitate access to NPP, NPOESS, and JPSS
|
* data in the HDF5 format, these functions may be useful to anyone working
|
||||||
* data in the HDF5 format, these functions may be useful to anyone working
|
|
||||||
* with region references, hyperslab selections, or bit-fields.
|
* with region references, hyperslab selections, or bit-fields.
|
||||||
*
|
*
|
||||||
* Note that these functions are not part of the standard HDF5 distribution;
|
* Note that these functions are not part of the standard HDF5 distribution;
|
||||||
* the
|
* the <a href="https://gamma.hdfgroup.org/ftp/pub/outgoing/NPOESS/source">
|
||||||
* <a href="https://gamma.hdfgroup.org/ftp/pub/outgoing/NPOESS/source">
|
* software </a>
|
||||||
* software </a>
|
|
||||||
* must be separately downloaded and installed.
|
* must be separately downloaded and installed.
|
||||||
*
|
*
|
||||||
* A comprehensive guide to this library,
|
* A comprehensive guide to this library,
|
||||||
* <a href="https://support.hdfgroup.org/projects/jpss/documentation/HL/UG/NPOESS_HL-UG.pdf">
|
* <a href="https://support.hdfgroup.org/projects/jpss/documentation/HL/UG/NPOESS_HL-UG.pdf">
|
||||||
* <em>User Guide to the HDF5 High-level Library for Handling Region References and Hyperslab Selections</em></a>
|
* <em>User Guide to the HDF5 High-level Library for Handling Region References and Hyperslab Selections</em></a>
|
||||||
* is available at
|
* is available at
|
||||||
* https://support.hdfgroup.org/projects/jpss/documentation/HL/UG/NPOESS_HL-UG.pdf.
|
* https://support.hdfgroup.org/projects/jpss/documentation/HL/UG/NPOESS_HL-UG.pdf.
|
||||||
*
|
*
|
||||||
* - \ref H5LRcopy_reference
|
* - \ref H5LRcopy_reference
|
||||||
* \n Copies data from the specified dataset to a new location and
|
* \n Copies data from the specified dataset to a new location and creates a reference to it.
|
||||||
* creates a reference to it.
|
|
||||||
* - \ref H5LRcopy_region
|
* - \ref H5LRcopy_region
|
||||||
* \n Copies data from a referenced region to a region in a
|
* \n Copies data from a referenced region to a region in a destination dataset.
|
||||||
* destination dataset.
|
|
||||||
* - \ref H5LRcreate_ref_to_all
|
* - \ref H5LRcreate_ref_to_all
|
||||||
* \n Creates a dataset with the region references to the data in all
|
* \n Creates a dataset with the region references to the data in all datasets located under a
|
||||||
* datasets located under a specified group in a file or creates a
|
* specified group in a file or creates a dataset with object references to all objects (groups or datasets)
|
||||||
* dataset with object references to all objects (groups or datasets)
|
|
||||||
* located under a specified group in a file.
|
* located under a specified group in a file.
|
||||||
* - \ref H5LRcreate_region_references
|
* - \ref H5LRcreate_region_references
|
||||||
* \n Creates an array of region references using an array of paths to
|
* \n Creates an array of region references using an array of paths to
|
||||||
* datasets and an array of corresponding hyperslab descriptions.
|
* datasets and an array of corresponding hyperslab descriptions.
|
||||||
* - \ref H5LRget_region_info
|
* - \ref H5LRget_region_info
|
||||||
* \n Retrieves information about the data a region reference points to.
|
* \n Retrieves information about the data a region reference points to.
|
||||||
* - \ref H5LRmake_dataset
|
* - \ref H5LRmake_dataset
|
||||||
* \n Creates and writes a dataset containing a list of
|
* \n Creates and writes a dataset containing a list of region references.
|
||||||
* region references.
|
|
||||||
* - \ref H5LRread_region
|
* - \ref H5LRread_region
|
||||||
* \n Retrieves raw data pointed to by a region reference to
|
* \n Retrieves raw data pointed to by a region reference to an application buffer.
|
||||||
* an application buffer.
|
|
||||||
* - \ref H5LTcopy_region
|
* - \ref H5LTcopy_region
|
||||||
* \n Copies data from a specified region in a source dataset
|
* \n Copies data from a specified region in a source dataset to a specified region in a destination dataset.
|
||||||
* to a specified region in a destination dataset.
|
|
||||||
* - \ref H5LTread_bitfield_value
|
* - \ref H5LTread_bitfield_value
|
||||||
* \n Retrieves the values of quality flags for each element
|
* \n Retrieves the values of quality flags for each element to the application provided buffer.
|
||||||
* to the application provided buffer.
|
|
||||||
* - \ref H5LTread_region
|
* - \ref H5LTread_region
|
||||||
* \n Reads selected data to an application buffer.
|
* \n Reads selected data to an application buffer.
|
||||||
*
|
*
|
||||||
@@ -77,24 +68,24 @@
|
|||||||
* \param[in] path Path to the dataset being created
|
* \param[in] path Path to the dataset being created
|
||||||
* \param[in] type_id Datatype of the dataset
|
* \param[in] type_id Datatype of the dataset
|
||||||
* \param[in] buf_size Size of the \p loc_id_ref and \p buf arrays
|
* \param[in] buf_size Size of the \p loc_id_ref and \p buf arrays
|
||||||
* \param[in] loc_id_ref Array of object identifiers; each identifier
|
* \param[in] loc_id_ref Array of object identifiers; each identifier
|
||||||
* describes to which HDF5 file the corresponding
|
* describes to which HDF5 file the corresponding
|
||||||
* region reference belongs to
|
* region reference belongs to
|
||||||
* \param[in] buf Array of region references
|
* \param[in] buf Array of region references
|
||||||
*
|
*
|
||||||
* \return \herr_t
|
* \return \herr_t
|
||||||
*
|
*
|
||||||
* \details Given an array of size \p buf_size of region references \p buf,
|
* \details Given an array of size \p buf_size of region references \p buf,
|
||||||
* the function will create a dataset with path \p path, at location
|
* the function will create a dataset with path \p path, at location
|
||||||
* specified by \p loc_id and of a datatype specified by \p type_id,
|
* specified by \p loc_id and of a datatype specified by \p type_id,
|
||||||
* and will write data associated with each region reference in the order
|
* and will write data associated with each region reference in the order
|
||||||
* corresponding to the order of the region references in the buffer.
|
* corresponding to the order of the region references in the buffer.
|
||||||
* It is assumed that all referenced hyperslabs have the same dimensionality,
|
* It is assumed that all referenced hyperslabs have the same dimensionality,
|
||||||
* and only the size of the slowest changing dimension may differ.
|
* and only the size of the slowest changing dimension may differ.
|
||||||
* Each reference in the \p buf array belongs to the file identified
|
* Each reference in the \p buf array belongs to the file identified
|
||||||
* by the corresponding object identifiers in the array \p loc_id_ref.
|
* by the corresponding object identifiers in the array \p loc_id_ref.
|
||||||
*
|
*
|
||||||
* If \p path does not exist in \p loc_id then the function will
|
* If \p path does not exist in \p loc_id then the function will
|
||||||
* create the path specified by \p path automatically.
|
* create the path specified by \p path automatically.
|
||||||
*
|
*
|
||||||
* \version 1.1 Fortran wrapper introduced in this release.
|
* \version 1.1 Fortran wrapper introduced in this release.
|
||||||
@@ -103,10 +94,10 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
H5_HLRDLL herr_t H5LRmake_dataset(hid_t loc_id,
|
H5_HLRDLL herr_t H5LRmake_dataset(hid_t loc_id,
|
||||||
const char *path,
|
const char *path,
|
||||||
hid_t type_id, const size_t buf_size,
|
hid_t type_id, const size_t buf_size,
|
||||||
const hid_t *loc_id_ref,
|
const hid_t *loc_id_ref,
|
||||||
const hdset_reg_ref_t *buf);
|
const hdset_reg_ref_t *buf);
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------
|
/*-------------------------------------------------------------------------
|
||||||
*
|
*
|
||||||
@@ -119,49 +110,46 @@ H5_HLRDLL herr_t H5LRmake_dataset(hid_t loc_id,
|
|||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
* \ingroup H5LR
|
* \ingroup H5LR
|
||||||
*
|
*
|
||||||
* \brief Creates an array of region references using an array of paths to
|
* \brief Creates an array of region references using an array of paths to
|
||||||
* datasets and an array of corresponding hyperslab descriptions.
|
* datasets and an array of corresponding hyperslab descriptions.
|
||||||
*
|
*
|
||||||
* \param[in] obj_id File identifier for the HDF5 file containing
|
* \param[in] obj_id File identifier for the HDF5 file containing
|
||||||
* the referenced regions or an object identifier
|
* the referenced regions or an object identifier
|
||||||
* for any object in that file
|
* for any object in that file
|
||||||
* \param[in] num_elem Number of elements in the \p path and
|
* \param[in] num_elem Number of elements in the \p path and \p buf arrays
|
||||||
* \p buf arrays
|
* \param[in] path Array of pointers to strings, which contain
|
||||||
* \param[in] path Array of pointers to strings, which contain
|
* the paths to the target datasets for the region references
|
||||||
* the paths to the target datasets for the
|
|
||||||
* region references
|
|
||||||
* \param[in] block_coord Array of hyperslab coordinate
|
* \param[in] block_coord Array of hyperslab coordinate
|
||||||
* \param[out] buf Buffer for returning an array of region
|
* \param[out] buf Buffer for returning an array of region references
|
||||||
* references
|
|
||||||
*
|
*
|
||||||
* \return \herr_t
|
* \return \herr_t
|
||||||
*
|
*
|
||||||
* \note **Motivation:**
|
* \note **Motivation:**
|
||||||
* \note H5LRcreate_region_references() is useful when creating
|
* \note H5LRcreate_region_references() is useful when creating
|
||||||
* large numbers of similar region references.
|
* large numbers of similar region references.
|
||||||
*
|
*
|
||||||
* \details H5LRcreate_region_references() creates a list of region references
|
* \details H5LRcreate_region_references() creates a list of region references
|
||||||
* given an array of paths to datasets and another array listing the
|
* given an array of paths to datasets and another array listing the
|
||||||
* corner coordinates of the corresponding hyperslabs.
|
* corner coordinates of the corresponding hyperslabs.
|
||||||
*
|
*
|
||||||
* \p path parameter is an array of pointers to strings.
|
* \p path parameter is an array of pointers to strings.
|
||||||
*
|
*
|
||||||
* \p num_elem specifies the number of region references to be created,
|
* \p num_elem specifies the number of region references to be created,
|
||||||
* thus specifying the size of the \p path and \p _buf arrays.
|
* thus specifying the size of the \p path and \p _buf arrays.
|
||||||
*
|
*
|
||||||
* Buffer \p block_coord has size 2*rank and is the coordinates of the
|
* Buffer \p block_coord has size 2*rank and is the coordinates of the
|
||||||
* starting point following by the coordinates of the ending point of
|
* starting point following by the coordinates of the ending point of
|
||||||
* the hyperslab, repeated \p num_elem times for each hyperslab.
|
* the hyperslab, repeated \p num_elem times for each hyperslab.
|
||||||
* For example, creating two region references to two hyperslabs,
|
* For example, creating two region references to two hyperslabs,
|
||||||
* one with a rectangular hyperslab region starting at element (2,2)
|
* one with a rectangular hyperslab region starting at element (2,2)
|
||||||
* to element (5,4) and the second rectangular region starting at
|
* to element (5,4) and the second rectangular region starting at
|
||||||
* element (7,7) to element (9,10), results in \p block_coord
|
* element (7,7) to element (9,10), results in \p block_coord
|
||||||
* being {2,2,5,4, 7,7,9,10}.
|
* being {2,2,5,4, 7,7,9,10}.
|
||||||
*
|
*
|
||||||
* The rank of the hyperslab will be the same as the rank of the
|
* The rank of the hyperslab will be the same as the rank of the
|
||||||
* target dataset. H5LRcreate_region_references() will retrieve
|
* target dataset. H5LRcreate_region_references() will retrieve
|
||||||
* the rank for each dataset and will use those values to interpret
|
* the rank for each dataset and will use those values to interpret
|
||||||
* the values in the buffer. Please note that rank may vary from one
|
* the values in the buffer. Please note that rank may vary from one
|
||||||
* dataset to another.
|
* dataset to another.
|
||||||
*
|
*
|
||||||
* \version 1.1 Fortran wrapper introduced in this release.
|
* \version 1.1 Fortran wrapper introduced in this release.
|
||||||
@@ -170,43 +158,39 @@ H5_HLRDLL herr_t H5LRmake_dataset(hid_t loc_id,
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
H5_HLRDLL herr_t H5LRcreate_region_references(hid_t obj_id,
|
H5_HLRDLL herr_t H5LRcreate_region_references(hid_t obj_id,
|
||||||
size_t num_elem,
|
size_t num_elem,
|
||||||
const char **path,
|
const char **path,
|
||||||
const hsize_t *block_coord,
|
const hsize_t *block_coord,
|
||||||
hdset_reg_ref_t *buf);
|
hdset_reg_ref_t *buf);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
* \ingroup H5LR
|
* \ingroup H5LR
|
||||||
*
|
*
|
||||||
* \brief Copies data from the specified dataset to a new location and
|
* \brief Copies data from the specified dataset to a new location and creates a reference to it.
|
||||||
* creates a reference to it.
|
|
||||||
*
|
*
|
||||||
* \param[in] obj_id Identifier of any object in a file an
|
* \param[in] obj_id Identifier of any object in a file an HDF5 reference belongs to
|
||||||
* HDF5 reference belongs to
|
|
||||||
* \param[in] ref Reference to the datasets region
|
* \param[in] ref Reference to the datasets region
|
||||||
* \param[in] file Name of the destination file
|
* \param[in] file Name of the destination file
|
||||||
* \param[in] path Full path to the destination dataset
|
* \param[in] path Full path to the destination dataset
|
||||||
* \param[in] block_coord Hyperslab coordinates in the destination
|
* \param[in] block_coord Hyperslab coordinates in the destination dataset
|
||||||
* dataset
|
* \param[out] ref_new Region reference to the new location of data
|
||||||
* \param[out] ref_new Region reference to the new location of
|
|
||||||
* data
|
|
||||||
*
|
*
|
||||||
* \return \herr_t
|
* \return \herr_t
|
||||||
*
|
*
|
||||||
* \details Given a data set pointed to by a region reference, the function
|
* \details Given a data set pointed to by a region reference, the function
|
||||||
* H5LRcopy_reference() will copy the hyperslab data referenced by
|
* H5LRcopy_reference() will copy the hyperslab data referenced by
|
||||||
* a datasets region reference into existing dataset specified by
|
* a datasets region reference into existing dataset specified by
|
||||||
* its path \p path in the file with the name \p file, and to location
|
* its path \p path in the file with the name \p file, and to location
|
||||||
* specified by the hyperslab coordinates \p block_coord. It will
|
* specified by the hyperslab coordinates \p block_coord. It will
|
||||||
* create the region reference \p ref_new to point to the new location.
|
* create the region reference \p ref_new to point to the new location.
|
||||||
* The number of elements in the old and newly specified regions has
|
* The number of elements in the old and newly specified regions has
|
||||||
* to be the same.
|
* to be the same.
|
||||||
*
|
*
|
||||||
* Buffer \p block_coord has size 2*rank and is the coordinates of
|
* Buffer \p block_coord has size 2*rank and is the coordinates of
|
||||||
* the starting point following by the coordinates of the ending
|
* the starting point following by the coordinates of the ending
|
||||||
* point of the hyperslab. For example, to extract a rectangular
|
* point of the hyperslab. For example, to extract a rectangular
|
||||||
* hyperslab region starting at element (2,2) to element (5,4)
|
* hyperslab region starting at element (2,2) to element (5,4)
|
||||||
* then \p block_coord would be {2, 2, 5, 4}.
|
* then \p block_coord would be {2, 2, 5, 4}.
|
||||||
*
|
*
|
||||||
* \version 1.1 Fortran wrapper introduced in this release.
|
* \version 1.1 Fortran wrapper introduced in this release.
|
||||||
@@ -215,41 +199,39 @@ H5_HLRDLL herr_t H5LRcreate_region_references(hid_t obj_id,
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
H5_HLRDLL herr_t H5LRcopy_reference(hid_t obj_id, hdset_reg_ref_t *ref, const char *file,
|
H5_HLRDLL herr_t H5LRcopy_reference(hid_t obj_id, hdset_reg_ref_t *ref, const char *file,
|
||||||
const char *path, const hsize_t *block_coord,
|
const char *path, const hsize_t *block_coord,
|
||||||
hdset_reg_ref_t *ref_new);
|
hdset_reg_ref_t *ref_new);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
* \ingroup H5LR
|
* \ingroup H5LR
|
||||||
*
|
*
|
||||||
* \brief Copies data from a referenced region to a region in a
|
* \brief Copies data from a referenced region to a region in a destination dataset.
|
||||||
* destination dataset.
|
|
||||||
*
|
*
|
||||||
* \param[in] obj_id Identifier of any object in a file
|
* \param[in] obj_id Identifier of any object in a file
|
||||||
* dataset region reference belongs to
|
* dataset region reference belongs to
|
||||||
* \param[in] ref Dataset region reference
|
* \param[in] ref Dataset region reference
|
||||||
* \param[in] file Name of the destination file
|
* \param[in] file Name of the destination file
|
||||||
* \param[in] path Full path to the destination dataset
|
* \param[in] path Full path to the destination dataset
|
||||||
* \param[in] block_coord Hyperslab coordinates in the destination
|
* \param[in] block_coord Hyperslab coordinates in the destination dataset
|
||||||
* dataset
|
|
||||||
*
|
*
|
||||||
* \return \herr_t
|
* \return \herr_t
|
||||||
*
|
*
|
||||||
* \details Given a dataset region reference \p ref in a source file
|
* \details Given a dataset region reference \p ref in a source file
|
||||||
* specified by an identifier of any object in that file
|
* specified by an identifier of any object in that file
|
||||||
* \p obj_id, the function will write data to the existing
|
* \p obj_id, the function will write data to the existing
|
||||||
* dataset \p path in file \p file to the simple hyperslab
|
* dataset \p path in file \p file to the simple hyperslab
|
||||||
* specified by \p block_coord.
|
* specified by \p block_coord.
|
||||||
*
|
*
|
||||||
* Buffer \p block_coord has size 2*rank and is the coordinates
|
* Buffer \p block_coord has size 2*rank and is the coordinates
|
||||||
* of the starting point following by the coordinates of the
|
* of the starting point following by the coordinates of the
|
||||||
* ending point of the hyperslab. For example, to specify a
|
* ending point of the hyperslab. For example, to specify a
|
||||||
* rectangular hyperslab destination region starting at element
|
* rectangular hyperslab destination region starting at element
|
||||||
* (2,2) to element (5,4) then \p block_coord would be {2, 2, 5, 4}.
|
* (2,2) to element (5,4) then \p block_coord would be {2, 2, 5, 4}.
|
||||||
*
|
*
|
||||||
* If \p path does not exist in the destination file (as may be
|
* If \p path does not exist in the destination file (as may be
|
||||||
* the case when writing to a new file) then the dataset will be
|
* the case when writing to a new file) then the dataset will be
|
||||||
* copied directly to the \p path and \p block_coord will be
|
* copied directly to the \p path and \p block_coord will be
|
||||||
* disregarded.
|
* disregarded.
|
||||||
*
|
*
|
||||||
* \version 1.1 Fortran wrapper introduced in this release.
|
* \version 1.1 Fortran wrapper introduced in this release.
|
||||||
@@ -258,71 +240,66 @@ H5_HLRDLL herr_t H5LRcopy_reference(hid_t obj_id, hdset_reg_ref_t *ref, const ch
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
H5_HLRDLL herr_t H5LRcopy_region(hid_t obj_id,
|
H5_HLRDLL herr_t H5LRcopy_region(hid_t obj_id,
|
||||||
hdset_reg_ref_t *ref,
|
hdset_reg_ref_t *ref,
|
||||||
const char *file,
|
const char *file,
|
||||||
const char *path,
|
const char *path,
|
||||||
const hsize_t *block_coord);
|
const hsize_t *block_coord);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
* \ingroup H5LR
|
* \ingroup H5LR
|
||||||
*
|
*
|
||||||
* \brief Creates a dataset with the region references to the data
|
* \brief Creates a dataset with the region references to the data
|
||||||
* in all datasets located under a specified group in a file
|
* in all datasets located under a specified group in a file
|
||||||
* or creates a dataset with object references to all objects
|
* or creates a dataset with object references to all objects
|
||||||
* (groups or datasets) located under a specified group in a file.
|
* (groups or datasets) located under a specified group in a file.
|
||||||
*
|
*
|
||||||
* \fg_loc_id
|
* \fg_loc_id
|
||||||
* \param[in] group_path Absolute or relative path to the group
|
* \param[in] group_path Absolute or relative path to the group at which traversal starts
|
||||||
* at which traversal starts
|
* \param[in] ds_path Absolute or relative path to the dataset with region references to be created
|
||||||
* \param[in] ds_path Absolute or relative path to the dataset
|
* \param[in] index_type Index_type; see valid values below in description
|
||||||
* with region references to be created
|
* \param[in] order Order in which index is traversed; see valid values below in description
|
||||||
* \param[in] index_type Index_type;
|
* \param[in] ref_type Reference type; see valid values below in description
|
||||||
* see valid values below in description
|
|
||||||
* \param[in] order Order in which index is traversed;
|
|
||||||
* see valid values below in description
|
|
||||||
* \param[in] ref_type Reference type;
|
|
||||||
* see valid values below in description
|
|
||||||
*
|
*
|
||||||
* \return \herr_t
|
* \return \herr_t
|
||||||
*
|
*
|
||||||
* \details H5LRcreate_ref_to_all() creates a dataset with the
|
* \details H5LRcreate_ref_to_all() creates a dataset with the
|
||||||
* region references to the data in all datasets located
|
* region references to the data in all datasets located
|
||||||
* under a specified group in a file or creates a dataset with
|
* under a specified group in a file or creates a dataset with
|
||||||
* object references to all objects (groups or datasets) located
|
* object references to all objects (groups or datasets) located
|
||||||
* under a specified group in a file.
|
* under a specified group in a file.
|
||||||
*
|
*
|
||||||
* Given a dataset path \p ds_path in a file specified by the
|
* Given a dataset path \p ds_path in a file specified by the
|
||||||
* \p loc_id identifier, the function H5LRcreate_ref_to_all()
|
* \p loc_id identifier, the function H5LRcreate_ref_to_all()
|
||||||
* will create a contiguous one-dimensional dataset with the
|
* will create a contiguous one-dimensional dataset with the
|
||||||
* region references or object references depending on the value
|
* region references or object references depending on the value
|
||||||
* of the \p ref_type parameter. When \p ref_type is
|
* of the \p ref_type parameter. When \p ref_type is
|
||||||
* #H5R_DATASET_REGION, each region reference points to all data
|
* #H5R_DATASET_REGION, each region reference points to all data
|
||||||
* in a dataset encountered by an internally called H5Lvisit()
|
* in a dataset encountered by an internally called H5Lvisit()
|
||||||
* routine, which starts at the group specified by the \p loc_id
|
* routine, which starts at the group specified by the \p loc_id
|
||||||
* and \p group_path parameters. In a like manner, when
|
* and \p group_path parameters. In a like manner, when
|
||||||
* \p ref_type is #H5R_OBJECT, each object reference points to
|
* \p ref_type is #H5R_OBJECT, each object reference points to
|
||||||
* an object (a group or a dataset) encountered by H5Lvisit().
|
* an object (a group or a dataset) encountered by H5Lvisit().
|
||||||
*
|
*
|
||||||
* If \p ds_path does not exist in \p loc_id then the function
|
* If \p ds_path does not exist in \p loc_id then the function
|
||||||
* will create the path specified by \p ds_path automatically.
|
* will create the path specified by \p ds_path automatically.
|
||||||
*
|
*
|
||||||
* \p index_type specifies the index to be used.
|
* \p index_type specifies the index to be used.
|
||||||
* Valid values include the following:
|
* Valid values include the following:
|
||||||
* - #H5_INDEX_NAME Alphanumeric index on name
|
* - #H5_INDEX_NAME Alphanumeric index on name
|
||||||
* - #H5_INDEX_CRT_ORDER Index on creation order
|
* - #H5_INDEX_CRT_ORDER Index on creation order
|
||||||
*
|
*
|
||||||
* \p order specifies the order in which objects are to be
|
* \p order specifies the order in which objects are to be
|
||||||
* inspected along the index specified in \p index_type.
|
* inspected along the index specified in \p index_type.
|
||||||
* Valid values include the following:
|
* Valid values include the following:
|
||||||
* - #H5_ITER_INC Increasing order
|
* - #H5_ITER_INC Increasing order
|
||||||
* - #H5_ITER_DEC Decreasing order
|
* - #H5_ITER_DEC Decreasing order
|
||||||
* - #H5_ITER_NATIVE Fastest available order
|
* - #H5_ITER_NATIVE Fastest available order
|
||||||
*
|
*
|
||||||
* For more detailed information on these two parameters,
|
* For more detailed information on these two parameters,
|
||||||
* see H5Lvisit().
|
* @see H5Lvisit().
|
||||||
*
|
*
|
||||||
* \p ref_type specifies the type of the reference to be used.
|
* \p ref_type specifies the type of the reference to be used.
|
||||||
* Valid values include the following:
|
* Valid values include the following:
|
||||||
* - #H5R_DATASET_REGION Dataset region reference
|
* - #H5R_DATASET_REGION Dataset region reference
|
||||||
* - #H5R_OBJECT Object reference
|
* - #H5R_OBJECT Object reference
|
||||||
@@ -333,7 +310,7 @@ H5_HLRDLL herr_t H5LRcopy_region(hid_t obj_id,
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
H5_HLRDLL herr_t H5LRcreate_ref_to_all(hid_t loc_id, const char *group_path,
|
H5_HLRDLL herr_t H5LRcreate_ref_to_all(hid_t loc_id, const char *group_path,
|
||||||
const char *ds_path, H5_index_t index_type, H5_iter_order_t order, H5R_type_t ref_type);
|
const char *ds_path, H5_index_t index_type, H5_iter_order_t order, H5R_type_t ref_type);
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------
|
/*-------------------------------------------------------------------------
|
||||||
*
|
*
|
||||||
@@ -352,30 +329,27 @@ H5_HLRDLL herr_t H5LRcreate_ref_to_all(hid_t loc_id, const char *group_path,
|
|||||||
* \param[in] obj_id File identifier for the HDF5 file containing
|
* \param[in] obj_id File identifier for the HDF5 file containing
|
||||||
* the dataset with the referenced region or an
|
* the dataset with the referenced region or an
|
||||||
* object identifier for any object in that file
|
* object identifier for any object in that file
|
||||||
* \param[in] ref Region reference specifying data to be read
|
* \param[in] ref Region reference specifying data to be read in
|
||||||
* in
|
* \param[in] mem_type Memory datatype of data read from referenced
|
||||||
* \param[in] mem_type Memory datatype of data read from referenced
|
|
||||||
* region into the application buffer
|
* region into the application buffer
|
||||||
* \param[in,out] numelem Number of elements to be read into buffer
|
* \param[in,out] numelem Number of elements to be read into buffer \p buf
|
||||||
* \p buf
|
* \param[out] buf Buffer in which data is returned to the application
|
||||||
* \param[out] buf Buffer in which data is returned to the
|
|
||||||
* application
|
|
||||||
*
|
*
|
||||||
* \return \herr_t
|
* \return \herr_t
|
||||||
*
|
*
|
||||||
* \details H5LRread_region() reads data pointed to by the region
|
* \details H5LRread_region() reads data pointed to by the region
|
||||||
* reference \p ref into the buffer \p buf.
|
* reference \p ref into the buffer \p buf.
|
||||||
*
|
*
|
||||||
* \p numelem specifies the number of elements to be read
|
* \p numelem specifies the number of elements to be read
|
||||||
* into \p buf. When the size of the reference region is unknown,
|
* into \p buf. When the size of the reference region is unknown,
|
||||||
* H5LRread_region() can be called with \p buf set to NULL;
|
* H5LRread_region() can be called with \p buf set to NULL;
|
||||||
* the number of elements in the referenced region will be returned
|
* the number of elements in the referenced region will be returned
|
||||||
* in \p numelem.
|
* in \p numelem.
|
||||||
*
|
*
|
||||||
* The buffer buf must be big enough to hold \p numelem elements
|
* The buffer buf must be big enough to hold \p numelem elements
|
||||||
* of type \p mem_type. For example, if data is read from the referenced
|
* of type \p mem_type. For example, if data is read from the referenced
|
||||||
* region into an integer buffer, \p mem_type should be #H5T_NATIVE_INT
|
* region into an integer buffer, \p mem_type should be #H5T_NATIVE_INT
|
||||||
* and the buffer must be at least \c sizeof(int) * \p numelem bytes
|
* and the buffer must be at least \c sizeof(int) * \p numelem bytes
|
||||||
* in size. This buffer must be allocated by the application.
|
* in size. This buffer must be allocated by the application.
|
||||||
*
|
*
|
||||||
* \version 1.1 Fortran wrapper introduced in this release.
|
* \version 1.1 Fortran wrapper introduced in this release.
|
||||||
@@ -384,10 +358,10 @@ H5_HLRDLL herr_t H5LRcreate_ref_to_all(hid_t loc_id, const char *group_path,
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
H5_HLRDLL herr_t H5LRread_region(hid_t obj_id,
|
H5_HLRDLL herr_t H5LRread_region(hid_t obj_id,
|
||||||
const hdset_reg_ref_t *ref,
|
const hdset_reg_ref_t *ref,
|
||||||
hid_t mem_type,
|
hid_t mem_type,
|
||||||
size_t *numelem,
|
size_t *numelem,
|
||||||
void *buf );
|
void *buf );
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------
|
/*-------------------------------------------------------------------------
|
||||||
*
|
*
|
||||||
@@ -400,40 +374,33 @@ H5_HLRDLL herr_t H5LRread_region(hid_t obj_id,
|
|||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
* \ingroup H5LR
|
* \ingroup H5LR
|
||||||
*
|
*
|
||||||
* \brief Retrieves information about the data a region reference
|
* \brief Retrieves information about the data a region reference points to.
|
||||||
* points to.
|
|
||||||
*
|
*
|
||||||
* \param[in] obj_id Identifier of any object in an HDF5 file
|
* \param[in] obj_id Identifier of any object in an HDF5 file the region reference belongs to.
|
||||||
* the region reference belongs to.
|
|
||||||
* \param[in] ref Region reference to query
|
* \param[in] ref Region reference to query
|
||||||
* \param[in,out] len Size of the buffer to store \p path in.
|
* \param[in,out] len Size of the buffer to store \p path in.
|
||||||
* NOTE: if \p *path is not NULL then \p *len
|
* NOTE: if \p *path is not NULL then \p *len must be the appropriate length
|
||||||
* must be the appropriate length
|
|
||||||
* \param[out] path Full path that a region reference points to
|
* \param[out] path Full path that a region reference points to
|
||||||
* \param[out] rank The number of dimensions of the dataset
|
* \param[out] rank The number of dimensions of the dataset
|
||||||
* dimensions of the dataset pointed by
|
* dimensions of the dataset pointed by region reference.
|
||||||
* region reference.
|
* \param[out] dtype Datatype of the dataset pointed by the region reference.
|
||||||
* \param[out] dtype Datatype of the dataset pointed by the
|
|
||||||
* region reference.
|
|
||||||
* \param[out] sel_type Type of the selection (point or hyperslab)
|
* \param[out] sel_type Type of the selection (point or hyperslab)
|
||||||
* \param[in,out] numelem Number of coordinate blocks or
|
* \param[in,out] numelem Number of coordinate blocks or selected elements.
|
||||||
* selected elements.
|
* \param[out] buf Buffer containing description of the region pointed by region reference
|
||||||
* \param[out] buf Buffer containing description of the region
|
|
||||||
* pointed by region reference
|
|
||||||
*
|
*
|
||||||
* \return \herr_t
|
* \return \herr_t
|
||||||
*
|
*
|
||||||
* \details H5LRget_region_info() queries information about the data
|
* \details H5LRget_region_info() queries information about the data
|
||||||
* pointed by a region reference \p ref. It returns one of the
|
* pointed by a region reference \p ref. It returns one of the
|
||||||
* absolute paths to a dataset, length of the path, dataset’s rank
|
* absolute paths to a dataset, length of the path, dataset’s rank
|
||||||
* and datatype, description of the referenced region and type of
|
* and datatype, description of the referenced region and type of
|
||||||
* the referenced region. Any output argument can be NULL if that
|
* the referenced region. Any output argument can be NULL if that
|
||||||
* argument does not need to be returned.
|
* argument does not need to be returned.
|
||||||
*
|
*
|
||||||
* The parameter \p obj_id is an identifier for any object in the
|
* The parameter \p obj_id is an identifier for any object in the
|
||||||
* HDF5 file containing the referenced object. For example, it can
|
* HDF5 file containing the referenced object. For example, it can
|
||||||
* be an identifier of a dataset the region reference belongs to
|
* be an identifier of a dataset the region reference belongs to
|
||||||
* or an identifier of an HDF5 file the dataset with region references
|
* or an identifier of an HDF5 file the dataset with region references
|
||||||
* is stored in.
|
* is stored in.
|
||||||
*
|
*
|
||||||
* The parameter \p ref is a region reference to query.
|
* The parameter \p ref is a region reference to query.
|
||||||
@@ -442,36 +409,36 @@ H5_HLRDLL herr_t H5LRread_region(hid_t obj_id,
|
|||||||
* buffer of size \p len+1 to return an absolute path to a dataset
|
* buffer of size \p len+1 to return an absolute path to a dataset
|
||||||
* the region reference points to.
|
* the region reference points to.
|
||||||
*
|
*
|
||||||
* The parameter \p len is a length of absolute path string plus
|
* The parameter \p len is a length of absolute path string plus
|
||||||
* the \0 string terminator. If path parameter is NULL, actual
|
* the \0 string terminator. If path parameter is NULL, actual
|
||||||
* length of the path (+1 for \0 string terminator) is returned to
|
* length of the path (+1 for \0 string terminator) is returned to
|
||||||
* application and can be used to allocate buffer path of an
|
* application and can be used to allocate buffer path of an
|
||||||
* appropriate length \p len.
|
* appropriate length \p len.
|
||||||
*
|
*
|
||||||
* The parameter \p sel_type describes the type of the selected
|
* The parameter \p sel_type describes the type of the selected
|
||||||
* region. Possible values can be #H5S_SEL_POINTS for point
|
* region. Possible values can be #H5S_SEL_POINTS for point
|
||||||
* selection and #H5S_SEL_HYPERSLABS for hyperslab selection.
|
* selection and #H5S_SEL_HYPERSLABS for hyperslab selection.
|
||||||
*
|
*
|
||||||
* The parameter \p numelem describes how many elements will be
|
* The parameter \p numelem describes how many elements will be
|
||||||
* placed in the buffer \p buf. The number should be interpreted
|
* placed in the buffer \p buf. The number should be interpreted
|
||||||
* using the value of \p sel_type.
|
* using the value of \p sel_type.
|
||||||
*
|
*
|
||||||
* If value of \p sel_type is #H5S_SEL_HYPERSLABS, the parameter
|
* If value of \p sel_type is #H5S_SEL_HYPERSLABS, the parameter
|
||||||
* \p buf contains \p numelem blocks of the coordinates for each
|
* \p buf contains \p numelem blocks of the coordinates for each
|
||||||
* simple hyperslab of the referenced region. Each block has
|
* simple hyperslab of the referenced region. Each block has
|
||||||
* length \c 2*\p rank and is organized as follows: <"start" coordinate>,
|
* length \c 2*\p rank and is organized as follows: <"start" coordinate>,
|
||||||
* immediately followed by <"opposite" corner coordinate>.
|
* immediately followed by <"opposite" corner coordinate>.
|
||||||
* The total size of the buffer to hold the description of the
|
* The total size of the buffer to hold the description of the
|
||||||
* region will be \c 2*\p rank*\p numelem. If region reference
|
* region will be \c 2*\p rank*\p numelem. If region reference
|
||||||
* points to a contiguous sub-array, then the value of \p numelem
|
* points to a contiguous sub-array, then the value of \p numelem
|
||||||
* is 1 and the block contains coordinates of the upper left and
|
* is 1 and the block contains coordinates of the upper left and
|
||||||
* lower right corners of the sub-array (or simple hyperslab).
|
* lower right corners of the sub-array (or simple hyperslab).
|
||||||
*
|
*
|
||||||
* If value of \p sel_type is #H5S_SEL_POINTS, the parameter \p buf
|
* If value of \p sel_type is #H5S_SEL_POINTS, the parameter \p buf
|
||||||
* contains \p numelem blocks of the coordinates for each selected
|
* contains \p numelem blocks of the coordinates for each selected
|
||||||
* point of the referenced region. Each block has length \p rank
|
* point of the referenced region. Each block has length \p rank
|
||||||
* and contains coordinates of the element. The total size of the
|
* and contains coordinates of the element. The total size of the
|
||||||
* buffer to hold the description of the region will be
|
* buffer to hold the description of the region will be
|
||||||
* \p rank* \p numelem.
|
* \p rank* \p numelem.
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
@@ -481,14 +448,14 @@ H5_HLRDLL herr_t H5LRread_region(hid_t obj_id,
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
H5_HLRDLL herr_t H5LRget_region_info(hid_t obj_id,
|
H5_HLRDLL herr_t H5LRget_region_info(hid_t obj_id,
|
||||||
const hdset_reg_ref_t *ref,
|
const hdset_reg_ref_t *ref,
|
||||||
size_t *len,
|
size_t *len,
|
||||||
char *path,
|
char *path,
|
||||||
int *rank,
|
int *rank,
|
||||||
hid_t *dtype,
|
hid_t *dtype,
|
||||||
H5S_sel_type *sel_type,
|
H5S_sel_type *sel_type,
|
||||||
size_t *numelem,
|
size_t *numelem,
|
||||||
hsize_t *buf );
|
hsize_t *buf );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -503,35 +470,33 @@ H5_HLRDLL herr_t H5LRget_region_info(hid_t obj_id,
|
|||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
* \ingroup H5LR
|
* \ingroup H5LR
|
||||||
*
|
*
|
||||||
* \brief Copies data from a specified region in a source dataset
|
* \brief Copies data from a specified region in a source dataset
|
||||||
* to a specified region in a destination dataset
|
* to a specified region in a destination dataset
|
||||||
*
|
*
|
||||||
* \param[in] file_src Name of the source file
|
* \param[in] file_src Name of the source file
|
||||||
* \param[in] path_src Full path to the source dataset
|
* \param[in] path_src Full path to the source dataset
|
||||||
* \param[in] block_coord_src Hyperslab coordinates in the
|
* \param[in] block_coord_src Hyperslab coordinates in the source dataset
|
||||||
* source dataset
|
|
||||||
* \param[in] file_dest Name of the destination file
|
* \param[in] file_dest Name of the destination file
|
||||||
* \param[in] path_dest Full path to the destination dataset
|
* \param[in] path_dest Full path to the destination dataset
|
||||||
* \param[in] block_coord_dset Hyperslab coordinates in the
|
* \param[in] block_coord_dset Hyperslab coordinates in the destination dataset
|
||||||
* destination dataset
|
|
||||||
*
|
*
|
||||||
* \return \herr_t
|
* \return \herr_t
|
||||||
*
|
*
|
||||||
* \details Given a path to a dataset \p path_src in a file with the
|
* \details Given a path to a dataset \p path_src in a file with the
|
||||||
* name \p file_src, and description of a simple hyperslab of
|
* name \p file_src, and description of a simple hyperslab of
|
||||||
* the source \p block_coord_src, the function will write data
|
* the source \p block_coord_src, the function will write data
|
||||||
* to the dataset \p path_dest in file \p file_dest to the
|
* to the dataset \p path_dest in file \p file_dest to the
|
||||||
* simple hyperslab specified by \p block_coord_dset.
|
* simple hyperslab specified by \p block_coord_dset.
|
||||||
* The arrays \p block_coord_src and \p block_coord_dset have
|
* The arrays \p block_coord_src and \p block_coord_dset have
|
||||||
* a length of 2*rank and are the coordinates of the starting
|
* a length of 2*rank and are the coordinates of the starting
|
||||||
* point following by the coordinates of the ending point of the
|
* point following by the coordinates of the ending point of the
|
||||||
* hyperslab. For example, to specify a rectangular hyperslab
|
* hyperslab. For example, to specify a rectangular hyperslab
|
||||||
* destination region starting at element (2,2) to element (5,4)
|
* destination region starting at element (2,2) to element (5,4)
|
||||||
* then \p block_coord_dset would be {2, 2, 5, 4}.
|
* then \p block_coord_dset would be {2, 2, 5, 4}.
|
||||||
*
|
*
|
||||||
* If \p path_dest does not exist in the destination file
|
* If \p path_dest does not exist in the destination file
|
||||||
* (as may be the case when writing to a new file) then the
|
* (as may be the case when writing to a new file) then the
|
||||||
* dataset will be copied directly to the \p path_dest and
|
* dataset will be copied directly to the \p path_dest and
|
||||||
* \p block_coord_dset will be disregarded.
|
* \p block_coord_dset will be disregarded.
|
||||||
*
|
*
|
||||||
* \version 1.1 Fortran wrapper introduced in this release.
|
* \version 1.1 Fortran wrapper introduced in this release.
|
||||||
@@ -540,11 +505,11 @@ H5_HLRDLL herr_t H5LRget_region_info(hid_t obj_id,
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
H5_HLRDLL herr_t H5LTcopy_region(const char *file_src,
|
H5_HLRDLL herr_t H5LTcopy_region(const char *file_src,
|
||||||
const char *path_src,
|
const char *path_src,
|
||||||
const hsize_t *block_coord_src,
|
const hsize_t *block_coord_src,
|
||||||
const char *file_dest,
|
const char *file_dest,
|
||||||
const char *path_dest,
|
const char *path_dest,
|
||||||
const hsize_t *block_coord_dset);
|
const hsize_t *block_coord_dset);
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------
|
/*-------------------------------------------------------------------------
|
||||||
*
|
*
|
||||||
@@ -562,27 +527,25 @@ H5_HLRDLL herr_t H5LTcopy_region(const char *file_src,
|
|||||||
* \param[in] file Name of file
|
* \param[in] file Name of file
|
||||||
* \param[in] path Full path to a dataset
|
* \param[in] path Full path to a dataset
|
||||||
* \param[in] block_coord Hyperslab coordinates
|
* \param[in] block_coord Hyperslab coordinates
|
||||||
* \param[in] mem_type Memory datatype, describing the buffer
|
* \param[in] mem_type Memory datatype, describing the buffer the referenced data will be read into
|
||||||
* the referenced data will be read into
|
* \param[out] buf Buffer containing data from the referenced region
|
||||||
* \param[out] buf Buffer containing data from the
|
|
||||||
* referenced region
|
|
||||||
*
|
*
|
||||||
* \return \herr_t
|
* \return \herr_t
|
||||||
*
|
*
|
||||||
* \details H5LTread_region() reads data from a region described by
|
* \details H5LTread_region() reads data from a region described by
|
||||||
* the hyperslab coordinates in \p block_coord, located in
|
* the hyperslab coordinates in \p block_coord, located in
|
||||||
* the dataset specified by its absolute path \p path in a
|
* the dataset specified by its absolute path \p path in a
|
||||||
* file specified by its name \p file. Data is read into a
|
* file specified by its name \p file. Data is read into a
|
||||||
* buffer \p buf of the datatype that corresponds to the
|
* buffer \p buf of the datatype that corresponds to the
|
||||||
* HDF5 datatype specified by \p mem_type.
|
* HDF5 datatype specified by \p mem_type.
|
||||||
*
|
*
|
||||||
* Buffer \p block_coord has size 2*rank and is the coordinates
|
* Buffer \p block_coord has size 2*rank and is the coordinates
|
||||||
* of the starting point following by the coordinates of the
|
* of the starting point following by the coordinates of the
|
||||||
* ending point of the hyperslab. For example, to extract a
|
* ending point of the hyperslab. For example, to extract a
|
||||||
* rectangular hyperslab region starting at element (2,2) to
|
* rectangular hyperslab region starting at element (2,2) to
|
||||||
* element (5,4) then \p block_coord would be {2, 2, 5, 4}.
|
* element (5,4) then \p block_coord would be {2, 2, 5, 4}.
|
||||||
*
|
*
|
||||||
* Buffer \p buf should be big enough to hold selected elements
|
* Buffer \p buf should be big enough to hold selected elements
|
||||||
* of the type that corresponds to the \p mem_type
|
* of the type that corresponds to the \p mem_type
|
||||||
*
|
*
|
||||||
* \version 1.1 Fortran wrapper introduced in this release.
|
* \version 1.1 Fortran wrapper introduced in this release.
|
||||||
@@ -591,57 +554,55 @@ H5_HLRDLL herr_t H5LTcopy_region(const char *file_src,
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
H5_HLRDLL herr_t H5LTread_region(const char *file,
|
H5_HLRDLL herr_t H5LTread_region(const char *file,
|
||||||
const char *path,
|
const char *path,
|
||||||
const hsize_t *block_coord,
|
const hsize_t *block_coord,
|
||||||
hid_t mem_type,
|
hid_t mem_type,
|
||||||
void *buf );
|
void *buf );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
* \ingroup H5LR
|
* \ingroup H5LR
|
||||||
*
|
*
|
||||||
* \brief Retrieves the values of quality flags for each element
|
* \brief Retrieves the values of quality flags for each element
|
||||||
* to the application provided buffer.
|
* to the application provided buffer.
|
||||||
*
|
*
|
||||||
* \param[in] dset_id Identifier of the dataset with bit-field values
|
* \param[in] dset_id Identifier of the dataset with bit-field values
|
||||||
* \param[in] num_values Number of the values to be extracted
|
* \param[in] num_values Number of the values to be extracted
|
||||||
* \param[in] offset Array of staring bits to be extracted from
|
* \param[in] offset Array of staring bits to be extracted from
|
||||||
* the element; valid values: 0 (zero) through 7
|
* the element; valid values: 0 (zero) through 7
|
||||||
* \param[in] lengths Array of the number of bits to be extracted
|
* \param[in] lengths Array of the number of bits to be extracted for each value
|
||||||
* for each value
|
* \param[in] space Dataspace identifier, describing the elements
|
||||||
* \param[in] space Dataspace identifier, describing the elements
|
* to be read from the dataset with bit-field values
|
||||||
* to be read from the dataset with bit-field
|
|
||||||
* values
|
|
||||||
* \param[out] buf Buffer to read the values in
|
* \param[out] buf Buffer to read the values in
|
||||||
*
|
*
|
||||||
* \return \herr_t
|
* \return \herr_t
|
||||||
*
|
*
|
||||||
* \details H5LTread_bitfield_value() reads selected elements from a
|
* \details H5LTread_bitfield_value() reads selected elements from a
|
||||||
* dataset specified by its identifier \p dset_id, and unpacks
|
* dataset specified by its identifier \p dset_id, and unpacks
|
||||||
* the bit-field values to a buffer \p buf.
|
* the bit-field values to a buffer \p buf.
|
||||||
*
|
*
|
||||||
* The parameter \p space is a space identifier that indicates
|
* The parameter \p space is a space identifier that indicates
|
||||||
* which elements of the dataset should be read.
|
* which elements of the dataset should be read.
|
||||||
*
|
*
|
||||||
* The parameter \p offset is an array of length \p num_values;
|
* The parameter \p offset is an array of length \p num_values;
|
||||||
* the i<sup>th</sup> element of the array holds the value of the
|
* the i<sup>th</sup> element of the array holds the value of the
|
||||||
* starting bit of the i<sup>th</sup> bit-field value.
|
* starting bit of the i<sup>th</sup> bit-field value.
|
||||||
* Valid values are: 0 (zero) through 7.
|
* Valid values are: 0 (zero) through 7.
|
||||||
*
|
*
|
||||||
* The parameter \p lengths is an array of length \p num_values;
|
* The parameter \p lengths is an array of length \p num_values;
|
||||||
* the i<sup>th</sup> element of the array holds the number of
|
* the i<sup>th</sup> element of the array holds the number of
|
||||||
* bits to be extracted for the i<sup>th</sup> bit-field value.
|
* bits to be extracted for the i<sup>th</sup> bit-field value.
|
||||||
* Extracted bits will be interpreted as a base-2 integer value.
|
* Extracted bits will be interpreted as a base-2 integer value.
|
||||||
* Each value will be converted to the base-10 integer value and
|
* Each value will be converted to the base-10 integer value and
|
||||||
* stored in the application buffer.
|
* stored in the application buffer.
|
||||||
*
|
*
|
||||||
* Buffer \p buf is allocated by the application and should be big
|
* Buffer \p buf is allocated by the application and should be big
|
||||||
* enough to hold \c num_sel_elem * \p num_values elements of the
|
* enough to hold \c num_sel_elem * \p num_values elements of the
|
||||||
* specified type, where \c num_sel_elem is a number of the elements
|
* specified type, where \c num_sel_elem is a number of the elements
|
||||||
* to be read from the dataset. Data in the buffer is organized
|
* to be read from the dataset. Data in the buffer is organized
|
||||||
* as \p num_values values for the first element, followed by the
|
* as \p num_values values for the first element, followed by the
|
||||||
* \p num_values values for the second element, ... , followed by
|
* \p num_values values for the second element, ... , followed by
|
||||||
* the \p num_values values for the
|
* the \p num_values values for the
|
||||||
* \c num_selected_elem<sup>th</sup> element.
|
* \c num_selected_elem<sup>th</sup> element.
|
||||||
*
|
*
|
||||||
* \version 1.1 Fortran wrapper introduced in this release.
|
* \version 1.1 Fortran wrapper introduced in this release.
|
||||||
@@ -650,5 +611,5 @@ H5_HLRDLL herr_t H5LTread_region(const char *file,
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
H5_HLRDLL herr_t H5LTread_bitfield_value(hid_t dset_id, int num_values, const unsigned *offset,
|
H5_HLRDLL herr_t H5LTread_bitfield_value(hid_t dset_id, int num_values, const unsigned *offset,
|
||||||
const unsigned *lengths, hid_t space, int *buf);
|
const unsigned *lengths, hid_t space, int *buf);
|
||||||
|
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
/** \page high_level High-level library
|
|
||||||
* The high-level HDF5 library includes several sets of convenience and standard-use APIs to
|
|
||||||
* facilitate common HDF5 operations.
|
|
||||||
*
|
|
||||||
* <ul>
|
|
||||||
* <li>\ref H5LT "Lite (H5LT, H5LD)"
|
|
||||||
* \n
|
|
||||||
* Functions to simplify creating and manipulating datasets, attributes and other features
|
|
||||||
* <li>\ref H5IM "Image (H5IM)"
|
|
||||||
* \n
|
|
||||||
* Creating and manipulating HDF5 datasets intended to be interpreted as images
|
|
||||||
* <li>\ref H5TB "Table (H5TB)"
|
|
||||||
* \n
|
|
||||||
* Creating and manipulating HDF5 datasets intended to be interpreted as tables
|
|
||||||
* <li>\ref H5PT "Packet Table (H5PT)"
|
|
||||||
* \n
|
|
||||||
* Creating and manipulating HDF5 datasets to support append- and read-only operations on table data
|
|
||||||
* <li>\ref H5DS "Dimension Scale (H5DS)"
|
|
||||||
* \n
|
|
||||||
* Creating and manipulating HDF5 datasets that are associated with the dimension of another HDF5 dataset
|
|
||||||
* <li>\ref H5DO "Optimizations (H5DO)"
|
|
||||||
* \n
|
|
||||||
* Bypassing default HDF5 behavior in order to optimize for specific use cases
|
|
||||||
* <li>\ref H5LR "Extensions (H5LR, H5LT)"
|
|
||||||
* \n
|
|
||||||
* Working with region references, hyperslab selections, and bit-fields
|
|
||||||
* </ul>
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
@@ -96,4 +96,4 @@ the <a href="https://www.oreilly.com/library/view/97-things-every/9780596809515/
|
|||||||
* \version 1.MAJOR.MINOR Function was deprecated in this release
|
* \version 1.MAJOR.MINOR Function was deprecated in this release
|
||||||
\endverbatim
|
\endverbatim
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -139,7 +139,7 @@
|
|||||||
|
|
||||||
<p>This document describes the lower-level data objects;
|
<p>This document describes the lower-level data objects;
|
||||||
the higher-level objects and their properties are described
|
the higher-level objects and their properties are described
|
||||||
in the <a href="H5.user.html"><cite>HDF5 User's Guide</cite></a>.
|
in the <a href="H5.user.html"><cite>HDF5 User Guide</cite></a>.
|
||||||
|
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
|
|||||||
@@ -172,7 +172,7 @@ TABLE.list TD { border:none; }
|
|||||||
|
|
||||||
<p>This document describes the lower-level data objects;
|
<p>This document describes the lower-level data objects;
|
||||||
the higher-level objects and their properties are described
|
the higher-level objects and their properties are described
|
||||||
in the <a href="H5.user.html"><cite>HDF5 User's Guide</cite></a>.
|
in the <a href="H5.user.html"><cite>HDF5 User Guide</cite></a>.
|
||||||
|
|
||||||
<P>Three levels of information comprise the file format.
|
<P>Three levels of information comprise the file format.
|
||||||
Level 0 contains basic information for identifying and
|
Level 0 contains basic information for identifying and
|
||||||
|
|||||||
@@ -418,7 +418,7 @@
|
|||||||
|
|
||||||
<p>This document describes the lower-level data objects;
|
<p>This document describes the lower-level data objects;
|
||||||
the higher-level objects and their properties are described
|
the higher-level objects and their properties are described
|
||||||
in the <a href="UG/HDF5_Users_Guide-Responsive HTML5/index.html"><cite>HDF5 User’s Guide</cite></a>.</p>
|
in the <a href="UG/HDF5_User_Guide-Responsive HTML5/index.html"><cite>HDF5 User Guide</cite></a>.</p>
|
||||||
|
|
||||||
<p>Three levels of information comprise the file format.
|
<p>Three levels of information comprise the file format.
|
||||||
Level 0 contains basic information for identifying and
|
Level 0 contains basic information for identifying and
|
||||||
|
|||||||
@@ -20,9 +20,9 @@ The following code is placed at the beginning of H5private.h:
|
|||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<code>H5_HAVE_THREADSAFE</code> is defined when the HDF-5 library is
|
<code>H5_HAVE_THREADSAFE</code> is defined when the HDF5 library is
|
||||||
compiled with the --enable-threadsafe configuration option. In general,
|
compiled with the --enable-threadsafe configuration option. In general,
|
||||||
code for the non-threadsafe version of HDF-5 library are placed within
|
code for the non-threadsafe version of HDF5 library are placed within
|
||||||
the <code>#else</code> part of the conditional compilation. The exception
|
the <code>#else</code> part of the conditional compilation. The exception
|
||||||
to this rule are the changes to the <code>FUNC_ENTER</code> (in
|
to this rule are the changes to the <code>FUNC_ENTER</code> (in
|
||||||
H5private.h), <code>HRETURN</code> and <code>HRETURN_ERROR</code> (in
|
H5private.h), <code>HRETURN</code> and <code>HRETURN_ERROR</code> (in
|
||||||
@@ -438,7 +438,7 @@ described in Appendix D and may be found in <code>H5TS.c</code>.
|
|||||||
|
|
||||||
<p>
|
<p>
|
||||||
Except where stated, all tests involve 16 simultaneous threads that make
|
Except where stated, all tests involve 16 simultaneous threads that make
|
||||||
use of HDF-5 API calls without any explicit synchronization typically
|
use of HDF5 API calls without any explicit synchronization typically
|
||||||
required in a non-threadsafe environment.
|
required in a non-threadsafe environment.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@@ -453,7 +453,7 @@ dataset's named value.
|
|||||||
|
|
||||||
<p>
|
<p>
|
||||||
The main thread would join with all 16 threads and attempt to match the
|
The main thread would join with all 16 threads and attempt to match the
|
||||||
resulting HDF-5 file with expected results - that each dataset contains
|
resulting HDF5 file with expected results - that each dataset contains
|
||||||
the correct value (0 for <i>zero</i>, 1 for <i>one</i> etc ...) and all
|
the correct value (0 for <i>zero</i>, 1 for <i>one</i> etc ...) and all
|
||||||
datasets were correctly created.
|
datasets were correctly created.
|
||||||
</p>
|
</p>
|
||||||
@@ -473,7 +473,7 @@ name.
|
|||||||
|
|
||||||
<p>
|
<p>
|
||||||
The error stack implementation runs correctly if it reports 15 instances
|
The error stack implementation runs correctly if it reports 15 instances
|
||||||
of the dataset name conflict error and finally generates a correct HDF-5
|
of the dataset name conflict error and finally generates a correct HDF5
|
||||||
containing that single dataset. Each thread should report its own stack
|
containing that single dataset. Each thread should report its own stack
|
||||||
of errors with a thread number associated with it.
|
of errors with a thread number associated with it.
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
69
doxygen/examples/core_menu.md
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
<b>Core Library</b>
|
||||||
|
|
||||||
|
- @ref H5A "Attributes (H5A)"
|
||||||
|
<br />
|
||||||
|
HDF5 attribute is a small metadata object describing the nature and/or intended usage of a primary data object.
|
||||||
|
|
||||||
|
- @ref H5D "Datasets (H5D)"
|
||||||
|
<br />
|
||||||
|
Manage HDF5 datasets, including the transfer of data between memory and disk and the description of dataset properties.
|
||||||
|
|
||||||
|
- @ref H5S "Dataspaces (H5S)"
|
||||||
|
<br />
|
||||||
|
HDF5 dataspaces describe the shape of datasets in memory or in HDF5 files.
|
||||||
|
|
||||||
|
- @ref H5T "Datatypes (H5T)"
|
||||||
|
<br />
|
||||||
|
HDF5 datatypes describe the element type of HDF5 datasets and attributes.
|
||||||
|
|
||||||
|
- @ref H5E "Error Handling (H5E)"
|
||||||
|
<br />
|
||||||
|
HDF5 library error reporting.
|
||||||
|
|
||||||
|
- @ref H5ES "Event Set (H5ES)"
|
||||||
|
<br />
|
||||||
|
HDF5 event set life cycle used with HDF5 VOL connectors that enable the asynchronous feature in HDF5.
|
||||||
|
|
||||||
|
- @ref H5F "Files (H5F)"
|
||||||
|
<br />
|
||||||
|
Manage HDF5 files.
|
||||||
|
|
||||||
|
- @ref H5Z "Filters (H5Z)"
|
||||||
|
<br />
|
||||||
|
Manage HDF5 user-defined filters
|
||||||
|
|
||||||
|
- @ref H5G "Groups (H5G)"
|
||||||
|
<br />
|
||||||
|
Manage HDF5 groups.
|
||||||
|
|
||||||
|
- @ref H5I "Identifiers (H5I)"
|
||||||
|
<br />
|
||||||
|
Manage identifiers defined by the HDF5 library.
|
||||||
|
|
||||||
|
- @ref H5 "Library General (H5)"
|
||||||
|
<br />
|
||||||
|
Manage the life cycle of HDF5 library instances.
|
||||||
|
|
||||||
|
- @ref H5L "Links (H5L)"
|
||||||
|
<br />
|
||||||
|
Manage HDF5 links and link types.
|
||||||
|
|
||||||
|
- @ref H5O "Objects (H5O)"
|
||||||
|
<br />
|
||||||
|
Manage HDF5 objects (groups, datasets, datatype objects).
|
||||||
|
|
||||||
|
- @ref H5P "Property Lists (H5P)"
|
||||||
|
<br />
|
||||||
|
HDF5 property lists are the main vehicle to configure the behavior of HDF5 API functions.
|
||||||
|
|
||||||
|
- @ref H5PL "Dynamically-loaded Plugins (H5PL)"
|
||||||
|
<br />
|
||||||
|
Manage the loading behavior of HDF5 plugins.
|
||||||
|
|
||||||
|
- @ref H5R "References (H5R)"
|
||||||
|
<br />
|
||||||
|
Manage HDF5 references (HDF5 objects, attributes, and selections on datasets a.k.a. dataset regions).
|
||||||
|
|
||||||
|
- @ref H5VL "VOL Connector (H5VL)"
|
||||||
|
<br />
|
||||||
|
Manage HDF5 VOL connector plugins.
|
||||||
73
doxygen/examples/fortran_menu.md
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
<b>Fortran Library</b>
|
||||||
|
|
||||||
|
- @ref FH5A "Attributes (H5A)"
|
||||||
|
<br />
|
||||||
|
HDF5 attribute is a small metadata object describing the nature and/or intended usage of a primary data object.
|
||||||
|
|
||||||
|
- @ref FH5D "Datasets (H5D)"
|
||||||
|
<br />
|
||||||
|
Manage HDF5 datasets, including the transfer of data between memory and disk and the description of dataset properties.
|
||||||
|
|
||||||
|
- @ref FH5S "Dataspaces (H5S)"
|
||||||
|
<br />
|
||||||
|
HDF5 dataspaces describe the shape of datasets in memory or in HDF5 files.
|
||||||
|
|
||||||
|
- @ref FH5T "Datatypes (H5T)"
|
||||||
|
<br />
|
||||||
|
HDF5 datatypes describe the element type of HDF5 datasets and attributes.
|
||||||
|
|
||||||
|
- @ref FH5E "Error Handling (H5E)"
|
||||||
|
<br />
|
||||||
|
HDF5 library error reporting.
|
||||||
|
|
||||||
|
- @ref FH5F "Files (H5F)"
|
||||||
|
<br />
|
||||||
|
Manage HDF5 files.
|
||||||
|
|
||||||
|
- @ref FH5Z "Filters (H5Z)"
|
||||||
|
<br />
|
||||||
|
Manage HDF5 user-defined filters
|
||||||
|
|
||||||
|
- @ref FH5G "Groups (H5G)"
|
||||||
|
<br />
|
||||||
|
Manage HDF5 groups.
|
||||||
|
|
||||||
|
- @ref FH5I "Identifiers (H5I)"
|
||||||
|
<br />
|
||||||
|
Manage identifiers defined by the HDF5 library.
|
||||||
|
|
||||||
|
- @ref FH5 "Library General (H5)"
|
||||||
|
<br />
|
||||||
|
Manage the life cycle of HDF5 library instances.
|
||||||
|
|
||||||
|
- @ref FH5L "Links (H5L)"
|
||||||
|
<br />
|
||||||
|
Manage HDF5 links and link types.
|
||||||
|
|
||||||
|
- @ref FH5O "Objects (H5O)"
|
||||||
|
<br />
|
||||||
|
Manage HDF5 objects (groups, datasets, datatype objects).
|
||||||
|
|
||||||
|
- @ref FH5P "Property Lists (H5P)"
|
||||||
|
<br />
|
||||||
|
HDF5 property lists are the main vehicle to configure the behavior of HDF5 API functions.
|
||||||
|
|
||||||
|
- @ref FH5R "References (H5R)"
|
||||||
|
<br />
|
||||||
|
Manage HDF5 references (HDF5 objects, attributes, and selections on datasets a.k.a. dataset regions).
|
||||||
|
|
||||||
|
- @ref FH5LT "High Level Lite (H5LT)"
|
||||||
|
<br />
|
||||||
|
Functions to simplify creating and manipulating datasets, attributes and other features
|
||||||
|
|
||||||
|
- @ref FH5IM "High Level Image (H5IM)"
|
||||||
|
<br />
|
||||||
|
Creating and manipulating HDF5 datasets intended to be interpreted as images
|
||||||
|
|
||||||
|
- @ref FH5TB "High Level Table (H5TB)"
|
||||||
|
<br />
|
||||||
|
Creating and manipulating HDF5 datasets intended to be interpreted as tables
|
||||||
|
|
||||||
|
- @ref FH5DS "High Level Dimension Scale (H5DS)"
|
||||||
|
<br />
|
||||||
|
Creating and manipulating HDF5 datasets that are associated with the dimension of another HDF5 dataset
|
||||||
30
doxygen/examples/high_level_menu.md
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
<b>High-level library</b>
|
||||||
|
<br />
|
||||||
|
The high-level HDF5 library includes several sets of convenience and standard-use APIs to
|
||||||
|
facilitate common HDF5 operations.
|
||||||
|
|
||||||
|
- @ref H5LT
|
||||||
|
<br />
|
||||||
|
Functions to simplify creating and manipulating datasets, attributes and other features
|
||||||
|
|
||||||
|
- @ref H5IM
|
||||||
|
<br />
|
||||||
|
Creating and manipulating HDF5 datasets intended to be interpreted as images
|
||||||
|
|
||||||
|
- @ref H5TB
|
||||||
|
<br />
|
||||||
|
Creating and manipulating HDF5 datasets intended to be interpreted as tables
|
||||||
|
|
||||||
|
- @ref H5PT
|
||||||
|
<br />
|
||||||
|
Creating and manipulating HDF5 datasets to support append- and read-only operations on table data
|
||||||
|
|
||||||
|
- @ref H5DS
|
||||||
|
<br />
|
||||||
|
Creating and manipulating HDF5 datasets that are associated with the dimension of another HDF5 dataset
|
||||||
|
|
||||||
|
- @ref H5DO
|
||||||
|
<br />
|
||||||
|
Bypassing default HDF5 behavior in order to optimize for specific use cases
|
||||||
|
|
||||||
|
- @ref H5LR "Extensions (H5LR, H5LT)"
|
||||||
84
doxygen/examples/java_menu.md
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
<b>Java Library</b>
|
||||||
|
@ref HDF5LIB
|
||||||
|
|
||||||
|
- @ref JH5
|
||||||
|
<br />
|
||||||
|
This package is the Java interface for the HDF5 library.
|
||||||
|
|
||||||
|
- @ref JH5A
|
||||||
|
<br />
|
||||||
|
This package is the Java interface for the HDF5 library attribute APIs.
|
||||||
|
|
||||||
|
- @ref JH5D
|
||||||
|
<br />
|
||||||
|
This package is the Java interface for the HDF5 library dataset APIs.
|
||||||
|
|
||||||
|
- @ref JH5S
|
||||||
|
<br />
|
||||||
|
This package is the Java interface for the HDF5 library dataspace APIs.
|
||||||
|
|
||||||
|
- @ref JH5T
|
||||||
|
<br />
|
||||||
|
This package is the Java interface for the HDF5 library datatype APIs.
|
||||||
|
|
||||||
|
- @ref JH5E
|
||||||
|
<br />
|
||||||
|
This package is the Java interface for the HDF5 library error APIs.
|
||||||
|
|
||||||
|
- @ref JH5F
|
||||||
|
<br />
|
||||||
|
This package is the Java interface for the HDF5 library file APIs.
|
||||||
|
|
||||||
|
- @ref JH5Z
|
||||||
|
<br />
|
||||||
|
This package is the Java interface for the HDF5 library filter APIs.
|
||||||
|
|
||||||
|
- @ref JH5G
|
||||||
|
<br />
|
||||||
|
This package is the Java interface for the HDF5 library group APIs.
|
||||||
|
|
||||||
|
- @ref JH5I
|
||||||
|
<br />
|
||||||
|
This package is the Java interface for the HDF5 library identifier APIs.
|
||||||
|
|
||||||
|
- @ref JH5L
|
||||||
|
<br />
|
||||||
|
This package is the Java interface for the HDF5 library links APIs.
|
||||||
|
|
||||||
|
- @ref JH5O
|
||||||
|
<br />
|
||||||
|
This package is the Java interface for the HDF5 library object APIs.
|
||||||
|
|
||||||
|
- @ref JH5P
|
||||||
|
<br />
|
||||||
|
This package is the Java interface for the HDF5 library property list APIs.
|
||||||
|
|
||||||
|
- @ref JH5PL
|
||||||
|
<br />
|
||||||
|
This package is the Java interface for the HDF5 library plugin APIs.
|
||||||
|
|
||||||
|
- @ref JH5R
|
||||||
|
<br />
|
||||||
|
This package is the Java interface for the HDF5 library reference APIs.
|
||||||
|
|
||||||
|
- @ref JH5VL
|
||||||
|
<br />
|
||||||
|
This package is the Java interface for the HDF5 library VOL connector APIs.
|
||||||
|
|
||||||
|
- @ref HDF5CONST
|
||||||
|
<br />
|
||||||
|
This class contains C constants and enumerated types of HDF5 library.
|
||||||
|
|
||||||
|
- @ref HDFNATIVE
|
||||||
|
<br />
|
||||||
|
This class encapsulates native methods to deal with arrays of numbers,
|
||||||
|
* converting from numbers to bytes and bytes to numbers.
|
||||||
|
|
||||||
|
- @ref HDFARRAY
|
||||||
|
<br />
|
||||||
|
This is a class for handling multidimensional arrays for HDF.
|
||||||
|
|
||||||
|
- @ref ERRORS
|
||||||
|
<br />
|
||||||
|
The class HDF5Exception returns errors from the Java HDF5 Interface.
|
||||||
|
|
||||||
@@ -3,8 +3,9 @@
|
|||||||
<!-- Navigation index tabs for HTML output -->
|
<!-- Navigation index tabs for HTML output -->
|
||||||
<navindex>
|
<navindex>
|
||||||
<tab type="user" url="index.html" title="Overview" />
|
<tab type="user" url="index.html" title="Overview" />
|
||||||
<tab type="user" url="https://portal.hdfgroup.org/display/HDF5/Learning+HDF5" title="Getting started" />
|
<tab type="user" url="@ref GettingStarted" title="Getting started" />
|
||||||
<tab type="user" url="@ref Cookbook" title="Cookbook" />
|
<tab type="user" url="@ref Cookbook" title="Cookbook" />
|
||||||
|
<tab type="user" url="@ref UG" title="User Guide" />
|
||||||
<tab type="user" url="https://portal.hdfgroup.org/display/HDF5/HDF5+User+Guides" title="User Guides" />
|
<tab type="user" url="https://portal.hdfgroup.org/display/HDF5/HDF5+User+Guides" title="User Guides" />
|
||||||
<tab type="user" url="https://portal.hdfgroup.org/display/HDF5/HDF5+Application+Developer%27s+Guide" title="Application Developer's Guide" />
|
<tab type="user" url="https://portal.hdfgroup.org/display/HDF5/HDF5+Application+Developer%27s+Guide" title="Application Developer's Guide" />
|
||||||
<tab type="user" url="@ref GLS" title="Glossary" />
|
<tab type="user" url="@ref GLS" title="Glossary" />
|
||||||
|
|||||||
BIN
doxygen/img/DataGroup.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
doxygen/img/Dmodel_fig1.gif
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
doxygen/img/Dmodel_fig10.gif
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
doxygen/img/Dmodel_fig11_b.gif
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
doxygen/img/Dmodel_fig12_a.gif
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
doxygen/img/Dmodel_fig12_b.gif
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
BIN
doxygen/img/Dmodel_fig14_a.gif
Normal file
|
After Width: | Height: | Size: 5.2 KiB |
BIN
doxygen/img/Dmodel_fig14_b.gif
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
BIN
doxygen/img/Dmodel_fig14_c.gif
Normal file
|
After Width: | Height: | Size: 7.2 KiB |
BIN
doxygen/img/Dmodel_fig14_d.gif
Normal file
|
After Width: | Height: | Size: 9.7 KiB |
BIN
doxygen/img/Dmodel_fig2.gif
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
doxygen/img/Dmodel_fig3_a.gif
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
BIN
doxygen/img/Dmodel_fig3_c.gif
Normal file
|
After Width: | Height: | Size: 6.6 KiB |
BIN
doxygen/img/Dmodel_fig4_a.gif
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
doxygen/img/Dmodel_fig4_b.gif
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
doxygen/img/Dmodel_fig5.gif
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
BIN
doxygen/img/Dmodel_fig6.gif
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
BIN
doxygen/img/Dmodel_fig7_b.gif
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
doxygen/img/Dmodel_fig8.gif
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
doxygen/img/Dmodel_fig9.gif
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
doxygen/img/Dsets_NbitFloating1.gif
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
doxygen/img/Dsets_NbitFloating2.gif
Normal file
|
After Width: | Height: | Size: 9.1 KiB |
BIN
doxygen/img/Dsets_NbitInteger1.gif
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
BIN
doxygen/img/Dsets_NbitInteger2.gif
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
doxygen/img/Dsets_fig1.gif
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
doxygen/img/Dsets_fig10.gif
Normal file
|
After Width: | Height: | Size: 6.4 KiB |
BIN
doxygen/img/Dsets_fig11.gif
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
doxygen/img/Dsets_fig12.gif
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
doxygen/img/Dsets_fig2.gif
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
doxygen/img/Dsets_fig3.gif
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
doxygen/img/Dsets_fig4.gif
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
doxygen/img/Dsets_fig5.gif
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
doxygen/img/Dsets_fig6.gif
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
doxygen/img/Dsets_fig7.gif
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
doxygen/img/Dsets_fig8.gif
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
doxygen/img/Dsets_fig9.gif
Normal file
|
After Width: | Height: | Size: 4.3 KiB |
BIN
doxygen/img/Dspace_CvsF1.gif
Normal file
|
After Width: | Height: | Size: 8.4 KiB |
BIN
doxygen/img/Dspace_CvsF2.gif
Normal file
|
After Width: | Height: | Size: 8.4 KiB |
BIN
doxygen/img/Dspace_CvsF3.gif
Normal file
|
After Width: | Height: | Size: 8.7 KiB |
BIN
doxygen/img/Dspace_CvsF4.gif
Normal file
|
After Width: | Height: | Size: 8.3 KiB |
BIN
doxygen/img/Dspace_combine.gif
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
BIN
doxygen/img/Dspace_complex.gif
Normal file
|
After Width: | Height: | Size: 6.6 KiB |
BIN
doxygen/img/Dspace_features.gif
Normal file
|
After Width: | Height: | Size: 88 KiB |
BIN
doxygen/img/Dspace_features_cmpd.gif
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
doxygen/img/Dspace_move.gif
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
doxygen/img/Dspace_point.gif
Normal file
|
After Width: | Height: | Size: 6.5 KiB |
BIN
doxygen/img/Dspace_read.gif
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
doxygen/img/Dspace_select.gif
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
doxygen/img/Dspace_separate.gif
Normal file
|
After Width: | Height: | Size: 9.7 KiB |
BIN
doxygen/img/Dspace_simple.gif
Normal file
|
After Width: | Height: | Size: 9.5 KiB |
BIN
doxygen/img/Dspace_subset.gif
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
BIN
doxygen/img/Dspace_three_datasets.gif
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
doxygen/img/Dspace_transfer.gif
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
doxygen/img/Dspace_write1to2.gif
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
doxygen/img/Dtypes_fig1.gif
Normal file
|
After Width: | Height: | Size: 8.6 KiB |
BIN
doxygen/img/Dtypes_fig10.gif
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
doxygen/img/Dtypes_fig11.gif
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
doxygen/img/Dtypes_fig12.gif
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
doxygen/img/Dtypes_fig13a.gif
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
doxygen/img/Dtypes_fig13b.gif
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
BIN
doxygen/img/Dtypes_fig13c.gif
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
doxygen/img/Dtypes_fig13d.gif
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
doxygen/img/Dtypes_fig14.gif
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
doxygen/img/Dtypes_fig15.gif
Normal file
|
After Width: | Height: | Size: 30 KiB |