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


import os
import logging
import sys
from operator import itemgetter
from subprocess import Popen
from aligner import Aligner
    from Queue import Queue
    from queue import Queue  # python 3.x
"""
Copyright 2016, Ben Langmead <langmea@cs.jhu.edu>

Concrete subclass for Bowtie 2 aligner.
"""


try:
except ImportError:


class Bowtie2(Aligner):
    
    """ Encapsulates a Bowtie 2 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. """
    
    def __init__(self,

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


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

"""
Copyright 2016, Ben Langmead <langmea@cs.jhu.edu>

Concrete subclass for Bowtie 2 aligner.
"""


try:
except ImportError:


class Bowtie2(Aligner):
    
    """ Encapsulates a Bowtie 2 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. """
    
    def __init__(self,

                 cmd,