# Path: aligner.py
# class Aligner(object):
#     __metaclass__ = ABCMeta
# 
#     @staticmethod
#     def supports_mix():
#         return False


import os
import logging
import sys
import operator
from subprocess import Popen, PIPE
from aligner import Aligner
    from Queue import Queue
    from queue import Queue  # python 3.x

Input and output may also be from/to stdin/stdout. To do that, use a - for the input or output file
name and give an explicit type specifier.  So, for example,
snap single myIndex -fastq - -o -sam -
would read FASTQ from stdin and write SAM to stdout.

A couple of "paired" mode parameters to know about:

  -s   min and max spacing to allow between paired ends (default: 50 1000).
  -fs  force spacing to lie between min and max.
"""


try:
except ImportError:


class SnapAligner(Aligner):
    
    """ Encapsulates a snap-aligner process.  The input can be a FASTQ
        file, or a Queue onto which the caller enqueues reads.
        Similarly, output can be a SAM file, or a Queue from which the
        caller dequeues SAM records.  All records are textual; parsing
        is up to the user. """

    _input_args = ['-fastq',
                   '-compressedFastq',
                   '-sam',
                   '-bam',
                   '-pairedFastq',

# Path: aligner.py
# class Aligner(object):
#     __metaclass__ = ABCMeta
# 
#     @staticmethod
#     def supports_mix():
#         return False


# Path: snap.py
import os
import logging
import sys
import operator
from subprocess import Popen, PIPE
from aligner import Aligner
    from Queue import Queue
    from queue import Queue  # python 3.x


Input and output may also be from/to stdin/stdout. To do that, use a - for the input or output file
name and give an explicit type specifier.  So, for example,
snap single myIndex -fastq - -o -sam -
would read FASTQ from stdin and write SAM to stdout.

A couple of "paired" mode parameters to know about:

  -s   min and max spacing to allow between paired ends (default: 50 1000).
  -fs  force spacing to lie between min and max.
"""


try:
except ImportError:


class SnapAligner(Aligner):
    
    """ Encapsulates a snap-aligner process.  The input can be a FASTQ
        file, or a Queue onto which the caller enqueues reads.
        Similarly, output can be a SAM file, or a Queue from which the
        caller dequeues SAM records.  All records are textual; parsing
        is up to the user. """

    _input_args = ['-fastq',
                   '-compressedFastq',
                   '-sam',
                   '-bam',
                   '-pairedFastq',

                   '-pairedInterleavedFastq',