# Running gene-set anaysis with `piano`

Leif Varemo Wigge1,2

1Department of Biology and Biological Engineering, Chalmers University of Technology
2National Bioinformatics Infrastructure Sweden (NBIS), SciLifeLab

#### 15 September 2022

#### Package

piano 2.12.1

# Contents

# 1 Quick start

1. Load piano and example data:

    library(piano)
    data("gsa_input")

2. Take a look at the structure of the input data:

    head(gsa_input$gsc,10)

    ##       g      s
    ##  [1,] "g103" "s1"
    ##  [2,] "g106" "s19"
    ##  [3,] "g118" "s16"
    ##  [4,] "g130" "s21"
    ##  [5,] "g130" "s6"
    ##  [6,] "g131" "s46"
    ##  [7,] "g132" "s32"
    ##  [8,] "g132" "s3"
    ##  [9,] "g139" "s1"
    ## [10,] "g140" "s21"

    head(gsa_input$pvals, 10)

    ##           g1           g2           g3           g4           g5           g6
    ## 2.351900e-05 2.838832e-05 2.885141e-05 6.566243e-05 7.107615e-05 7.770070e-05
    ##           g7           g8           g9          g10
    ## 1.436830e-04 1.532264e-04 1.626607e-04 1.644806e-04

    head(gsa_input$directions, 10)

    ##  g1  g2  g3  g4  g5  g6  g7  g8  g9 g10
    ##  -1  -1   1  -1  -1   1  -1  -1  -1  -1

3. Load gene-set collection and take a look at the resulting object:

    geneSets <- loadGSC(gsa_input$gsc)
    geneSets

    ## First 50 (out of 50) gene set names:
    ##  [1] "s1"  "s19" "s16" "s21" "s6"  "s46" "s32" "s3"  "s34" "s14" "s7"  "s13"
    ## [13] "s5"  "s42" "s2"  "s11" "s22" "s8"  "s15" "s10" "s33" "s37" "s35" "s43"
    ## [25] "s36" "s27" "s17" "s9"  "s23" "s30" "s18" "s25" "s41" "s24" "s20" "s39"
    ## [37] "s31" "s12" "s29" "s4"  "s26" "s44" "s28" "s47" "s38" "s49" "s50" "s40"
    ## [49] "s45" "s48"
    ##
    ## First 50 (out of 1136) gene names:
    ##  [1] "g103" "g139" "g150" "g235" "g304" "g479" "g130" "g157" "g171" "g180"
    ## [11] "g218" "g243" "g251" "g302" "g319" "g32"  "g329" "g372" "g373" "g403"
    ## [21] "g41"  "g43"  "g456" "g476" "g48"  "g521" "g527" "g554" "g581" "g585"
    ## [31] "g591" "g62"  "g660" "g665" "g698" "g71"  "g711" "g723" "g726" "g75"
    ## [41] "g758" "g77"  "g808" "g816" "g838" "g9"   "g907" "g924" "g931" "g935"
    ##
    ## Gene set size summary:
    ##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
    ##    2.00   20.50   39.00   39.50   53.75   95.00
    ##
    ## No additional info available.

4. Run gene-set analysis:

    gsares <- runGSA(gsa_input$pvals,
                     gsa_input$directions,
                     gsc = geneSets,
                     nPerm = 500) # set to 500 for fast run

Note: `nPerm` was set to 500 to get a short runtime for this vignette, in reality use a higher number, e.g. 10,000 (default).

5. Explore the results in an interactive Shiny app:

    exploreGSAres(gsares)

This opens a browser window with an interactive interface where the results can be explored in detail.

# 2 Session info

Here is the output of `sessionInfo()` on the system on which this document was compiled.

    ## R version 4.2.1 (2022-06-23 ucrt)
    ## Platform: x86_64-w64-mingw32/x64 (64-bit)
    ## Running under: Windows Server x64 (build 20348)
    ##
    ## Matrix products: default
    ##
    ## locale:
    ## [1] LC_COLLATE=C
    ## [2] LC_CTYPE=English_United States.utf8
    ## [3] LC_MONETARY=English_United States.utf8
    ## [4] LC_NUMERIC=C
    ## [5] LC_TIME=English_United States.utf8
    ##
    ## attached base packages:
    ## [1] stats     graphics  grDevices utils     datasets  methods   base
    ##
    ## other attached packages:
    ## [1] piano_2.12.1     BiocStyle_2.24.0
    ##
    ## loaded via a namespace (and not attached):
    ##  [1] Biobase_2.56.0       sass_0.4.2           jsonlite_1.8.0
    ##  [4] gtools_3.9.3         bslib_0.4.0          shiny_1.7.2
    ##  [7] assertthat_0.2.1     BiocManager_1.30.18  yaml_2.3.5
    ## [10] slam_0.1-50          pillar_1.8.1         lattice_0.20-45
    ## [13] glue_1.6.2           limma_3.52.3         digest_0.6.29
    ## [16] promises_1.2.0.1     colorspace_2.0-3     htmltools_0.5.3
    ## [19] httpuv_1.6.6         Matrix_1.5-1         pkgconfig_2.0.3
    ## [22] bookdown_0.29        purrr_0.3.4          xtable_1.8-4
    ## [25] relations_0.6-12     scales_1.2.1         later_1.3.0
    ## [28] BiocParallel_1.30.3  tibble_3.1.8         generics_0.1.3
    ## [31] ggplot2_3.3.6        ellipsis_0.3.2       DT_0.25
    ## [34] cachem_1.0.6         shinyjs_2.1.0        BiocGenerics_0.42.0
    ## [37] cli_3.4.0            magrittr_2.0.3       mime_0.12
    ## [40] evaluate_0.16        fansi_1.0.3          gplots_3.1.3
    ## [43] shinydashboard_0.7.2 tools_4.2.1          data.table_1.14.2
    ## [46] lifecycle_1.0.2      stringr_1.4.1        munsell_0.5.0
    ## [49] cluster_2.1.4        compiler_4.2.1       jquerylib_0.1.4
    ## [52] caTools_1.18.2       rlang_1.0.5          grid_4.2.1
    ## [55] visNetwork_2.1.0     marray_1.74.0        htmlwidgets_1.5.4
    ## [58] igraph_1.3.4         bitops_1.0-7         rmarkdown_2.16
    ## [61] gtable_0.3.1         codetools_0.2-18     DBI_1.1.3
    ## [64] sets_1.0-21          R6_2.5.1             gridExtra_2.3
    ## [67] knitr_1.40           dplyr_1.0.10         fastmap_1.1.0
    ## [70] utf8_1.2.2           fastmatch_1.1-3      fgsea_1.22.0
    ## [73] KernSmooth_2.23-20   stringi_1.7.8        parallel_4.2.1
    ## [76] Rcpp_1.0.9           vctrs_0.4.1          tidyselect_1.1.2
    ## [79] xfun_0.33