satijalab / seurat

R toolkit for single cell genomics
http://www.satijalab.org/seurat
Other
2.18k stars 891 forks source link

Issue with the subset function of Seurat handling layers with one cell #9074

Open leonfodoulian opened 3 days ago

leonfodoulian commented 3 days ago

Hi,

This is a follow up on issue #8362.

When you subset a Seurat object with multiple layers and end up with one of the samples represented by only one cell, you can no longer subset the object any further. The reason is that the corresponding layers will be vectors rather than matrices (dense or sparse). And the code returns the following error:

Error in methods::slot(object = object, name = "layers")[[layer]][features,  : 
  incorrect number of dimensions

Below is a reproducible code:

require(Seurat)
obj <- pbmc_small
obj@meta.data$random <- c("a", "a",
                          sample(x = c("b", "c"),
                                 nrow(x = pbmc_small@meta.data) - 2,
                                 replace = TRUE))
obj[["RNA"]] <- split(x = obj[["RNA"]],
                      f = obj@meta.data$random)
obj.g2 <- subset(x = obj,
                 subset = groups == "g2")
obj.g2.sub <- subset(x = obj.g2,
                     subset = random %in% c("a", "b"))

And below is my sessionInfo():

> devtools::session_info()
─ Session info ────────────────────────────────────────────────────────────────────────────────────────────────────────────────
 setting  value
 version  R version 4.3.1 (2023-06-16)
 os       macOS Monterey 12.7
 system   x86_64, darwin20
 ui       RStudio
 language (EN)
 collate  en_US.UTF-8
 ctype    en_US.UTF-8
 tz       Europe/Zurich
 date     2024-07-01
 rstudio  2023.09.0+463 Desert Sunflower (desktop)
 pandoc   NA

─ Packages ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
 package          * version    date (UTC) lib source
 abind              1.4-5      2016-07-21 [1] CRAN (R 4.3.0)
 bitops             1.0-7      2021-04-24 [1] CRAN (R 4.3.0)
 cachem             1.0.8      2023-05-01 [1] CRAN (R 4.3.0)
 caTools            1.18.2     2021-03-28 [1] CRAN (R 4.3.0)
 cli                3.6.2      2023-12-11 [1] CRAN (R 4.3.0)
 cluster            2.1.6      2023-12-01 [1] CRAN (R 4.3.0)
 clustree           0.5.1      2023-11-05 [1] CRAN (R 4.3.0)
 codetools          0.2-20     2024-03-31 [1] CRAN (R 4.3.2)
 colorspace         2.1-0      2023-01-23 [1] CRAN (R 4.3.0)
 cowplot            1.1.3      2024-01-22 [1] CRAN (R 4.3.2)
 data.table         1.15.4     2024-03-30 [1] CRAN (R 4.3.2)
 deldir             2.0-4      2024-02-28 [1] CRAN (R 4.3.2)
 devtools           2.4.5      2022-10-11 [1] CRAN (R 4.3.0)
 digest             0.6.35     2024-03-11 [1] CRAN (R 4.3.2)
 dotCall64          1.1-1      2023-11-28 [1] CRAN (R 4.3.0)
 dplyr              1.1.4      2023-11-17 [1] CRAN (R 4.3.0)
 ellipsis           0.3.2      2021-04-29 [1] CRAN (R 4.3.0)
 fansi              1.0.6      2023-12-08 [1] CRAN (R 4.3.0)
 farver             2.1.1      2022-07-06 [1] CRAN (R 4.3.0)
 fastDummies        1.7.3      2023-07-06 [1] CRAN (R 4.3.0)
 fastmap            1.1.1      2023-02-24 [1] CRAN (R 4.3.0)
 fitdistrplus       1.1-11     2023-04-25 [1] CRAN (R 4.3.0)
 fs                 1.6.3      2023-07-20 [1] CRAN (R 4.3.0)
 future             1.33.2     2024-03-26 [1] CRAN (R 4.3.2)
 future.apply       1.11.2     2024-03-28 [1] CRAN (R 4.3.2)
 generics           0.1.3      2022-07-05 [1] CRAN (R 4.3.0)
 ggforce            0.4.2      2024-02-19 [1] CRAN (R 4.3.2)
 ggplot2            3.5.0      2024-02-23 [1] CRAN (R 4.3.2)
 ggraph             2.2.1      2024-03-07 [1] CRAN (R 4.3.2)
 ggrepel            0.9.5      2024-01-10 [1] CRAN (R 4.3.0)
 ggridges           0.5.6      2024-01-23 [1] CRAN (R 4.3.2)
 globals            0.16.3     2024-03-08 [1] CRAN (R 4.3.2)
 glue               1.7.0      2024-01-09 [1] CRAN (R 4.3.0)
 goftest            1.2-3      2021-10-07 [1] CRAN (R 4.3.0)
 gplots             3.1.3.1    2024-02-02 [1] CRAN (R 4.3.2)
 graphlayouts       1.1.1      2024-03-09 [1] CRAN (R 4.3.2)
 gridExtra          2.3        2017-09-09 [1] CRAN (R 4.3.0)
 gtable             0.3.4      2023-08-21 [1] CRAN (R 4.3.0)
 gtools             3.9.5      2023-11-20 [1] CRAN (R 4.3.0)
 htmltools          0.5.8.1    2024-04-04 [1] CRAN (R 4.3.1)
 htmlwidgets        1.6.4      2023-12-06 [1] CRAN (R 4.3.0)
 httpuv             1.6.15     2024-03-26 [1] CRAN (R 4.3.2)
 httr               1.4.7      2023-08-15 [1] CRAN (R 4.3.0)
 ica                1.0-3      2022-07-08 [1] CRAN (R 4.3.0)
 igraph             2.0.3      2024-03-13 [1] CRAN (R 4.3.2)
 irlba              2.3.5.1    2022-10-03 [1] CRAN (R 4.3.0)
 jsonlite           1.8.8      2023-12-04 [1] CRAN (R 4.3.0)
 KernSmooth         2.23-22    2023-07-10 [1] CRAN (R 4.3.0)
 later              1.3.2      2023-12-06 [1] CRAN (R 4.3.0)
 lattice            0.22-6     2024-03-20 [1] CRAN (R 4.3.2)
 lazyeval           0.2.2      2019-03-15 [1] CRAN (R 4.3.0)
 leiden             0.4.3.1    2023-11-17 [1] CRAN (R 4.3.0)
 lifecycle          1.0.4      2023-11-07 [1] CRAN (R 4.3.0)
 listenv            0.9.1      2024-01-29 [1] CRAN (R 4.3.2)
 lmtest             0.9-40     2022-03-21 [1] CRAN (R 4.3.0)
 magrittr           2.0.3      2022-03-30 [1] CRAN (R 4.3.0)
 MASS               7.3-60.0.1 2024-01-13 [1] CRAN (R 4.3.0)
 Matrix             1.6-5      2024-01-11 [1] CRAN (R 4.3.0)
 matrixStats        1.2.0      2023-12-11 [1] CRAN (R 4.3.0)
 memoise            2.0.1      2021-11-26 [1] CRAN (R 4.3.0)
 mime               0.12       2021-09-28 [1] CRAN (R 4.3.0)
 miniUI             0.1.1.1    2018-05-18 [1] CRAN (R 4.3.0)
 munsell            0.5.1      2024-04-01 [1] CRAN (R 4.3.2)
 nlme               3.1-164    2023-11-27 [1] CRAN (R 4.3.0)
 parallelly         1.37.1     2024-02-29 [1] CRAN (R 4.3.2)
 patchwork          1.2.0      2024-01-08 [1] CRAN (R 4.3.0)
 pbapply            1.7-2      2023-06-27 [1] CRAN (R 4.3.0)
 pillar             1.9.0      2023-03-22 [1] CRAN (R 4.3.0)
 pkgbuild           1.4.4      2024-03-17 [1] CRAN (R 4.3.2)
 pkgconfig          2.0.3      2019-09-22 [1] CRAN (R 4.3.0)
 pkgload            1.3.4      2024-01-16 [1] CRAN (R 4.3.0)
 plotly             4.10.4     2024-01-13 [1] CRAN (R 4.3.0)
 plyr               1.8.9      2023-10-02 [1] CRAN (R 4.3.0)
 png                0.1-8      2022-11-29 [1] CRAN (R 4.3.0)
 polyclip           1.10-6     2023-09-27 [1] CRAN (R 4.3.0)
 profvis            0.3.8      2023-05-02 [1] CRAN (R 4.3.0)
 progressr          0.14.0     2023-08-10 [1] CRAN (R 4.3.0)
 promises           1.2.1      2023-08-10 [1] CRAN (R 4.3.0)
 purrr              1.0.2      2023-08-10 [1] CRAN (R 4.3.0)
 R6                 2.5.1      2021-08-19 [1] CRAN (R 4.3.0)
 RANN               2.6.1      2019-01-08 [1] CRAN (R 4.3.0)
 RColorBrewer       1.1-3      2022-04-03 [1] CRAN (R 4.3.0)
 Rcpp               1.0.12     2024-01-09 [1] CRAN (R 4.3.0)
 RcppAnnoy          0.0.22     2024-01-23 [1] CRAN (R 4.3.2)
 RcppHNSW           0.6.0      2024-02-04 [1] CRAN (R 4.3.2)
 remotes            2.5.0      2024-03-17 [1] CRAN (R 4.3.2)
 reshape2           1.4.4      2020-04-09 [1] CRAN (R 4.3.0)
 reticulate         1.35.0     2024-01-31 [1] CRAN (R 4.3.2)
 rlang              1.1.3      2024-01-10 [1] CRAN (R 4.3.0)
 ROCR               1.0-11     2020-05-02 [1] CRAN (R 4.3.0)
 RSpectra           0.16-1     2022-04-24 [1] CRAN (R 4.3.0)
 rstudioapi         0.16.0     2024-03-24 [1] CRAN (R 4.3.2)
 Rtsne              0.17       2023-12-07 [1] CRAN (R 4.3.0)
 scales             1.3.0      2023-11-28 [1] CRAN (R 4.3.0)
 scattermore        1.2        2023-06-12 [1] CRAN (R 4.3.0)
 sctransform        0.4.1      2023-10-19 [1] CRAN (R 4.3.0)
 sessioninfo        1.2.2      2021-12-06 [1] CRAN (R 4.3.0)
 Seurat           * 5.1.0      2024-05-10 [1] CRAN (R 4.3.3)
 SeuratObject     * 5.0.2      2024-05-08 [1] CRAN (R 4.3.2)
 shiny              1.8.1.1    2024-04-02 [1] CRAN (R 4.3.1)
 sp               * 2.1-3      2024-01-30 [1] CRAN (R 4.3.2)
 spam               2.10-0     2023-10-23 [1] CRAN (R 4.3.0)
 spatstat.data      3.0-4      2024-01-15 [1] CRAN (R 4.3.0)
 spatstat.explore   3.2-7      2024-03-21 [1] CRAN (R 4.3.2)
 spatstat.geom      3.2-9      2024-02-28 [1] CRAN (R 4.3.2)
 spatstat.random    3.2-3      2024-02-29 [1] CRAN (R 4.3.2)
 spatstat.sparse    3.0-3      2023-10-24 [1] CRAN (R 4.3.0)
 spatstat.utils     3.0-4      2023-10-24 [1] CRAN (R 4.3.0)
 stringi            1.8.3      2023-12-11 [1] CRAN (R 4.3.0)
 stringr            1.5.1      2023-11-14 [1] CRAN (R 4.3.0)
 survival           3.5-8      2024-02-14 [1] CRAN (R 4.3.2)
 tensor             1.5        2012-05-05 [1] CRAN (R 4.3.0)
 tibble             3.2.1      2023-03-20 [1] CRAN (R 4.3.0)
 tidygraph          1.3.1      2024-01-30 [1] CRAN (R 4.3.2)
 tidyr              1.3.1      2024-01-24 [1] CRAN (R 4.3.2)
 tidyselect         1.2.1      2024-03-11 [1] CRAN (R 4.3.2)
 tweenr             2.0.3      2024-02-26 [1] CRAN (R 4.3.2)
 urlchecker         1.0.1      2021-11-30 [1] CRAN (R 4.3.0)
 usethis            2.2.3      2024-02-19 [1] CRAN (R 4.3.2)
 utf8               1.2.4      2023-10-22 [1] CRAN (R 4.3.0)
 uwot               0.1.16     2023-06-29 [1] CRAN (R 4.3.0)
 vctrs              0.6.5      2023-12-01 [1] CRAN (R 4.3.0)
 viridis            0.6.5      2024-01-29 [1] CRAN (R 4.3.2)
 viridisLite        0.4.2      2023-05-02 [1] CRAN (R 4.3.0)
 withr              3.0.0      2024-01-16 [1] CRAN (R 4.3.0)
 xtable             1.8-4      2019-04-21 [1] CRAN (R 4.3.0)
 zoo                1.8-12     2023-04-13 [1] CRAN (R 4.3.0)

 [1] /Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/library

Best, Leon

hvgogogo commented 2 days ago

da....just come across the same problem hours later: obj_lean_1[["RNA3"]] <- as(object = obj_lean_1[["RNA"]], Class = "Assay") Warning: Joining 'counts' layers. If you have the same cells in multiple layers, the expression value for the cell in the 'counts' slot will be the value from the 'counts.at_CD45N_O1.1' layer. Error in methods::slot(object = object, name = "layers")[[layer]][features, : incorrect number of dimensions