def __init__(self, groups_file, gene_threshold=None,
                 species_threshold=None, ns=None):

        self.gene_threshold = gene_threshold if gene_threshold else None
        self.species_threshold = species_threshold if species_threshold \
            else None

        # Attribute containing the list of included species
        self.species_list = []
        # Attribute that will contain taxa to be excluded from analyses
        self.excluded_taxa = []
        self.species_frequency = []

        # Attributes that will store the number (int) of cluster after gene and
        # species filter
        self.all_clusters = 0
        self.num_gene_compliant = 0
        self.num_species_compliant = 0
        self.all_compliant = 0

        # Attribute containing the total number of sequences
        self.total_seqs = 0
        # Attribute containing the maximum number of extra copies found in the
        # clusters
        self.max_extra_copy = 0

        # Attribute with name of the group file, which will be an ID
        self.name = os.path.abspath(groups_file)
        self.table = groups_file.split(os.sep)[-1].split(".")[0]

        # Initialize atribute containing the groups filtered using the gene and
        # species threshold. This attribute can be updated at any time using
        # the update_filtered_group method
        self.filtered_groups = []

        self._parse_groups(ns)

        if type(self.species_threshold) is float:
            self._get_sp_proportion()