docs: def _iterate_otu_table_rows(self, read_taxonomies):
          '''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'''
          
          taxonomy_string_to_taxonomy_array = {}
          taxonomy_string_to_counts = {}
          sample_index = 0
          num_samples = len(read_taxonomies)
          for read_to_taxonomy in read_taxonomies: # For each sample
              for taxonomy_array in read_to_taxonomy.values(): # For each read
                  taxonomy_string = '; '.join(taxonomy_array)
                  if taxonomy_string_to_taxonomy_array.has_key(taxonomy_string):
                      if taxonomy_string_to_taxonomy_array[taxonomy_string] != taxonomy_array:
                          raise Exception("Programming error: two different taxonomies had same taxonomy string")
                      try:
                          taxonomy_string_to_counts[taxonomy_string][sample_index] += 1
                      except KeyError:
                          taxonomy_string_to_counts[taxonomy_string][sample_index] = 1
                  else:
                      taxonomy_string_to_taxonomy_array[taxonomy_string] = taxonomy_array
                      taxonomy_string_to_counts[taxonomy_string] = [0]*num_samples
                      taxonomy_string_to_counts[taxonomy_string][sample_index] = 1
              sample_index += 1
              
          otu_id = 1
          for tax_string, counts_array in taxonomy_string_to_counts.iteritems():
              array = []
              for i in range(num_samples):
                  try:
                      array.append(counts_array[i])
                  except IndexError:
                      array.append(0)
              yield otu_id,\
                  taxonomy_string_to_taxonomy_array[tax_string],\
                  array
              otu_id += 1