Relevance networks are an extremely useful tool in evaluating the structure of associations between variables. Methods which utilise an Euclidean distance often miss some information due to an inability to represent postive and negative correlations simultaneously. Networks are able to show these sorts of structures. Networks also provide information on when variables belong to the same biological pathway.
The implementation of networks within mixOmics
is
bipartite, such that only pairs of variables belonging
to different omics datasets are depicted, meaning connections
can be made between these disparate types of biological data. Variables
are drawn as the nodes and the associations between them are represented
by the lines connecting a pair of these nodes.
Relevance networks can be prone to depicting spurious associations.
This is circumvented within the mixOmics
package by the use
of variable selection and the use of components to estimate these
associations.
network()
serves as the function to generate these
relevance networks. It can operate on the outputs from the (s)PLS and
(r)CCA methods.
library(mixOmics)
data(nutrimouse)
As with the plotVar()
function, the visual clutter of
the resulting graph can be reduced by using this parameter. Any
association that has a value lower than the inputted value won’t be
drawn. This defaults to cutoff = 0
, meaning that all
associations will be depicted.
If experimentation with the cutoff
value is desired, an
interactive scrollbar can be created by setting
interactive = TRUE
. By selecting different values on the
scrollbar, new plots will be produced using that value as the
cutoff
. This defaults to
interactive = FALSE
.
The resulting network graph can be exported to an external image file
(deposited within the working directory) using the save
parameter. A selection of file types is avaiable, including
‘jpeg’
, ‘tiff’
, ‘png’
and
‘pdf’
. Include a string with the name.save
parameter to save it properly. An example of this can be seen below.
# a file PLS_network_image.jpeg will be saved to the working directory
network.res <- network(pls.object, save = 'jpeg',
name.save = 'PLS_network_image')
The key insight provided by networks are the sub-networks (or cliques) that can be seen. These clusters often highlight specific structures between variables. The colour of each line indicates the nature of the correlation between each feature. Figure 1 shows the resulting network of a PLS method without and with a cutoff.
X <- nutrimouse$lipid
Y <- nutrimouse$gene
pls.nutri <- pls(X, Y)
network(pls.nutri, color.node = c("orange","lightblue"))
network(pls.nutri, color.node = c("orange","lightblue"), cutoff = 0.55)
FIGURE 1: Relevance network from the PLS applied to the nutrimouse lipid and gene data sets
The igraph
package is utilised by the
network()
function in order to generate the relevance
networks. As a result of how this package functions, the layout of the
network may be different each time the same network()
function is called. The network itself will be the same, but the
position of the variables will differ. The network can be customised
further by exporting the graph to a Cytoscape file format using
write.graph()
from the igraph
package. This
can be seen directly below:
library(igraph)
network.res <- network(pls.nutri)
write.graph(network.res$gR, file = "network.gml", format = "gml")
A common error that is run into when using this function causes the following call in the Rstudio console:
Error in plot.new() : figure margins too large
This is caused by the actual window being too small in Rstudio. It is advised to make Rstudio cover the whole screen and then adjust the margins of the various windows such that the size of the window where the ‘Plots’ is found is maximised. This should resolve this common error.
If this fails, the use of the X11()
function may also
resolve this. Refer to the save
and name.save
parameter section as well if this is still an issue.