# include # include # include "hdf5.h" #define FILE "selected.fast5" #define DATASET_LOCATION "/Raw/Reads/Read_80/Signal" #define DIMSIZE 19066 #define CHUNKSIZE 201536 int main(int argc, char *argv[]) { hid_t file_id, dset_id, mem_type_id, mem_space_id, file_space_id; /* identifiers */ herr_t status; int16_t data[CHUNKSIZE] = { 8 }; hid_t prop_id = -1; hsize_t chunk_dimsr[1], dimsr[1], maxdims[1]={H5S_UNLIMITED}; hsize_t start[1]; /* Hyperslab start */ hsize_t stride[1]; /* Hyperslab stride */ hsize_t count[1]; /* Hyperslab count */ int rank = 1; int ii; // Make sure the file can be modified system("chmod 777 selected.fast5"); for (ii = 0; ii < CHUNKSIZE; ii++) data[ii] = 8; /* Open an existing file. */ file_id = H5Fopen(FILE, H5F_ACC_RDWR, H5P_DEFAULT); std::cout << "Value of file_id:" << file_id << "\n"; dset_id = H5Dopen1(file_id, DATASET_LOCATION); std::cout << "Value of dataset_id:" << dset_id << "\n"; // Get the dimension info of the dataset to create a dataspace prop_id = H5Dget_create_plist(dset_id); if (H5D_CHUNKED == H5Pget_layout(prop_id)) rank= H5Pget_chunk(prop_id, rank, chunk_dimsr); // Get the dataspace to use when writing mem_space_id = H5Dget_space(dset_id); // Set size to write status = H5Sset_extent_simple(mem_space_id, rank, chunk_dimsr, NULL); // Extend the dataset size status = H5Dset_extent(dset_id, chunk_dimsr); mem_type_id = H5T_NATIVE_INT16; // mem_space_id = H5Dget_space(dset_id); // file_space_id = H5Dget_space(dset_id); // mem_space_id = H5S_ALL; // file_space_id = H5S_ALL; // Use the custom dataspace, not H5S_ALL status = H5Dwrite(dset_id, mem_type_id, mem_space_id, mem_space_id, H5P_DEFAULT, data); std::cout << "Value of status:" << status << "\n"; H5Sclose(mem_space_id); H5Dclose(dset_id); H5Fclose(file_id); }