docs: def detect_clusters(c, current_seq, MIN_SEQ, non_un_gl=False):
      """
      Parse the merge file of sequences position to create clusters that will have all
      sequences that shared any position on the genome
  
      :param c: file from bedtools with merge sequence positions
      :param current_seq: list of sequences
      :param MIN_SEQ: int cutoff to keep the cluster or not. 10 as default
  
      :return: object with information about:
          * cluster
          * dict with sequences (as keys) and cluster_id (as value)
          * sequences
          * loci
  
      """
      current_loci = {}
      current_clus = {}
      # sequence2clusters = [set()] * (max(current_seq.keys()) + 2)
      sequence2clusters = defaultdict(set)
      lindex = 0
      eindex = 0
      previous_id = 0
      for line in c.features():
          c, start, end, name, score, strand, c_id = line
          name = int(name.replace('seq_', ''))
          pos = int(start) if strand == "+" else int(end)
          if name not in current_seq:
              continue
          if c.find('Un_gl') > -1 and non_un_gl:
              continue
          if c_id != previous_id:
              if previous_id > 0:
                  if len(current_clus[eindex].idmembers) < MIN_SEQ:
                      for s in current_clus[eindex].idmembers:
                          sequence2clusters[s] = sequence2clusters[s] - set([eindex])
                      del current_clus[eindex]
  
              logger.debug("detect_cluster: %s %s %s" % (c_id, previous_id, name))
              lindex += 1
              eindex += 1
              current_clus[eindex] = cluster(eindex)
              newpos = position(lindex, c, start, end, strand)
              current_loci[lindex] = newpos
  
          # update locus, sequences in each line
          current_loci[lindex].end = int(end)
          current_loci[lindex].coverage[pos] += 1
          size = range(pos, pos + current_seq[name].len)
          current_loci[lindex].counts.update(dict(zip(size, [current_seq[name].total()] * current_seq[name].len)))
          current_clus[eindex].idmembers[name] = 1
          current_clus[eindex].add_id_member([name], lindex)
          current_seq[name].add_pos(lindex, pos)
          # current_seq[name].align = 1
          previous_id = c_id
          sequence2clusters[name].add(eindex)
      logger.info("%s Clusters read" % eindex)
      # merge cluster with shared sequences  
      metacluster_obj, cluster_id = _find_metaclusters(current_clus, sequence2clusters, current_seq, MIN_SEQ)
  
      return cluster_info_obj(current_clus, metacluster_obj, current_loci, current_seq)