The levi (Landscape Expression Visualization Interface) is a package for the R environment, developed to enable the visualization of the projection of gene expression on a biological network. levi is based on two other software, the first is the Viacomplex (Castro et al. (2009)), which was written in Fortran using the Dislin library to plot the data. The second is Galant (Camilo et al. (2013)), which corresponds to a plugin for Cytoscape software.
Two files are required to use levi: The file containing the expression levels of the genes and a file containing the biological network.
This file should contain the genes of interest previously normalized by the user. The expression file (see Example) must have a column with the identification of genes (Gene Symbol, Entrez, etc.) and at least one column with gene expression levels (treatment, case, control, etc.). The user can compare the expression levels between samples if there are more columns containing these data.
If the expression file does not have values for all the genes of the network, a message will be displayed showing log file path to a temporary directory with the gene names. In the landscape construction, genes with no expression value will be displayed with values close to 0.5 demonstrating that there were no changes (down-regulated or up-regulated genes).
Data sets of gene expression can be obtained from online databases:
The levi supports several extensions of biological network files (*.net, *.dyn, *.txt, *.dat). The user should build the biological network using specific tools such as: Cytoscape, RedeR, Medusa, etc. To build the biological network is recommended the obtention of interaction data/ biological associations from online repositories:
Extension | File Type | Link |
---|---|---|
dat | Medusa (DAT) | Example DAT |
dyn | RedeR (DYN) | Example DYN |
net | Pajek (NET) | Example NET |
stg | STRING / STITCH | Example coordinates |
stg | STRING / STITCH | Example interactions |
#Viewing Modes
levi has two viewing modes: Graphical User Interface (GUI) and script.
The GUI mode was developed using Shiny package (Figure 1). This viewing mode can be used in the R environment (browser=FALSE) or in the user’s default operating system browser (browser=TRUE).
library(levi)
LEVIui(browser=TRUE) #Launch Levi to Browser.
LEVIui(browser=FALSE) #Launch Levi to R environment.
The levi scripting mode also has the settings for landscape building (see example below).
library(levi)
template_network <- file.path(system.file(package="levi"),"extdata",
"medusa.dat", fsep = .Platform$file.sep)
template_expression <- file.path(system.file(package="levi"),
"extdata","expression.dat",
fsep = .Platform$file.sep)
multicolor <- levi(networkCoordinatesInput = template_network,
expressionInput = template_expression, fileTypeInput = "dat",
geneSymbolnput = "ID",
readExpColumn=
readExpColumn("TumorCurrentSmoker-NormalNeverSmoker"),
contrastValueInput = 50, resolutionValueInput = 50,
zoomValueInput = 50, smoothValueInput = 50, contourLevi = TRUE)
## Coordinate system already present. Adding new coordinate system, which will
## replace the existing one.
twocolors <- levi(networkCoordinatesInput = template_network,
expressionInput = template_expression, fileTypeInput = "dat",
geneSymbolnput = "ID",
readExpColumn=
readExpColumn("TumorCurrentSmoker-NormalNeverSmoker"),
setcolor = "pink_green", contourLevi = FALSE)
## Coordinate system already present. Adding new coordinate system, which will
## replace the existing one.
The script mode allows the user to compare combinations between two experiments in the gene expression levels file. The readExpColumn function can be used to this task to inform the combination separating by dash (-) and to add more combinations separate by comma (,).
library(levi)
base <- readExpColumn("TumorFormerSmoker-NormalFormerSmoker",
"TumorNeverSmoker-TumorNeverSmoker")
template_network <- file.path(system.file(package="levi"),"extdata",
"medusa.dat", fsep = .Platform$file.sep)
template_expression <- file.path(system.file(package="levi"),
"extdata","expression.dat",
fsep = .Platform$file.sep)
multicolor <- levi(networkCoordinatesInput = template_network,
expressionInput = template_expression,
fileTypeInput = "dat",
geneSymbolnput = "ID", readExpColumn= base,
contrastValueInput = 50, resolutionValueInput = 50,
zoomValueInput = 50, smoothValueInput = 50,
contourLevi = FALSE)
## Coordinate system already present. Adding new coordinate system, which will
## replace the existing one.
## Coordinate system already present. Adding new coordinate system, which will
## replace the existing one.
twocolors <- levi(networkCoordinatesInput = template_network,
expressionInput = template_expression, fileTypeInput = "dat",
geneSymbolnput = "ID",
readExpColumn= base,
setcolor = "pink_green", contourLevi = FALSE)
## Coordinate system already present. Adding new coordinate system, which will
## replace the existing one.
## Coordinate system already present. Adding new coordinate system, which will
## replace the existing one.
## 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=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] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] levi_1.25.0 BiocStyle_2.35.0
##
## loaded via a namespace (and not attached):
## [1] sass_0.4.9 utf8_1.2.4 generics_0.1.3
## [4] xml2_1.3.6 stringi_1.8.4 digest_0.6.37
## [7] magrittr_2.0.3 evaluate_1.0.1 grid_4.4.2
## [10] RColorBrewer_1.1-3 fastmap_1.2.0 plyr_1.8.9
## [13] jsonlite_1.8.9 brio_1.1.5 promises_1.3.2
## [16] BiocManager_1.30.25 httr_1.4.7 fansi_1.0.6
## [19] scales_1.3.0 isoband_0.2.7 jquerylib_0.1.4
## [22] shinydashboard_0.7.2 cli_3.6.3 shiny_1.9.1
## [25] rlang_1.1.4 munsell_0.5.1 withr_3.0.2
## [28] cachem_1.1.0 yaml_2.3.10 tools_4.4.2
## [31] reshape2_1.4.4 dplyr_1.1.4 colorspace_2.1-1
## [34] ggplot2_3.5.1 httpuv_1.6.15 DT_0.33
## [37] mime_0.12 buildtools_1.0.0 vctrs_0.6.5
## [40] R6_2.5.1 lifecycle_1.0.4 stringr_1.5.1
## [43] htmlwidgets_1.6.4 shinyjs_2.1.0 pkgconfig_2.0.3
## [46] pillar_1.9.0 bslib_0.8.0 later_1.4.1
## [49] gtable_0.3.6 glue_1.8.0 Rcpp_1.0.13-1
## [52] xfun_0.49 tibble_3.2.1 tidyselect_1.2.1
## [55] sys_3.4.3 knitr_1.49 farver_2.1.2
## [58] xtable_1.8-4 htmltools_0.5.8.1 igraph_2.1.1
## [61] labeling_0.4.3 rmarkdown_2.29 maketools_1.3.1
## [64] testthat_3.2.1.1 compiler_4.4.2