design_matrix = make_design_matrix( frame_times, paradigm, hrf_model="canonical with derivative", drift_model="cosine", period_cut=128 ) _, matrix, column_names = check_design_matrix(design_matrix) # Plot the design matrix ax = plot_design_matrix(design_matrix) ax.set_position([0.05, 0.25, 0.9, 0.65]) ax.set_title("Design matrix") plt.savefig(path.join(write_dir, "design_matrix.png")) ######################################## # Perform a GLM analysis ######################################## fmri_glm = FMRILinearModel(epi_img, matrix, mask="compute") fmri_glm.fit(do_scaling=True, model="ar1") ######################################### # Estimate contrasts ######################################### # Specify the contrasts # simplest ones contrasts = {} n_columns = len(column_names) contrast_matrix = np.eye(n_columns) for i in range(n_conditions): contrasts[column_names[2 * i]] = contrast_matrix[2 * i]
ax.set_title('Design matrix') # specify contrasts contrasts = {} _, matrix, names = check_design_matrix(design_matrix) contrast_matrix = np.eye(len(names)) for i in range(len(names)): contrasts[names[i]] = contrast_matrix[i] # Use a more interesting contrast contrasts = {'active-rest': contrasts['active'] - contrasts['rest']} # fit GLM print('\r\nFitting a GLM (this takes time) ..') fmri_glm = FMRILinearModel(nibabel.concat_images(subject_data.func), matrix, mask='compute') fmri_glm.fit(do_scaling=True, model='ar1') # save computed mask mask_path = os.path.join(output_dir, "mask.nii.gz") print("Saving mask image %s" % mask_path) nibabel.save(fmri_glm.mask, mask_path) # compute bg unto which activation will be projected mean_img = mean_img(subject_data.func) print("Computing contrasts ..") for contrast_id, contrast_val in contrasts.items(): print("\tcontrast id: %s" % contrast_id) z_map, t_map, eff_map, var_map = fmri_glm.contrast(
from nistats.design_matrix import make_design_matrix from nistats import datasets # write directory write_dir = path.join(getcwd(), 'results') if not path.exists(write_dir): mkdir(write_dir) # Data and analysis parameters data = datasets.fetch_fiac_first_level() fmri_files = [data['func1'], data['func2']] design_files = [data['design_matrix1'], data['design_matrix2']] # Load all the data into a common GLM multi_session_model = FMRILinearModel(fmri_files, design_files, data['mask']) # GLM fitting multi_session_model.fit(do_scaling=True, model='ar1') def make_fiac_contrasts(n_columns): """ Specify some contrasts for the FIAC experiment""" contrast = {} # the design matrices of both runs comprise 13 columns # the first 5 columns of the design matrices correspond to the following # conditions: ['SSt-SSp', 'SSt-DSp', 'DSt-SSp', 'DSt-DSp', 'FirstSt'] def _pad_vector(contrast_, n_columns): return np.hstack((contrast_, np.zeros(n_columns - len(contrast_))))