Introduction

This notebook provides a practical introduction to the Microbiome Analysis Dashboard (miaDash), an interactive app to analyse and explore microbiome data. Feel free to try it online at this address with your data or one of the ready-to-use example datasets. Here, its usage and functionality are described in more detail.

Motivation

Most of the tools available for microbiome data analysis require some knowledge of programming. This represents a burden for practitioners more interested in getting results than learning how to program. To this end, miaDash aims to make microbiome analysis accessible to anyone who needs it, with or without any computational skills.

As a word of caution, while the app removes the burden of programming, it is still critical to understand the nature of microbiome data and how it can be analysed. Such knowledge can be acquired from the online book Orchestrating Microbiome Analysis (OMA) and several other independent resources. The following section presents what is currently possible in the app.

Interface

The interface is divided into five tabs that reflect the steps of a typical microbiome analysis pipeline. First, the dataset of interest can be uploaded through the Import tab, where several data types and file formats are supported. Alternatively, one of the available example datasets can be used for practice. Second, a set of operations can be applied to the dataset through the Manipulate tab, which include methods for subsetting features by prevalence, agglomerating by taxonomic level and transforming assays. Third, the dataset can be analysed through the Estimate tab, which provide common techniques to quantify alpha and beta diversity. Finally, results can be explored through the Visualise tab, where an interactive explorer can be launched with a customisable set of panels that illustrate different aspects of the data.

Tutorial

The app can be used online or locally, depending on resource availability and size of the dataset to analyse. In general, the online version is freely available, so that data of any type can be tested there. However, running the app locally might be a better option for larger datasets (> 1000 features). In this case, you may also consider subsetting and/or agglomerating the data.

Installation

If you decided to run the app locally, make sure to have R installed in your machine and execute the following command:

if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")

BiocManager::install("miaDash")

Once the package is successfully installed, you should have access to the development version of miaDash.

Example

This section shows how to get started with miaDash. If you are using it locally, run the next code chunk to launch the app. Otherwise, you can skip it.

# Import miaDash
library(miaDash)

# Instantiate app
app <- miaDash()

# Launch miaDash
if (interactive()) {
  shiny::runApp(app)
}

As described in Section 1.2, The dashboard consists of five different windows with tools to import, manipulate, analyse and visualise the dataset of choice. After launching the app, it appears as follows:

At first, the variety of options might feel intimidating, so you can click on the question mark on the top right to receive a short tour of the windows available in the app.

Once the dataset was imported and analysed according to your objective, you can choose which visualisations to use from the Visualise window and press the button “Launch iSEEtree” to create and customise the plots. After adjusting the parameters of the different panels, the app might look something like this:

As before, you can click on the question mark on the top right to receive a tour of the panels and their parameters. The best way to get familiar with the interface is to experiment with the parameters below each panel.

Resources

Citation

We hope that miaDash will be useful for your research. Please use the following information to cite the package and the overall approach. Thank you!

## Citation info
citation("miaDash")
#> Warning in citation("miaDash"): could not determine year for 'miaDash' from
#> package DESCRIPTION file
#> To cite package 'miaDash' in publications use:
#> 
#>   Benedetti G, Lahti L (????). _miaDash: Shiny app for interactive
#>   analysis and exploration of microbiome data_. R package version
#>   0.99.1, <https://github.com/microbiome/miaDash>.
#> 
#> A BibTeX entry for LaTeX users is
#> 
#>   @Manual{,
#>     title = {miaDash: Shiny app for interactive analysis and exploration of microbiome data},
#>     author = {Giulio Benedetti and Leo Lahti},
#>     note = {R package version 0.99.1},
#>     url = {https://github.com/microbiome/miaDash},
#>   }

Background Knowledge

miaDash originates from the joint effort of the R/Bioconductor community. It is mainly based on the following software:

  • R (R Core Team, 2024), statistical programming language
  • mia (Borman, Ernst, Shetty, and Lahti, 2024), framework for microbiome data analysis
  • iSEEtree (Benedetti and Lahti, 2024), TreeSummarizedExperiment interactive explorer
  • iSEE (Rue-Albrecht, Marini, Soneson, and Lun, 2018), SummarizedExperiment interactive explorer
  • TreeSummarizedExperiment (Huang, Soneson, Ernst, Rue-Albrecht, Yu, Hicks, and Robinson, 2021), S4 container for hierarchical data
  • shiny (Chang, Cheng, Allaire, Sievert, Schloerke, Xie, Allen, McPherson, Dipert, and Borges, 2024), web app development in R

Help

You can reach us by one of the communication channels listed here. We are happy to receive questions, suggestions as well as contributions. For the last point, check the contributor guidelines.

