## ----cleanup, echo=FALSE, include=FALSE--------------------------------------- if(file.exists('myhdf5file.h5')) file.remove('myhdf5file.h5') if(file.exists('newfile.h5')) file.remove('newfile.h5') if(file.exists('newfile2.h5')) file.remove('newfile2.h5') if(file.exists('newfile3.h5')) file.remove('newfile3.h5') ## ----installation,eval=FALSE-------------------------------------------------- # install.packages("BiocManager") # BiocManager::install("rhdf5") ## ----createHDF5file----------------------------------------------------------- library(rhdf5) h5createFile("myhdf5file.h5") ## ----create groups------------------------------------------------------------ h5createGroup("myhdf5file.h5","foo") h5createGroup("myhdf5file.h5","baa") h5createGroup("myhdf5file.h5","foo/foobaa") h5ls("myhdf5file.h5") ## ----writeMatrix-------------------------------------------------------------- A = matrix(1:10,nr=5,nc=2) h5write(A, "myhdf5file.h5","foo/A") B = array(seq(0.1,2.0,by=0.1),dim=c(5,2,2)) attr(B, "scale") <- "liter" h5write(B, "myhdf5file.h5","foo/B") C = matrix(paste(LETTERS[1:10],LETTERS[11:20], collapse=""), nr=2,nc=5) h5write(C, "myhdf5file.h5","foo/foobaa/C") df = data.frame(1L:5L,seq(0,1,length.out=5), c("ab","cde","fghi","a","s"), stringsAsFactors=FALSE) h5write(df, "myhdf5file.h5","df") h5ls("myhdf5file.h5") D = h5read("myhdf5file.h5","foo/A") E = h5read("myhdf5file.h5","foo/B") F = h5read("myhdf5file.h5","foo/foobaa/C") G = h5read("myhdf5file.h5","df") ## ----accessorH5Fopen---------------------------------------------------------- h5f = H5Fopen("myhdf5file.h5") h5f ## ----accessorDF--------------------------------------------------------------- h5f$df h5f&'df' ## ----accessorC1--------------------------------------------------------------- h5f$foo$foobaa$C h5f$"/foo/foobaa/C" ## ----accessorB1--------------------------------------------------------------- h5d = h5f&"/foo/B" h5d[] h5d[3,,] ## ----accessorB2--------------------------------------------------------------- h5d[3,,] = 1:4 H5Fflush(h5f) ## ----accessorB3,eval=FALSE---------------------------------------------------- # h5f$foo$B = 101:120 # h5f$"/foo/B" = 101:120 ## ----accessorClose1----------------------------------------------------------- H5Dclose(h5d) H5Fclose(h5f) ## ----accessorClose2----------------------------------------------------------- h5closeAll() ## ----writeMatrixSubsetting---------------------------------------------------- h5createDataset("myhdf5file.h5", "foo/S", c(5,8), storage.mode = "integer", chunk=c(5,1), level=7) h5write(matrix(1:5,nr=5,nc=1), file="myhdf5file.h5", name="foo/S", index=list(NULL,1)) h5read("myhdf5file.h5", "foo/S") h5write(6:10, file="myhdf5file.h5", name="foo/S", index=list(1,2:6)) h5read("myhdf5file.h5", "foo/S") h5write(matrix(11:40,nr=5,nc=6), file="myhdf5file.h5", name="foo/S", index=list(1:5,3:8)) h5read("myhdf5file.h5", "foo/S") h5write(matrix(141:144,nr=2,nc=2), file="myhdf5file.h5", name="foo/S", index=list(3:4,1:2)) h5read("myhdf5file.h5", "foo/S") h5write(matrix(151:154,nr=2,nc=2), file="myhdf5file.h5", name="foo/S", index=list(2:3,c(3,6))) h5read("myhdf5file.h5", "foo/S") h5read("myhdf5file.h5", "foo/S", index=list(2:3,2:3)) h5read("myhdf5file.h5", "foo/S", index=list(2:3,c(2,4))) h5read("myhdf5file.h5", "foo/S", index=list(2:3,c(1,2,4,5))) ## ----writeMatrixHyperslab----------------------------------------------------- h5createDataset("myhdf5file.h5", "foo/H", c(5,8), storage.mode = "integer", chunk=c(5,1), level=7) h5write(matrix(1:5,nr=5,nc=1), file="myhdf5file.h5", name="foo/H", start=c(1,1)) h5read("myhdf5file.h5", "foo/H") h5write(6:10, file="myhdf5file.h5", name="foo/H", start=c(1,2), count=c(1,5)) h5read("myhdf5file.h5", "foo/H") h5write(matrix(11:40,nr=5,nc=6), file="myhdf5file.h5", name="foo/H", start=c(1,3)) h5read("myhdf5file.h5", "foo/H") h5write(matrix(141:144,nr=2,nc=2), file="myhdf5file.h5", name="foo/H", start=c(3,1)) h5read("myhdf5file.h5", "foo/H") h5write(matrix(151:154,nr=2,nc=2), file="myhdf5file.h5", name="foo/H", start=c(2,3), stride=c(1,3)) h5read("myhdf5file.h5", "foo/H") h5read("myhdf5file.h5", "foo/H", start=c(2,2), count=c(2,2)) h5read("myhdf5file.h5", "foo/H", start=c(2,2), stride=c(1,2),count=c(2,2)) h5read("myhdf5file.h5", "foo/H", start=c(2,1), stride=c(1,3),count=c(2,2), block=c(1,2)) ## ----h5save------------------------------------------------------------------- A = 1:7; B = 1:18; D = seq(0,1,by=0.1) h5save(A, B, D, file="newfile2.h5") h5dump("newfile2.h5") ## ----h5ls--------------------------------------------------------------------- h5ls("myhdf5file.h5") h5ls("myhdf5file.h5", all=TRUE) h5ls("myhdf5file.h5", recursive=2) ## ----h5dump------------------------------------------------------------------- h5dump("myhdf5file.h5",load=FALSE) D <- h5dump("myhdf5file.h5") ## ----h5dump2, eval=FALSE------------------------------------------------------ # system2("h5dump", "myhdf5file.h5") ## ----h5delete1---------------------------------------------------------------- h5ls("myhdf5file.h5", recursive=2) file.size("myhdf5file.h5") ## ----h5delete2---------------------------------------------------------------- h5delete(file = "myhdf5file.h5", name = "df") h5ls("myhdf5file.h5", recursive=2) ## ----h5delete3---------------------------------------------------------------- h5delete(file = "myhdf5file.h5", name = "foo") h5ls("myhdf5file.h5", recursive=2) file.size("myhdf5file.h5") ## ----bit64integer1------------------------------------------------------------ x = h5createFile("newfile3.h5") D = array(1L:30L,dim=c(3,5,2)) d = h5createDataset(file="newfile3.h5", dataset="D64", dims=c(3,5,2),H5type="H5T_NATIVE_INT64") h5write(D,file="newfile3.h5",name="D64") ## ----bit64integer2------------------------------------------------------------ D64a = h5read(file="newfile3.h5",name="D64",bit64conversion="int") D64a storage.mode(D64a) ## ----bit64integer3------------------------------------------------------------ D64b = h5read(file="newfile3.h5",name="D64",bit64conversion="double") D64b storage.mode(D64b) ## ----bit64integer4------------------------------------------------------------ D64c = h5read(file="newfile3.h5",name="D64",bit64conversion="bit64") D64c class(D64c) ## ----createfile,quiet=FALSE--------------------------------------------------- library(rhdf5) h5file = H5Fcreate("newfile.h5") h5file ## ----create_groups, quiet=FALSE----------------------------------------------- h5group1 <- H5Gcreate(h5file, "foo") h5group2 <- H5Gcreate(h5file, "baa") h5group3 <- H5Gcreate(h5group1, "foobaa") h5group3 ## ----createdataspace, quiet=FALSE--------------------------------------------- d = c(5,7) h5space1 = H5Screate_simple(d,d) h5space2 = H5Screate_simple(d,NULL) h5space3 = H5Scopy(h5space1) h5space4 = H5Screate("H5S_SCALAR") h5space1 H5Sis_simple(h5space1) ## ----create_dataset----------------------------------------------------------- h5dataset1 = H5Dcreate( h5file, "dataset1", "H5T_IEEE_F32LE", h5space1 ) h5dataset2 = H5Dcreate( h5group2, "dataset2", "H5T_STD_I32LE", h5space1 ) h5dataset1 ## ----writedata---------------------------------------------------------------- A = seq(0.1,3.5,length.out=5*7) H5Dwrite(h5dataset1, A) B = 1:35 H5Dwrite(h5dataset2, B) ## ----closefile---------------------------------------------------------------- H5Dclose(h5dataset1) H5Dclose(h5dataset2) H5Sclose(h5space1) H5Sclose(h5space2) H5Sclose(h5space3) H5Sclose(h5space4) H5Gclose(h5group1) H5Gclose(h5group2) H5Gclose(h5group3) H5Fclose(h5file) ## ----sessioninfo-------------------------------------------------------------- sessionInfo() ## ----cleanup_after, echo=FALSE, include=FALSE--------------------------------- for(file in c('myhdf5file.h5', 'newfile.h5', 'newfile2.h5', 'newfile3.h5')) { if(file.exists(file)) { file.remove( file ) } }