Getting started with NetCoupler


The goal of NetCoupler is to estimate causal links between a set of -omic (e.g. metabolomics, lipidomics) or other high-dimensional data and an external variable, such as a disease outcome, an exposure, or both. The NetCoupler-algorithm, initially formulated during Clemens’ PhD thesis (Wittenbecher 2017), links a conditional dependency network with an external variable (i.e. an outcome or exposure) to identify network-independent associations between the network variables and the external variable, classified as direct effects.

A typical use case we have in mind would be if a researcher might be interested in exploring potential pathways that exist between a health exposure like red meat consumption, its impact on the metabolic profile, and the subsequent impact on an outcome like type 2 diabetes incidence. So for instance, you want to ask questions to get answers that look like the figure below.

The structure of questions that NetCoupler aims to help answers or explore.

The structure of questions that NetCoupler aims to help answers or explore.

The input for NetCoupler includes:

  1. Standardized metabolic or other high-dimensional data.
  2. Exposure or outcome data.
  3. Network estimating method (default is the PC algorithm (Colombo and Maathuis 2014) from the pcalg package).
  4. Modeling method (e.g. linear regression with lm()), including confounders to adjust for.

The final output is the modeling results along with the results from NetCoupler’s classification. Results can then be displayed as a joint network model in graphical format.

There are a few key assumptions to consider before using NetCoupler for your own research purposes.

  1. -omics data is the basis for the network. We haven’t tested this on non-omics datasets, so can’t guarantee it works as intended.
  2. The variables used for the metabolic network are numerical
  3. Metabolic data should have a theoretical network underlying it.
  4. Missing data are not used in any of the NetCoupler processes.

Overall package framework

NetCoupler has several frameworks in mind:


The general workflow for using NetCoupler revolves around several main functions, listed below as well as visualized in the figure below: