SlideShare uma empresa Scribd logo
1 de 29
Baixar para ler offline
Introduction to HDF5 for HDF4 users
Robert E. McGrath
NCSA
December 4, 2002

1

HDF
Overview
• Assumes that you know HDF4 concepts and
have used HDF4
• Would like to start using HDF5
• Goal: Provide some principles and
examples that will help understand HDF5
• A paper gives more details and a collection
of “How Do I…?” suggestions.
2

HDF
Three “Principles”
1. Do what makes sense
2. Think of HDF5 as a completely new file
format
3. Anything you can do in HDF4, you can
do in HDF5

3

HDF
1. Do what makes sense
• The tutorial and documentation are
suggestions, not rules.
• Use HDF5 in ways that work best for your
goals
– Sometimes, it may not be best to exactly copy
or emulate the way HDF4 was used
– HDF5 has many new features to exploit
4

HDF
2. Think of HDF5 as a new Format
• Despite the name, the HDF5 Format and
Library are new and different.
• Shouldn’t expect things to work the same as
HDF4 or earlier versions.

5

HDF
3. Anything you can do in HDF4,
you can do in HDF5
• That said, HDF5 is conceptually compatible
with HDF4
• It is reasonable to expect that whatever you
did with HDF4 can be done with HDF5,
usually better.
• This tutorial presents some examples to
illustrate common tasks in HDF4, and how
to do them with HDF5
6

HDF
How to create HDF4 objects in
HDF5
• The six main types of HDF4 objects have
equivalents in HDF5
– HDF4 objects can be represented by specific
cases of HDF5 objects
– Programming model is different, so source code
may have no resemblance.

• Will briefly discuss examples
7

HDF
SDS
• HDF4 SDS is equivalent to an HDF5
Dataset
• HDF5 does not currently support dimension
scales
– Coming in 2003

8

HDF
Example of SDS
int32 sd_id, sds_id;
int32 dim_sizes[2];
intn status;
sd_id = SDstart ("SDS.hdf", DFACC_CREATE);
dim_sizes[0] = 5;
dim_sizes[1] = 16;
sds_id = SDcreate (sd_id, "SDSexample", DFNT_INT32, 2, dim_sizes);
status = SDendaccess (sds_id);
status = SDend (sd_id);

9

HDF
Example of HDF5 Dataset
hid_t
file_id, dataset_id, dataspace_id, datatype_id;
hsize_t dims[2];
herr_t
status;
file_id = H5Fcreate(“DS.h5”, H5F_ACC_TRUNC, H5P_DEFAULT,
H5P_DEFAULT);
dims[0] = 5;
dims[1] = 16;
dataspace_id = H5Screate_simple(2, dims, NULL);
datatype_id = H5Tcopy(H5T_STD_I32BE);
dataset_id = H5Dcreate(file_id, "/DSexample", datatype_id, dataspace_id,
H5P_DEFAULT);
status = H5Dclose(dataset_id);
status = H5Sclose(dataspace_id);
status = H5Tclose(datatype_id);
status = H5Fclose(file_id);

10

HDF
Vgroup
• HDF4 Vgroup is equivalent to an HDF5
Group
• HDF5 is organized as a rooted, directed
graph
– There are no “lone Vgroups” or equivalent,
everything is accessed by pathnames

11

HDF
Example of VGroup
intn status_n;
int32 status_32, vgroup_ref,
vgroup1_id, vgroup2_id, file_id;
file_id = Hopen (“vgroup.hdf”, DFACC_CREATE, 0);
status_n = Vstart (file_id);
vgroup1_ref = vgroup2_ref = -1; /* create new group */
vgroup1_id = Vattach (file_id, vgroup1_ref, "w");
vgroup2_id = Vattach (file_id, vgroup2_ref, "w");
status_32 = Vdetach (vgroup1_id);
status_32 = Vdetach (vgroup2_id);
status_n = Vend (file_id);
status_n = Hclose (file_id);

12

HDF
Example of HDF5 Group
hid_t
file_id, group1_id, group2_id;
herr_t
status;
file_id = H5Fcreate(“groups.h5”, H5F_ACC_TRUNC, H5P_DEFAULT,
H5P_DEFAULT);
group1_id = H5Gcreate(file_id, "/MyGroup1", 0);
group2_id = H5Gcreate(file_id, "/MyGroup2", 0);
status = H5Gclose(group1_id);
status = H5Gclose(group2_id);
status = H5Fclose(file_id);

13

HDF
Vdatas (Tables)
• HDF4 Vdata is equivalent to an HDF5
Dataset with a Compound Datatype.
– Because the HDF5 Model is more general, the
table can be multidimensional, can have
complex records, etc.

• The HDF High Level library provides a
relatively simple interface to manage table
data.
– http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/
14

