示例#1
0
    num_subjs = int(sys.argv[6])
    # the following line is an example to leaving a subject out
    #vs = VoxelSelector(labels[0:204], epochs_per_subj, num_subjs-1, raw_data[0:204])
    # if using all subjects
    vs = VoxelSelector(labels, epochs_per_subj, num_subjs, raw_data)
    # if providing two masks, just append raw_data2 as the last input argument
    #vs = VoxelSelector(labels, epochs_per_subj, num_subjs, raw_data, raw_data2=raw_data2)
    # for cross validation, use SVM with precomputed kernel
    clf = svm.SVC(kernel='precomputed', shrinking=False, C=10)
    results = vs.run(clf)
    # this output is just for result checking
    if MPI.COMM_WORLD.Get_rank() == 0:
        logger.info('correlation-based voxel selection is done')
        #print(results[0:100])
        mask_img = nib.load(mask_file)
        mask = mask_img.get_data().astype(np.bool)
        score_volume = np.zeros(mask.shape, dtype=np.float32)
        score = np.zeros(len(results), dtype=np.float32)
        seq_volume = np.zeros(mask.shape, dtype=np.int)
        seq = np.zeros(len(results), dtype=np.int)
        with open('result_list.txt', 'w') as fp:
            for idx, tuple in enumerate(results):
                fp.write(str(tuple[0]) + ' ' + str(tuple[1]) + '\n')
                score[tuple[0]] = tuple[1]
                seq[tuple[0]] = idx
        score_volume[mask] = score
        seq_volume[mask] = seq
        io.save_as_nifti_file(score_volume, mask_img.affine,
                              'result_score.nii.gz')
        io.save_as_nifti_file(seq_volume, mask_img.affine, 'result_seq.nii.gz')
示例#2
0
def test_save_as_nifti_file(tmpdir) -> None:
    out_file = str(tmpdir / "nifti.nii")
    shape = (4, 4, 4)
    io.save_as_nifti_file(np.ones(shape), np.eye(4), out_file)
    assert nib.load(out_file).get_data().shape == shape
        # RandomType.UNREPRODUCIBLE permutes the voxels differently across runs
        # example
        #from brainiak.fcma.preprocessing import RandomType
        #data, labels = prepare_searchlight_mvpa_data(images, conditions,
        #                                                    random=RandomType.UNREPRODUCIBLE)

        # the following line is an example to leaving a subject out
        #epoch_info = [x for x in epoch_info if x[1] != 0]

    num_subjs = int(sys.argv[5])
    # create a Searchlight object
    sl = Searchlight(sl_rad=1)
    mvs = MVPAVoxelSelector(data, mask, labels, num_subjs, sl)
    clf = svm.SVC(kernel='linear', shrinking=False, C=1)
    # only rank 0 has meaningful return values
    score_volume, results = mvs.run(clf)
    # this output is just for result checking
    if MPI.COMM_WORLD.Get_rank()==0:
        score_volume = np.nan_to_num(score_volume.astype(np.float))
        io.save_as_nifti_file(score_volume, mask_image.affine,
                                   'result_score.nii.gz')
        seq_volume = np.zeros(mask.shape, dtype=np.int)
        seq = np.zeros(len(results), dtype=np.int)
        with open('result_list.txt', 'w') as fp:
            for idx, tuple in enumerate(results):
                fp.write(str(tuple[0]) + ' ' + str(tuple[1]) + '\n')
                seq[tuple[0]] = idx
        seq_volume[mask] = seq
        io.save_as_nifti_file(seq_volume, mask_image.affine,
                                   'result_seq.nii.gz')
示例#4
0
def test_save_as_nifti_file(tmpdir) -> None:
    out_file = str(tmpdir / "nifti.nii")
    shape = (4, 4, 4)
    io.save_as_nifti_file(np.ones(shape), np.eye(4), out_file)
    assert nib.load(out_file).get_data().shape == shape