Anduril (workflow engine)

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
Anduril Workflow Engine Logo v.2.0.png
Anduril workflow in Eclipse
Anduril workflow in Eclipse
Developer(s)Systems Biology Laboratory University of Helsinki
Initial release1 July 2010; 8 years ago (2010-07-01)
Stable release
1.2.23 / June 24, 2014 (2014-06-24)
Preview release
2.0.0 / December 14, 2015 (2015-12-14)
Repository Edit this at Wikidata
Written inJava
Operating systemLinux, Microsoft Windows, Mac OS X
TypeWorkflow engine
LicenseGPL (v.1.x), BSD (v.2.x)

Anduril is an open source component-based workflow framework for scientific data analysis[1] 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[edit]

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[edit]

Hello world in AndurilScript is simply

  std.echo("Hello world!")

Commenting follows the syntax of Java:

  // A simple comment
  /* Another simple comment */
  /** A description that will be included in component description */

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.

  in1 = INPUT(path="myFile.csv")
  constant1 = 1
  componentInstance1 = MyComponent(inputPort1 = in1, inputParam1 = constant1)

Workflows are constructed by assigning outputs of component instances to inputs of following components.

  componentInstance2 = AnotherComponent(inputPort1 = componentInstance1.outputPort1)

Component instances can also be wrapped as functions.

  function MyFunction(InType1 in1, ..., optional InTypeM inM,
                      ParType1 param1, ..., ParTypeP paramP=defaultP)
                      -> (OutType1 out1, ..., OutTypeN outN)
      ... statements ...
      return record(out1=x1, ..., outN=xN)

In addition to standard if-else and switch-case statements, AndurilScript also includes for-loops.

  // Iterates over 1, 2, ..., 10
  array = record()
  for i: std.range(1, 10) {
      array[i] = SomeComponent(k=i)


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.


The upset face of the Moksiskaan logo

Moksiskaan is a data integration framework for the cancer research and molecular biology.[2] 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.

See also[edit]


  1. ^ Ovaska, K.; Laakso, M.; Haapa-Paananen, S.; Louhimo, R.; Chen, P.; Aittomäki, V.; Valo, E.; Núñez-Fontarnau, J.; Rantanen, V.; Karinen, S.; Nousiainen, K.; Lahesmaa-Korpinen, A. M.; Miettinen, M.; Saarinen, L.; Kohonen, P.; Wu, J.; Westermarck, J.; Hautaniemi, S. (2010). "Large-scale data integration framework provides a comprehensive view on glioblastoma multiforme". Genome Medicine. 2 (9): 65. doi:10.1186/gm186. PMC 3092116. PMID 20822536.
  2. ^ Laakso, M.; Hautaniemi, S. (2010). "Integrative platform to translate gene sets to networks". Bioinformatics. 26 (14): 1802–1803. doi:10.1093/bioinformatics/btq277. PMID 20507894.

Further reading[edit]

External links[edit]