def prune_taxonomy(taxF, level):
uniqueTax = {}<EOL>nuTax = {}  <EOL>for i, line in enumerate(taxF):<EOL><INDENT>try:<EOL><INDENT>otuID, tax, floatVal, otuIDr = line.strip().split('<STR_LIT:\t>')<EOL><DEDENT>except ValueError as ve:<EOL><INDENT>print("<STR_LIT>".format(i))<EOL>continue<EOL><DEDENT>tax = split_taxonomy(pad_taxonomy(tax), level)<EOL>if tax not in uniqueTax:<EOL><INDENT>uniqueTax[tax] = otuID, floatVal, otuIDr<EOL>nuTax[uniqueTax[tax][<NUM_LIT:0>]] = []<EOL><DEDENT>else:<EOL><INDENT>nuTax[uniqueTax[tax][<NUM_LIT:0>]].append(otuID)<EOL><DEDENT><DEDENT>ut = {otuID: [tax, floatVal, otuIDr] for tax, (otuID, floatVal, otuIDr) in<EOL>uniqueTax.items()}<EOL>return ut, nuTax<EOL>
:type taxF: file
:param taxF: The taxonomy output file to parse
:type level: string
:param level: The level of the phylogenetic assignment at which to cut off
               every assigned taxonomic string.

:rtype: dict
:return: A dictionary of taxonomy strings keyed on OTU ID