Traverse the input otu-sequence file, collect the non-unique OTU IDs and
    file the sequences associated with then under the unique OTU ID as defined
    by the input matrix.

    :@type otuF: file
    :@param otuF: The output file from QIIME's pick_otus.py
    :@type nuniqueF: file
    :@param nuniqueF: The matrix of unique OTU IDs associated to the list of
                      non-unique OTU IDs they replaced.

    :@rtype: dict
    :@return: The new condensed table of unique OTU IDs and the sequence IDs
              associated with them.

def condense_otus(otuF, nuniqueF):
    """
    Traverse the input otu-sequence file, collect the non-unique OTU IDs and
    file the sequences associated with then under the unique OTU ID as defined
    by the input matrix.

    :@type otuF: file
    :@param otuF: The output file from QIIME's pick_otus.py
    :@type nuniqueF: file
    :@param nuniqueF: The matrix of unique OTU IDs associated to the list of
                      non-unique OTU IDs they replaced.

    :@rtype: dict
    :@return: The new condensed table of unique OTU IDs and the sequence IDs
              associated with them.
    """
    uniqueOTUs = set()
    nuOTUs = {}

    # parse non-unique otu matrix
    for line in nuniqueF:
        line = line.split()
        uOTU = line[0]
        for nuOTU in line[1:]:
            nuOTUs[nuOTU] = uOTU
        uniqueOTUs.add(uOTU)

    otuFilter = defaultdict(list)
    # parse otu sequence file
    for line in otuF:
        line = line.split()
        otuID, seqIDs = line[0], line[1:]
        if otuID in uniqueOTUs:
            otuFilter[otuID].extend(seqIDs)
        elif otuID in nuOTUs:
            otuFilter[nuOTUs[otuID]].extend(seqIDs)

    return otuFilter