Source code for wub.parsers.blastn

# -*- coding: utf-8 -*-
""" Parser functions for blastn outfmt 6. """


def _parse_coord_line(line):
    """ Parse a line from a blast outfmt 6 file. """
    fields = line.split()
    aln_record = {
        'query': fields[0],
        'ref': fields[1],
        'identity': float(fields[2]),
        'aln_length': int(fields[3]),
        'mismatch': int(fields[4]),
        'gapopen': int(fields[5]),
        'query_start': int(fields[6]),
        'query_end': int(fields[7]),
        'ref_start': int(fields[8]),
        'ref_end': int(fields[9]),
        'evalue': float(fields[10]),
        'bitscore': float(fields[11]),
        'strand': '+'
    }

    if aln_record['ref_start'] > aln_record['ref_end']:
        aln_record['strand'] = '-'
        aln_record['ref_start'], aln_record['ref_end'] = aln_record[
            'ref_end'], aln_record['ref_start']
    return aln_record


[docs]def parse_coords(input_object): """ Parse coordinates file produced by blastn outfmt 6. :param input_object: Input path or file hanlder. :returns: List of dictionaries with parsed records. :rtype: list """ if type(input_object) == str: input_object = open(input_object, 'r') records = [] for line in input_object: line = line.strip() records.append(_parse_coord_line(line)) return records