def uncluster_annotations(self, input_annotations, reverse_pipe):
output_annotations = {}<EOL>for placed_alignment_file_path, clusters in self.seq_library.iteritems():<EOL><INDENT>if reverse_pipe and placed_alignment_file_path.endswith("<STR_LIT>"): continue<EOL>placed_alignment_file = os.path.basename(placed_alignment_file_path)<EOL>cluster_classifications = input_annotations[placed_alignment_file]<EOL>if reverse_pipe:<EOL><INDENT>placed_alignment_base = placed_alignment_file.replace('<STR_LIT>', '<STR_LIT>')<EOL><DEDENT>else:<EOL><INDENT>placed_alignment_base = placed_alignment_file.replace('<STR_LIT>', '<STR_LIT>')<EOL><DEDENT>output_annotations[placed_alignment_base] = {}<EOL>for rep_read_name, rep_read_taxonomy in cluster_classifications.iteritems():<EOL><INDENT>if reverse_pipe:<EOL><INDENT>orfm_regex = OrfM.regular_expression()<EOL>clusters={(orfm_regex.match(key).groups(<NUM_LIT:0>)[<NUM_LIT:0>] if orfm_regex.match(key) else key): item for key, item in clusters.iteritems()}<EOL><DEDENT>for read in clusters[rep_read_name]:<EOL><INDENT>output_annotations[placed_alignment_base][read.name] = rep_read_taxonomy<EOL><DEDENT><DEDENT><DEDENT>return output_annotations<EOL>
Update the annotations hash provided by pplacer to include all
representatives within each cluster

Parameters
----------
input_annotations : hash
    Classifications for each representative sequence of the clusters.
    each key being the sequence name, and the entry being the taxonomy
    string as a list.
reverse_pipe : bool
    True/False, whether the reverse reads pipeline is being followed.

Returns
-------
output_annotations : hash
    An updated version of the above, which includes all reads from
    each cluster