def add_fit(self, specimen, name, fmin, fmax, PCA_type="DE-BFL", color=None, suppress_warnings=False, saved=True):
        """
        Goes through the data checks required to add an interpretation to
        the param specimen with the name param name, the bounds param fmin
        and param fmax, and calculation type param PCA_type.

        Parameters
        ----------
        specimen : specimen with measurement data to add the
        interpretation to
        name : name of the new interpretation
        fmin : lower bound of new interpretation
        fmax : upper bound of new interpretation
        PCA_type : type of regression or mean for new interpretaion
        (default: DE-BFL or line)
        color : color to plot the new interpretation in

        Returns
        -------
        new Fit object or None if fit could not be added
        """
        if specimen not in list(self.Data.keys()) and not suppress_warnings:
            self.user_warning(
                "there is no measurement data for %s and therefore no interpretation can be created for this specimen" % (specimen))
            return
        if fmax != None and fmax not in self.Data[specimen]['zijdblock_steps'] or fmin != None and fmin not in self.Data[specimen]['zijdblock_steps']:
            return
        if not (specimen in list(self.pmag_results_data['specimens'].keys())):
            self.pmag_results_data['specimens'][specimen] = []
        next_fit = str(len(self.pmag_results_data['specimens'][specimen]) + 1)
        if name == None or name in [x.name for x in self.pmag_results_data['specimens'][specimen]] or name == "" or name.replace(" ", "") == "":
            name = ('Fit ' + next_fit)
            if name in [x.name for x in self.pmag_results_data['specimens'][specimen]]:
                print('bad name')
                return
        if color == None:
            color = self.colors[(int(next_fit)-1) % len(self.colors)]
        new_fit = Fit(name, fmax, fmin, color, self, PCA_type, saved)
        if fmin != None and fmax != None:
            new_fit.put(specimen, self.COORDINATE_SYSTEM, self.get_PCA_parameters(
                specimen, new_fit, fmin, fmax, self.COORDINATE_SYSTEM, PCA_type))
            if ('specimen_dec' not in list(new_fit.get(self.COORDINATE_SYSTEM).keys())
                    or 'specimen_inc' not in list(new_fit.get(self.COORDINATE_SYSTEM).keys()))\
                    and not suppress_warnings:
                TEXT = "Could not calculate dec or inc for specimen %s component %s with bounds %s and %s in coordinate_system %s, component not added" % (
                    specimen, name, fmin, fmax, self.COORDINATE_SYSTEM)
                self.user_warning(TEXT)
                print(TEXT)
                return
        self.pmag_results_data['specimens'][specimen].append(new_fit)
        samp = self.Data_hierarchy['sample_of_specimen'][specimen]
        if samp in list(self.Data_info['er_samples'].keys()):
            if 'sample_orientation_flag' not in self.Data_info['er_samples'][samp]:
                self.Data_info['er_samples'][samp]['sample_orientation_flag'] = 'g'
            samp_flag = self.Data_info['er_samples'][samp]['sample_orientation_flag']
            if samp_flag == 'b':
                self.mark_fit_bad(new_fit)
        self.close_warning = True
        return new_fit
Goes through the data checks required to add an interpretation to
        the param specimen with the name param name, the bounds param fmin
        and param fmax, and calculation type param PCA_type.

        Parameters
        ----------
        specimen : specimen with measurement data to add the
        interpretation to
        name : name of the new interpretation
        fmin : lower bound of new interpretation
        fmax : upper bound of new interpretation
        PCA_type : type of regression or mean for new interpretaion
        (default: DE-BFL or line)
        color : color to plot the new interpretation in

        Returns
        -------
        new Fit object or None if fit could not be added