def _apply_filter(self, cl):
        """
        Sets or updates the basic group statistics, such as the number of
        orthologs compliant with the gene copy and minimum taxa filters.

        :param cl: dictionary. Contains the number of occurrences for each
         taxon present in the ortholog cluster
         (e.g. {"taxonA": 2, "taxonB": 1).
        """

        # First, remove excluded taxa from the cl object since this will
        # impact all other filters
        for tx in self.excluded_taxa:
            cl.pop(tx, None)

        if cl:

            self.all_clusters += 1

            extra_copies = max(cl.values())
            if extra_copies > self.max_extra_copy:
                self.max_extra_copy = extra_copies

            if extra_copies <= self.gene_threshold and self.gene_threshold and\
                len(cl) >= self.species_threshold and  \
                    self.species_threshold:
                self.num_gene_compliant += 1
                self.num_species_compliant += 1
                self.all_compliant += 1

            elif (extra_copies <= self.gene_threshold and
                      self.gene_threshold) or self.gene_threshold == 0:
                self.num_gene_compliant += 1

            elif len(cl) >= self.species_threshold and \
                    self.species_threshold:
                self.num_species_compliant += 1