network()

network() – Relevance Network Graph

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)

network() Parameters

cutoff

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.

interactive

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.

save and name.save

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') 

network() in Multi Omics

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)

plot of chunk unnamed-chunk-3plot of chunk unnamed-chunk-3

FIGURE 1: Relevance network from the PLS applied to the nutrimouse lipid and gene data sets

Addition Notes

Functionality with iGraph

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

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.

Case Studies

Refer to the following case studies for a more in depth look at generating and interpreting the output of the network() function:

References

González I., Lê Cao K.-A., Davis, M.D. and Déjean S. (2013) Insightful graphical outputs to explore relationships between two ‘omics’ data sets. BioData Mining 5:19