mixOmicsTeam / mixOmics

Development repository for the Bioconductor package 'mixOmics '
http://mixomics.org/
159 stars 52 forks source link

indY cannot be used in block.spls for circosPlot() #178

Closed Max-Bladen closed 2 years ago

Max-Bladen commented 2 years ago

🐞 Describe the bug:

The only way that circosPlot() can be used on a block.spls object is if the Y dataframe is supplied separately. Essentially makes the indY parameter redundant in this context.


πŸ” reprex results from reproducible example including sessioninfo():

### --- SET UP DATA --- ###

suppressMessages(library(mixOmics)) # load package and data
data(breast.TCGA)

## class membership
breast.group = breast.TCGA$data.train$subtype

## data1 has all dataframes
breast.data1 <- list(mirna = breast.TCGA$data.train$mirna,
                    mrna = breast.TCGA$data.train$mrna,
                    protein = breast.TCGA$data.train$protein)

## data2 has all but protein data
breast.data2 <- list(mirna = breast.TCGA$data.train$mirna,
                    mrna = breast.TCGA$data.train$mrna)

### --- RUN BLOCK.SPLS --- ###

## form block.spls with combined dataframes
breast.block.spls.comb <- block.spls(breast.data1, indY = 3,
                                     keepX = list(mirna = c(10,10),
                                                  mrna = c(10,10)))

## form block.spls with separated dataframes
breast.block.spls.sep <- block.spls(breast.data2, breast.TCGA$data.train$protein,
                                    keepX = list(mirna = c(10,10),
                                                 mrna = c(10,10)))

### --- PASS TO CIRCOS.PLOT --- ###

## works, can find object$X$Y
circosPlot(breast.block.spls.sep, group = breast.group, 
           cutoff = 0.8) 

## ERROR RAISED !
circosPlot(breast.block.spls.comb, group = breast.group, 
           cutoff = 0.8)
#> Error in if (length(group) != nrow(object$X$Y)) stop("group must be a factor of length: nrow(object$X$Y) = ", : argument is of length zero

Created on 2022-03-08 by the reprex package (v2.0.1)

