error writing empty character string in rhdf5 >= 2.8.0
1
0
Entering edit mode
@brad-friedman-6302
Last seen 9.6 years ago
Hello Bernd and BioC people: Writing empty character strings results in a C-level HDF5 error starting in rhdf5 2.8.0. See transcript below, under 2.8.0 (I am not attaching the transcript under 2.7.3, where it works fine). I didn't test if this is specific to character or would happen with other types. I noticed in NEWS the note "h5createDataset automatically uses chunking and compression." in 2.8.0 so this may be related to that change. A workaround is to call h5createDataset and explicitly provide chunk = NULL (and level = 0 to suppress warning about compression requiring chunking). This should be done just before calling h5write. > library(rhdf5) > filename <- tempfile(fileext = ".hdf5") > datasetname <- "empty_char" > h5createFile(filename) [1] TRUE > h5write(character(0), + file = filename, + name = datasetname) HDF5-DIAG: Error detected in HDF5 (1.8.10) thread 0: #000: H5Pdcpl.c line 867 in H5Pset_chunk(): all chunk dimensions must be positive major: Invalid arguments to routine minor: Out of range HDF5-DIAG: Error detected in HDF5 (1.8.10) thread 0: #000: H5D.c line 170 in H5Dcreate2(): unable to create dataset major: Dataset minor: Unable to initialize object #001: H5Dint.c line 439 in H5D__create_named(): unable to create and link to dataset major: Dataset minor: Unable to initialize object #002: H5L.c line 1638 in H5L_link_object(): unable to create new link to object major: Links minor: Unable to initialize object #003: H5L.c line 1882 in H5L_create_real(): can't insert link major: Symbol table minor: Unable to insert object #004: H5Gtraverse.c line 861 in H5G_traverse(): internal path traversal failed major: Symbol table minor: Object not found #005: H5Gtraverse.c line 641 in H5G_traverse_real(): traversal operator failed major: Symbol table minor: Callback failed #006: H5L.c line 1685 in H5L_link_cb(): unable to create object major: Object header minor: Unable to initialize object #007: H5O.c line 3015 in H5O_obj_create(): unable to open object major: Object header minor: Can't open object #008: H5Doh.c line 293 in H5O__dset_create(): unable to create dataset major: Dataset minor: Unable to initialize object #009: H5Dint.c line 1001 in H5D__create(): filters can only be used with chunked layout major: Dataset minor: Bad value HDF5: unable to create dataset HDF5-DIAG: Error detected in HDF5 (1.8.10) thread 0: #000: H5D.c line 334 in H5Dopen2(): not found major: Dataset minor: Object not found #001: H5Gloc.c line 430 in H5G_loc_find(): can't find object major: Symbol table minor: Object not found #002: H5Gtraverse.c line 861 in H5G_traverse(): internal path traversal failed major: Symbol table minor: Object not found #003: H5Gtraverse.c line 641 in H5G_traverse_real(): traversal operator failed major: Symbol table minor: Callback failed #004: H5Gloc.c line 385 in H5G_loc_find_cb(): object 'empty_char' doesn't exist major: Symbol table minor: Object not found HDF5: unable to open dataset Error : Error in h5checktype(). Argument not of class H5IdComponent. In addition: Warning messages: 1: In max(nchar(obj)) : no non-missing arguments to max; returning -Inf 2: In H5Tset_size(tid, size) : NAs introduced by coercion Error : Error in h5checktype(). Argument not of class H5IdComponent. Error in is(h5id, "H5IdComponent") : object 'h5spaceFile' not found Error : Error in h5checktype(). Argument not of class H5IdComponent. > sessionInfo() R version 3.1.0 (2014-04-10) Platform: x86_64-unknown-linux-gnu (64-bit) locale: [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 [7] LC_PAPER=en_US.UTF-8 LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] rhdf5_2.8.0 loaded via a namespace (and not attached): [1] zlibbioc_1.10.0 [[alternative HTML version deleted]]
• 2.5k views
ADD COMMENT
0
Entering edit mode
Bernd Fischer ▴ 550
@bernd-fischer-5348
Last seen 7.3 years ago
Germany / Heidelberg / DKFZ
Dear Brad! It was a bug due to the automatic determination of chunk size introduced in rhdf5 2.8.0. I fixed the bug. It is again possible to write 0-length objects with h5write using rhdf 2.9.2 (available after the next daily bioconductor build). Best, Bernd On 11.06.2014, at 21:18, Brad Friedman <friedman.brad@gene.com> wrote: > Hello Bernd and BioC people: > > Writing empty character strings results in a C-level HDF5 error starting in rhdf5 2.8.0. See transcript below, under 2.8.0 (I am not attaching the transcript under 2.7.3, where it works fine). I didn't test if this is specific to character or would happen with other types. > > I noticed in NEWS the note "h5createDataset automatically uses chunking and compression." in 2.8.0 so this may be related to that change. > > A workaround is to call h5createDataset and explicitly provide chunk = NULL (and level = 0 to suppress warning about compression requiring chunking). This should be done just before calling h5write. > > > library(rhdf5) > > filename <- tempfile(fileext = ".hdf5") > > datasetname <- "empty_char" > > h5createFile(filename) > [1] TRUE > > h5write(character(0), > + file = filename, > + name = datasetname) > HDF5-DIAG: Error detected in HDF5 (1.8.10) thread 0: > #000: H5Pdcpl.c line 867 in H5Pset_chunk(): all chunk dimensions must be positive > major: Invalid arguments to routine > minor: Out of range > HDF5-DIAG: Error detected in HDF5 (1.8.10) thread 0: > #000: H5D.c line 170 in H5Dcreate2(): unable to create dataset > major: Dataset > minor: Unable to initialize object > #001: H5Dint.c line 439 in H5D__create_named(): unable to create and link to dataset > major: Dataset > minor: Unable to initialize object > #002: H5L.c line 1638 in H5L_link_object(): unable to create new link to object > major: Links > minor: Unable to initialize object > #003: H5L.c line 1882 in H5L_create_real(): can't insert link > major: Symbol table > minor: Unable to insert object > #004: H5Gtraverse.c line 861 in H5G_traverse(): internal path traversal failed > major: Symbol table > minor: Object not found > #005: H5Gtraverse.c line 641 in H5G_traverse_real(): traversal operator failed > major: Symbol table > minor: Callback failed > #006: H5L.c line 1685 in H5L_link_cb(): unable to create object > major: Object header > minor: Unable to initialize object > #007: H5O.c line 3015 in H5O_obj_create(): unable to open object > major: Object header > minor: Can't open object > #008: H5Doh.c line 293 in H5O__dset_create(): unable to create dataset > major: Dataset > minor: Unable to initialize object > #009: H5Dint.c line 1001 in H5D__create(): filters can only be used with chunked layout > major: Dataset > minor: Bad value > HDF5: unable to create dataset > HDF5-DIAG: Error detected in HDF5 (1.8.10) thread 0: > #000: H5D.c line 334 in H5Dopen2(): not found > major: Dataset > minor: Object not found > #001: H5Gloc.c line 430 in H5G_loc_find(): can't find object > major: Symbol table > minor: Object not found > #002: H5Gtraverse.c line 861 in H5G_traverse(): internal path traversal failed > major: Symbol table > minor: Object not found > #003: H5Gtraverse.c line 641 in H5G_traverse_real(): traversal operator failed > major: Symbol table > minor: Callback failed > #004: H5Gloc.c line 385 in H5G_loc_find_cb(): object 'empty_char' doesn't exist > major: Symbol table > minor: Object not found > HDF5: unable to open dataset > Error : Error in h5checktype(). Argument not of class H5IdComponent. > In addition: Warning messages: > 1: In max(nchar(obj)) : no non-missing arguments to max; returning -Inf > 2: In H5Tset_size(tid, size) : NAs introduced by coercion > Error : Error in h5checktype(). Argument not of class H5IdComponent. > Error in is(h5id, "H5IdComponent") : object 'h5spaceFile' not found > Error : Error in h5checktype(). Argument not of class H5IdComponent. > > sessionInfo() > R version 3.1.0 (2014-04-10) > Platform: x86_64-unknown-linux-gnu (64-bit) > > locale: > [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C > [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 > [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 > [7] LC_PAPER=en_US.UTF-8 LC_NAME=C > [9] LC_ADDRESS=C LC_TELEPHONE=C > [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C > > attached base packages: > [1] stats graphics grDevices utils datasets methods base > > other attached packages: > [1] rhdf5_2.8.0 > > loaded via a namespace (and not attached): > [1] zlibbioc_1.10.0 > [[alternative HTML version deleted]]
ADD COMMENT

Login before adding your answer.

Traffic: 751 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6