Module refers to a single tool or a group of tools that runs as a single unit. Here are some examples of simple and complex modules:

  1. a module may have a single call to Picard MarkDuplicates software to remove duplicate reads from a bam file
  2. a module may first call BWA to align the data and the call samtools to create an index file. The reason we group these two tools in one module is that we almost always need the index file after the alignment. This way, the module performs the complete logical task of alignment, even though it is calling two different software tools.

Modules may be reused in multiple workflows: e.g., a QC module may be part of several workflows.

A module YAML file needs to define 3 primary information:
  1. Path to executables and command structure
  2. Inputs
  3. Outputs