Runs the calibration operation with the current settings
        
        :param interval: The repetition interval between stimuli presentations (seconds)
        :type interval: float
        :param applycal: Whether to apply a previous saved calibration to this run
        :type applycal: bool
        :returns: :py:class:`threading.Thread` -- the acquisition thread

def run_calibration(self, interval, applycal):
        """Runs the calibration operation with the current settings
        
        :param interval: The repetition interval between stimuli presentations (seconds)
        :type interval: float
        :param applycal: Whether to apply a previous saved calibration to this run
        :type applycal: bool
        :returns: :py:class:`threading.Thread` -- the acquisition thread
        """
        if self.selected_calibration_index == 2:
            self.tone_calibrator.apply_calibration(applycal)
            self.tone_calibrator.setup(interval)
            return self.tone_calibrator.run()
        else:
            self.bs_calibrator.set_stim_by_index(self.selected_calibration_index)
            self.bs_calibrator.apply_calibration(applycal)
            self.bs_calibrator.setup(interval)
            return self.bs_calibrator.run()