<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _voxel_scoring(self, task, clf):
 """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 """

        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