snpEff Plugin - Ion Torrent Plugin Development Challenge

In November Ion Torrent announced the “Torrent Suite Plugin Development Challenge” to invite Ion Torrent users to show their programming skills and provide additional functionality for the Torrent Server.   I’d like to take you through our submission to the contest, a plugin that predicts variant effects and annotates vcf files through the snpEff tool.

Predicting variant effects is an important part of an analysis pipeline. By annotating variants it is possible to quickly identify and separate variants based on the predicted effect they will have on associated genes. If an identified variant will result in a gain or loss of a stop codon this variant will likely have a 'high' effect on the gene in which it is located. Conversely, if a variant occurs in an intergenic region or causes a synomous codon change, this variant would have a lower predicted effect.

Effects by Type and Region from snpEff

We chose snpEff as an ideal candidate with which to create a plugin because it outputs an annotated vcf file and an html formatted report. Since both the Germ-line Variant Caller and the AmpliSeq Variant Caller produce vcf files, the plugin can simply check for the existance of these vcf files, and create snpEff reports and annotated vcf files for each complete analysis that will show up seamlessly at the end of any report.

Because of the open nature of the Ion Torrent code and pipeline, creating plugins for the Ion is actually pretty straightforward for people with some shell scripting experience.  Essentially a Torrent Suite plugin is a shell script preloaded with some useful variables (results directory, fastq file path, etc) that is submitted to the SGE on the Torrent Server after the analysis pipeline is complete.  Plugins can either be started automatically after each analysis or be started manually by a user.  Additionally, plugins can take in user input through a html popup before the plugin executes, although I haven’t experimented with this quite yet.  More information about plugin development is available on the Ion Community here.

One slight inconvenience with the plugin architecture is there is no direct way to run plugins in a specific order.  For example since we want to utilize the results of the Germ-line Variant Caller and AmpliSeq Variant Caller in this downstream analysis, these plugins have to complete before the snpEff plugin can be run.  Because plugins can utilize the Torrent Suite API to check the status of other plugins, it is possible to check whether not other plugins are in the "Completed" state and it's even possible to call a plugin again if other plugins aren't complete.

Our snpEff plugin first checks that the Germ-line Variant Caller and the AmpliSeq Variant Caller have been run and are in the “Completed” state, and outputs annotated vcf files for the plugins and html reports for each vcf file. If a plugin has been run but is not in the "Completed" state, or if the plugin was not run, the plugin will skip this analysis. If this occurs simply run the snpEff plugin again after the other plugins are listed as "Completed". For each vcf file run through the plugin a bgzipped vcf file, a tabix index of that vcf file, and a snpEff html report.  We ran the plugin on the long read data we released this week and the results are below:

To access these links use the username 'edgecommunity' and leave the password blank

Germ-line Variant Caller Annotated Variants (VCF)

Germ-line Variant Caller Annotated Variants Index (TBI)


The plugin currently only supports vcf files from runs aligned to the ‘hg19’ reference and does not support barcoded runs, though we may add these features in the future.  Additionally the plugin has only been tested on Torrent Suite 1.5.1, so we can't guarantee that it will work with previous versions of the Torrent Suite.

The plugin is available on the Ion Torrent Community for anyone to download and test here.  Please let me know if you find the plugin useful and are able to successfully install and run it.  Additionally if you like the plugin you can vote for it to win the Plugin Development Challenge.