Beispiel #1
0
def test_opt_params():
    # adression issue #104
    subject_data = SubjectData()
    for deleteorient in [True, False]:
        for niigz2nii in [True, False]:
            # this shouldn't crash
            subject_data.sanitize(deleteorient=deleteorient,
                                  niigz2nii=niigz2nii)
    subject_data.output_dir = "/tmp/toto"
    subject_data.sanitize()
    assert_true(os.path.isdir(subject_data.output_dir))
    subject_data._delete_orientation()
def _spm_auditory_subject_data():
    """ Fetching auditory example into SubjectData Structure
    """
    subject_data = fetch_spm_auditory()
    subject_data['func'] = None
    base_dir = os.path.dirname(subject_data['anat'])
    subject_data.output_dir = os.path.join(base_dir, OUTPUT_DIR)
    return SubjectData(**subject_data)
def test_opt_params():
    # adression issue #104
    subject_data = SubjectData()
    for deleteorient in [True, False]:
        for niigz2nii in [True, False]:
            # this shouldn't crash
            subject_data.sanitize(deleteorient=deleteorient,
                                  niigz2nii=niigz2nii)
    subject_data.output_dir = "/tmp/toto"
    subject_data.sanitize()
    assert_true(os.path.isdir(subject_data.output_dir))
    subject_data._delete_orientation()
Beispiel #4
0
def _make_sd(func_filenames=None,
             anat_filename=None,
             ext=".nii.gz",
             n_sessions=1,
             make_sess_dirs=False,
             func_ndim=4,
             unique_func_names=False,
             output_dir="/tmp/titi"):
    if not func_filenames is None:
        n_sessions = len(func_filenames)
    func = [create_random_image(ndim=func_ndim) for _ in range(n_sessions)]
    anat = create_random_image(ndim=3)
    if anat_filename is None:
        anat_filename = '%s/anat%s' % (DATA_DIR, ext)
    _save_img(anat, anat_filename)
    if not func_filenames is None:
        for sess_func, filename in zip(func, func_filenames):
            if isinstance(filename, str):
                _save_img(sess_func, filename)
            else:
                vols = nibabel.four_to_three(sess_func)
                for x, y in zip(vols, filename):
                    assert isinstance(y, str), type(y)
                    _save_img(x, y)
    else:
        func_filenames = []
        for sess in range(n_sessions):
            sess_dir = DATA_DIR if not make_sess_dirs else os.path.join(
                DATA_DIR, "session%i" % sess)
            if not os.path.exists(sess_dir):
                os.makedirs(sess_dir)
            func_filename = '%s/func%s%s' % (sess_dir, "_sess_%i_" % sess if (
                n_sessions > 1 and unique_func_names) else "", ext)
            _save_img(func[sess], func_filename)
            func_filenames.append(func_filename)

    sd = SubjectData(anat=anat_filename,
                     func=func_filenames,
                     output_dir=output_dir)
    return sd
Beispiel #5
0
def do_preproc(funcfile, anatfile, subject, decimate=False):
    """ Function that performs the preprocessing.
    
    Parameters
    ----------
    funcfile: str
        the functional volume.
    anatfile: str
        the anatomical volume.
    subject: str
        the subject identifier.
    decimate: bool, default False
        if set reduce the input functional volume size (loose information).
        
    Returns
    -------
    subject_data: object
        a structure that contains the output results.
    """
    # Grab the data
    splitpath = anatfile.split(os.sep)
    outdir = os.path.join(BIDS_DATA_DIR, "derivatives",
                          "spmpreproc_{0}".format(splitpath[-3]), subject)
    if not os.path.isdir(outdir):
        os.makedirs(outdir)
    local_funcfile = os.path.join(outdir, os.path.basename(funcfile))
    if not os.path.isfile(local_funcfile):
        shutil.copy2(funcfile, local_funcfile)
    if decimate:
        im = nibabel.load(local_funcfile)
        dec_im = nibabel.Nifti1Image(im.get_data()[..., :3], im.affine)
        nibabel.save(dec_im, local_funcfile)
    local_anatfile = os.path.join(outdir, os.path.basename(anatfile))
    if not os.path.isfile(local_anatfile):
        shutil.copy2(anatfile, local_anatfile)
    #cwd = os.getcwd()
    os.chdir(outdir)
    subject_data = SubjectData(subject_id=subject,
                               func=local_funcfile,
                               anat=local_anatfile,
                               output_dir=outdir,
                               caching=True)

    # Start processing
    print('Starting pre-processing...')
    subject_data = do_subject_preproc(subject_data,
                                      deleteorient=False,
                                      slice_timing=False,
                                      ref_slice=0,
                                      TR=2.5,
                                      TA=None,
                                      realign=True,
                                      realign_reslice=True,
                                      register_to_mean=True,
                                      realign_software="spm",
                                      coregister=True,
                                      coregister_reslice=True,
                                      coreg_anat_to_func=False,
                                      coregister_software="spm",
                                      segment=False,
                                      normalize=True,
                                      fwhm=0,
                                      anat_fwhm=0,
                                      func_write_voxel_sizes=[3, 3, 3],
                                      anat_write_voxel_sizes=[1, 1, 1],
                                      hardlink_output=True,
                                      report=False,
                                      tsdiffana=True,
                                      parent_results_gallery=None,
                                      last_stage=True,
                                      preproc_undergone=None,
                                      prepreproc_undergone="",
                                      caching=True)

    return subject_data
Beispiel #6
0
def test_init():
    sd = SubjectData(anat='/tmp/anat.nii.gz', func='/tmp/func.nii.gz')
    assert_equal(sd.anat, "/tmp/anat.nii.gz")
    assert_equal(sd.func, "/tmp/func.nii.gz")
    dataset_dir = sys.argv[1]
else:
    dataset_dir = os.path.join(this_dir, "spm_multimodal_faces")

# fetch spm multimodal_faces data
subject_data = fetch_spm_multimodal_fmri()
dataset_dir = os.path.dirname(
    os.path.dirname(os.path.dirname(subject_data.anat)))

# preprocess the data
subject_id = "sub001"
subject_data = SubjectData(output_dir=os.path.join(dataset_dir,
                                                   "pypreprocess_output",
                                                   subject_id),
                           subject_id=subject_id,
                           func=[subject_data.func1, subject_data.func2],
                           anat=subject_data.anat,
                           trials_ses1=subject_data.trials_ses1,
                           trials_ses2=subject_data.trials_ses2,
                           session_ids=["Session1", "Session2"])
subject_data = do_subject_preproc(subject_data,
                                  realign=True,
                                  coregister=True,
                                  segment=True,
                                  normalize=True)

# experimental paradigm meta-params
stats_start_time = time.ctime()
tr = 2.
drift_model = 'Cosine'
hrf_model = 'spm + derivative'