def read_taxtastic_taxonomy_and_seqinfo(self, taxonomy_io, seqinfo_io):
<EOL>lineages = [] <EOL>taxon_to_lineage_index = {}<EOL>expected_number_of_fields = None<EOL>for line in taxonomy_io:<EOL><INDENT>splits = line.strip().split('<STR_LIT:U+002C>')<EOL>if expected_number_of_fields is None:<EOL><INDENT>expected_number_of_fields = len(splits)<EOL>lineages = [{}]* (expected_number_of_fields-<NUM_LIT:4>)<EOL>continue <EOL><DEDENT>elif len(splits) != expected_number_of_fields:<EOL><INDENT>raise Exception("<STR_LIT>" %<EOL>(expected_number_of_fields, len(splits), line))<EOL><DEDENT>tax_id = splits[<NUM_LIT:0>]<EOL>parent_id = splits[<NUM_LIT:1>]<EOL>try:<EOL><INDENT>lineage_index = splits.index('<STR_LIT>')-<NUM_LIT:5><EOL><DEDENT>except ValueError:<EOL><INDENT>lineage_index = len(splits)-<NUM_LIT:5><EOL><DEDENT>taxon_to_lineage_index[tax_id] = lineage_index<EOL>lineages[lineage_index][tax_id] = parent_id<EOL><DEDENT>taxonomy_dictionary = {}<EOL>for i, line in enumerate(seqinfo_io):<EOL><INDENT>if i==<NUM_LIT:0>: continue <EOL>splits = line.strip().split('<STR_LIT:U+002C>')<EOL>if len(splits) != <NUM_LIT:2>:<EOL><INDENT>raise Exception("<STR_LIT>" % line)<EOL><DEDENT>seq_name = splits[<NUM_LIT:0>]<EOL>taxon = splits[<NUM_LIT:1>]<EOL>lineage_index = taxon_to_lineage_index[taxon]<EOL>if lineage_index==<NUM_LIT:0>:<EOL><INDENT>taxonomy_dictionary[seq_name] = []<EOL><DEDENT>else:<EOL><INDENT>full_taxonomy_rev = []<EOL>while lineage_index > <NUM_LIT:0>:<EOL><INDENT>full_taxonomy_rev.append(taxon)<EOL>taxon = lineages[lineage_index][taxon]<EOL>lineage_index = lineage_index-<NUM_LIT:1><EOL><DEDENT>taxonomy_dictionary[seq_name] = list(reversed(full_taxonomy_rev))<EOL><DEDENT><DEDENT>return taxonomy_dictionary<EOL>
Read the taxonomy and seqinfo files into a dictionary of 
        sequence_name => taxonomy, where the taxonomy is an array of lineages
        given to that sequence.

        Possibly this method is unable to handle the full definition of these
        files? It doesn't return what each of the ranks are, for starters.
        Doesn't deal with duplicate taxon names either.