Wasabi plugin API

 
Custom external tools  can be added to the Wasabi interface using a flexible plugin API.

Command-line options for external tools are explained to Wasabi  in a JSON file as documented here.

Installation of plugin to a local Wasabi installation is quite straightforward:

  1. Make a JSON configuration file (save as plugin.json)
  2. Drop the JSON, program executable (and icon image) files to a new folder in Wasabi “plugins” folder

The submission for new plugins for the public Wasabi server will open later. Currently the Pagan aligner has been implemented in Wasabi using this JSON configuration file. Go take a look when writing your own plugin.
To better explain how the plugin configuration file works, lets consider this quite naive Python script:

Given an input fasta file, the algorithm removes all gap signs, stores the result to file (output.fa), and (optionally) counts the number of sequences.

The program can be described to Wasabi with the following JSON:

This plugin configuration specifies two options for remove_gaps.py:

  1. input file containing sequences of currently opened dataset (given to the program as path to fasta file)
  2. optional flag –count for counting sequences

After plugin.json and remove_gaps.py have been dropped to a new folder in the Wasabi plugins folder, the plugin will appear in Tools menu and the resulting interface will look like this:

gapsremover
After Send job button is clicked, the plugin program is launched, its status is shown on the Wasabi toolbar and the results will appear in Analysis library. If “count sequences” checkbox was selected, the output.log file in the Analysis library record will contain the count number.

 

I hope that by now I have convinced you that creating Wasabi plugins is fairly simple and straightforward.  Of course, this minimal example did not show the full flexibility of the plugin system, like conditional option groups, input value filtering, dynamically changing interface (based on user input), icons and other interface elements and so on. For demonstration, play with the Wasabi interface for Pagan graph aligner and take a look at the underlying JSON configuration.

plugin json