Compiled date: 2025-04-15
Last edited: 2024-01-21
License: GPL-3
To install the Bioconductor version of the POMA package, run the following code:
# install.packages("BiocManager")
BiocManager::install("POMA")library(POMA)
library(ggtext)
library(magrittr)The POMA package functions are organized into three sequential, distinct blocks: Data Preparation, Pre-processing, and Statistical Analysis.
The SummarizedExperiment package from Bioconductor offers well-defined computational data structures for representing various types of omics experiment data (Morgan et al. 2020). Utilizing these data structures can significantly improve data analysis. POMA leverages SummarizedExperiment objects, enhancing the reusability of existing methods for this class and contributing to more robust and reproducible workflows.
The workflow begins with either loading or creating a SummarizedExperiment object. Typically, your data might be stored in separate matrices and/or data frames. The PomaCreateObject function simplifies this step by quickly building a SummarizedExperiment object for you.
# create an SummarizedExperiment object from two separated data frames
target <- readr::read_csv("your_target.csv")
features <- readr::read_csv("your_features.csv")
data <- PomaCreateObject(metadata = target, features = features)Alternatively, if your data is already in a SummarizedExperiment object, you can proceed directly to the pre-processing step. This vignette uses example data provided in POMA.
# load example data
data("st000336")st000336
> class: SummarizedExperiment 
> dim: 31 57 
> metadata(0):
> assays(1): ''
> rownames(31): x1_methylhistidine x3_methylhistidine ... pyruvate
>   succinate
> rowData names(0):
> colnames(57): 1 2 ... 56 57
> colData names(2): group steroidsimputed <- st000336 %>% 
  PomaImpute(method = "knn", zeros_as_na = TRUE, remove_na = TRUE, cutoff = 20)
> 2 features removed.
imputed
> class: SummarizedExperiment 
> dim: 29 57 
> metadata(0):
> assays(1): ''
> rownames(29): x1_methylhistidine x3_methylhistidine ... pyruvate
>   succinate
> rowData names(0):
> colnames(57): 1 2 ... 56 57
> colData names(2): group steroidsnormalized <- imputed %>% 
  PomaNorm(method = "log_pareto")