HDF
Example of Vdata
typedef struct s1_t {
int a;
float b;
double c;
} s1_t;
s1_t
data_buf[10];
file_id = Hopen (“vdata.hdf”, DFACC_WRITE, 0);
status_n = Vstart (file_id);
vdata_id = VSattach (file_id, vdata_ref, "w");
status_32 = VSsetname (vdata_id, “Table 1”);
status_32 = VSsetclass (vdata_id, “Some Data”);
status_n = VSfdefine (vdata_id, “a_name”, DFNT_INT32, 1 );
status_n = VSfdefine (vdata_id, “b_name”, DFNT_FLOAT32, 1 );
status_n = VSfdefine (vdata_id, “c_name”, DFNT_FLOAT64, 1 );
status_n = VSsetfields (vdata_id, “a_name”,”b_name”,”c_name”);
num_of_records = VSwrite (vdata_id, (uint8 *)data_buf, 10,
FULL_INTERLACE);

15

status_32 = VSdetach (vdata_id);
status_n = Vend (file_id);
status_32 = Hclose (file_id);

HDF
Example of HDF5 Compound Data
typedef struct s1_t {
int a;
float b;
double c;
} s1_t;
s1_t
s1[10];
hid_t s1_tid;
hid_t
file, dataset, space;
herr_t status;
hsize_t dim[] = {10};
space = H5Screate_simple(1, dim, NULL);
file = H5Fcreate(“table.h5”, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
s1_tid = H5Tcreate (H5T_COMPOUND, sizeof(s1_t));
H5Tinsert(s1_tid, "a_name", HOFFSET(s1_t, a), H5T_NATIVE_INT);
H5Tinsert(s1_tid, "c_name", HOFFSET(s1_t, c), H5T_NATIVE_DOUBLE);
H5Tinsert(s1_tid, "b_name", HOFFSET(s1_t, b), H5T_NATIVE_FLOAT);
dataset = H5Dcreate(file, “/Table 1”, s1_tid, space, H5P_DEFAULT);
status = H5Dwrite(dataset, s1_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, s1);
H5Tclose(s1_tid);
H5Sclose(space);
H5Dclose(dataset);
H5Fclose(file);

16

HDF
Example using HDF5 “Table” API
typedef struct s1_t {
int a;
float b;
double c;
} s1_t;
s1_t
dst_buff[10];
/* Calculate the size and the offsets of the struct members in memory */
size_t dst_size = sizeof( s1_t );
size_t dst_offset[3] = { HOFFSET( s1_t ),
HOFFSET( s1_t, b ),
HOFFSET( s1_t, c )};
size_t dst_sizes[3] = { sizeof( dst_buf[0].a),
sizeof( dst_buf[0].b),
sizeof( dst_buf[0].c)};
const char *field_names[3] = { "a_name", "b_name", "c_name" };
hid_t field_type[3];
field_type[0] = H5T_NATIVE_INT;
field_type[1] = H5T_NATIVE_FLOAT;
field_type[2] = H5T_NATIVE_DOUBLE;
file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);

17

err = H5TBmake_table( "Table 1", file_id, "Table1", 3, 10, dst_size, field_names, dst_offset,
field_type, 10, NULL, 0, dst_buff );

HDF
GR (Raster Images) and Palettes
• Raster images can be stored as HDF5 Datasets.
• The HDF5 “Image and Palette Specification”
defines a standard profile.
– http://hdf.ncsa.uiuc.edu/HDF5/doc/ADGuide/ImageSpe
c.html

• The HDF High Level library provides a relatively
simple interface to manage image data

18

HDF
Example HDF4 GR image
int16 image_buf[2][5][3];
file_id = Hopen (“image.hdf”, DFACC_CREATE, 0);
gr_id = GRstart (file_id);
data_type = DFNT_INT8;
dim_sizes[0] = 5;
dim_sizes[1] = 2;
ri_id = GRcreate (gr_id, “Image 1”, 3, data_type,
MFGR_INTERLACE_PIXEL, dim_sizes);
start[0] = start[1] = 0;
edges[0] = 5;
edges[1] = 2;
status = GRwriteimage(ri_id, start, NULL, edges, (VOIDP)image_buf);
status = GRendaccess (ri_id);
status = GRend (gr_id);
status = Hclose (file_id);

19

HDF
Example using HDF5 Dataset
hsize_t dims[2];
herr_t
status;
hsize_t
comp_dims[1] = { 3 };
unsigned char data[5][2][3]
file_id = H5Fcreate(“image.h5”, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);
dims[0] = 5;
dims[1] = 2;
dataspace_id = H5Screate_simple(2, dims, NULL);
datatype_id = H5Tarray_create( H5T_NATIVE_UINT8, 1, comp_dims, NULL );
dataset_id = H5Dcreate(file_id, "/Image 1", datatype_id, dataspace_id,
H5P_DEFAULT);
/* Create the required attributes */
attr_type = H5Tcopy( H5T_C_S1 );
attr_size = strlen( “IMAGE” ) + 1;
H5Tset_size( attr_type, (size_t)attr_size);
H5Tset_strpad( attr_type, H5T_STR_NULLTERM ) ;
attr_space_id = H5Screate( H5S_SCALAR );
attr_id = H5Acreate( dataset_id, “CLASS”, attr_type, attr_space_id, H5P_DEFAULT );
H5Awrite( attr_id, attr_type, “IMAGE” ) ;
H5Aclose( attr_id );
/* And so on for the required attributes:
IMAGE_VERSION=”1.2", IMAGE_SUBCLASS=”IMAGE_TRUECOLOR”, and
INTERLACE_MODE=”INTERLACE_PIXEL” */
H5Sclose( attr_space_id ) ;
H5Dwrite( dataset_id, datatype_id, H5S_ALL, H5S_ALL, H5P_DEFAULT, data);

