def _iterate_otu_table_rows(self, read_taxonomies):
taxonomy_string_to_taxonomy_array = {}<EOL>taxonomy_string_to_counts = {}<EOL>sample_index = <NUM_LIT:0><EOL>num_samples = len(read_taxonomies)<EOL>for read_to_taxonomy in read_taxonomies: <EOL><INDENT>for taxonomy_array in read_to_taxonomy.values(): <EOL><INDENT>taxonomy_string = '<STR_LIT>'.join(taxonomy_array)<EOL>if taxonomy_string_to_taxonomy_array.has_key(taxonomy_string):<EOL><INDENT>if taxonomy_string_to_taxonomy_array[taxonomy_string] != taxonomy_array:<EOL><INDENT>raise Exception("<STR_LIT>")<EOL><DEDENT>try:<EOL><INDENT>taxonomy_string_to_counts[taxonomy_string][sample_index] += <NUM_LIT:1><EOL><DEDENT>except KeyError:<EOL><INDENT>taxonomy_string_to_counts[taxonomy_string][sample_index] = <NUM_LIT:1><EOL><DEDENT><DEDENT>else:<EOL><INDENT>taxonomy_string_to_taxonomy_array[taxonomy_string] = taxonomy_array<EOL>taxonomy_string_to_counts[taxonomy_string] = [<NUM_LIT:0>]*num_samples<EOL>taxonomy_string_to_counts[taxonomy_string][sample_index] = <NUM_LIT:1><EOL><DEDENT><DEDENT>sample_index += <NUM_LIT:1><EOL><DEDENT>otu_id = <NUM_LIT:1><EOL>for tax_string, counts_array in taxonomy_string_to_counts.iteritems():<EOL><INDENT>array = []<EOL>for i in range(num_samples):<EOL><INDENT>try:<EOL><INDENT>array.append(counts_array[i])<EOL><DEDENT>except IndexError:<EOL><INDENT>array.append(<NUM_LIT:0>)<EOL><DEDENT><DEDENT>yield otu_id,taxonomy_string_to_taxonomy_array[tax_string],array<EOL>otu_id += <NUM_LIT:1><EOL><DEDENT>
yield that which is required for an OTU table: taxonomy, and
        count of that taxonomy in each sample as an array

        Parameters
        ---------
        read_taxonomies:
            a list of hashes, where the position in the list corresponds to the 
            sample list, the key is the read name, and the value is an array
            of taxonomic info

        Yield
        -----
        OTU_ID: int, made up by this function
        taxonomy: array where each element is a taxonomic level
        count: number of observations of that taxonomy in each sample respectively

        Return
        ------
        Nothing, use this as an iterator