normalized
> class: SummarizedExperiment 
> dim: 29 57 
> metadata(0):
> assays(1): ''
> rownames(29): x1_methylhistidine x3_methylhistidine ... pyruvate
>   succinate
> rowData names(0):
> colnames(57): 1 2 ... 56 57
> colData names(2): group steroidsPomaBoxplots(imputed, x = "samples") # data before normalizationPomaBoxplots(normalized, x = "samples") # data after normalizationPomaDensity(imputed, x = "features") # data before normalizationPomaDensity(normalized, x = "features") # data after normalizationPomaOutliers(normalized)$polygon_plotpre_processed <- PomaOutliers(normalized)$data
pre_processed
> class: SummarizedExperiment 
> dim: 29 52 
> metadata(0):
> assays(1): ''
> rownames(29): x1_methylhistidine x3_methylhistidine ... pyruvate
>   succinate
> rowData names(0):
> colnames(52): 1 2 ... 56 57
> colData names(2): group steroids# pre_processed %>% 
#   PomaUnivariate(method = "ttest") %>% 
#   magrittr::extract2("result")# imputed %>% 
#   PomaVolcano(pval = "adjusted", labels = TRUE)# pre_processed %>% 
#   PomaUnivariate(method = "mann") %>% 
#   magrittr::extract2("result")# PomaLimma(pre_processed, contrast = "Controls-DMD", adjust = "fdr")# poma_pca <- PomaMultivariate(pre_processed, method = "pca")# poma_pca$scoresplot +
#   ggplot2::ggtitle("Scores Plot")# poma_plsda <- PomaMultivariate(pre_processed, method = "plsda")# poma_plsda$scoresplot +
#   ggplot2::ggtitle("Scores Plot")# poma_plsda$errors_plsda_plot +
#   ggplot2::ggtitle("Error Plot")# poma_cor <- PomaCorr(pre_processed, label_size = 8, coeff = 0.6)
# poma_cor$correlations
# poma_cor$corrplot
# poma_cor$graph# PomaCorr(pre_processed, corr_type = "glasso", coeff = 0.6)$graph# alpha = 1 for Lasso
# PomaLasso(pre_processed, alpha = 1, labels = TRUE)$coefficientPlot# poma_rf <- PomaRandForest(pre_processed, ntest = 10, nvar = 10)
# poma_rf$error_tree# poma_rf$confusionMatrix$table# poma_rf$MeanDecreaseGini_plotsessionInfo()
> R version 4.5.0 RC (2025-04-04 r88126)
> Platform: x86_64-pc-linux-gnu
> Running under: Ubuntu 24.04.2 LTS
> 
> Matrix products: default
> BLAS:   /home/biocbuild/bbs-3.21-bioc/R/lib/libRblas.so 
> LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.12.0  LAPACK version 3.12.0
> 
> locale:
>  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
>  [3] LC_TIME=en_GB              LC_COLLATE=C              
>  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
>  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
>  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
> [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
> 
> time zone: America/New_York
> tzcode source: system (glibc)
> 
> attached base packages:
> [1] stats     graphics  grDevices utils     datasets  methods   base     
> 
> other attached packages:
> [1] magrittr_2.0.3   patchwork_1.3.0  ggtext_0.1.2     POMA_1.18.0     
> [5] BiocStyle_2.36.0
> 
> loaded via a namespace (and not attached):
>  [1] SummarizedExperiment_1.38.0 gtable_0.3.6               
>  [3] impute_1.82.0               xfun_0.52                  
>  [5] bslib_0.9.0                 ggplot2_3.5.2              
>  [7] Biobase_2.68.0              lattice_0.22-7             
>  [9] vctrs_0.6.5                 tools_4.5.0                
> [11] generics_0.1.3              parallel_4.5.0             
> [13] stats4_4.5.0                tibble_3.2.1               
> [15] cluster_2.1.8.1             pkgconfig_2.0.3            
> [17] Matrix_1.7-3                S4Vectors_0.46.0           
> [19] lifecycle_1.0.4             GenomeInfoDbData_1.2.14    
> [21] stringr_1.5.1               compiler_4.5.0             
> [23] farver_2.1.2                tinytex_0.57               
> [25] munsell_0.5.1               permute_0.9-7              
> [27] litedown_0.7                GenomeInfoDb_1.44.0        
> [29] htmltools_0.5.8.1           sass_0.4.10                
> [31] yaml_2.3.10                 pillar_1.10.2              
> [33] crayon_1.5.3                jquerylib_0.1.4            
> [35] tidyr_1.3.1                 MASS_7.3-65                
> [37] cachem_1.1.0                DelayedArray_0.34.0        
> [39] vegan_2.6-10                magick_2.8.6               
> [41] abind_1.4-8                 nlme_3.1-168               
> [43] commonmark_1.9.5            tidyselect_1.2.1           
> [45] digest_0.6.37               stringi_1.8.7              
> [47] dplyr_1.1.4                 purrr_1.0.4                
> [49] bookdown_0.43               splines_4.5.0              
> [51] labeling_0.4.3              fastmap_1.2.0              
> [53] grid_4.5.0                  colorspace_2.1-1           
> [55] cli_3.6.4                   SparseArray_1.8.0          
> [57] S4Arrays_1.8.0              withr_3.0.2                
> [59] scales_1.3.0                UCSC.utils_1.4.0           
> [61] rmarkdown_2.29              XVector_0.48.0             
> [63] httr_1.4.7                  matrixStats_1.5.0          
> [65] evaluate_1.0.3              knitr_1.50                 
> [67] GenomicRanges_1.60.0        IRanges_2.42.0             
> [69] viridisLite_0.4.2           mgcv_1.9-3                 
> [71] markdown_2.0                rlang_1.1.6                
> [73] gridtext_0.1.5              Rcpp_1.0.14                
> [75] glue_1.8.0                  BiocManager_1.30.25        
> [77] xml2_1.3.8                  BiocGenerics_0.54.0        
> [79] jsonlite_2.0.0              R6_2.6.1                   
> [81] MatrixGenerics_1.20.0Morgan, Martin, Valerie Obenchain, Jim Hester, and Hervé Pagès. 2020. SummarizedExperiment: SummarizedExperiment Container. https://bioconductor.org/packages/SummarizedExperiment.