samples drawn from a mixture of normal distributions, where each mixture component corresponds to a clustering of samples for that module, i.e. it performs a two-way co-clustering operation [@joshi2008]. The method is available as part of the **Lemon-Tree** package (<https://github.com/eb00/lemon-tree>) and has been successfully used in a variety of applications [@bonnet2015].

The co-clustering is carried out by a Gibbs sampler which iteratively updates the assignment of each gene and, within each gene cluster, the assignment of each experimental condition. The co-clustering operation results the full posterior distribution, which can be written as $$p(\mathcal{C}\mid{\mathbf{X}}) \propto \prod_{l=1}^N \prod_{u=1}^{L_l} \iint 
  p(\mu,\tau) \prod_{i\in\mathcal{M}_l}\prod_{m\in \mathcal{E}_{l,u}} p (X_{im}\mid
  \mu,\tau)\; d\mu d\tau,$$ where $\mathcal{C}=\{M_l, \mathcal{E}_{l,u}\colon l=1,\dots,N;
u=1,\dots, L_l\}$ is a co-clustering consisting of $N$ gene modules $M_l$, each of which has a set of $L_m$ sample clusters as $\mathcal{E}_{l,u}$; $p(X_{im}\mid \mu,\tau)$ is a normal distribution function with mean $\mu$ and precision $\tau$; and $p(\mu,\tau)$ is a non-informative normal-gamma prior. Detailed investigations of the convergence properties of the Gibbs sampler showed that the best results are obtained by deriving consensus clusters from multiple independent runs of the sampler. In the **Lemon-Tree** package, consensus clustering is performed by a novel spectral graph clustering algorithm [@michoel2012] applied to the weighted 