code: def _single_cluster(c, data, out_file, args):
      
      valid, ann = 0, 0
      raw_file = None
      freq = defaultdict()
      [freq.update({s.keys()[0]: s.values()[0]}) for s in data[0][c]['freq']]
      names = [s.keys()[0] for s in data[0][c]['seqs']]
      seqs = [s.values()[0] for s in data[0][c]['seqs']]
      loci = data[0][c]['loci']
  
      if loci[0][3] - loci[0][2] > 500:
          logger.info("locus bigger > 500 nt, skipping: %s" % loci)
          return valid, ann, {}
      if not file_exists(out_file):
          if args.razer:
              logger.debug("map with razer all sequences to all loci %s " % loci)
              map_to_precursors(seqs, names, {loci[0][0]: [loci[0][0:5]]}, out_file, args)
          else:
              logger.debug("map with biopython fn all sequences to all loci %s " % loci)
              if args.debug:
                  raw_file = out_file
              out_file = map_to_precursor_biopython(seqs, names, loci[0][0:5], args)
  
      logger.debug("plot sequences on loci")
      df = _convert_to_df(out_file, freq, raw_file)
      if df:
          valid, ann = _make(data[0][c])
  
      return valid, ann, df
docs: Map sequences on precursors and create
      expression profile