code: def find_consensus(bases):
      nucs = ['A', 'T', 'G', 'C', 'N']
      total = sum([bases[nuc] for nuc in nucs if nuc in bases])
      try:
          top = max([bases[nuc] for nuc in nucs if nuc in bases])
      except:
          bases['consensus'] = ('N', 'n/a')
          bases['consensus frequency'] = 'n/a'
          bases['reference frequency'] = 'n/a'
          return bases
      top = [(nuc, bases[nuc]) for nuc in bases if bases[nuc] == top]
      if top[0][1] == 0:
          bases['consensus'] = ('n/a', 0)
      else:
          bases['consensus'] = random.choice(top)
      if total == 0:
          c_freq = 'n/a'
          ref_freq = 'n/a'
      else:
          c_freq = float(bases['consensus'][1]) / float(total)
          if bases['ref'] not in bases:
              ref_freq = 0
          else:
              ref_freq = float(bases[bases['ref']]) / float(total)
      bases['consensus frequency'] = c_freq
      bases['reference frequency'] = ref_freq
      return bases