20

HDF
Example using HDF5 “Image” API
hid_t
file_id;
unsigned char image_data[2][5];
file_id = H5Fcreate( "image.h5", H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT );
status = H5IMmake_image_24bit( file_id, "Image 1", 5, 2, image_data )
H5Fclose(file_id);

21

HDF
Annotations, Global Attributes, etc.
• HDF5 Attributes are attached to an object
(usually a Dataset or Group)
– No equivalent to global attributes or file
annotations
– Recommended that these be made attributes of
the root group or similar convention

• HDF5 does not have any predefined
attributes
22

HDF
Example of HDF4 attribute
int attr_values[2];
sd_id = SDstart (“attr.hdf”, DFACC_WRITE);
sds_index = 0;
sds_id = SDselect (sd_id, sds_index);
n_values = 2;
status = SDsetattr (sds_id, “Valid_Range”, DFNT_FLOAT32, n_values,
(VOIDP)attr_values);
status = SDendaccess (sds_id);
status = SDend (sd_id);

23

HDF
Example of HDF5 attribute
hid_t
file_id, dataset_id, attribute_id, dataspace_id;
hsize_t dims;
int
attr_data[2];
herr_t
status;
file_id = H5Fopen(“attr.h5”, H5F_ACC_RDWR, H5P_DEFAULT);
dataset_id = H5Dopen(file_id, "/dset");
dims = 2;
dataspace_id = H5Screate_simple(1, &dims, NULL);
attribute_id = H5Acreate(dataset_id, "ValidRange", H5T_STD_I32BE, dataspace_id,
H5P_DEFAULT);
status = H5Awrite(attribute_id, H5T_NATIVE_INT, attr_data);
status = H5Aclose(attribute_id);
status = H5Sclose(dataspace_id);
status = H5Dclose(dataset_id);
status = H5Fclose(file_id);

24

HDF
Data Types
• HDF5 has a much richer model of datatypes
than HDF4.
– Can specify the layout of the data at the source
and destination (memory and disk)

• HDF5 has a String datatype
– Should not store strings as arrays of characters

25

HDF
Corresponding Datatypes
HDF4 type

HDF5 Memory type

DFNT_INT8

H5T_STD_I8BE

H5T_NATIVE_INT8

DFNT_UINT8

H5T_STD_U8BE

H5T_NATIVE_UINT8

DFNT_LINT8

H5T_STD_I8LE

H5T_NATIVE_INT8

DFNT_LUINT8

H5T_STD_U8LE

H5T_NATIVE_UINT8

DFNT_INT16

H5T_STD_U8LE

H5T_NATIVE_UINT8

DFNT_UINT16

H5T_STD_U16BE

H5T_NATIVE_UINT16

DFNT_LINT16

H5T_STD_I16LE

H5T_NATIVE_INT16

DFNT_LUINT16

H5T_STD_U16LE

H5T_NATIVE_UINT16

DFNT_INT32

H5T_STD_I32BE

H5T_NATIVE_INT32

DFNT_UINT32

H5T_STD_U32BE

H5T_NATIVE_UINT32

DFNT_LINT32

H5T_STD_I32LE

H5T_NATIVE_INT32

DFNT_LUINT32

H5T_STD_U32LE

H5T_NATIVE_UINT32

DFNT_FLOAT32

H5T_IEEE_F32BE

H5T_NATIVE_FLOAT

DFNT_LFLOAT32

H5T_IEEE_F32LE

H5T_NATIVE_FLOAT

DFNT_FLOAT64

H5T_IEEE_F64BE

H5T_NATIVE_DOUBLE

DFNT_ DFNT_LFLOAT64

26

Corresponding HDF5 type

H5T_IEEE_F64LE

H5T_NATIVE_DOUBLE

HDF
String Datatypes: Important
HDF4: array of:
DFNT_CHAR,
DFNT_UCHA
R,
DFNT_INT8,
DFNT_UINT8,
Etc.

27

HDF5: data is type:
H5T_C_S1,
H5Tset_size(strlen)

*HDF5 also has variable
length strings.
HDF
Pointers
The Paper: HDF5 for HDF4 Users: a Short Introduction:
http://hdf.ncsa.uiuc.edu/….
1.
2.

The helpdesk: hdfhelp@ncsa.uiuc.edu

3.

HDF4 to HDF5 information: http://hdf.ncsa.uiuc.edu/h4toh5/

4.

HDF5 High Level APIs:
http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/

5.

“Image and Palette Specification”,
http://hdf.ncsa.uiuc.edu/HDF5/doc/ADGuide/ImageSpec.html

