def parse_blasttab(fhandle):
    """Return the passed BLAST tab output file as a list of lists.

    This is used when testing for conserved BLAST output, as the
    exact format of the BLAST result can depend on the software version.
    For instance, the locally-installed version may be BLASTN+ 2.6.0,
    which reports match identity to 3sf, and the version on TravisCI may be
    BLASTN+ 2.2.28, which reports to 2sf.

    Returning a list of lines, parsed into the appropriate data type,
    allows for direct comparison of line content independent of formatting.
    """
    retval = []
    for line in fhandle.readlines():
        splitline = line.split("\t")
        data = splitline[:2]  # First two columns are strings
        data += [float(_) for _ in splitline[2:]]  # The rest are numeric
    return retval