#include "load_influenza_aa_dat.h" #include "hdf5_hl.h" #define NFIELDS (hsize_t) 11 //#define NRECORDS (hsize_t) 138052 #define NRECORDS (hsize_t) 1 #define TABLE_NAME "influenza_aa.dat" void load_influenza_aa_dat (hid_t file_id) { /* * Model the data using native types. */ typedef struct supplementary_data { char genbank_accession_number[9]; char host[15]; int genome_segment_number; char subtype[7]; char country[25]; int year; int sequence_length; char virus_name[196]; char age[17]; char gender[6]; char full_length_indicator[4]; } supplementary_data; /* * Use an HDF5 Table for storage. * http://www.hdfgroup.org/HDF5/Tutor/h5table.html */ /* * "Calculate the size and the offsets of our struct members in * memory." */ size_t dst_size = sizeof (supplementary_data); size_t dst_offset[NFIELDS] = { HOFFSET ( supplementary_data, genbank_accession_number ), HOFFSET ( supplementary_data, host ), HOFFSET ( supplementary_data, genome_segment_number ), HOFFSET ( supplementary_data, subtype ), HOFFSET ( supplementary_data, country ), HOFFSET ( supplementary_data, year ), HOFFSET ( supplementary_data, sequence_length ), HOFFSET ( supplementary_data, virus_name ), HOFFSET ( supplementary_data, age ), HOFFSET ( supplementary_data, gender ), HOFFSET ( supplementary_data, full_length_indicator )}; /* Only needed for reading? supplementary_data dst_buf[NRECORDS]; size_t dst_sizes[NFIELDS] = { sizeof ( dst_buf[0].genbank_accession_number ), sizeof ( dst_buf[0].host ), sizeof ( dst_buf[0].genome_segment_number ), sizeof ( dst_buf[0].subtype ), sizeof ( dst_buf[0].country ), sizeof ( dst_buf[0].year ), sizeof ( dst_buf[0].sequence_length ), sizeof ( dst_buf[0].virus_name ), sizeof ( dst_buf[0].age ), sizeof ( dst_buf[0].gender ), sizeof ( dst_buf[0].full_length_indicator)}; */ /* * "Define field information." */ const char *field_names[NFIELDS] = { "GenBank accession number", "Host", "Genome segment number", "Subtype", "Country", "Year", "Sequence length", "Virus name", "Age", "Gender", "Full-length Indicator" }; hsize_t chunk_size = 10; int *fill_data = NULL; int compress = 0; /* * "Initialize field type." */ hid_t field_type[NFIELDS]; hid_t genbank_accession_number_type = H5Tcopy ( H5T_C_S1 ); H5Tset_size ( genbank_accession_number_type, 9 ); field_type[0] = genbank_accession_number_type; hid_t host_type = H5Tcopy ( H5T_C_S1 ); H5Tset_size ( host_type, 15 ); field_type[1] = host_type; field_type[2] = H5T_NATIVE_INT; hid_t subtype_type = H5Tcopy ( H5T_C_S1 ); H5Tset_size (subtype_type, 7 ); field_type[3] = subtype_type; hid_t country_type = H5Tcopy ( H5T_C_S1 ); H5Tset_size (country_type, 25 ); field_type[4] = country_type; field_type[5] = H5T_NATIVE_INT; field_type[6] = H5T_NATIVE_INT; hid_t virus_name_type = H5Tcopy ( H5T_C_S1 ); H5Tset_size (virus_name_type, 196); field_type[7] = virus_name_type; hid_t age_type = H5Tcopy (H5T_C_S1); H5Tset_size (age_type, 17); field_type[8] = age_type; hid_t gender_type = H5Tcopy (H5T_C_S1); H5Tset_size (gender_type, 6); field_type[9] = gender_type; hid_t full_length_indicator_type = H5Tcopy (H5T_C_S1); H5Tset_size (full_length_indicator_type, 4); field_type[10] = full_length_indicator_type; supplementary_data p_data[NRECORDS] = { {"BAC53999", "Human", 7, "", "Zambia", 1999, 109, "Influenza B virus (B/Lusaka/270/99)", "", "", "yes"} }; herr_t status = H5TBmake_table ("influenza_aa.dat", file_id, TABLE_NAME,NFIELDS,NRECORDS, dst_size,field_names, dst_offset, field_type, chunk_size, fill_data, compress, p_data); H5Tclose (genbank_accession_number_type); H5Tclose (host_type); H5Tclose (subtype_type); H5Tclose (country_type); H5Tclose (virus_name_type); H5Tclose (age_type); H5Tclose (gender_type); H5Tclose (full_length_indicator_type); return; }