SIMoNe software home page

Context

SIMoNe (Statistical Inference for MOdular NEtworks) is an R package which implements the inference of co-expression networks based on partial correlation coefficients from either steady-state or time-course transcriptomic data. Note that with both type of data this package can deal with samples collected in different experimental conditions and therefore not identically distributed. In this particular case, multiple but related graphs are inferred on one simone run.

The underlying statistical tools enter the framework of Gaussian graphical models (GGM). Basically, the algorithm searches for a latent clustering of the network to drive the selection of edges through an adaptive l1-penalization of the model likelihood.

Slides

Features

The available inference methods for edges selection include

All the listed methods are based l1-norm penalization, with an additional grouping effect for multitask learning (including three variants: “intertwined”, “group-Lasso” and “cooperative-Lasso”).

The penalization of each individual edge may be weighted according to a latent clustering of the network, thus adapting the inference of the network to a particular topology. The clustering algorithm is performed by the mixer package, based upon Daudin, Picard and Robin (2008)’s Mixture Model for Random Graphs.

Since the choice of the network sparsity level remains a current issue in the framework of sparse Gaussian network inference, the algorithm provides a full path of estimators starting from an empty network and adding edges as the penalty level progressively decreases. Bayesian Information Criteria (BIC) and Akaike Information Criteria (AIC) are adapted to the GGM context in order to help to choose one particular network among this path of solutions.

Graphical tools are provided to summarize the results of a SIMoNe run and offer various representations for network plotting.

Demos and code examples

Cancer data, pooled estimate
library(simone)
data(cancer)
str(cancer, max.level=1)

attach(cancer)
boxplot(expr, las=3, cex.axis=0.6)
table(status)

## no clustering by default
res.no <- simone(expr)
plot(res.no) ## "trop" de monde sur BIC / AIC
g.no <- getNetwork(res.no, 30)
plot(g.no)
plot(g.no, type = "cluster")

## try with clustering now
ctrl <- setOptions(clusters.crit=30)
res.cl <- simone(expr, clustering=TRUE, control=ctrl)
g.cl <- getNetwork(res.cl, 30)
plot(g.cl)
plot(g.cl, type = "circles")

## Let us compare the two networks
plot(g.no,g.cl)
plot(g.no,g.cl, type="overlap")
Cancer data, multi-task learning
library(simone)
data(cancer)
str(cancer, max.level=1)

attach(cancer)
boxplot(expr, las=3, cex.axis=0.6)
table(status)

out <- simone(expr, tasks=status)

plot(out)

glist <- getNetwork(out, "AIC")
plot(glist[[1]],glist[[2]])
glist <- getNetwork(out, "BIC")
plot(glist[[1]],glist[[2]])
glist <- getNetwork(out, 65)
plot(glist[[1]],glist[[2]])
plot(glist[[1]],glist[[2]], type="overlap")

detach(cancer)

installation

Within R, just type

install.packages("simone")

First steps

Have a look at the documentation. You may also check the demos:

demo(cancer_pooled)
demo(cancer_multitask)
demo(check_glasso, echo=FALSE)
demo(simone_steadyState)
demo(simone_timeCourse)
demo(simone_multitask)

Contacts

References