mixOmicsTeam / mixOmics

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

`circosPlot()` doesn't function on `block.pls(da)` objects #248

Closed Max-Bladen closed 1 year ago

Max-Bladen commented 1 year ago

🐞 Describe the bug:

circosPlot() is unable to take block.pls and block.plsda objects. There doesn't seem to be any obvious reason for this. While I can understand it isn't encouraged as with many features the plot becomes hard to interpret, this isn't a reason to deny its usage totally.

Feature was suggested via this forum post.


🔍 reprex results from reproducible example including sessioninfo():

library(mixOmics)
data(breast.TCGA)
X <- list(mRNA = breast.TCGA$data.train$mrna[, 1:20], 
          miRNA = breast.TCGA$data.train$mirna[, 1:20],
          proteins = breast.TCGA$data.train$protein[, 1:20])
Y <- breast.TCGA$data.train$subtype

# does NOT work
pls.model <- block.pls(X=X, indY=3, design="full")
circosPlot(pls.model, cutoff = 0.4, group = rep("1", 150))
#> Error in UseMethod("circosPlot"): no applicable method for 'circosPlot' applied to an object of class "c('block.pls', 'sgcca')"

# does NOT work
plsda.model <- block.plsda(X=X, Y=Y, design="full")
circosPlot(plsda.model, cutoff = 0.4)
#> Error in UseMethod("circosPlot"): no applicable method for 'circosPlot' applied to an object of class "c('block.plsda', 'block.pls', 'sgccda', 'sgcca', 'DA')"

Created on 2022-09-27 with reprex v2.0.2

Session info ``` r sessioninfo::session_info() #> ─ Session info ─────────────────────────────────────────────────────────────── #> setting value #> version R version 4.2.1 (2022-06-23 ucrt) #> os Windows 10 x64 (build 19044) #> system x86_64, mingw32 #> ui RTerm #> language (EN) #> collate English_United States.utf8 #> ctype English_United States.utf8 #> tz Australia/Sydney #> date 2022-09-27 #> pandoc 2.18 @ D:/Programs/Work Programs/RStudio/bin/quarto/bin/tools/ (via rmarkdown) #> #> ─ Packages ─────────────────────────────────────────────────────────────────── #> package * version date (UTC) lib source #> assertthat 0.2.1 2019-03-21 [1] CRAN (R 4.2.1) #> BiocParallel 1.30.3 2022-06-07 [1] Bioconductor #> cli 3.3.0 2022-04-25 [1] CRAN (R 4.2.1) #> codetools 0.2-18 2020-11-04 [1] CRAN (R 4.2.1) #> colorspace 2.0-3 2022-02-21 [1] CRAN (R 4.2.1) #> corpcor 1.6.10 2021-09-16 [1] CRAN (R 4.2.0) #> DBI 1.1.3 2022-06-18 [1] CRAN (R 4.2.1) #> digest 0.6.29 2021-12-01 [1] CRAN (R 4.2.1) #> dplyr 1.0.9 2022-04-28 [1] CRAN (R 4.2.1) #> ellipse 0.4.3 2022-05-31 [1] CRAN (R 4.2.1) #> evaluate 0.16 2022-08-09 [1] CRAN (R 4.2.1) #> fansi 1.0.3 2022-03-24 [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) #> generics 0.1.3 2022-07-05 [1] CRAN (R 4.2.1) #> ggplot2 * 3.3.6 2022-05-03 [1] CRAN (R 4.2.1) #> ggrepel 0.9.1 2021-01-15 [1] CRAN (R 4.2.1) #> glue 1.6.2 2022-02-24 [1] CRAN (R 4.2.1) #> gridExtra 2.3 2017-09-09 [1] CRAN (R 4.2.1) #> gtable 0.3.1 2022-09-01 [1] CRAN (R 4.2.1) #> highr 0.9 2021-04-16 [1] CRAN (R 4.2.1) #> htmltools 0.5.3 2022-07-18 [1] CRAN (R 4.2.1) #> igraph 1.3.4 2022-07-19 [1] CRAN (R 4.2.1) #> knitr 1.40 2022-08-24 [1] CRAN (R 4.2.1) #> lattice * 0.20-45 2021-09-22 [1] 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) #> MASS * 7.3-58.1 2022-08-03 [1] CRAN (R 4.2.1) #> Matrix 1.4-1 2022-03-23 [1] CRAN (R 4.2.1) #> matrixStats 0.62.0 2022-04-19 [1] CRAN (R 4.2.1) #> mixOmics * 6.20.0 2022-04-26 [1] Bioconductor (R 4.2.0) #> munsell 0.5.0 2018-06-12 [1] CRAN (R 4.2.1) #> pillar 1.8.1 2022-08-19 [1] CRAN (R 4.2.1) #> pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.2.1) #> plyr 1.8.7 2022-03-24 [1] CRAN (R 4.2.1) #> purrr 0.3.4 2020-04-17 [1] CRAN (R 4.2.1) #> R.cache 0.16.0 2022-07-21 [1] CRAN (R 4.2.1) #> 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.1) #> R6 2.5.1 2021-08-19 [1] CRAN (R 4.2.1) #> rARPACK 0.11-0 2016-03-10 [1] CRAN (R 4.2.1) #> RColorBrewer 1.1-3 2022-04-03 [1] CRAN (R 4.2.0) #> Rcpp 1.0.9 2022-07-08 [1] CRAN (R 4.2.1) #> reprex 2.0.2 2022-08-17 [1] CRAN (R 4.2.1) #> reshape2 1.4.4 2020-04-09 [1] CRAN (R 4.2.1) #> rlang 1.0.5 2022-08-31 [1] CRAN (R 4.2.1) #> rmarkdown 2.16 2022-08-24 [1] CRAN (R 4.2.1) #> RSpectra 0.16-1 2022-04-24 [1] CRAN (R 4.2.1) #> rstudioapi 0.14 2022-08-22 [1] CRAN (R 4.2.1) #> scales 1.2.1 2022-08-20 [1] CRAN (R 4.2.1) #> sessioninfo 1.2.2 2021-12-06 [1] CRAN (R 4.2.1) #> 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) #> styler 1.7.0 2022-03-13 [1] CRAN (R 4.2.1) #> tibble 3.1.8 2022-07-22 [1] CRAN (R 4.2.1) #> tidyr 1.2.0 2022-02-01 [1] CRAN (R 4.2.1) #> tidyselect 1.1.2 2022-02-21 [1] CRAN (R 4.2.1) #> utf8 1.2.2 2021-07-24 [1] CRAN (R 4.2.1) #> vctrs 0.4.1 2022-04-13 [1] CRAN (R 4.2.1) #> withr 2.5.0 2022-03-03 [1] CRAN (R 4.2.1) #> xfun 0.32 2022-08-10 [1] CRAN (R 4.2.1) #> yaml 2.3.5 2022-02-21 [1] CRAN (R 4.2.0) #> #> [1] D:/Programs/Work Programs/R-4.2.1/library #> #> ────────────────────────────────────────────────────────────────────────────── ```

🤔 Expected behavior: For circosPlot() to function the same on block.pls(da) objects as it does on block.spls(da) objects.


💡 Possible solution: A few minor adjustments to the function (mostly inherits() checks) would need to be adjusted. As the functionality of sparsity is already implemented, it should work seamlessly with non-sparse block methods