Bioconductor / HDF5Array

HDF5 backend for DelayedArray objects
https://bioconductor.org/packages/HDF5Array
9 stars 13 forks source link

`superclass "DataTable_OR_NULL" not defined` error #46

Closed ekernf01 closed 2 years ago

ekernf01 commented 2 years ago

I successfully followed the advice at https://github.com/Bioconductor/HDF5Array/issues/41 to make an hdf5 file on disk. I can read chunks of it as expected with rhdf5. But, I am having trouble reading it as a HDF5Array. I'm sorry to bother you with this but I have read the vignettes I could find, and I've googled around, but I have not found a solution. Here is what I am seeing; please let me know if you need additional details.

test.h5.gz

X = HDF5Array::HDF5Array("test.h5", name = "raw")

Expected behavior: return an HDF5-backed matrix-like object

Observed behavior:

Error in validObject(.Object) : 
  invalid class “HDF5Matrix” object: superclass "DataTable_OR_NULL" not defined in the environment of the object's class

Package versions:

> packageVersion("HDF5Array")
[1] ‘1.16.1’
> packageVersion("DelayedArray")
[1] ‘0.16.3’
> packageVersion("rhdf5")
[1] ‘2.32.4’
> R.version
               _                           
platform       x86_64-pc-linux-gnu         
arch           x86_64                      
os             linux-gnu                   
system         x86_64, linux-gnu           
status                                     
major          4                           
minor          0.0                         
year           2020                        
month          04                          
day            24                          
svn rev        78286                       
language       R                           
version.string R version 4.0.0 (2020-04-24)
nickname       Arbor Day                   
ekernf01 commented 2 years ago

Making the seed works

X_seed = HDF5Array::HDF5ArraySeed("~/Desktop/jhu/research/datalake/share_seq/skin/test.h5",
                             name = "raw")

Making the DelayedArray then fails. Is this how this function was intended to be used?

X = DelayedArray::DelayedArray(X_seed)
hpages commented 2 years ago

Hi,

You most likely have a mix of packages from different Bioconductor versions but I can't tell for sure because you're not showing your full sessionInfo(). This kind of mix is always bad but it should never happen if you always use BiocManager::install() to install packages. This is the safest way to install packages because it will pick up the right version of each package for you.

Use BiocManager::valid() to see if you have version mismatches and fix as needed.

Best, H.

ekernf01 commented 2 years ago

Thanks. Looks like I indeed have some too-new packages. I will close for now.