Biomarker Analysis Catalog - Stable
  • Stable
    • Dev
  1. Graphs
  2. RNAG
  3. RNAG6
  • Index

  • Tables
    • CPMT
      • CPMT1
      • CPMT2
        • CPMT2A
      • CPMT3
    • DT
      • DT1
        • DT1A
        • DT1B
        • DT1C
      • DT2
        • DT2A
    • TET
      • TET1
        • TET1A

  • Graphs
    • AG
      • AG1
    • DG
      • DG1
        • DG1A
        • DG1B
      • DG2
      • DG3
        • DG3A
      • DG4
    • KG
      • KG1
        • KG1A
        • KG1B
      • KG2
        • KG2A
      • KG3
      • KG4
        • KG4A
        • KG4B
      • KG5
        • KG5A
        • KG5B
    • RFG
      • RFG1
        • RFG1A
      • RFG2
        • RFG2A
        • RFG2B
        • RFG2C
      • RFG3
    • RG
      • RG1
        • RG1A
        • RG1B
        • RG1C
      • RG2
        • RG2A
      • RG3
        • RG3A
        • RG3B
    • SPG
      • SPG1
      • SPG2
    • RNAG
      • RNAG1
      • RNAG2
      • RNAG3
      • RNAG4
      • RNAG5
      • RNAG6
      • RNAG7
      • RNAG8
      • RNAG9
      • RNAG10
    • SFG
      • SFG1
        • SFG1A
        • SFG1B
      • SFG2
        • SFG2A
        • SFG2B
        • SFG2C
        • SFG2D
      • SFG3
        • SFG3A
      • SFG4
      • SFG5
        • SFG5A
        • SFG5B
        • SFG5C
      • SFG6
        • SFG6A
        • SFG6B
        • SFG6C
  1. Graphs
  2. RNAG
  3. RNAG6

RNAG6

RNAseq Barplot

RNAG

  • Setup: Import, Filter and Normalize
  • Barplot for a Single Gene
  • Barplot for Gene Signatures
  • Additional Options for Customization
  • Teal Module for Barplot
  • Session Info

This page can be used as a template of how to use the available hermes functions to produce a barplot of the dichotomized gene expression counts into two or three categories based on custom defined percentiles.

The draw_barplot() function used below needs HermesData as input. See RNAG1 for details on how to import, filter and normalize HermesData.

Code
library(hermes)
object <- hermes_data %>%
  add_quality_flags() %>%
  filter() %>%
  normalize()

We can create a barplot for gene expression counts of single genes by specifying a gene in the gene_spec (gene specification) as follows. This function creates a scatterplot with the default percentiles (0.33, 0.67), to specify custom percentiles, please use the percentile argument.

Code
draw_barplot(
  object = object,
  assay_name = "counts",
  x_spec = gene_spec(genes(object)[1])
)

We can also specify a gene summary function for multiple genes, thereby using the corresponding gene signature. Note that here we just want to use the first 3 genes from the object without explicitly specifying the gene IDs, and this can be done through the genes() function in hermes.

Code
draw_barplot(
  object = object,
  assay_name = "counts",
  x_spec = gene_spec(
    genes(object)[1:3],
    fun = colMeans,
    fun_name = "Median"
  )
)

It is also possible to pass additional arguments to the function draw_barplot(), ex. if we wish to specify an optional faceting variable or optional fill variable. See ?hermes::draw_barplot() for details about the additional parameters available.

Code
draw_barplot(
  object = object,
  assay_name = "counts",
  x_spec = gene_spec(
    genes(object)[1:3],
    fun = colMeans,
    fun_name = "Median"
  ),
  facet_var = "SEX",
  fill_var = "AGE18"
)

Code
draw_barplot(
  object = object,
  assay_name = "counts",
  x_spec = gene_spec(
    genes(object)[1:3],
    fun = colMeans,
    fun_name = "Median"
  ),
  facet_var = "SEX",
  fill_var = "AGE18",
  percentiles = c(0.1, 0.9)
)

We start by importing a MultiAssayExperiment; here we use the example multi_assay_experiment available in hermes. It is wrapped as a teal::dataset. We can then use the provided teal module tm_g_barplot to have add a barplot module in our teal app.

Code
library(teal.modules.hermes)

data <- teal_data()
data <- within(data, {
  library(hermes)
  MAE <- multi_assay_experiment
})
datanames(data) <- "MAE"
Warning: `datanames<-()` was deprecated in teal.data 0.7.0.
ℹ invalid to use `datanames()<-` or `names()<-` on an object of class
  `teal_data`. See ?names.teal_data