Session info ``` r sessioninfo::session_info() #> - Session info --------------------------------------------------------------- #> setting value #> version R version 4.1.2 Patched (2021-11-16 r81220) #> os Windows 10 x64 (build 19042) #> system x86_64, mingw32 #> ui RTerm #> language (EN) #> collate English_Australia.1252 #> ctype English_Australia.1252 #> tz Australia/Sydney #> date 2022-03-08 #> pandoc 2.14.2 @ C:/Users/Work/AppData/Local/Pandoc/ (via rmarkdown) #> #> - Packages ------------------------------------------------------------------- #> package * version date (UTC) lib source #> backports 1.4.1 2021-12-13 [1] CRAN (R 4.1.2) #> BiocParallel 1.28.1 2021-11-18 [1] Bioconductor #> cli 3.2.0 2022-02-14 [1] CRAN (R 4.1.2) #> colorspace 2.0-3 2022-02-21 [1] CRAN (R 4.1.2) #> corpcor 1.6.10 2021-09-16 [1] CRAN (R 4.1.1) #> crayon 1.5.0 2022-02-14 [1] CRAN (R 4.1.2) #> curl 4.3.2 2021-06-23 [1] CRAN (R 4.1.2) #> digest 0.6.29 2021-12-01 [1] CRAN (R 4.1.2) #> dplyr 1.0.8 2022-02-08 [1] CRAN (R 4.1.2) #> ellipse 0.4.2 2020-05-27 [1] CRAN (R 4.1.2) #> ellipsis 0.3.2 2021-04-29 [1] CRAN (R 4.1.2) #> evaluate 0.15 2022-02-18 [1] CRAN (R 4.1.2) #> fansi 1.0.2 2022-01-14 [1] CRAN (R 4.1.2) #> fastmap 1.1.0 2021-01-25 [1] CRAN (R 4.1.2) #> fs 1.5.2 2021-12-08 [1] CRAN (R 4.1.2) #> generics 0.1.2 2022-01-31 [1] CRAN (R 4.1.2) #> ggplot2 * 3.3.5 2021-06-25 [1] CRAN (R 4.1.2) #> ggrepel 0.9.1 2021-01-15 [1] CRAN (R 4.1.2) #> glue 1.6.2 2022-02-24 [1] CRAN (R 4.1.2) #> gridExtra 2.3 2017-09-09 [1] CRAN (R 4.1.2) #> gtable 0.3.0 2019-03-25 [1] CRAN (R 4.1.2) #> highr 0.9 2021-04-16 [1] CRAN (R 4.1.2) #> htmltools 0.5.2 2021-08-25 [1] CRAN (R 4.1.2) #> httr 1.4.2 2020-07-20 [1] CRAN (R 4.1.2) #> igraph 1.2.11 2022-01-04 [1] CRAN (R 4.1.2) #> knitr 1.37 2021-12-16 [1] CRAN (R 4.1.2) #> lattice * 0.20-45 2021-09-22 [2] CRAN (R 4.1.2) #> lifecycle 1.0.1 2021-09-24 [1] CRAN (R 4.1.2) #> magrittr 2.0.2 2022-01-26 [1] CRAN (R 4.1.2) #> MASS * 7.3-54 2021-05-03 [2] CRAN (R 4.1.2) #> Matrix 1.3-4 2021-06-01 [2] CRAN (R 4.1.2) #> matrixStats 0.61.0 2021-09-17 [1] CRAN (R 4.1.2) #> mime 0.12 2021-09-28 [1] CRAN (R 4.1.1) #> mixOmics * 6.18.1 2021-11-18 [1] Bioconductor (R 4.1.2) #> munsell 0.5.0 2018-06-12 [1] CRAN (R 4.1.2) #> pillar 1.7.0 2022-02-01 [1] CRAN (R 4.1.2) #> pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.1.2) #> plyr 1.8.6 2020-03-03 [1] CRAN (R 4.1.2) #> purrr 0.3.4 2020-04-17 [1] CRAN (R 4.1.2) #> R.cache 0.15.0 2021-04-30 [1] CRAN (R 4.1.2) #> R.methodsS3 1.8.1 2020-08-26 [1] CRAN (R 4.1.1) #> R.oo 1.24.0 2020-08-26 [1] CRAN (R 4.1.1) #> R.utils 2.11.0 2021-09-26 [1] CRAN (R 4.1.2) #> R6 2.5.1 2021-08-19 [1] CRAN (R 4.1.2) #> rARPACK 0.11-0 2016-03-10 [1] CRAN (R 4.1.2) #> RColorBrewer 1.1-2 2014-12-07 [1] CRAN (R 4.1.1) #> Rcpp 1.0.8 2022-01-13 [1] CRAN (R 4.1.2) #> reprex 2.0.1 2021-08-05 [1] CRAN (R 4.1.2) #> reshape2 1.4.4 2020-04-09 [1] CRAN (R 4.1.2) #> rlang 1.0.1 2022-02-03 [1] CRAN (R 4.1.2) #> rmarkdown 2.12 2022-03-02 [1] CRAN (R 4.1.2) #> RSpectra 0.16-0 2019-12-01 [1] CRAN (R 4.1.2) #> rstudioapi 0.13 2020-11-12 [1] CRAN (R 4.1.2) #> scales 1.1.1 2020-05-11 [1] CRAN (R 4.1.2) #> sessioninfo 1.2.2 2021-12-06 [1] CRAN (R 4.1.2) #> stringi 1.7.6 2021-11-29 [1] CRAN (R 4.1.2) #> stringr 1.4.0 2019-02-10 [1] CRAN (R 4.1.2) #> styler 1.6.2 2021-09-23 [1] CRAN (R 4.1.2) #> tibble 3.1.6 2021-11-07 [1] CRAN (R 4.1.2) #> tidyr 1.2.0 2022-02-01 [1] CRAN (R 4.1.2) #> tidyselect 1.1.2 2022-02-21 [1] CRAN (R 4.1.2) #> utf8 1.2.2 2021-07-24 [1] CRAN (R 4.1.2) #> vctrs 0.3.8 2021-04-29 [1] CRAN (R 4.1.2) #> withr 2.5.0 2022-03-03 [1] CRAN (R 4.1.2) #> xfun 0.30 2022-03-02 [1] CRAN (R 4.1.2) #> xml2 1.3.3 2021-11-30 [1] CRAN (R 4.1.2) #> yaml 2.3.5 2022-02-21 [1] CRAN (R 4.1.2) #> #> [1] C:/Users/Work/Documents/R/win-library/4.1 #> [2] C:/Program Files/R/R-4.1.2patched/library #> #> ------------------------------------------------------------------------------ ```

πŸ€” Expected behavior:

Seeing as within block.spls(), both setting Y explicitly or using the indY parameter are both valid, having the circosPlot() only function in one of these scenarios is suboptimal.


πŸ’‘ Possible solution:

Seeing as error raised claims that nrow(object$X$Y) is of length 0, this means that the $X$Y component is likely not set when indY is used.