code: def write_relative_abundance(rel_abd, biomf, out_fn, sort_by=None):
      
      with open(out_fn, 'w') as out_f:
          sids = sorted(set(biomf.ids()), key=sort_by)
          out_f.write('#OTU ID\t{}\n'.format('\t'.join(sids)))
  
          for otuid in biomf.ids(axis="observation"):
              otuName = oc.otu_name(biomf.metadata(otuid, "observation")
                                    ["taxonomy"])
              sabd = [str(rel_abd[sid][otuid])
                      if sid in rel_abd and otuid in rel_abd[sid] else '0'
                      for sid in sids]
              out_f.write('{}\t{}\n'.format(otuName, '\t'.join(sabd)))
docs: Given a BIOM table, calculate per-sample relative abundance for
      each OTU and write out to a tab-separated file listing OTUs as
      rows and Samples as columns.
      :type biom: biom object
      :param biom: BIOM-formatted OTU/Sample abundance data
      :type out_fn: str
      :param out_fn: The full path to the desired output file.
      :type sort_by: function
      :param sort_by: A function acting as a sorting key that will determine
                       the order in which the Sample IDs appear as columns in
                       the output file.