Menu

Introduction

Daniel G Hurley

Introduction

The NAIL (Network Analysis and Inference Library) project is a set of tools for solving problems in the life sciences using network (graph) approaches. NAIL includes methods for creating networks, analysing and comparing networks, and for visualising or presenting the results. These methods are designed as self-contained platform-independent components which can be called either from another program, or from a command line.

Modelling biological systems as networks (graphs) is becoming a common approach in the life sciences. Specifically, inferring regulatory networks from genomic, transcriptomic and proteomic data is now giving insight into how biological systems function in healthy and pathological states (e.g. (Ideker and Krogan, 2012; Penfold and Wild, 2011). In a clinical context, ‘network medicine’ is increasingly recognized as important in developing treatments for complex multifactorial conditions (Barabasi, et al., 2011).

Many algorithms or methods have been published to reverse-engineer regulatory networks from genomic and transcriptomic data; comprehensive reviews of different inference algorithms and methods can be found in (Bansal, et al., 2007; De Smet and Marchal, 2010). However, different algorithms typically use different input and output data types, are implemented using different technologies, and are demonstrated by application to different biological problems. In addition, different algorithms often evaluate and visualize output in very different ways, and tools for evaluation and visualisation are generally not included in the released package for each algorithm. This range of technologies, datatypes and invocation methods makes it complex and labour-intensive to deploy and use multiple algorithms on a single dataset.

Because of this, the primary goal of the NAIL project is to provide a straightforward way to use network approaches in the life sciences, and to apply a variety of techniques quickly and easily on the same data. This document describes how to set up NAIL for use, explains the design principles of the library and how to use individual NAIL components to solve problems, and provides information on developing your own components to add to or augment the library.

About this document

[Getting Started] describes setting up NAIL and executing a component.

[Design Principles] talks about the conceptual background of NAIL design, and the system architecture.

[Input and Output Formats] describes the file formats read and written by NAIL code.

[Usage Example 1] and [Usage Example 2] are 'worked examples' using specific NAIL components on publically available datasets to show a result. Both examples have scripts provided implementing the commands described in this User Guide.

[Usage Example 1] explains the process of using NAIL to infer networks using two different methods and compare the resulting networks. It uses a small test dataset bundled with NAIL to show how to preprocess data, infer networks using a simple correlation method and a linear ODE method, then calculate statistics on the inferred network and on the comparison of the two networks. The MATLAB script demo_usage_example_1.m in the directory <$framework_root>/scripts implements each of the commands in this example in turn. To follow the example, we recommend that you work through the script while reading this section.

[Usage Example 2] shows how to use NAIL to infer a mutual information network from simulated data, and to use it to predict interactions in the 'true' network which generated the data. Performance is evaluated by varying a threshold for the interaction strength and calculating AUC for the network over all possible thresholds. The MATLAB script demo_usage_example_2.m in the directory <$framework_root>/scripts implements each of the commands in this example in turn.

[Acknowledgements] records the contributions of third-party code included within the NAIL project, and provides references.


Related

Wiki: Design Principles
Wiki: Getting Started
Wiki: Input and Output Formats
Wiki: Usage Example 1
Wiki: Usage Example 2

MongoDB Logo MongoDB