IMOS is the first long read aligner in Java having several advantages over existing aligners. It can be used on single node and distributed nodes alike. In its single-node mode, IMOS is an improved version of Meta-aligner enhancing both its accuracy and speed. It is also implemented on Apache Spark for deploying on cluster of nodes. Due to its implementation, IMOS speed can increase almost linearly with respect to the number of nodes in a cluster. Our results show that without sacrificing speed, IMOS is much more accurate in alignment of noisy long reads compared with BWA-SW and BLASR.

This is a collaborative work of EASY and BRL labs at Sharif University of Technology, Tehran, Iran.
Contact : Hadadian@ce.sharif.edu
IMOS can be downloaded from here.
Pre-Generated human genome index files can be downloaded from here. (in command line enter hg.fa as index after -REF)
Index Builder

For building index files from an FA file, place SureMap-IndexBuilder and Reference file in FASTA format in the same directory as IMOS.jar. Currently, it is tested on 64 bit Linux.

Usage: java -cp IMOS.jar IndexBuilder [FA File]

FA File :         FastA Reference File

IMOS Single Node Mode

This mode is designed and developed for single node use. When you do not want to use Apache Spark, use this mode. Currently, it is tested on Microsoft Windows and Linux.
Usage: java -cp IMOS.jar IMOSClient [OPTIONS] -I [inputFQ] -REF [index]

inputFQ: Input reads in FastQ format
index: Index files name built with index builder

OPTIONS:

-C [int]: Number of cores
-ER [float]: Tolerable error rate, 0<rate<1
-O [String]: Output file path”
-SQR [String]: Sequencer Machine : {“Pacbio”,”Illumina”}

EXAMPLE: java -cp IMOS.jar IMOSClient -c 4 -SQR Pacbio -I Read.fq -REF chr19.fa -O out.sam

IMOS SPARK Mode (Distributed Mode)

First, you must set up an apache spark cluster. Note that IMOS can operate on any Spark cluster. It only requires running an IMOSWorker on every Spark worker node.
If you want to run Spark locally, we recommend you to use IMOSClient for better performance.
When the cluster setup completed, submit IMOS to the Spark cluster.
Currently, it is tested on Linux.

IMOSWorker

Usage: java -cp IMOS.jar IMOSWorker [OPTIONS] -REF [index]
Warning: port 7777 must be open

index: Index files name built with index builder

OPTIONS:

-C [int]: Number of cores
-ER [float]: Tolerable error rate, 0<rate<1
-SQR [String]: Sequencer Machine : {“Pacbio”,”Illumina”}

EXAMPLE: java -cp IMOS.jar IMOSWorker -c 4 -SQR Pacbio -REF chr19.fa

Submit IMOS

Usage: spark-submit –class IMOS –master [MASTER] IMOS.jar [OPTIONS] -I [inputFQ]

MASTER: Identify Spark Master local, yarn or ip of spark standalone master
inputFQ: Input reads in FastQ format

OPTIONS:

-ER [float]: Tolerable error rate, 0<rate<1
-O [String]: Output file path
-SQR [String]: Sequencer Machine : {“Pacbio”,”Illumina”}

EXAMPLE: spark-submit –class IMOS –master local IMOS.jar -SQR Pacbio -I Read.fq -O out.sam