mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-02-23 16:20:57 +08:00
323 lines
8.2 KiB
HTML
323 lines
8.2 KiB
HTML
<HTML><HEAD>
|
|
<TITLE>HDF5 Tutorial - Introductory Topics Quiz with Answers
|
|
</TITLE>
|
|
</HEAD>
|
|
|
|
<body bgcolor="#ffffff">
|
|
|
|
<!-- BEGIN MAIN BODY -->
|
|
|
|
|
|
[ <A HREF="title.html"><I>HDF5 Tutorial Top</I></A> ]
|
|
<H1>
|
|
<FONT COLOR="#c101cd">Introductory Topics Quiz
|
|
with Answers</FONT>
|
|
</H1>
|
|
|
|
<hr noshade size=1>
|
|
|
|
|
|
<h3>Section 2: HDF File Organization</h3>
|
|
<ol>
|
|
|
|
<li>Name and describe the two primary objects that can be stored in an HDF5
|
|
file.
|
|
|
|
<dl>
|
|
<dt><b>Answers:</b>
|
|
<dd><em>Group:</em> A grouping structure containing zero or more
|
|
HDF5 objects, together with supporting metadata.
|
|
<dd><em>Dataset:</em> A multidimensional array of data elements,
|
|
together with supporting metadata.
|
|
</dl>
|
|
|
|
<p>
|
|
<li>What is an attribute?
|
|
|
|
<dl>
|
|
<dt><b>Answer:</b>
|
|
<dd>An HDF5 attribute is a user-defined HDF5 structure that provides extra
|
|
information about an HDF5 object.
|
|
</dl>
|
|
|
|
<p>
|
|
<li>Give the path name for an object called <code>harry</code> that is
|
|
a member of a group called <code>dick</code>, which, in turn, is a
|
|
member of the root group.
|
|
|
|
<dl>
|
|
<dt><b>Answer:</b>
|
|
<dd><code>/dick/harry</code>
|
|
</dl>
|
|
|
|
|
|
</ol>
|
|
<h3>Section 3: The HDF5 API</h3>
|
|
<ol>
|
|
|
|
<li>Describe the purpose of each of the following HDF5 APIs:
|
|
|
|
<dir>
|
|
H5A, H5D, H5E, H5F, H5G, H5T, H5Z
|
|
</dir>
|
|
|
|
<dl>
|
|
<dt><b>Answers:</b>
|
|
<dir>
|
|
H5A: Attribute access and manipulation routines <br>
|
|
H5D: Dataset access and manipulation routines <br>
|
|
H5E: Error handling routines <br>
|
|
H5F: File access routines <br>
|
|
H5G: Routines for creating and operating on groups <br>
|
|
H5T: Routines for creating and manipulating the
|
|
datatypes of dataset elements <br>
|
|
H5Z: Data compression routines
|
|
</dir>
|
|
</dl>
|
|
|
|
|
|
</ol>
|
|
<h3>Section 4: Creating an HDF5 File</h3>
|
|
<ol>
|
|
|
|
<li>What two HDF5 routines must be called to create an HDF5 file?
|
|
|
|
<dl>
|
|
<dt><b>Answer:</b>
|
|
<dd><code>H5Fcreate</code> and <code>H5Fclose</code>.
|
|
</dl>
|
|
|
|
<p>
|
|
<li>What include file must be included in any file that uses the HDF5 library?
|
|
|
|
<dl>
|
|
<dt><b>Answer:</b>
|
|
<dd><code>hdf5.h</code> must be included because it contains definitions
|
|
and declarations used by the library.
|
|
</dl>
|
|
|
|
<p>
|
|
<li>An HDF5 file is never completely empty because as soon as it is created,
|
|
it automatically contains a certain primary object. What is that object?
|
|
|
|
<dl>
|
|
<dt><b>Answer:</b>
|
|
<dd>The root group.
|
|
</dl>
|
|
|
|
|
|
</ol>
|
|
<h3>Section 5: Creating a Dataset</h3>
|
|
<ol>
|
|
|
|
<li>Name and describe two major datatype categories.
|
|
|
|
<dl>
|
|
<dt><b>Answers:</b>
|
|
<dd><em>Atomic datatype:</em>
|
|
An atomic datatype cannot be decomposed into smaller units at the
|
|
API level.
|
|
<br>
|
|
<em>Compound datatype:</em>
|
|
A compound datatype is a collection of atomic and compound datatypes,
|
|
or small arrays of such types.
|
|
</dl>
|
|
|
|
<p>
|
|
<li>List the HDF5 atomic datatypes. Give an example of a predefined datatype.
|
|
|
|
<dl>
|
|
<dt><b>Answers:</b>
|
|
<dd>There are six HDF5 atomic datatypes: integer, floating point,
|
|
date and time, character string, bit field, and opaque.
|
|
Examples of predefined datatypes include the following:
|
|
<dir>
|
|
<code>H5T_IEEE_F32LE</code>
|
|
- 4-byte little-endian, IEEE floating point <br>
|
|
<code>H5T_NATIVE_INT</code>
|
|
- native integer
|
|
</dir>
|
|
</dl>
|
|
|
|
<p>
|
|
<li>What does the dataspace describe? What are the major characteristics of
|
|
the simple dataspace?
|
|
|
|
<dl>
|
|
<dt><b>Answers:</b>
|
|
<dd>The dataspace describes the dimensionality of the dataset.
|
|
A simple dataspace is characterized by its rank and dimension sizes.
|
|
</dl>
|
|
|
|
<p>
|
|
<li>What information needs to be passed to the H5Dcreate function, i.e.,
|
|
what information is needed to describe a dataset at creation time?
|
|
|
|
<dl>
|
|
<dt><b>Answer:</b>
|
|
<dd>The dataset location, name, dataspace, datatype, and dataset
|
|
creation property list.
|
|
</dl>
|
|
|
|
|
|
</ol>
|
|
<h3>Section 6: Reading from and Writing to a Dataset</h3>
|
|
<ol>
|
|
|
|
<li>What are six pieces of information which need to be specified for
|
|
reading and writing a dataset?
|
|
|
|
<dl>
|
|
<dt><b>Answer:</b>
|
|
<dd>The dataset identifier, the dataset's datatype and dataspace in
|
|
memory, the dataspace in the file, the dataset transfer property
|
|
list, and a data buffer.
|
|
</dl>
|
|
|
|
<p>
|
|
<li>Why are both the memory dataspace and file dataspace needed for
|
|
read/write operations, while only the memory datatype is required?
|
|
|
|
<dl>
|
|
<dt><b>Answer:</b>
|
|
<dd>A dataset's file datatype is not required for a read/write operation
|
|
because the file datatype is specified when the dataset is created
|
|
and cannot be changed. Both file and memory dataspaces are required
|
|
for dataset subsetting and for performing partial I/O operations.
|
|
</dl>
|
|
|
|
<p>
|
|
<li>What does the line
|
|
<br>
|
|
<code>DATASPACE { SIMPLE (4 , 6 ) / ( 4 , 6 ) } </code>
|
|
<br>in Figure 6.1 mean?
|
|
|
|
<dl>
|
|
<dt><b>Answer:</b>
|
|
<dd>It means that the dataset <code>dset</code> has a simple dataspace
|
|
with the current dimensions (4,6) and the maximum size of the
|
|
dimensions (4,6).
|
|
</dl>
|
|
|
|
|
|
</ol>
|
|
<h3>Section 7: Creating an Attribute</h3>
|
|
<ol>
|
|
|
|
<li>What is an attribute?
|
|
|
|
<dl>
|
|
<dt><b>Answer:</b>
|
|
<dd>An attribute is a dataset attached to an object. It describes the
|
|
nature and/or the intended usage of the object.
|
|
</dl>
|
|
|
|
<p>
|
|
<li>Can partial I/O operations be performed on attributes?
|
|
|
|
<dl>
|
|
<dt><b>Answer:</b>
|
|
<dd>No.
|
|
</dl>
|
|
|
|
|
|
</ol>
|
|
<h3>Section 8: Creating a Group</h3>
|
|
<ol>
|
|
|
|
<li>What are the two primary objects that can be included in a group?
|
|
|
|
<dl>
|
|
<dt><b>Answer:</b>
|
|
<dd>A group and a dataset.
|
|
</dl>
|
|
|
|
|
|
</ol>
|
|
<h3>Section 9: Creating Groups Using Absolute and Relative Names</h3>
|
|
<ol>
|
|
|
|
<li>Group names can be specified in two ways. What are these two types
|
|
of group names?
|
|
|
|
<dl>
|
|
<dt><b>Answer:</b>
|
|
<dd>Relative and absolute.
|
|
</dl>
|
|
|
|
<p>
|
|
<li>You have a dataset named <code>moo</code> in the group
|
|
<code>boo</code>, which is in the group <code>foo</code>,
|
|
which, in turn, is in the root group.
|
|
How would you specify an absolute name to access this dataset?
|
|
|
|
<dl>
|
|
<dt><b>Answer:</b>
|
|
<dd><code>/foo/boo/moo</code>
|
|
</dl>
|
|
|
|
|
|
</ol>
|
|
<h3>Section 10: Creating Datasets in Groups</h3>
|
|
<ol>
|
|
|
|
<li>Describe a way to access the dataset <code>moo</code> described in
|
|
the previous section (Section 9, question 2) using a
|
|
relative name.
|
|
Describe a way to access the same dataset using an absolute name.
|
|
|
|
<dl>
|
|
<dt><b>Answers:</b>
|
|
<ol>
|
|
<li>Access the group <code>/foo</code> and get the group ID.
|
|
Access the group <code>boo</code> using the group ID obtained
|
|
in Step 1.
|
|
Access the dataset <code>moo</code> using the group ID obtained
|
|
in Step 2.
|
|
<pre>
|
|
gid = H5Gopen (file_id, "/foo", 0); /* absolute path */
|
|
gid1 = H5Gopen (gid, "boo", 0); /* relative path */
|
|
did = H5Dopen (gid1, "moo"); /* relative path */ </pre>
|
|
|
|
<li>Access the group <code>/foo</code> and get the group ID.
|
|
Access the dataset <code>boo/moo</code> with the group ID
|
|
just obtained.
|
|
<pre>
|
|
gid = H5Gopen (file_id, "/foo", 0); /* absolute path */
|
|
did = H5Dopen (gid, "boo/moo"); /* relative path */ </pre>
|
|
|
|
<li>Access the dataset with an absolute path.
|
|
<pre>
|
|
did = H5Dopen (file_id, "/foo/boo/moo"); /* absolute path */ </pre>
|
|
</ol>
|
|
</dl>
|
|
|
|
</ol>
|
|
|
|
<!-- BEGIN FOOTER INFO -->
|
|
|
|
<P><hr noshade size=1>
|
|
<font face="arial,helvetica" size="-1">
|
|
<a href="http://www.ncsa.uiuc.edu/"><img border=0
|
|
src="footer-ncsalogo.gif"
|
|
width=78 height=27 alt="NCSA"><br>
|
|
The National Center for Supercomputing Applications</A><br>
|
|
<a href="http://www.uiuc.edu/">University of Illinois
|
|
at Urbana-Champaign</a><br>
|
|
<br>
|
|
<!-- <A HREF="helpdesk.mail.html"> -->
|
|
<A HREF="mailto:hdfhelp@ncsa.uiuc.edu">
|
|
hdfhelp@ncsa.uiuc.edu</A>
|
|
<br>
|
|
<BR> <H6>Last Modified: June 22, 2001</H6><BR>
|
|
<!-- modified by Barbara Jones - bljones@ncsa.uiuc.edu -->
|
|
</FONT>
|
|
<BR>
|
|
<!-- <A HREF="mailto:hdfhelp@ncsa.uiuc.edu"> -->
|
|
|
|
</BODY>
|
|
</HTML>
|
|
|
|
|
|
|