Comments (8)
After having tried @jad362's method, I notice there is a factor level missing:
Error in if (size == Inf) { : missing value where TRUE/FALSE needed
Calls: main ... getDtype -> -> ->
In addition: Warning message:
In[<-.factor
(*tmp*
, thisvar, value = "") :
invalid factor level, NA generated
Execution halted
So I force factor variables to be characters. Now it works well for me:
for(j in 1:ncol([email protected])){
if(is.factor([email protected][,j]) == T){
[email protected][,j] = as.character([email protected][,j]) # Force the variable type to be character
[email protected][,j][is.na([email protected][,j])] <- "N.A"
}
if(is.character([email protected][,j]) == T){
[email protected][,j][is.na([email protected][,j])] <- "N.A"
}
}
from loomr.
I am also getting this error when I have NA values in the Seurat object metadata. Weirdly it seems to happen when I have NAs present in a column of type character and not of type numeric. Here is an example based on the pbmc guided clustering tutorial
library(Seurat)
pbmc.data <- Read10X(data.dir = "~/single_cell_projects/resources/seurat_example/filtered_gene_bc_matrices/hg19/")
pbmc <- CreateSeuratObject(counts = pbmc.data, project = "pbmc3k", min.cells = 3, min.features = 200)
cell_names <- colnames(pbmc)
new_char_col <- rep(c("1", NA), length(cell_names)/2)
names(new_char_col) <- cell_names
new_num_col <- rep(c(1, NA), length(cell_names)/2)
names(new_num_col) <- cell_names
pbmc_na_char <- AddMetaData(pbmc, new_char_col, col.name = "test")
pbmc_na_num <- AddMetaData(pbmc, new_num_col, col.name = "test")
pbmc.loom <- as.loom(pbmc, filename = "~/single_cell_projects/resources/seurat_example/pbmc.loom")
pbmc_na_char.loom <- as.loom(pbmc_na_char, filename = "~/single_cell_projects/resources/seurat_example/pbmc_na_char.loom")
pbmc_na_num.loom <- as.loom(pbmc_na_num, filename = "~/single_cell_projects/resources/seurat_example/pbmc_na_num.loom")
from loomr.
Hi all, I'm getting the same error currently when trying to convert Seurat objects to loom objects using the as.loom function. Before as.loom I'm converting the character and factor NA's to "NA" using this loop:
for(j in 1:ncol([email protected])){
if(is.factor([email protected][,j]) == T){
[email protected][,j][is.na([email protected][,j])] <- "N.A"
}
if(is.character([email protected][,j]) == T){
[email protected][,j][is.na([email protected][,j])] <- "N.A"
}
}
But as.loom still produces the <<Error in if (size == Inf) { : missing value where TRUE/FALSE needed>> when trying to add orig.ident from the Seurat meta data. Am I converting the wrong NA's to strings or is this dependent on another issue? Thank you
from loomr.
Hi Nathan,
I am unable to reproduce this bug
> library(Seurat)
> data("pbmc_small")
> lfile <- as.loom(x = pbmc_small, filename = 'pbmc_small.loom')
Transposing input data: loom file will show input columns (cells) as rows and input rows (features) as columns
This is to maintain compatibility with other loom tools
|======================================================================| 100%
Adding: CellID
Adding: Gene
Adding a layer to norm_data (layer 1 of 1)
|======================================================================| 100%
Adding: mean
Adding: variance
Adding: variance_expected
Adding: variance_standardized
Adding: Selected
Adding: orig_ident
Adding: nCount_RNA
Adding: nFeature_RNA
Adding: RNA_snn_res_0_8
Adding: letter_idents
Adding: groups
Adding: RNA_snn_res_1
Adding: ClusterID
Adding: ClusterName
Adding scaled data matrix to /layers/scale_data
Adding a layer to scale_data (layer 1 of 1)
|======================================================================| 100%
Adding dimensional reduction information for pca
Adding cell embedding information for pca
Adding feature loading information for pca
Adding dimensional reduction information for tsne
Adding cell embedding information for tsne
No feature loading information for tsne
Adding graph RNA_snn
> lfile
Class: loom
Filename: /home/paul/Software/loomR/pbmc_small.loom
Access type: H5F_ACC_RDWR
Attributes: version, chunks, LOOM_SPEC_VERSION, assay, last_modified
Listing:
name obj_type dataset.dims dataset.type_class
col_attrs H5I_GROUP <NA> <NA>
col_graphs H5I_GROUP <NA> <NA>
layers H5I_GROUP <NA> <NA>
matrix H5I_DATASET 80 x 230 H5T_FLOAT
row_attrs H5I_GROUP <NA> <NA>
row_graphs H5I_GROUP <NA> <NA>
> lfile$mode
[1] "w-"
> newcol <- sample(x = c(1:10, NA), size = ncol(x = pbmc_small), replace = TRUE)
> any(is.na(x = newcol))
[1] TRUE
> lfile$add.col.attribute(attributes = newcol, overwrite = TRUE)
Show Traceback
Rerun with Debug
Error in self$add.attribute(attributes = attributes, MARGIN = 2, overwrite = overwrite) :
Attributes must be provided as a named list
> lfile$add.col.attribute(attributes = list('newcol' = newcol), overwrite = TRUE)
Adding: newcol
> any(is.na(x = lfile[['col_attrs/newcol']][]))
[1] TRUE
Would you be able to share your loom file and newCol
list with me so I can debug better?
from loomr.
@mojaveazure I reproduced @whtns 's example with the pbmc_small dataset lik this:
library(Seurat)
library(loomR)
data("pbmc_small")
lfile <- as.loom(x = pbmc_small, filename = 'pbmc_small.loom', overwrite = TRUE)
x <- list(
"int" = sample(c(1L, 2L, NA), size = ncol(x = pbmc_small), replace = TRUE),
"dbl" = sample(c(1.0, 2.0, NA), size = ncol(x = pbmc_small), replace = TRUE),
"chr" = sample(c("a", "b", NA), size = ncol(x = pbmc_small), replace = TRUE)
)
x$fct <- addNA(factor(x$chr, levels = c("a", "b")))
lfile$add.col.attribute(
attributes = list(
# "chr" = x$chr,
# "fct" = x$fct,
"int" = x$int,
"dbl" = x$dbl
),
overwrite = TRUE
)
The Error in if (size == Inf)
error will be triggered once you uncomment the chr and/or fct line, showing what @whtns exposed before.
What I do for now is to recode NAs inside a character or factor attribute into "NA". but I really hope R's NA system can be fully functional for loomR object. Hope this can be of any help for you guys.
from loomr.
BTW, sessionInfo()
R version 3.6.1 (2019-07-05)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 17763)
Matrix products: default
locale:
[1] LC_COLLATE=Chinese (Simplified)_China.936 LC_CTYPE=Chinese (Simplified)_China.936
[3] LC_MONETARY=Chinese (Simplified)_China.936 LC_NUMERIC=C
[5] LC_TIME=Chinese (Simplified)_China.936
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] loomR_0.2.1.9000 hdf5r_1.2.0 R6_2.4.0 Seurat_3.1.0
loaded via a namespace (and not attached):
[1] nlme_3.1-141 tsne_0.1-3 bitops_1.0-6 bit64_0.9-7 RcppAnnoy_0.0.12
[6] RColorBrewer_1.1-2 httr_1.4.1 sctransform_0.2.0 tools_3.6.1 irlba_2.3.3
[11] KernSmooth_2.23-15 uwot_0.1.3 lazyeval_0.2.2 colorspace_1.4-1 npsurv_0.4-0
[16] tidyselect_0.2.5 gridExtra_2.3 bit_1.1-14 compiler_3.6.1 plotly_4.9.0
[21] caTools_1.17.1.2 scales_1.0.0 lmtest_0.9-37 ggridges_0.5.1 pbapply_1.4-1
[26] stringr_1.4.0 digest_0.6.20 R.utils_2.9.0 pkgconfig_2.0.2 htmltools_0.3.6
[31] bibtex_0.4.2 htmlwidgets_1.3 rlang_0.4.0 rstudioapi_0.10 zoo_1.8-6
[36] jsonlite_1.6 ica_1.0-2 gtools_3.8.1 dplyr_0.8.3 R.oo_1.22.0
[41] magrittr_1.5 Matrix_1.2-17 Rcpp_1.0.2 munsell_0.5.0 ape_5.3
[46] reticulate_1.13 R.methodsS3_1.7.1 stringi_1.4.3 gbRd_0.4-11 MASS_7.3-51.4
[51] gplots_3.0.1.1 Rtsne_0.15 plyr_1.8.4 grid_3.6.1 parallel_3.6.1
[56] gdata_2.18.0 listenv_0.7.0 ggrepel_0.8.1 crayon_1.3.4 lattice_0.20-38
[61] cowplot_1.0.0 splines_3.6.1 SDMTools_1.1-221.1 pillar_1.4.2 igraph_1.2.4.1
[66] future.apply_1.3.0 reshape2_1.4.3 codetools_0.2-16 leiden_0.3.1 glue_1.3.1
[71] packrat_0.5.0 lsei_1.2-0 metap_1.1 data.table_1.12.2 RcppParallel_4.4.3
[76] png_0.1-7 Rdpack_0.11-0 gtable_0.3.0 RANN_2.6.1 purrr_0.3.2
[81] tidyr_0.8.3 future_1.14.0 assertthat_0.2.1 ggplot2_3.2.1 rsvd_1.0.2
[86] survival_2.44-1.1 viridisLite_0.3.0 tibble_2.1.3 cluster_2.1.0 globals_0.12.4
[91] fitdistrplus_1.0-14 ROCR_1.0-7
from loomr.
This is quite helpful and I just got the same problem. Thanks guys.
from loomr.
I rediscovered this issue and it's open status several months after last commenting. Would just like to add, for those looking for loom conversion on the way to anndata the sceasy package worked well for me.
from loomr.
Related Issues (20)
- Loom file outdated version for loompy HOT 2
- Raw Data not Present in Loom File
- Combine two loom files
- Package ‘R6’ version 2.4.0 cannot be unloaded:
- Cannot convert Seurat object to loom HOT 2
- Error in (function () : id is invalid
- get.attribute.df() - how to handle duplicate CellIDs? HOT 1
- Cannot open loom file HOT 3
- saving a loomR file
- LoomR doesn't seem to work HOT 3
- How to save/export loom file HOT 1
- Does package support storing info in global attributes?
- Compatibility with R version 4.0.3
- how to merge 6 loom file? HOT 2
- Conversion from Seurat to loom
- get.attribute.df(): unused argument (attribute.names = ) HOT 2
- Error in private$reset_batch() : attempt to apply non-function
- create() ignores do.transpose=FALSE
- 'Error in eval(exprs[i], envir) : object 'confint.default' not found' while trying to install the developmental version 1.0.3.9000 HOT 1
- subsetting loom file
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from loomr.