code: def _voxel_scoring(self, task, clf):
          
          time1 = time.time()
          # correlation computation
          corr = self._correlation_computation(task)
          # normalization
          # corr = self._correlation_normalization(corr)
          time3 = time.time()
          fcma_extension.normalization(corr, self.epochs_per_subj)
          time4 = time.time()
          logger.debug(
              'within-subject normalization for %d voxels '
              'using C++, takes %.2f s' %
              (task[1], (time4 - time3))
          )
  
          # cross validation
          data = self._prepare_for_cross_validation(corr, clf)
          if isinstance(clf, sklearn.svm.SVC) and clf.kernel == 'precomputed':
              # to save memory so that the process can be forked
              del corr
          results = self._do_cross_validation(clf, data, task)
          time2 = time.time()
          logger.info(
              'in rank %d, task %d takes %.2f s' %
              (MPI.COMM_WORLD.Get_rank(),
               (int(task[0] / self.voxel_unit)), (time2 - time1))
          )
          return results
docs: The voxel selection process done in the worker node.
  
          Take the task in,
          do analysis on voxels specified by the task (voxel id, num_voxels)
          It is a three-stage pipeline consisting of:
          1. correlation computation
          2. within-subject normalization
          3. voxelwise cross validation
  
          Parameters
          ----------
          task: tuple (start_voxel_id, num_processed_voxels),
              depicting the voxels assigned to compute
          clf: classification function
              the classifier to be used in cross validation
  
          Returns
          -------
          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 assigned voxels