Reproducibility

R session information:

#> R Under development (unstable) (2024-11-20 r87352)
#> Platform: x86_64-pc-linux-gnu
#> Running under: Ubuntu 24.04.1 LTS
#> 
#> Matrix products: default
#> BLAS:   /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 
#> LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.26.so;  LAPACK version 3.12.0
#> 
#> locale:
#>  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
#>  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8    LC_PAPER=en_US.UTF-8       LC_NAME=C                 
#>  [9] LC_ADDRESS=C               LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
#> 
#> time zone: UTC
#> tzcode source: system (glibc)
#> 
#> attached base packages:
#> [1] stats4    stats     graphics  grDevices utils     datasets  methods   base     
#> 
#> other attached packages:
#>  [1] miaDash_0.99.1              iSEE_2.19.0                 SingleCellExperiment_1.29.1 SummarizedExperiment_1.37.0
#>  [5] Biobase_2.67.0              GenomicRanges_1.59.1        GenomeInfoDb_1.43.1         IRanges_2.41.1             
#>  [9] S4Vectors_0.45.2            BiocGenerics_0.53.3         generics_0.1.3              MatrixGenerics_1.19.0      
#> [13] matrixStats_1.4.1           RefManageR_1.4.0            BiocStyle_2.35.0           
#> 
#> loaded via a namespace (and not attached):
#>   [1] fs_1.6.5                        DirichletMultinomial_1.49.0     fontawesome_0.5.3              
#>   [4] lubridate_1.9.3                 httr_1.4.7                      RColorBrewer_1.1-3             
#>   [7] doParallel_1.0.17               tools_4.5.0                     backports_1.5.0                
#>  [10] utf8_1.2.4                      R6_2.5.1                        DT_0.33                        
#>  [13] vegan_2.6-8                     lazyeval_0.2.2                  mgcv_1.9-1                     
#>  [16] rhdf5filters_1.19.0             GetoptLong_1.0.5                permute_0.9-7                  
#>  [19] withr_3.0.2                     gridExtra_2.3                   cli_3.6.3                      
#>  [22] textshaping_0.4.0               shinyjs_2.1.0                   sandwich_3.1-1                 
#>  [25] slam_0.1-55                     sass_0.4.9                      mvtnorm_1.3-2                  
#>  [28] pkgdown_2.1.1                   systemfonts_1.1.0               yulab.utils_0.1.8              
#>  [31] foreign_0.8-87                  scater_1.35.0                   decontam_1.27.0                
#>  [34] rstudioapi_0.17.1               gridGraphics_0.5-1              shape_1.4.6.1                  
#>  [37] dplyr_1.1.4                     rbiom_1.0.3                     Matrix_1.7-1                   
#>  [40] biomformat_1.35.0               ggbeeswarm_0.7.2                fansi_1.0.6                    
#>  [43] DECIPHER_3.3.0                  abind_1.4-8                     lifecycle_1.0.4                
#>  [46] yaml_2.3.10                     rhdf5_2.51.0                    SparseArray_1.7.2              
#>  [49] grid_4.5.0                      promises_1.3.0                  crayon_1.5.3                   
#>  [52] shinydashboard_0.7.2            miniUI_0.1.1.1                  lattice_0.22-6                 
#>  [55] beachmat_2.23.1                 pillar_1.9.0                    knitr_1.49                     
#>  [58] ComplexHeatmap_2.23.0           rjson_0.2.23                    boot_1.3-31                    
#>  [61] lpSolve_5.6.22                  codetools_0.2-20                glue_1.8.0                     
#>  [64] ggfun_0.1.7                     data.table_1.16.2               MultiAssayExperiment_1.33.1    
#>  [67] vctrs_0.6.5                     png_0.1-8                       treeio_1.31.0                  
#>  [70] gtable_0.3.6                    cachem_1.1.0                    xfun_0.49                      
#>  [73] S4Arrays_1.7.1                  mime_0.12                       tidygraph_1.3.1                
#>  [76] iterators_1.0.14                bluster_1.17.0                  nlme_3.1-166                   
#>  [79] ggtree_3.15.0                   SnowballC_0.7.1                 bslib_0.8.0                    
#>  [82] irlba_2.3.5.1                   vipor_0.4.7                     rpart_4.1.23                   
#>  [85] colorspace_2.1-1                DBI_1.2.3                       Hmisc_5.2-0                    
#>  [88] nnet_7.3-19                     tidyselect_1.2.1                compiler_4.5.0                 
#>  [91] htmlTable_2.4.3                 BiocNeighbors_2.1.0             xml2_1.3.6                     
#>  [94] desc_1.4.3                      DelayedArray_0.33.2             colourpicker_1.3.0             
#>  [97] bookdown_0.41                   checkmate_2.3.2                 scales_1.3.0                   
#> [100] stringr_1.5.1                   digest_0.6.37                   minqa_1.2.8                    
#> [103] rmarkdown_2.29                  miaViz_1.15.2                   XVector_0.47.0                 
#> [106] htmltools_0.5.8.1               pkgconfig_2.0.3                 iSEEtree_1.1.0                 
#> [109] base64enc_0.1-3                 bibtex_0.5.1                    lme4_1.1-35.5                  
#> [112] sparseMatrixStats_1.19.0        listviewer_4.0.0                fastmap_1.2.0                  
#> [115] rlang_1.1.4                     GlobalOptions_0.1.2             htmlwidgets_1.6.4              
#> [118] UCSC.utils_1.3.0                shiny_1.9.1                     DelayedMatrixStats_1.29.0      
#> [121] farver_2.1.2                    jquerylib_0.1.4                 zoo_1.8-12                     
#> [124] jsonlite_1.8.9                  BiocParallel_1.41.0             tokenizers_0.3.0               
#> [127] BiocSingular_1.23.0             magrittr_2.0.3                  Formula_1.2-5                  
#> [130] scuttle_1.17.0                  GenomeInfoDbData_1.2.13         ggplotify_0.1.2                
#> [133] patchwork_1.3.0                 Rhdf5lib_1.29.0                 munsell_0.5.1                  
#> [136] Rcpp_1.0.13-1                   ape_5.8                         ggnewscale_0.5.0               
#> [139] viridis_0.6.5                   stringi_1.8.4                   rintrojs_0.3.4                 
#> [142] ggraph_2.2.1                    zlibbioc_1.53.0                 MASS_7.3-61                    
#> [145] plyr_1.8.9                      mediation_4.5.0                 parallel_4.5.0                 
#> [148] ggrepel_0.9.6                   Biostrings_2.75.1               graphlayouts_1.2.1             
#> [151] splines_4.5.0                   circlize_0.4.16                 igraph_2.1.1                   
#> [154] reshape2_1.4.4                  ScaledMatrix_1.15.0             evaluate_1.0.1                 
#> [157] tidytext_0.4.2                  RcppParallel_5.1.9              BiocManager_1.30.25            
#> [160] nloptr_2.1.1                    foreach_1.5.2                   tweenr_2.0.3                   
#> [163] httpuv_1.6.15                   tidyr_1.3.1                     purrr_1.0.2                    
#> [166] polyclip_1.10-7                 clue_0.3-66                     ggplot2_3.5.1                  
#> [169] ggforce_0.4.2                   rsvd_1.0.5                      xtable_1.8-4                   
#> [172] tidytree_0.4.6                  janeaustenr_1.0.0               later_1.3.2                    
#> [175] viridisLite_0.4.2               ragg_1.3.3                      tibble_3.2.1                   
#> [178] aplot_0.2.3                     memoise_2.0.1                   beeswarm_0.4.0                 
#> [181] cluster_2.1.6                   TreeSummarizedExperiment_2.15.0 timechange_0.3.0               
#> [184] shinyWidgets_0.8.7              shinyAce_0.4.3                  mia_1.15.6

