code: def supported(aln):
      def col_consensus(columns):
          for col in columns:
              if (
                  (col.count('-') >= len(col)/2) or
                  all(c.islower() for c in col if c not in '.-')
                  ):
                  yield '-'
                  continue
              if any(c.islower() for c in col):
                  logging.warn('Mixed lowercase and uppercase letters in a '
                          'column: ' + ''.join(col))
                  col = map(str.upper, col)
              most_common = Counter(
                      [c for c in col if c not in '-']
                      ).most_common()
              if not most_common:
                  logging.warn("Column is all gaps! How did that happen?")
              if most_common[0][1] == 1:
                  yield '-'
              elif (len(most_common) > 1 and
                      most_common[0][1] == most_common[1][1]):
                  ties = [x[0] for x in most_common
                          if x[1] == most_common[0][1]]
                  yield ''.join(ties)
              else:
                  yield most_common[0][0]
      return list(col_consensus(zip(*aln)))