code: def run(self, clf):
          
          rank = MPI.COMM_WORLD.Get_rank()
          if rank == 0:
              logger.info(
                  'running activity-based voxel selection via Searchlight'
              )
          self.sl.distribute([self.data], self.mask)
          self.sl.broadcast((self.labels, self.num_folds, clf))
          if rank == 0:
              logger.info(
                  'data preparation done'
              )
  
          # obtain a 3D array with accuracy numbers
          result_volume = self.sl.run_searchlight(_sfn)
          # get result tuple list from the volume
          result_list = result_volume[self.mask]
          results = []
          if rank == 0:
              for idx, value in enumerate(result_list):
                  if value is None:
                      value = 0
                  results.append((idx, value))
              # Sort the voxels
              results.sort(key=lambda tup: tup[1], reverse=True)
              logger.info(
                  'activity-based voxel selection via Searchlight is done'
              )
          return result_volume, results
docs: run activity-based voxel selection
  
          Sort the voxels based on the cross-validation accuracy
          of their activity vectors within the searchlight
  
          Parameters
          ----------
          clf: classification function
              the classifier to be used in cross validation
  
          Returns
          -------
          result_volume: 3D array of accuracy numbers
              contains the voxelwise accuracy numbers obtained via Searchlight
          results: list of tuple (voxel_id, accuracy)
              the accuracy numbers of all voxels, in accuracy descending order
              the length of array equals the number of voxels