Code
app <- init(
  data = data,
  modules = modules(
    tm_g_barplot(
      label = "barplot",
      mae_name = "MAE"
    )
  )
)
[INFO] 2025-02-19 17:30:40.7664 pid:6036 token:[] teal.modules.hermes Initializing tm_g_barplot
Code
shinyApp(app$ui, app$server)
Warning: 'experiments' dropped; see 'drops()'

Code
sessionInfo()
R version 4.4.2 (2024-10-31)
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              
 [3] 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   
 [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: Etc/UTC
tzcode source: system (glibc)

attached base packages:
[1] stats4    stats     graphics  grDevices utils     datasets  methods  
[8] base     

other attached packages:
 [1] teal.modules.hermes_0.1.6   teal_0.16.0                
 [3] teal.slice_0.6.0            teal.data_0.7.0            
 [5] teal.code_0.6.1             shiny_1.10.0               
 [7] hermes_1.10.0               SummarizedExperiment_1.36.0
 [9] Biobase_2.66.0              GenomicRanges_1.58.0       
[11] GenomeInfoDb_1.42.3         IRanges_2.40.1             
[13] S4Vectors_0.44.0            BiocGenerics_0.52.0        
[15] MatrixGenerics_1.18.1       matrixStats_1.5.0          
[17] ggfortify_0.4.17            ggplot2_3.5.1              

loaded via a namespace (and not attached):
  [1] RColorBrewer_1.1-3          jsonlite_1.9.0             
  [3] shape_1.4.6.1               MultiAssayExperiment_1.32.0
  [5] magrittr_2.0.3              farver_2.1.2               
  [7] rmarkdown_2.29              GlobalOptions_0.1.2        
  [9] zlibbioc_1.52.0             vctrs_0.6.5                
 [11] memoise_2.0.1               webshot_0.5.5              
 [13] BiocBaseUtils_1.9.0         htmltools_0.5.8.1          
 [15] S4Arrays_1.6.0              forcats_1.0.0              
 [17] progress_1.2.3              curl_6.2.1                 
 [19] SparseArray_1.6.1           sass_0.4.9                 
 [21] bslib_0.9.0                 fontawesome_0.5.3          
 [23] htmlwidgets_1.6.4           testthat_3.2.3             
 [25] httr2_1.1.0                 cachem_1.1.0               
 [27] teal.widgets_0.4.3          mime_0.12                  
 [29] lifecycle_1.0.4             iterators_1.0.14           
 [31] pkgconfig_2.0.3             webshot2_0.1.1             
 [33] Matrix_1.7-2                R6_2.6.1                   
 [35] fastmap_1.2.0               GenomeInfoDbData_1.2.13    
 [37] rbibutils_2.3               clue_0.3-66                
 [39] digest_0.6.37               colorspace_2.1-1           
 [41] shinycssloaders_1.1.0       ps_1.9.0                   
 [43] AnnotationDbi_1.68.0        DESeq2_1.46.0              
 [45] RSQLite_2.3.9               filelock_1.0.3             
 [47] labeling_0.4.3              httr_1.4.7                 
 [49] abind_1.4-8                 compiler_4.4.2             
 [51] bit64_4.6.0-1               withr_3.0.2                
 [53] doParallel_1.0.17           backports_1.5.0            
 [55] BiocParallel_1.40.0         DBI_1.2.3                  
 [57] logger_0.4.0                biomaRt_2.62.1             
 [59] rappdirs_0.3.3              DelayedArray_0.32.0        
 [61] rjson_0.2.23                tools_4.4.2                
 [63] chromote_0.4.0              httpuv_1.6.15              
 [65] glue_1.8.0                  callr_3.7.6                
 [67] promises_1.3.2              grid_4.4.2                 
 [69] checkmate_2.3.2             cluster_2.1.8              
 [71] generics_0.1.3              gtable_0.3.6               
 [73] websocket_1.4.2             tidyr_1.3.1                
 [75] hms_1.1.3                   xml2_1.3.6                 
 [77] XVector_0.46.0              ggrepel_0.9.6              
 [79] foreach_1.5.2               pillar_1.10.1              
 [81] stringr_1.5.1               limma_3.62.2               
 [83] later_1.4.1                 circlize_0.4.16            
 [85] dplyr_1.1.4                 BiocFileCache_2.14.0       
 [87] lattice_0.22-6              bit_4.5.0.1                
 [89] tidyselect_1.2.1            ComplexHeatmap_2.22.0      
 [91] locfit_1.5-9.11             Biostrings_2.74.1          
 [93] knitr_1.49                  gridExtra_2.3              
 [95] teal.logger_0.3.2           edgeR_4.4.2                
 [97] xfun_0.51                   statmod_1.5.0              
 [99] brio_1.1.5                  stringi_1.8.4              
[101] UCSC.utils_1.2.0            yaml_2.3.10                
[103] shinyWidgets_0.8.7          evaluate_1.0.3             
[105] codetools_0.2-20            tibble_3.2.1               
[107] cli_3.6.4                   xtable_1.8-4               
[109] Rdpack_2.6.2                jquerylib_0.1.4            
[111] munsell_0.5.1               processx_3.8.5             
[113] teal.reporter_0.4.0         Rcpp_1.0.14                
[115] dbplyr_2.5.0                png_0.1-8                  
[117] parallel_4.4.2              assertthat_0.2.1           
[119] blob_1.2.4                  prettyunits_1.2.0          
[121] scales_1.3.0                purrr_1.0.4                
[123] crayon_1.5.3                GetoptLong_1.0.5           
[125] rlang_1.1.5                 formatR_1.14               
[127] KEGGREST_1.46.0             shinyjs_2.1.0              

Reuse

Copyright 2023, Hoffmann-La Roche Ltd.
RNAG5
RNAG7
Source Code
---
title: RNAG6
subtitle: RNAseq Barplot
categories: [RNAG]
---

------------------------------------------------------------------------

{{< include ../misc/hooks.qmd >}}

::: panel-tabset
## Setup: Import, Filter and Normalize

This page can be used as a template of how to use the available `hermes` functions to produce a barplot of the dichotomized gene expression counts into two or three categories based on custom defined percentiles.

The `draw_barplot()` function used below needs `HermesData` as input.
See [RNAG1](../graphs/rnag01.qmd) for details on how to import, filter and normalize `HermesData`.

```{r, message = FALSE}
library(hermes)
object <- hermes_data %>%
  add_quality_flags() %>%
  filter() %>%
  normalize()
```

## Barplot for a Single Gene

We can create a barplot for gene expression counts of single genes by specifying a gene in the `gene_spec` (gene specification) as follows.
This function creates a scatterplot with the default percentiles (0.33, 0.67), to specify custom percentiles, please use the `percentile` argument.

```{r}
draw_barplot(
  object = object,
  assay_name = "counts",
  x_spec = gene_spec(genes(object)[1])
)
```

## Barplot for Gene Signatures

We can also specify a gene summary function for multiple genes, thereby using the corresponding gene signature.
Note that here we just want to use the first 3 genes from the `object` without explicitly specifying the gene IDs, and this can be done through the `genes()` function in `hermes`.

```{r}
draw_barplot(
  object = object,
  assay_name = "counts",
  x_spec = gene_spec(
    genes(object)[1:3],
    fun = colMeans,
    fun_name = "Median"
  )
)
```

## Additional Options for Customization

It is also possible to pass additional arguments to the function `draw_barplot()`, ex.
if we wish to specify an optional faceting variable or optional fill variable.
See `?hermes::draw_barplot()` for details about the additional parameters available.

```{r}
draw_barplot(
  object = object,
  assay_name = "counts",
  x_spec = gene_spec(
    genes(object)[1:3],
    fun = colMeans,
    fun_name = "Median"
  ),
  facet_var = "SEX",
  fill_var = "AGE18"
)
```

```{r}
draw_barplot(
  object = object,
  assay_name = "counts",
  x_spec = gene_spec(
    genes(object)[1:3],
    fun = colMeans,
    fun_name = "Median"
  ),
  facet_var = "SEX",
  fill_var = "AGE18",
  percentiles = c(0.1, 0.9)
)
```

## Teal Module for Barplot

We start by importing a `MultiAssayExperiment`; here we use the example `multi_assay_experiment` available in `hermes`.
It is wrapped as a `teal::dataset`.
We can then use the provided teal module `tm_g_barplot` to have add a barplot module in our teal app.

```{r,  message = FALSE, cache = FALSE, opts.label=c('app')}
library(teal.modules.hermes)

data <- teal_data()
data <- within(data, {
  library(hermes)
  MAE <- multi_assay_experiment
})
datanames(data) <- "MAE"

app <- init(
  data = data,
  modules = modules(
    tm_g_barplot(
      label = "barplot",
      mae_name = "MAE"
    )
  )
)
shinyApp(app$ui, app$server)
```

{{< include ../misc/session_info.qmd >}}
:::

Made with ❤️ by the Statistical Engineering Team StatisticalEngineering

  • License

  • Edit this page
  • Report an issue
Cookie Preferences