docs: def _function(self):
          """
          This is the actual function that will be executed. It uses only information that is provided in the settings property
          will be overwritten in the __init__
          """
  
          # some generic function
          import time
          import random
          self.data['random data'] = None
          self.data['image data'] = None
          count = self.settings['count']
          name = self.settings['name']
          wait_time = self.settings['wait_time']
  
          data = []
          self.log('I ({:s}) am a test function counting to {:d} and creating random values'.format(self.name, count))
          for i in range(count):
              time.sleep(wait_time)
              self.log('{:s} count {:02d}'.format(self.name, i))
              data.append(random.random())
              self.data = {'random data': data}
              self.progress = 100. * (i + 1) / count
              self.updateProgress.emit(self.progress)
  
  
          self.data = {'random data':data}
  
  
          # create image data
          Nx = int(np.sqrt(len(self.data['random data'])))
          img = np.array(self.data['random data'][0:Nx ** 2])
          img = img.reshape((Nx, Nx))
          self.data.update({'image data': img})