def BowtieOutputParser(data, row_converter=row_converter):
    """yields a header and row of data from the default bowtie output
    
    Arguments:
        - row_converter: if not provided, uses a default converter which casts
          the Offset and Other Matches fields to ints. If set to None, all
          returned data will be strings (this is faster).
    """
    header = ['Query Name', 'Strand Direction', 'Reference Name', 'Offset',
        'Query Seq', 'Quality', 'Other Matches', 'Mismatches']
    yield header
    if type(data) == str:
        data = open(data)
    for record in data:
        row = record.rstrip('\n').split('\t')
        if row_converter:
            row = row_converter(row)
        if row[-1] is '':
            row[-1] = []
        else:
            row[-1] = row[-1].split(',')
        yield row