References

[1] G. Benedetti and L. Lahti. iSEEtree: Interactive visualisation for microbiome data. R package version 1.1.0. 2024. DOI: 10.18129/B9.bioc.iSEEtree. URL: https://bioconductor.org/packages/iSEEtree.

[2] T. Borman, F. Ernst, S. Shetty, et al. mia: Microbiome analysis. R package version 1.15.6. 2024. DOI: 10.18129/B9.bioc.mia. URL: https://bioconductor.org/packages/mia.

[3] W. Chang, J. Cheng, J. Allaire, et al. shiny: Web Application Framework for R. R package version 1.9.1. 2024. DOI: 10.32614/CRAN.package.shiny. URL: https://CRAN.R-project.org/package=shiny.

[4] R. Huang, C. Soneson, F. G. Ernst, et al. “TreeSummarizedExperiment: a S4 class for data with hierarchical structure”. In: F1000Research 9 (2021), p. 1246. URL: https://f1000research.com/articles/9-1246.

[5] R Core Team. R: A Language and Environment for Statistical Computing. R Foundation for Statistical Computing. Vienna, Austria, 2024. URL: https://www.R-project.org/.

[6] K. Rue-Albrecht, F. Marini, C. Soneson, et al. “iSEE: Interactive SummarizedExperiment Explorer”. In: F1000Research 7 (Jun. 2018), p. 741. DOI: 10.12688/f1000research.14966.1.