Aligner plugins take a read file and produce an alignment against a reference genome indexed and available to GobyWeb.

Two types of aligner plugins can be developed:

  • Aligners that produce BAM output. These aligners run in a node-parallel mode [see BWA_BAM discussion].
  • Aligner that produce Goby output. These aligners run in a grid-parallel mode [see GSNAP_GOBY discussion]

Aligners are defined in the plugins root/plugins/aligners directory.

Configuration

The Aligner configuration is an XML file named config.xml that must follow these rules:

  1. the root element is named alignerConfig
  2. the XML document is valid against the XML Schema at plugins root/schemas/plugins.xsd

The file config.xml contains the following:

<alignerConfig>
    <name>A short name for this aligner</name>
    <id>MY_ALIGNER_ID</id>
    <help>This message will appear on the web interface when users click on the question mark next to the aligner name.</help>
    <version>1.0</version>
    <supportsColorSpace>true</supportsColorSpace>
    <supportsGobyAlignments>true</supportsGobyAlignments>
    <supportsPairedEndAlignments>true</supportsPairedEndAlignments>
    <supportsBAMAlignments>false</supportsBAMAlignments>
    <supportsGobyReads>true</supportsGobyReads>
    <supportsFastqReads>false</supportsFastqReads>
    <supportsFastaReads>false</supportsFastaReads>
    <requires>
      <resource>
      <id>A_RESOURCE_ID</id>
      <versionExactly>RESOURCE_VERSION</versionExactly>
     </resource>
    </requires>
    <files>
     <file>
       <id>MY_FILE_ID</id>
       <filename>MY FILENAME</filename>
     </file>
     <!-- other files-->
    </files>
    <runtime>
      <need scope="ALIGN or ALIGN_JVM or ALIGNMENT_POST_PROCESSING" key="MY_KEY" value="MY_VALUE"/>
    <!-- other needs-->
  </runtime>
  <options>
    <option>
    <id>SOME_FLAG<id>
    <name>OPTION_NAME</name>
    <help>HELP TEXT</help>
    <required>true or false</required>
    <defaultsTo>.../defaultsTo>
    <type>STRING or BOOLEAN</type>
    <flagFormat>%s</flagFormat>
    <includeSpaces>true or false</includeSpaces>
    <autoFormat>true or false</autoFormat>
  </option>
  <!-- other options-->
 </options>
</alignerConfig>

The first part of the configuration reports the metadata common to all the plugins types (name, id, help, version).

The various supports* elements define the basic behavior of the aligner regarding its input.

The requires section defines the dependencies against Resource plugins on which the aligner relies on.

The Files element lists a set of files available in the plugin’s directory that needs to be copied in the execution folder when the plugin is submitted as a job (typically these files are accessed from the script using the ${JOB_DIR} variable).

Runtime defines a set of “needs” (or requirements) that the aligner poses to the execution environment. Constraints against hardware and software characteristics go here.

The last section is the set of Options that are passed as input parameters to the plugins at execution time. Values assigned to these options are available as dynamic environment variables.

Script

Similar to Tasks, an aligner plugin is required to implement a single function.

This is a stub script for aligners:

function plugin_align {
  #aligner's logic goes here
}