6.

28

The HDF web site: http://hdf.ncsa.uicu.edu

“HDF5 Table Specification”,
http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb_spec.ht
ml

HDF
Acknowledgements
This report is based upon work supported in part by
a Cooperative Agreement with NASA under
NASA grant NAG 5-2040 and NAG NCCS-599.
Any opinions, findings, and conclusions or
recommendations expressed in this material are
those of the author(s) and do not necessarily
reflect the views of the National Aeronautics and
Space Administration.
Other support provided by NCSA and other
sponsors and agencies
(http://hdf.ncsa.uiuc.edu/acknowledge.html).
29

HDF

Mais conteúdo relacionado

Semelhante a Introduction to HDF5 for HDF4 Users

HDF5 Advanced Topics - Object's Properties, Storage Methods, Filters, Datatypes
HDF5 Advanced Topics - Object's Properties, Storage Methods, Filters, DatatypesHDF5 Advanced Topics - Object's Properties, Storage Methods, Filters, Datatypes
HDF5 Advanced Topics - Object's Properties, Storage Methods, Filters, DatatypesThe HDF-EOS Tools and Information Center
 
HTML Templates Using Clear Silver
HTML Templates Using Clear SilverHTML Templates Using Clear Silver
HTML Templates Using Clear SilverPaulWay
 
PHP CLI: A Cinderella Story
PHP CLI: A Cinderella StoryPHP CLI: A Cinderella Story
PHP CLI: A Cinderella StoryMike Lively
 
Writing A Foreign Data Wrapper
Writing A Foreign Data WrapperWriting A Foreign Data Wrapper
Writing A Foreign Data Wrapperpsoo1978
 

Semelhante a Introduction to HDF5 for HDF4 Users (20)

Adding CF Attributes to an HDF5 File
Adding CF Attributes to an HDF5 FileAdding CF Attributes to an HDF5 File
Adding CF Attributes to an HDF5 File
 
HDF5 Advanced Topics - Object's Properties, Storage Methods, Filters, Datatypes
HDF5 Advanced Topics - Object's Properties, Storage Methods, Filters, DatatypesHDF5 Advanced Topics - Object's Properties, Storage Methods, Filters, Datatypes
HDF5 Advanced Topics - Object's Properties, Storage Methods, Filters, Datatypes
 
Advanced HDF5 Features
Advanced HDF5 FeaturesAdvanced HDF5 Features
Advanced HDF5 Features
 
HDF5 Advanced Topics - Datatypes and Partial I/O
HDF5 Advanced Topics - Datatypes and Partial I/OHDF5 Advanced Topics - Datatypes and Partial I/O
HDF5 Advanced Topics - Datatypes and Partial I/O
 
Overview of Parallel HDF5
Overview of Parallel HDF5Overview of Parallel HDF5
Overview of Parallel HDF5
 
Data Analytics using MATLAB and HDF5
Data Analytics using MATLAB and HDF5Data Analytics using MATLAB and HDF5
Data Analytics using MATLAB and HDF5
 
HDF5 Advanced Topics
HDF5 Advanced TopicsHDF5 Advanced Topics
HDF5 Advanced Topics
 
IDL Support of HDF
IDL Support of HDFIDL Support of HDF
IDL Support of HDF
 
Parallel HDF5 Introductory Tutorial
Parallel HDF5 Introductory TutorialParallel HDF5 Introductory Tutorial
Parallel HDF5 Introductory Tutorial
 
HTML Templates Using Clear Silver
HTML Templates Using Clear SilverHTML Templates Using Clear Silver
HTML Templates Using Clear Silver
 
Introduction to HDF5 Data Model, Programming Model and Library APIs
Introduction to HDF5 Data Model, Programming Model and Library APIsIntroduction to HDF5 Data Model, Programming Model and Library APIs
Introduction to HDF5 Data Model, Programming Model and Library APIs
 
HDF5 Tools
HDF5 ToolsHDF5 Tools
HDF5 Tools
 
HDF5 <-> Zarr
HDF5 <-> ZarrHDF5 <-> Zarr
HDF5 <-> Zarr
 
NetCDF and HDF5
NetCDF and HDF5NetCDF and HDF5
NetCDF and HDF5
 
RSI at the HDF & HDF-EOS Workshop VI
RSI at the HDF & HDF-EOS Workshop VIRSI at the HDF & HDF-EOS Workshop VI
RSI at the HDF & HDF-EOS Workshop VI
 
PHP CLI: A Cinderella Story
PHP CLI: A Cinderella StoryPHP CLI: A Cinderella Story
PHP CLI: A Cinderella Story
 
Apache Pig
Apache PigApache Pig
Apache Pig
 
Using HDF5 in MATLAB
Using HDF5 in MATLABUsing HDF5 in MATLAB
Using HDF5 in MATLAB
 
Writing A Foreign Data Wrapper
Writing A Foreign Data WrapperWriting A Foreign Data Wrapper
Writing A Foreign Data Wrapper
 
Introduction to HDF5
Introduction to HDF5Introduction to HDF5
Introduction to HDF5
 

Mais de The HDF-EOS Tools and Information Center

STARE-PODS: A Versatile Data Store Leveraging the HDF Virtual Object Layer fo...
STARE-PODS: A Versatile Data Store Leveraging the HDF Virtual Object Layer fo...STARE-PODS: A Versatile Data Store Leveraging the HDF Virtual Object Layer fo...
STARE-PODS: A Versatile Data Store Leveraging the HDF Virtual Object Layer fo...The HDF-EOS Tools and Information Center
 

Mais de The HDF-EOS Tools and Information Center (20)

Cloud-Optimized HDF5 Files
Cloud-Optimized HDF5 FilesCloud-Optimized HDF5 Files
Cloud-Optimized HDF5 Files
 
Accessing HDF5 data in the cloud with HSDS
Accessing HDF5 data in the cloud with HSDSAccessing HDF5 data in the cloud with HSDS
Accessing HDF5 data in the cloud with HSDS
 
The State of HDF
The State of HDFThe State of HDF
The State of HDF
 
Highly Scalable Data Service (HSDS) Performance Features
Highly Scalable Data Service (HSDS) Performance FeaturesHighly Scalable Data Service (HSDS) Performance Features
Highly Scalable Data Service (HSDS) Performance Features
 
Creating Cloud-Optimized HDF5 Files
Creating Cloud-Optimized HDF5 FilesCreating Cloud-Optimized HDF5 Files
Creating Cloud-Optimized HDF5 Files
 
HDF5 OPeNDAP Handler Updates, and Performance Discussion
HDF5 OPeNDAP Handler Updates, and Performance DiscussionHDF5 OPeNDAP Handler Updates, and Performance Discussion
HDF5 OPeNDAP Handler Updates, and Performance Discussion
 
Hyrax: Serving Data from S3
Hyrax: Serving Data from S3Hyrax: Serving Data from S3
Hyrax: Serving Data from S3
 
Accessing Cloud Data and Services Using EDL, Pydap, MATLAB
Accessing Cloud Data and Services Using EDL, Pydap, MATLABAccessing Cloud Data and Services Using EDL, Pydap, MATLAB
Accessing Cloud Data and Services Using EDL, Pydap, MATLAB
 
HDF - Current status and Future Directions
HDF - Current status and Future DirectionsHDF - Current status and Future Directions
HDF - Current status and Future Directions
 
HDFEOS.org User Analsys, Updates, and Future
HDFEOS.org User Analsys, Updates, and FutureHDFEOS.org User Analsys, Updates, and Future
HDFEOS.org User Analsys, Updates, and Future
 
HDF - Current status and Future Directions
HDF - Current status and Future Directions HDF - Current status and Future Directions
HDF - Current status and Future Directions
 
H5Coro: The Cloud-Optimized Read-Only Library
H5Coro: The Cloud-Optimized Read-Only LibraryH5Coro: The Cloud-Optimized Read-Only Library
H5Coro: The Cloud-Optimized Read-Only Library
 
MATLAB Modernization on HDF5 1.10
MATLAB Modernization on HDF5 1.10MATLAB Modernization on HDF5 1.10
MATLAB Modernization on HDF5 1.10
 
HDF for the Cloud - Serverless HDF
HDF for the Cloud - Serverless HDFHDF for the Cloud - Serverless HDF
HDF for the Cloud - Serverless HDF
 
HDF for the Cloud - New HDF Server Features
HDF for the Cloud - New HDF Server FeaturesHDF for the Cloud - New HDF Server Features
HDF for the Cloud - New HDF Server Features
 
Apache Drill and Unidata THREDDS Data Server for NASA HDF-EOS on S3
Apache Drill and Unidata THREDDS Data Server for NASA HDF-EOS on S3Apache Drill and Unidata THREDDS Data Server for NASA HDF-EOS on S3
Apache Drill and Unidata THREDDS Data Server for NASA HDF-EOS on S3
 
STARE-PODS: A Versatile Data Store Leveraging the HDF Virtual Object Layer fo...
STARE-PODS: A Versatile Data Store Leveraging the HDF Virtual Object Layer fo...STARE-PODS: A Versatile Data Store Leveraging the HDF Virtual Object Layer fo...
STARE-PODS: A Versatile Data Store Leveraging the HDF Virtual Object Layer fo...
 
HDF5 and Ecosystem: What Is New?
HDF5 and Ecosystem: What Is New?HDF5 and Ecosystem: What Is New?
HDF5 and Ecosystem: What Is New?
 
HDF5 Roadmap 2019-2020
HDF5 Roadmap 2019-2020HDF5 Roadmap 2019-2020
HDF5 Roadmap 2019-2020
 
Leveraging the Cloud for HDF Software Testing
Leveraging the Cloud for HDF Software TestingLeveraging the Cloud for HDF Software Testing
Leveraging the Cloud for HDF Software Testing
 

Último

"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 

Último (20)

"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 

Introduction to HDF5 for HDF4 Users

  • 1. Introduction to HDF5 for HDF4 users Robert E. McGrath NCSA December 4, 2002 1 HDF
  • 2. Overview • Assumes that you know HDF4 concepts and have used HDF4 • Would like to start using HDF5 • Goal: Provide some principles and examples that will help understand HDF5 • A paper gives more details and a collection of “How Do I…?” suggestions. 2 HDF
  • 3. Three “Principles” 1. Do what makes sense 2. Think of HDF5 as a completely new file format 3. Anything you can do in HDF4, you can do in HDF5 3 HDF
  • 4. 1. Do what makes sense • The tutorial and documentation are suggestions, not rules. • Use HDF5 in ways that work best for your goals – Sometimes, it may not be best to exactly copy or emulate the way HDF4 was used – HDF5 has many new features to exploit 4 HDF
  • 5. 2. Think of HDF5 as a new Format • Despite the name, the HDF5 Format and Library are new and different. • Shouldn’t expect things to work the same as HDF4 or earlier versions. 5 HDF
  • 6. 3. Anything you can do in HDF4, you can do in HDF5 • That said, HDF5 is conceptually compatible with HDF4 • It is reasonable to expect that whatever you did with HDF4 can be done with HDF5, usually better. • This tutorial presents some examples to illustrate common tasks in HDF4, and how to do them with HDF5 6 HDF
  • 7. How to create HDF4 objects in HDF5 • The six main types of HDF4 objects have equivalents in HDF5 – HDF4 objects can be represented by specific cases of HDF5 objects – Programming model is different, so source code may have no resemblance. • Will briefly discuss examples 7 HDF
  • 8. SDS • HDF4 SDS is equivalent to an HDF5 Dataset • HDF5 does not currently support dimension scales – Coming in 2003 8 HDF
  • 9. Example of SDS int32 sd_id, sds_id; int32 dim_sizes[2]; intn status; sd_id = SDstart ("SDS.hdf", DFACC_CREATE); dim_sizes[0] = 5; dim_sizes[1] = 16; sds_id = SDcreate (sd_id, "SDSexample", DFNT_INT32, 2, dim_sizes); status = SDendaccess (sds_id); status = SDend (sd_id); 9 HDF
  • 10. Example of HDF5 Dataset hid_t file_id, dataset_id, dataspace_id, datatype_id; hsize_t dims[2]; herr_t status; file_id = H5Fcreate(“DS.h5”, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); dims[0] = 5; dims[1] = 16; dataspace_id = H5Screate_simple(2, dims, NULL); datatype_id = H5Tcopy(H5T_STD_I32BE); dataset_id = H5Dcreate(file_id, "/DSexample", datatype_id, dataspace_id, H5P_DEFAULT); status = H5Dclose(dataset_id); status = H5Sclose(dataspace_id); status = H5Tclose(datatype_id); status = H5Fclose(file_id); 10 HDF
  • 11. Vgroup • HDF4 Vgroup is equivalent to an HDF5 Group • HDF5 is organized as a rooted, directed graph – There are no “lone Vgroups” or equivalent, everything is accessed by pathnames 11 HDF
  • 12. Example of VGroup intn status_n; int32 status_32, vgroup_ref, vgroup1_id, vgroup2_id, file_id; file_id = Hopen (“vgroup.hdf”, DFACC_CREATE, 0); status_n = Vstart (file_id); vgroup1_ref = vgroup2_ref = -1; /* create new group */ vgroup1_id = Vattach (file_id, vgroup1_ref, "w"); vgroup2_id = Vattach (file_id, vgroup2_ref, "w"); status_32 = Vdetach (vgroup1_id); status_32 = Vdetach (vgroup2_id); status_n = Vend (file_id); status_n = Hclose (file_id); 12 HDF
  • 13. Example of HDF5 Group hid_t file_id, group1_id, group2_id; herr_t status; file_id = H5Fcreate(“groups.h5”, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); group1_id = H5Gcreate(file_id, "/MyGroup1", 0); group2_id = H5Gcreate(file_id, "/MyGroup2", 0); status = H5Gclose(group1_id); status = H5Gclose(group2_id); status = H5Fclose(file_id); 13 HDF
  • 14. Vdatas (Tables) • HDF4 Vdata is equivalent to an HDF5 Dataset with a Compound Datatype. – Because the HDF5 Model is more general, the table can be multidimensional, can have complex records, etc. • The HDF High Level library provides a relatively simple interface to manage table data. – http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/ 14 HDF
  • 15. Example of Vdata typedef struct s1_t { int a; float b; double c; } s1_t; s1_t data_buf[10]; file_id = Hopen (“vdata.hdf”, DFACC_WRITE, 0); status_n = Vstart (file_id); vdata_id = VSattach (file_id, vdata_ref, "w"); status_32 = VSsetname (vdata_id, “Table 1”); status_32 = VSsetclass (vdata_id, “Some Data”); status_n = VSfdefine (vdata_id, “a_name”, DFNT_INT32, 1 ); status_n = VSfdefine (vdata_id, “b_name”, DFNT_FLOAT32, 1 ); status_n = VSfdefine (vdata_id, “c_name”, DFNT_FLOAT64, 1 ); status_n = VSsetfields (vdata_id, “a_name”,”b_name”,”c_name”); num_of_records = VSwrite (vdata_id, (uint8 *)data_buf, 10, FULL_INTERLACE); 15 status_32 = VSdetach (vdata_id); status_n = Vend (file_id); status_32 = Hclose (file_id); HDF
  • 16. Example of HDF5 Compound Data typedef struct s1_t { int a; float b; double c; } s1_t; s1_t s1[10]; hid_t s1_tid; hid_t file, dataset, space; herr_t status; hsize_t dim[] = {10}; space = H5Screate_simple(1, dim, NULL); file = H5Fcreate(“table.h5”, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); s1_tid = H5Tcreate (H5T_COMPOUND, sizeof(s1_t)); H5Tinsert(s1_tid, "a_name", HOFFSET(s1_t, a), H5T_NATIVE_INT); H5Tinsert(s1_tid, "c_name", HOFFSET(s1_t, c), H5T_NATIVE_DOUBLE); H5Tinsert(s1_tid, "b_name", HOFFSET(s1_t, b), H5T_NATIVE_FLOAT); dataset = H5Dcreate(file, “/Table 1”, s1_tid, space, H5P_DEFAULT); status = H5Dwrite(dataset, s1_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, s1); H5Tclose(s1_tid); H5Sclose(space); H5Dclose(dataset); H5Fclose(file); 16 HDF
  • 17. Example using HDF5 “Table” API typedef struct s1_t { int a; float b; double c; } s1_t; s1_t dst_buff[10]; /* Calculate the size and the offsets of the struct members in memory */ size_t dst_size = sizeof( s1_t ); size_t dst_offset[3] = { HOFFSET( s1_t ), HOFFSET( s1_t, b ), HOFFSET( s1_t, c )}; size_t dst_sizes[3] = { sizeof( dst_buf[0].a), sizeof( dst_buf[0].b), sizeof( dst_buf[0].c)}; const char *field_names[3] = { "a_name", "b_name", "c_name" }; hid_t field_type[3]; field_type[0] = H5T_NATIVE_INT; field_type[1] = H5T_NATIVE_FLOAT; field_type[2] = H5T_NATIVE_DOUBLE; file = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); 17 err = H5TBmake_table( "Table 1", file_id, "Table1", 3, 10, dst_size, field_names, dst_offset, field_type, 10, NULL, 0, dst_buff ); HDF
  • 18. GR (Raster Images) and Palettes • Raster images can be stored as HDF5 Datasets. • The HDF5 “Image and Palette Specification” defines a standard profile. – http://hdf.ncsa.uiuc.edu/HDF5/doc/ADGuide/ImageSpe c.html • The HDF High Level library provides a relatively simple interface to manage image data 18 HDF
  • 19. Example HDF4 GR image int16 image_buf[2][5][3]; file_id = Hopen (“image.hdf”, DFACC_CREATE, 0); gr_id = GRstart (file_id); data_type = DFNT_INT8; dim_sizes[0] = 5; dim_sizes[1] = 2; ri_id = GRcreate (gr_id, “Image 1”, 3, data_type, MFGR_INTERLACE_PIXEL, dim_sizes); start[0] = start[1] = 0; edges[0] = 5; edges[1] = 2; status = GRwriteimage(ri_id, start, NULL, edges, (VOIDP)image_buf); status = GRendaccess (ri_id); status = GRend (gr_id); status = Hclose (file_id); 19 HDF
  • 20. Example using HDF5 Dataset hsize_t dims[2]; herr_t status; hsize_t comp_dims[1] = { 3 }; unsigned char data[5][2][3] file_id = H5Fcreate(“image.h5”, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); dims[0] = 5; dims[1] = 2; dataspace_id = H5Screate_simple(2, dims, NULL); datatype_id = H5Tarray_create( H5T_NATIVE_UINT8, 1, comp_dims, NULL ); dataset_id = H5Dcreate(file_id, "/Image 1", datatype_id, dataspace_id, H5P_DEFAULT); /* Create the required attributes */ attr_type = H5Tcopy( H5T_C_S1 ); attr_size = strlen( “IMAGE” ) + 1; H5Tset_size( attr_type, (size_t)attr_size); H5Tset_strpad( attr_type, H5T_STR_NULLTERM ) ; attr_space_id = H5Screate( H5S_SCALAR ); attr_id = H5Acreate( dataset_id, “CLASS”, attr_type, attr_space_id, H5P_DEFAULT ); H5Awrite( attr_id, attr_type, “IMAGE” ) ; H5Aclose( attr_id ); /* And so on for the required attributes: IMAGE_VERSION=”1.2", IMAGE_SUBCLASS=”IMAGE_TRUECOLOR”, and INTERLACE_MODE=”INTERLACE_PIXEL” */ H5Sclose( attr_space_id ) ; H5Dwrite( dataset_id, datatype_id, H5S_ALL, H5S_ALL, H5P_DEFAULT, data); 20 HDF
  • 21. Example using HDF5 “Image” API hid_t file_id; unsigned char image_data[2][5]; file_id = H5Fcreate( "image.h5", H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT ); status = H5IMmake_image_24bit( file_id, "Image 1", 5, 2, image_data ) H5Fclose(file_id); 21 HDF
  • 22. Annotations, Global Attributes, etc. • HDF5 Attributes are attached to an object (usually a Dataset or Group) – No equivalent to global attributes or file annotations – Recommended that these be made attributes of the root group or similar convention • HDF5 does not have any predefined attributes 22 HDF
  • 23. Example of HDF4 attribute int attr_values[2]; sd_id = SDstart (“attr.hdf”, DFACC_WRITE); sds_index = 0; sds_id = SDselect (sd_id, sds_index); n_values = 2; status = SDsetattr (sds_id, “Valid_Range”, DFNT_FLOAT32, n_values, (VOIDP)attr_values); status = SDendaccess (sds_id); status = SDend (sd_id); 23 HDF
  • 24. Example of HDF5 attribute hid_t file_id, dataset_id, attribute_id, dataspace_id; hsize_t dims; int attr_data[2]; herr_t status; file_id = H5Fopen(“attr.h5”, H5F_ACC_RDWR, H5P_DEFAULT); dataset_id = H5Dopen(file_id, "/dset"); dims = 2; dataspace_id = H5Screate_simple(1, &dims, NULL); attribute_id = H5Acreate(dataset_id, "ValidRange", H5T_STD_I32BE, dataspace_id, H5P_DEFAULT); status = H5Awrite(attribute_id, H5T_NATIVE_INT, attr_data); status = H5Aclose(attribute_id); status = H5Sclose(dataspace_id); status = H5Dclose(dataset_id); status = H5Fclose(file_id); 24 HDF
  • 25. Data Types • HDF5 has a much richer model of datatypes than HDF4. – Can specify the layout of the data at the source and destination (memory and disk) • HDF5 has a String datatype – Should not store strings as arrays of characters 25 HDF
  • 26. Corresponding Datatypes HDF4 type HDF5 Memory type DFNT_INT8 H5T_STD_I8BE H5T_NATIVE_INT8 DFNT_UINT8 H5T_STD_U8BE H5T_NATIVE_UINT8 DFNT_LINT8 H5T_STD_I8LE H5T_NATIVE_INT8 DFNT_LUINT8 H5T_STD_U8LE H5T_NATIVE_UINT8 DFNT_INT16 H5T_STD_U8LE H5T_NATIVE_UINT8 DFNT_UINT16 H5T_STD_U16BE H5T_NATIVE_UINT16 DFNT_LINT16 H5T_STD_I16LE H5T_NATIVE_INT16 DFNT_LUINT16 H5T_STD_U16LE H5T_NATIVE_UINT16 DFNT_INT32 H5T_STD_I32BE H5T_NATIVE_INT32 DFNT_UINT32 H5T_STD_U32BE H5T_NATIVE_UINT32 DFNT_LINT32 H5T_STD_I32LE H5T_NATIVE_INT32 DFNT_LUINT32 H5T_STD_U32LE H5T_NATIVE_UINT32 DFNT_FLOAT32 H5T_IEEE_F32BE H5T_NATIVE_FLOAT DFNT_LFLOAT32 H5T_IEEE_F32LE H5T_NATIVE_FLOAT DFNT_FLOAT64 H5T_IEEE_F64BE H5T_NATIVE_DOUBLE DFNT_ DFNT_LFLOAT64 26 Corresponding HDF5 type H5T_IEEE_F64LE H5T_NATIVE_DOUBLE HDF
  • 27. String Datatypes: Important HDF4: array of: DFNT_CHAR, DFNT_UCHA R, DFNT_INT8, DFNT_UINT8, Etc. 27 HDF5: data is type: H5T_C_S1, H5Tset_size(strlen) *HDF5 also has variable length strings. HDF
  • 28. Pointers The Paper: HDF5 for HDF4 Users: a Short Introduction: http://hdf.ncsa.uiuc.edu/…. 1. 2. The helpdesk: hdfhelp@ncsa.uiuc.edu 3. HDF4 to HDF5 information: http://hdf.ncsa.uiuc.edu/h4toh5/ 4. HDF5 High Level APIs: http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/ 5. “Image and Palette Specification”, http://hdf.ncsa.uiuc.edu/HDF5/doc/ADGuide/ImageSpec.html 6. 28 The HDF web site: http://hdf.ncsa.uicu.edu “HDF5 Table Specification”, http://hdf.ncsa.uiuc.edu/HDF5/hdf5_hl/doc/RM_hdf5tb_spec.ht ml HDF
  • 29. Acknowledgements This report is based upon work supported in part by a Cooperative Agreement with NASA under NASA grant NAG 5-2040 and NAG NCCS-599. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Aeronautics and Space Administration. Other support provided by NCSA and other sponsors and agencies (http://hdf.ncsa.uiuc.edu/acknowledge.html). 29 HDF