code: def run(self):
          
          self._initialize_run()
  
          stimuli = self.protocol_model.allTests()
  
          self.acq_thread = threading.Thread(target=self._worker, 
                                             args=(stimuli,), )
          # save the current calibration to data file doc        
          if self.save_data:
              info = {'calibration_used': self.calname, 'calibration_range': self.cal_frange}
              self.datafile.set_metadata(self.current_dataset_name, info)
  
          # save the start time and set last tick to expired, so first
          # acquisition loop iteration executes immediately
          self.start_time = time.time()
          self.last_tick = self.start_time - (self.interval/1000)
  
          self.acq_thread.start()
          return self.acq_thread
docs: Runs the acquisition