def demo_spm_multimodal_fmri(data_dir="/tmp/spm_multimodal_fmri", output_dir="/tmp/spm_multimodal_fmri_output", ): """Demo for SPM multimodal fmri (faces vs scrambled) Parameters ---------- data_dir: string, optional where the data is located on your disk, where it will be downloaded to output_dir: string, optional where output will be written to """ # fetch data spm_multimodal_fmri_data = fetch_spm_multimodal_fmri_data( data_dir) # subject data factory def subject_factory(): subject_id = "sub001" yield SubjectData(subject_id=subject_id, func=[spm_multimodal_fmri_data.func1, spm_multimodal_fmri_data.func2], output_dir=os.path.join(output_dir, subject_id)) # invoke demon to run de demo _demo_runner(subject_factory(), "SPM Multimodal fMRI faces vs scrambled", n_sessions=2)
def demo_spm_multimodal_fmri(data_dir="/tmp/spm_multimodal_fmri", output_dir="/tmp/spm_multimodal_fmri_output"): """Demo for SPM multimodal fmri (faces vs scrambled) Parameters ---------- data_dir: string, optional where the data is located on your disk, where it will be downloaded to output_dir: string, optional where output will be written to """ # fetch data spm_multimodal_fmri_data = fetch_spm_multimodal_fmri_data(data_dir) # subject data factory def subject_factory(): subject_id = "sub001" yield SubjectData( subject_id=subject_id, func=[spm_multimodal_fmri_data.func1, spm_multimodal_fmri_data.func2], output_dir=os.path.join(output_dir, subject_id), ) # invoke demon to run de demo _demo_runner(subject_factory(), "SPM Multimodal fMRI faces vs scrambled", n_sessions=2)
) if 0x0: for (with_anat, do_segment, do_normalize, fwhm, hard_link_output) in itertools.product( [False, True], [False, True], [False, True], [0, 8, [8, 8, 8]], [False, True]): # load spm auditory data sd = fetch_spm_auditory_data(os.path.join( os.environ['HOME'], 'CODE/datasets/spm_auditory')) subject_data1 = SubjectData(func=[sd.func], anat=sd.anat if with_anat else None) subject_data1.output_dir = "/tmp/kimbo/sub001/" # load spm multimodal fmri data sd = fetch_spm_multimodal_fmri_data(os.path.join( os.environ['HOME'], 'CODE/datasets/spm_multimodal_fmri')) subject_data2 = SubjectData(func=[sd.func1, sd.func2], anat=sd.anat if with_anat else None, session_id=['Session 1', "Session 2"]) subject_data2.output_dir = "/tmp/kiki/sub001/" do_subjects_preproc([subject_data1, subject_data2], do_dartel=True, do_segment=do_segment, do_normalize=do_normalize, fwhm=fwhm, hard_link_output=hard_link_output )
from pypreprocess.reporting.glm_reporter import generate_subject_stats_report from pypreprocess.nipype_preproc_spm_utils import (do_subjects_preproc, SubjectData) # file containing configuration for preprocessing the data this_dir = os.path.abspath(os.path.dirname(sys.argv[0])) jobfile = os.path.join(this_dir, "multimodal_faces_preproc.ini") # set dataset dir if len(sys.argv) > 1: 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_data(dataset_dir) # preprocess the data subject_id = "sub001" subject_data = SubjectData(output_dir=os.path.join(dataset_dir, "pypreprocess", 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) subject_data = do_subjects_preproc([subject_data], realign=True, coregister=True, segment=True, normalize=True)[0]
# set data and output paths (change as you will) DATA_DIR = "spm_multimodal_fmri" OUTPUT_DIR = "spm_multimodal_runs" if len(sys.argv) > 1: DATA_DIR = sys.argv[1] if len(sys.argv) > 2: OUTPUT_DIR = sys.argv[2] print "\tDATA_DIR: %s" % DATA_DIR print "\tOUTPUT_DIR: %s" % OUTPUT_DIR print if not os.path.exists(OUTPUT_DIR): os.makedirs(OUTPUT_DIR) # fetch the data sd = fetch_spm_multimodal_fmri_data(DATA_DIR) subject_id = "sub001" subject_data = SubjectData(subject_id=subject_id, session_id=["Session1", "Session2"], func=[sd.func1, sd.func2], anat=sd.anat, trials_ses1=sd.trials_ses1, trials_ses2=sd.trials_ses2, output_dir=os.path.join(OUTPUT_DIR, subject_id) ) # preprocess the data subject_data = do_subject_preproc(subject_data, do_normalize=False, fwhm=[8.]) # collect preprocessed data anat_img = nibabel.load(subject_data.anat)
line.append(1.) condition, onset, duration, amplitude = line conditions.append(condition) onsets.append(float(onset)) durations.append(float(duration)) amplitudes.append(float(amplitude)) fd.close() if not line_cnt > 0: raise ValueError( "Couldn't read any data from onset file: %s" % onset_file) return map(np.array, [conditions, onsets, durations, amplitudes]) # fetch data data_dir = "examples/spm_multimodal/" subject_data = fetch_spm_multimodal_fmri_data(data_dir) # XXX to be verified tr = 2. drift_model = 'Cosine' hrf_model = 'Canonical With Derivative' hfcut = 128. time_units = "tr" # default if 1 if time_units == "tr": time_units = tr # re-write onset files into compatible format for sess in xrange(2): trials = getattr(subject_data, "trials_ses%i" % (sess + 1)) fd = open(trials.split(".")[0] + ".txt", 'w') timing = scipy.io.loadmat(trials, squeeze_me=True, struct_as_record=False)
if 0x0: for (with_anat, do_segment, do_normalize, fwhm, hard_link_output) in itertools.product([False, True], [False, True], [False, True], [0, 8, [8, 8, 8]], [False, True]): # load spm auditory data sd = fetch_spm_auditory_data( os.path.join(os.environ['HOME'], 'CODE/datasets/spm_auditory')) subject_data1 = SubjectData(func=[sd.func], anat=sd.anat if with_anat else None) subject_data1.output_dir = "/tmp/kimbo/sub001/" # load spm multimodal fmri data sd = fetch_spm_multimodal_fmri_data( os.path.join(os.environ['HOME'], 'CODE/datasets/spm_multimodal_fmri')) subject_data2 = SubjectData(func=[sd.func1, sd.func2], anat=sd.anat if with_anat else None, session_id=['Session 1', "Session 2"]) subject_data2.output_dir = "/tmp/kiki/sub001/" do_subjects_preproc([subject_data1, subject_data2], do_dartel=True, do_segment=do_segment, do_normalize=do_normalize, fwhm=fwhm, hard_link_output=hard_link_output)