def test_mask_files(): with InTemporaryDirectory(): # Make a 4D file from the anatomical example img = nii.load(anatfile) arr = img.get_data() a2 = np.zeros(arr.shape + (2,)) a2[:, :, :, 0] = arr a2[:, :, :, 1] = arr img = nii.Nifti1Image(a2, np.eye(4)) a_fname = "fourd_anat.nii" nii.save(img, a_fname) # check 4D mask msk1 = nnm.compute_mask_files(a_fname) # and mask from identical list of 3D files msk2 = nnm.compute_mask_files([anatfile, anatfile]) yield assert_array_equal, msk1, msk2
# Example usage # python compute_mask.py swa4D.nii.gz mask.nii.gz # python compute_mask.py swa*.nii mask.nii.gz from nipy.neurospin.utils.mask import compute_mask_files import sys if __name__ == '__main__': if len(sys.argv) < 3: print """Usage : python compute_mask [ -s copyfilename ] inputfilename(s) outputfilename inputfilename can be either a single (4D) file or a list of (3D) files -s copyfilename : also save a copy of the orginal data as a single 4D file named copyfilename # Example : python compute_mask.py swa4D.nii.gz mask.nii.gz python compute_mask.py swa*.nii mask.nii.gz python compute_mask.py -s swaCopy4D.nii.gz swa*.nii ../masks/mask.nii.gz""" sys.exit() copyIn4Dfilename = None if '-s' in sys.argv: i = sys.argv.index('-s') sys.argv.pop(i) copyIn4Dfilename = sys.argv.pop(i) if len(sys.argv) == 3: inputFilename = sys.argv[1] else: inputFilename = sorted(sys.argv[1:-1]) outputFilename = sys.argv[-1] compute_mask_files(inputFilename, outputFilename, copy_filename = copyIn4Dfilename)
misc["tasks"] = Conditions misc["mask_url"] = paths["mask"] misc.write() # step 2. Create one design matrix for each session design_matrices={} for sess in Sessions: design_matrices[sess] = glm_tools.design_matrix( paths['misc'], paths['dmtx'][sess], sess, paths['paradigm'], frametimes, hrf_model=hrf_model, drift_model=drift_model, hfcut=hfcut, model=model_id) # step 3. Compute the Mask # fixme : it should be possible to provide a pre-computed mask print "Computing the Mask" mask_array = compute_mask_files(paths['fmri'].values()[0][0], paths['mask'], False, infTh, supTh) # step 4. Create Contrast Files print "Creating Contrasts" clist = contrast_tools.ContrastList(misc=misc) d = clist.dic d["SStSSp_minus_DStDSp"] = d["SSt-SSp"] - d["DSt-DSp"] d["DStDSp_minus_SStSSp"] = d["DSt-DSp"] - d["SSt-SSp"] d["DSt_minus_SSt"] = d["DSt-SSp"] + d["DSt-DSp"]\ - d["SSt-SSp"] - d["SSt-DSp"] d["DSp_minus_SSp"] = d["DSt-DSp"] - d["DSt-SSp"]\ - d["SSt-SSp"] + d["SSt-DSp"] d["DSt_minus_SSt_for_DSp"] = d["DSt-DSp"] - d["SSt-DSp"] d["DSp_minus_SSp_for_DSt"] = d["DSt-DSp"] - d["DSt-SSp"] if d.has_key("FirstSt"): d["Deactivation"] = d["FirstSt"] - d["SSt-SSp"]\
paradigm = dm.load_protocol_from_csv_file(paradigm_file, session=0) design_matrix = dm.DesignMatrix( frametimes, paradigm, hrf_model=hrf_model, drift_model=drift_model, hfcut=hfcut, cond_ids= conditions) design_matrix.show() # design_matrix.save(...) ######################################## # Mask the data ######################################## mask_path = op.join(swd, 'mask.nii') mask_array = compute_mask_files( data_path, mask_path, False, 0.4, 0.9) ######################################## # Perform a GLM analysis ######################################## fmri_image = load(data_path) Y = fmri_image.get_data()[mask_array] model = "ar1" method = "kalman" my_glm = nipy.neurospin.glm.glm() glm = my_glm.fit(Y.T, design_matrix.matrix, method="kalman", model="ar1") ######################################### # Specify the contrasts
def ComputeMask(fmriFiles, outputFile, infT=0.4, supT=0.9): """ Perform the mask computation, see the api of compute_mask_files """ compute_mask_files( fmriFiles, outputFile, False, infT, supT, cc=1)
design_matrices[sess] = glm_tools.design_matrix( paths["misc"], paths["dmtx"][sess], sess, paths["paradigm"], frametimes, hrf_model=hrf_model, drift_model=drift_model, hfcut=hfcut, model=model_id, ) # step 3. Compute the Mask # fixme : it should be possible to provide a pre-computed mask print "Computing the Mask" mask_array = compute_mask_files(paths["fmri"].values()[0][0], paths["mask"], True, infTh, supTh) # step 4. Creating functional contrasts print "Creating Contrasts" clist = contrast_tools.ContrastList(misc=ConfigObj(paths["misc"]), model=model_id) generate_localizer_contrasts(clist) contrast = clist.save_dic(paths["contrast_file"]) CompletePaths = glm_tools.generate_brainvisa_ouput_paths(paths["contrasts"], contrast) # step 5. Fit the glm for each session glms = {} for sess in Sessions: print "Fitting GLM for session : %s" % sess glms[sess] = glm_tools.glm_fit( paths["fmri"][sess], design_matrices[sess],