drisso / SingleCellExperiment

Clone of the Bioconductor repository for the SingleCellExperiment package, see https://bioconductor.org/packages/devel/bioc/html/SingleCellExperiment.html for the official development version.
65 stars 18 forks source link

Interaction between SingleCellExperiment and tictoc packages? #67

Closed brgew closed 2 years ago

brgew commented 2 years ago

Hi,

I ran into a problem with the SingleCellExperiment method called reducedDims when the tictoc packages is loaded. A (minimal?) list of commands that reproduce the error, and the reported error, are

library(SingleCellExperiment)
library(tictoc)
counts <- matrix(rpois(100,lambda=10),ncol=10,nrow=10)
colnames(counts) <- as.character(seq(10))
sce <- SingleCellExperiment(counts)
red_mat <- prcomp(t(counts),rank.=5)$x
reducedDims(sce)[['PCA']] <- as.matrix(red_mat)

Error in `[[<-`(`*tmp*`, key, value = new("DFrame", rownames = NULL, nrows = 0L,  :
  0 elements in value to replace 10 elements

The session info is

─ Session info ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
 setting  value
 version  R version 4.2.1 (2022-06-23)
 os       Debian GNU/Linux 11 (bullseye)
 system   x86_64, linux-gnu
 ui       X11
 language (EN)
 collate  en_US.UTF-8
 ctype    en_US.UTF-8
 tz       America/Los_Angeles
 date     2022-09-12
 pandoc   NA

─ Packages ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
 package              * version  date (UTC) lib source
 Biobase              * 2.56.0   2022-04-26 [1] Bioconductor
 BiocGenerics         * 0.42.0   2022-04-26 [1] Bioconductor
 bitops                 1.0-7    2021-04-24 [1] CRAN (R 4.2.1)
 cachem                 1.0.6    2021-08-19 [1] CRAN (R 4.2.1)
 callr                  3.7.2    2022-08-22 [1] CRAN (R 4.2.1)
 cli                    3.4.0    2022-09-08 [1] CRAN (R 4.2.1)
 crayon                 1.5.1    2022-03-26 [1] CRAN (R 4.2.1)
 DelayedArray           0.22.0   2022-04-26 [1] Bioconductor
 devtools             * 2.4.4    2022-07-20 [1] CRAN (R 4.2.1)
 digest                 0.6.29   2021-12-01 [1] CRAN (R 4.2.1)
 ellipsis               0.3.2    2021-04-29 [1] CRAN (R 4.2.1)
 fastmap                1.1.0    2021-01-25 [1] CRAN (R 4.2.1)
 fs                     1.5.2    2021-12-08 [1] CRAN (R 4.2.1)
 GenomeInfoDb         * 1.32.4   2022-09-06 [1] Bioconductor
 GenomeInfoDbData       1.2.8    2022-09-08 [1] Bioconductor
 GenomicRanges        * 1.48.0   2022-04-26 [1] Bioconductor
 glue                   1.6.2    2022-02-24 [1] CRAN (R 4.2.1)
 htmltools              0.5.3    2022-07-18 [1] CRAN (R 4.2.1)
 htmlwidgets            1.5.4    2021-09-08 [1] CRAN (R 4.2.1)
 httpuv                 1.6.6    2022-09-08 [1] CRAN (R 4.2.1)
 IRanges              * 2.30.1   2022-08-18 [1] Bioconductor
 later                  1.3.0    2021-08-18 [1] CRAN (R 4.2.1)
 lattice                0.20-45  2021-09-22 [4] CRAN (R 4.2.1)
 lifecycle              1.0.2    2022-09-09 [1] CRAN (R 4.2.1)
 magrittr               2.0.3    2022-03-30 [1] CRAN (R 4.2.1)
 Matrix                 1.4-1    2022-03-23 [4] CRAN (R 4.2.1)
 MatrixGenerics       * 1.8.1    2022-06-26 [1] Bioconductor
 matrixStats          * 0.62.0   2022-04-19 [1] CRAN (R 4.2.1)
 memoise                2.0.1    2021-11-26 [1] CRAN (R 4.2.1)
 mime                   0.12     2021-09-28 [1] CRAN (R 4.2.1)
 miniUI                 0.1.1.1  2018-05-18 [1] CRAN (R 4.2.1)
 pkgbuild               1.3.1    2021-12-20 [1] CRAN (R 4.2.1)
 pkgload                1.3.0    2022-06-27 [1] CRAN (R 4.2.1)
 prettyunits            1.1.1    2020-01-24 [1] CRAN (R 4.2.1)
 processx               3.7.0    2022-07-07 [1] CRAN (R 4.2.1)
 profvis                0.3.7    2020-11-02 [1] CRAN (R 4.2.1)
 promises               1.2.0.1  2021-02-11 [1] CRAN (R 4.2.1)
 ps                     1.7.1    2022-06-18 [1] CRAN (R 4.2.1)
 purrr                  0.3.4    2020-04-17 [1] CRAN (R 4.2.1)
 R6                     2.5.1    2021-08-19 [1] CRAN (R 4.2.1)
 Rcpp                   1.0.9    2022-07-08 [1] CRAN (R 4.2.1)
 RCurl                  1.98-1.8 2022-07-30 [1] CRAN (R 4.2.1)
 remotes                2.4.2    2021-11-30 [1] CRAN (R 4.2.1)
 rlang                  1.0.5    2022-08-31 [1] CRAN (R 4.2.1)
 S4Vectors            * 0.34.0   2022-04-26 [1] Bioconductor
 sessioninfo            1.2.2    2021-12-06 [1] CRAN (R 4.2.1)
 shiny                  1.7.2    2022-07-19 [1] CRAN (R 4.2.1)
 SingleCellExperiment * 1.18.0   2022-04-26 [1] Bioconductor
 stringi                1.7.8    2022-07-11 [1] CRAN (R 4.2.1)
 stringr                1.4.1    2022-08-20 [1] CRAN (R 4.2.1)
 SummarizedExperiment * 1.26.1   2022-04-29 [1] Bioconductor
 tictoc               * 1.1      2022-09-03 [1] CRAN (R 4.2.1)
 urlchecker             1.0.1    2021-11-30 [1] CRAN (R 4.2.1)
 usethis              * 2.1.6    2022-05-25 [1] CRAN (R 4.2.1)
 xtable                 1.8-4    2019-04-21 [1] CRAN (R 4.2.1)
 XVector                0.36.0   2022-04-26 [1] Bioconductor
 zlibbioc               1.42.0   2022-04-26 [1] Bioconductor

Perhaps this is a problem with tictoc?

I appreciate your consideration and assistance.

Thank you.

PeteHaitch commented 2 years ago

I think it's because tictoc defines a List data structure, which clashes with the List data structure used throughout Bioconductor (and implemented in the S4Vectors package). I don't know what the solution is, but merely reversing the loading/attaching of packages doesn't help :(

suppressPackageStartupMessages(library(tictoc))
suppressPackageStartupMessages(library(SingleCellExperiment))
counts <- matrix(rpois(100,lambda=10),ncol=10,nrow=10)
colnames(counts) <- as.character(seq(10))
sce <- SingleCellExperiment(counts)
red_mat <- prcomp(t(counts),rank.=5)$x
reducedDims(sce)[['PCA']] <- as.matrix(red_mat)
#> Error in `[[<-`(`*tmp*`, key, value = new("DFrame", rownames = NULL, nrows = 0L, : 0 elements in value to replace 10 elements
Session info ``` r sessioninfo::session_info() #> ─ Session info ─────────────────────────────────────────────────────────────── #> setting value #> version R version 4.2.1 (2022-06-23) #> os macOS Big Sur ... 10.16 #> system x86_64, darwin17.0 #> ui X11 #> language (EN) #> collate en_AU.UTF-8 #> ctype en_AU.UTF-8 #> tz Australia/Brisbane #> date 2022-09-14 #> pandoc 2.18 @ /Applications/RStudio.app/Contents/MacOS/quarto/bin/tools/ (via rmarkdown) #> #> ─ Packages ─────────────────────────────────────────────────────────────────── #> package * version date (UTC) lib source #> Biobase * 2.57.1 2022-05-19 [1] Bioconductor #> BiocGenerics * 0.43.1 2022-07-26 [1] Bioconductor #> bitops 1.0-7 2021-04-24 [1] CRAN (R 4.2.0) #> cli 3.3.0 2022-04-25 [1] CRAN (R 4.2.0) #> DelayedArray 0.23.1 2022-07-28 [1] Bioconductor #> digest 0.6.29 2021-12-01 [1] CRAN (R 4.2.0) #> evaluate 0.16 2022-08-09 [1] CRAN (R 4.2.0) #> fansi 1.0.3 2022-03-24 [1] CRAN (R 4.2.0) #> fastmap 1.1.0 2021-01-25 [1] CRAN (R 4.2.0) #> fs 1.5.2 2021-12-08 [1] CRAN (R 4.2.0) #> GenomeInfoDb * 1.33.5 2022-08-10 [1] Bioconductor #> GenomeInfoDbData 1.2.8 2022-04-13 [1] Bioconductor #> GenomicRanges * 1.49.1 2022-08-18 [1] Bioconductor #> glue 1.6.2 2022-02-24 [1] CRAN (R 4.2.0) #> highr 0.9 2021-04-16 [1] CRAN (R 4.2.0) #> htmltools 0.5.3 2022-07-18 [1] CRAN (R 4.2.0) #> IRanges * 2.31.2 2022-08-18 [1] Bioconductor #> knitr 1.40 2022-08-24 [1] CRAN (R 4.2.0) #> lattice 0.20-45 2021-09-22 [1] CRAN (R 4.2.1) #> lifecycle 1.0.1 2021-09-24 [1] CRAN (R 4.2.0) #> magrittr 2.0.3 2022-03-30 [1] CRAN (R 4.2.0) #> Matrix 1.4-1 2022-03-23 [1] CRAN (R 4.2.1) #> MatrixGenerics * 1.9.1 2022-06-24 [1] Bioconductor #> matrixStats * 0.62.0 2022-04-19 [1] CRAN (R 4.2.0) #> pillar 1.8.1 2022-08-19 [1] CRAN (R 4.2.0) #> pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.2.0) #> purrr 0.3.4 2020-04-17 [1] CRAN (R 4.2.0) #> R.cache 0.16.0 2022-07-21 [1] CRAN (R 4.2.0) #> R.methodsS3 1.8.2 2022-06-13 [1] CRAN (R 4.2.0) #> R.oo 1.25.0 2022-06-12 [1] CRAN (R 4.2.0) #> R.utils 2.12.0 2022-06-28 [1] CRAN (R 4.2.0) #> RCurl 1.98-1.8 2022-07-30 [1] CRAN (R 4.2.0) #> reprex 2.0.2 2022-08-17 [1] CRAN (R 4.2.0) #> rlang 1.0.5 2022-08-31 [1] CRAN (R 4.2.0) #> rmarkdown 2.16 2022-08-24 [1] CRAN (R 4.2.0) #> rstudioapi 0.14 2022-08-22 [1] CRAN (R 4.2.0) #> S4Vectors * 0.35.3 2022-09-02 [1] Bioconductor #> sessioninfo 1.2.2 2021-12-06 [1] CRAN (R 4.2.0) #> SingleCellExperiment * 1.19.0 2022-04-26 [1] Bioconductor #> stringi 1.7.8 2022-07-11 [1] CRAN (R 4.2.0) #> stringr 1.4.1 2022-08-20 [1] CRAN (R 4.2.0) #> styler 1.7.0 2022-03-13 [1] CRAN (R 4.2.0) #> SummarizedExperiment * 1.27.2 2022-08-23 [1] Bioconductor #> tibble 3.1.8 2022-07-22 [1] CRAN (R 4.2.0) #> tictoc * 1.1 2022-09-03 [1] CRAN (R 4.2.0) #> utf8 1.2.2 2021-07-24 [1] CRAN (R 4.2.0) #> vctrs 0.4.1 2022-04-13 [1] CRAN (R 4.2.0) #> withr 2.5.0 2022-03-03 [1] CRAN (R 4.2.0) #> xfun 0.32 2022-08-10 [1] CRAN (R 4.2.0) #> XVector 0.37.1 2022-08-25 [1] Bioconductor #> yaml 2.3.5 2022-02-21 [1] CRAN (R 4.2.0) #> zlibbioc 1.43.0 2022-04-26 [1] Bioconductor #> #> [1] /Library/Frameworks/R.framework/Versions/4.2/Resources/library #> #> ────────────────────────────────────────────────────────────────────────────── ```
PeteHaitch commented 2 years ago

FWIW exporting List from tictoc seems to be a recent addition (https://github.com/jabiru/tictoc/commit/8cf7894a25e1462da8114a8e96195710f2b6f3d1).

LTLA commented 2 years ago

For reasons I don't quite understand, calling lapply inside the reducedDims setter gives me:

lapply(List(PCA=red_mat), identity)
## list()

The base lapply function seems to change its behavior, but only when tictoc is loaded. Seems like some kind of S3/S4 dispatch bug to me.

In any case, this shoudl be fixed by 07eb78ae4dae9dbc44f64dc3796fdfd55353aa4e.