aertslab / SCopeLoomR

R package (compatible with SCope) to create generic .loom files and extend them with other data e.g.: SCENIC regulons, Seurat clusters and markers, ...
MIT License
38 stars 15 forks source link

Adding new embedding can fail when new embedding has as id the total number of embeddings #32

Closed dweemx closed 3 years ago

dweemx commented 3 years ago

If there is already an embedding with an ID that is equal to the number of existing embeddings in the Embeddings_X slot then add_embedding will fail with:

Error in .subset2(public_bind_env, "initialize")(...) : HDF5-API Errors:
  error #000: H5Tcompound.c in H5Tinsert(): line 349: unable to insert member
class: HDF5
major: Datatype
minor: Unable to insert object

error #001: H5Tcompound.c in H5T__insert(): line 427: member name is not unique
class: HDF5
major: Datatype
minor: Unable to insert object
6.
.subset2(public_bind_env, "initialize")(...)
5.
H5T_COMPOUND$new(labels = names(x), dtypes = dtypes)
4.
guess_dtype(x = value) at loom.R#2265
3.
add_col_attr(loom = loom, key = key, value = value) at loom.R#2232
2.
update_col_attr(loom = loom, key = CA_EXTRA_EMBEDDINGS_NAMES[i],
                value = as.data.frame(x = ca.embeddings)) at loom.R#987
1.
add_embedding(loom = loom, embedding = umap, name = "UMAP")
Elo-mars commented 2 years ago

Hello, I have exactly the same error (unable to insert member and member name is not unique) how do you fix that ? I reinstalled hdf5-1.10.1 and ScopeLoomR version 0.13.0. Thanks!