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'
            )
        result_volume = self.sl.run_searchlight(_sfn)
        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))
            results.sort(key=lambda tup: tup[1], reverse=True)
            logger.info(
                'activity-based voxel selection via Searchlight is done'
            )
        return result_volume, results