# Anduril (workflow engine)

Anduril is an open source component-based workflow framework for scientific data analysis developed at the Systems Biology Laboratory, University of Helsinki.
Anduril is designed to enable systematic, flexible and efficient data analysis, particularly in the field of high-throughput experiments in biomedical research. The workflow system currently provides components for several types of analysis such as sequencing, gene expression, SNP, ChIP-on-chip, comparative genomic hybridization and exon microarray analysis as well as cytometry and cell imaging analysis.

## Architecture and features

A workflow is a series of processing steps connected together so that the output of one step is used as the input of another. Processing steps implement data analysis tasks such as data importing, statistical tests and report generation. In Anduril, processing steps are implemented using components, which are reusable executable code that can be written in any programming language. Components are wired together into a workflow, or a component network, that is executed by the Anduril workflow engine. Workflow configuration is done using a simple yet powerful scripting language, AndurilScript. Workflow configuration and execution can be done from Eclipse, a popular multipurpose GUI, or from the command line.
The core Anduril engine is written in Java and components are written in a variety of programming languages, including Java, R, MATLAB, Lua, Perl and Python. Components may also have dependencies on third-party libraries, such as Bioconductor. Components for cell imaging and microarray analysis are provided but additional components can be implemented by users. The Anduril core has been tested on Linux and Windows.

## Anduril 1.0: AndurilScript language

Hello world in AndurilScript is simply
Commenting follows the syntax of Java:
Components are called by assigning their calls to named component instances. Names cannot be re-used within a single workflow. There are special components for input files that include external files to the script. Supported atomic types are integer, float, boolean and string, and typing is done implicitly.
Workflows are constructed by assigning outputs of component instances to inputs of following components.
Component instances can also be wrapped as functions.
In addition to standard if-else and switch-case statements, AndurilScript also includes for-loops.

## Extensibility

Anduril can be extended on multiple levels. Users can add new components to existing component bundles. However, if the new component or components carry out tasks that are not related to existing bundles, users can also create new bundles.

### Moksiskaan

Moksiskaan is a data integration framework for the cancer research and molecular biology. The framework provides a relational database that represents a graph of biological entities such as genes, protein, drugs, pathways, diseases, biological processes, cellular components, and molecular functions. In addition, there is a wide set of analysis and accession tools built on top of this data. The great majority of these tools are implemented as Anduril components and functions.
Moksiskaan is used mainly to interpret lists of candidate genes obtained from the genomic studies. Its tools can be used to generate graphs of biological entities related to the input genes. The exact for of these graphs may vary from the drug target predictions to the time series of signalling cascades. Some of the goals of these tools are closely related to IPA.