SBGNview has collected pathway data and gene sets from the following databases: Reactome, PANTHER Pathway, SMPDB, MetaCyc and MetaCrop. These gene sets can be used for pathway enrichment analysis.
In this vignette, we will show you a complete pathway analysis workflow based on GAGE + SBGNview. Similar workflows have been documented in the gage package using GAGE + Pathview.
Please cite the following papers when using the open-source SBGNview package. This will help the project and our team:
Luo W, Brouwer C. Pathview: an R/Biocondutor package for pathway-based data integration and visualization. Bioinformatics, 2013, 29(14):1830-1831, doi: 10.1093/bioinformatics/btt285
Please also cite the GAGE paper when using the gage package:
Luo W, Friedman M, etc. GAGE: generally applicable gene set enrichment for pathway analysis. BMC Bioinformatics, 2009, 10, pp. 161, doi: 10.1186/1471-2105-10-161
Please see the Quick Start tutorial for installation instructions and quick start examples.
In this example, we analyze a RNA-Seq dataset of IFNg KO mice vs wild type mice. It contains normalized RNA-seq gene expression data described in Greer, Renee L., Xiaoxi Dong, et al, 2016.
The RNA abundance data was quantile normalized and log2 transformed, stored in a “SummarizedExperiment” object. SBGNview input user data (gene.data or cpd.data) can be either a numeric matrix or a vector, like those in pathview. In addition, it can be a “SummarizedExperiment” object, which is commonly used in BioConductor packages.
if(!requireNamespace("gage", quietly = TRUE)) {
BiocManager::install("gage", update = FALSE)
}
library(gage)
degs <- gage(exprs = count.data,
gsets = ensembl.pathway,
ref = wt.cols,
samp = ko.cols,
compare = "paired" #"as.group"
)
head(degs$greater)[,3:5]
head(degs$less)[,3:5]
down.pathways <- row.names(degs$less)[1:10]
head(down.pathways)
The abundance values were log2 transformed. Here we calculate the fold change of IFNg KO group v.s. WT group.
ensembl.koVsWt <- count.data[,ko.cols]-count.data[,wt.cols]
head(ensembl.koVsWt)
#alternatively, we can also calculate mean fold changes per gene, which corresponds to gage analysis above with compare="as.group"
mean.wt <- apply(count.data[,wt.cols] ,1 ,"mean")
head(mean.wt)
mean.ko <- apply(count.data[,ko.cols],1,"mean")
head(mean.ko)
# The abundance values were on log scale. Hence fold change is their difference.
ensembl.koVsWt.m <- mean.ko - mean.wt
#load the SBGNview pathway collection, which may takes a few seconds.
data(sbgn.xmls)
down.pathways <- sapply(strsplit(down.pathways,"::"), "[", 1)
head(down.pathways)
sbgnview.obj <- SBGNview(
gene.data = ensembl.koVsWt,
gene.id.type = "ENSEMBL",
input.sbgn = down.pathways[1:2],#can be more than 2 pathways
output.file = "ifn.sbgnview.less",
show.pathway.name = TRUE,
max.gene.value = 2,
min.gene.value = -2,
mid.gene.value = 0,
node.sum = "mean",
output.format = c("png"),
font.size = 2.3,
org = "mmu",
text.length.factor.complex = 3,
if.scale.compartment.font.size = TRUE,
node.width.adjust.factor.compartment = 0.04
)
sbgnview.obj
The ‘cancer.ds’ is a microarray dataset from a breast cancer study. The dataset was adopted from gage package and processed into a SummarizedExperiment object. It is used to demo SBGNview’s visualization ability.
data("cancer.ds")
sbgnview.obj <- SBGNview(
gene.data = cancer.ds,
gene.id.type = "ENTREZID",
input.sbgn = "R-HSA-877300",
output.file = "demo.SummarizedExperiment",
show.pathway.name = TRUE,
max.gene.value = 1,
min.gene.value = -1,
mid.gene.value = 0,
node.sum = "mean",
output.format = c("png"),
font.size = 2.3,
org = "hsa",
text.length.factor.complex = 3,
if.scale.compartment.font.size = TRUE,
node.width.adjust.factor.compartment = 0.04
)
sbgnview.obj
## R version 4.4.1 (2024-06-14)
## 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=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: Etc/UTC
## tzcode source: system (glibc)
##
## attached base packages:
## [1] stats4 stats graphics grDevices utils datasets methods
## [8] base
##
## other attached packages:
## [1] gage_2.55.0 SummarizedExperiment_1.35.1
## [3] Biobase_2.65.1 GenomicRanges_1.57.1
## [5] GenomeInfoDb_1.41.1 IRanges_2.39.2
## [7] S4Vectors_0.43.2 BiocGenerics_0.51.0
## [9] MatrixGenerics_1.17.0 matrixStats_1.3.0
## [11] SBGNview_1.19.0 SBGNview.data_1.19.0
## [13] pathview_1.45.0 knitr_1.48
## [15] bookdown_0.40
##
## loaded via a namespace (and not attached):
## [1] KEGGREST_1.45.1 xfun_0.47 bslib_0.8.0
## [4] lattice_0.22-6 vctrs_0.6.5 tools_4.4.1
## [7] Rdpack_2.6.1 bitops_1.0-8 AnnotationDbi_1.67.0
## [10] RSQLite_2.3.7 highr_0.11 blob_1.2.4
## [13] pkgconfig_2.0.3 Matrix_1.7-0 graph_1.83.0
## [16] lifecycle_1.0.4 GenomeInfoDbData_1.2.12 compiler_4.4.1
## [19] Biostrings_2.73.1 htmltools_0.5.8.1 sys_3.4.2
## [22] buildtools_1.0.0 sass_0.4.9 RCurl_1.98-1.16
## [25] yaml_2.3.10 GO.db_3.19.1 crayon_1.5.3
## [28] jquerylib_0.1.4 DelayedArray_0.31.11 cachem_1.1.0
## [31] org.Hs.eg.db_3.19.1 abind_1.4-5 digest_0.6.37
## [34] maketools_1.3.0 rsvg_2.6.0 fastmap_1.2.0
## [37] grid_4.4.1 SparseArray_1.5.31 cli_3.6.3
## [40] magrittr_2.0.3 S4Arrays_1.5.7 XML_3.99-0.17
## [43] UCSC.utils_1.1.0 bit64_4.0.5 rmarkdown_2.28
## [46] XVector_0.45.0 httr_1.4.7 igraph_2.0.3
## [49] bit_4.0.5 png_0.1-8 memoise_2.0.1
## [52] evaluate_0.24.0 rbibutils_2.2.16 rlang_1.1.4
## [55] DBI_1.2.3 Rgraphviz_2.49.0 xml2_1.3.6
## [58] KEGGgraph_1.65.0 jsonlite_1.8.8 R6_2.5.1
## [61] zlibbioc_1.51.1