def compare(x, y, z): t = TR*np.arange(raw.shape[3]) plot(t, raw[x,y,z,:], 'r') plot(t, spm[x,y,z,:], 'g') plot(t, npy[x,y,z,:], 'b') xlabel('time (sec)') #compare(39, 22, 18) #compare(15,24,10) def plusmieux(x, a): return ((x>0)*x)**a """ from nipy.neurospin.glm import glm f = np.load(join(rootpath, run+'_design.npz')) X = f['X'] conds = f['conditions'] # Gaussian filter import scipy.ndimage as nd g_raw = glm(raw[xyz], X, axis=1) g_npy = glm(npy[xyz], X, axis=1) g_spm = glm(spm[xyz], X, axis=1) def makeZim(g, c): z = g.contrast(c).zscore()
# Perform affine registration # The output is an array-like object such that # np.asarray(T) is a customary 4x4 matrix print('Setting up registration...') tic = time.time() T = register(I, J, similarity=similarity, interp=interp, optimizer=optimizer) toc = time.time() print(' Registration time: %f sec' % (toc-tic)) # Resample source image print('Resampling source image...') tic = time.time() It = transform(I, T.inv(), reference=J) toc = time.time() print(' Resampling time: %f sec' % (toc-tic)) # Save resampled source outfile = source+'_TO_'+target+'.nii' print ('Saving resampled source in: %s' % outfile) save_image(It, outfile) # Save transformation matrix import numpy as np np.save(outfile, np.asarray(T))
# Optinal argument iterations = 1 if len(sys.argv)>1: iterations = int(sys.argv[1]) # Input images are provided with the nipy-data package runs = ['run1', 'run2'] runnames = [example_data.get_filename('fiac','fiac0',run+'.nii.gz') \ for run in runs] images = [load_image(runname) for runname in runnames] # Create Image4d instances -- this is a local class representing a # series of 3d images runs = [image4d(im, tr=2.5, slice_order='ascending', interleaved=True) \ for im in images] # Correct motion within- and between-sessions # By default 2 within-loops and 5 between-loops will be performed transforms = realign4d(runs, within_loops=iterations, between_loops=2*iterations) # Resample data on a regular space+time lattice using 4d interpolation corr_runs = [resample4d(runs[i], transforms=transforms[i]) for i in range(len(runs))] # Save images for i in range(len(runs)): aux = split(runnames[i]) save_image(corr_runs[i], join(aux[0], 'ra'+aux[1]))
return gaussians # Main Program # Load prior probability map print('Loading data...') prior = load_probmap('_1000Prior.img') # Load image data and apply masking im1 = load_image(join(datadir, 'BiasCorIm.img')) im2 = load_image(join(datadir, 'DistanceMap.img')) data = np.asarray([im.get_data()[prior.mask()] for im in [im1,im2]]) # Save image data in nifti for visualization with `anatomist` if save_images: print('Saving prior image...') save_image(im1, join(savedir, 'BiasCorIm.nii')) im = Image(prior.brain_ppm(), affine=im1.get_affine()) save_image(im, join(savedir, 'Prior_Brain.nii')) # Allocate posterior probability map and initialize it from the prior posterior = Probmap(prior) # EM algorithm: refine posterior map print('Starting EM...') for iter in range(em_iters): print(' M-step...') gaussians = m_step(posterior, data) print(' E-step...') posterior = e_step(gaussians, prior, data, posterior=posterior) if save_images: print(' Saving current posterior image...')
fmri_files = [example_data.get_filename('fiac','fiac0',run) for run in ['run1.nii.gz','run2.nii.gz']] design_files = [example_data.get_filename('fiac','fiac0',run) for run in ['run1_design.npz','run2_design.npz']] mask_file = example_data.get_filename('fiac','fiac0','mask.nii.gz') # Get design matrix as numpy array print('Loading design matrices...') X = [np.load(f)['X'] for f in design_files] # Get multi-session fMRI data print('Loading fmri data...') Y = [load_image(f) for f in fmri_files] # Get mask image print('Loading mask...') mask = load_image(mask_file) # GLM fitting print('Starting fit...') ##glm = LinearModel(Y, X, mask=mask, model='ar1') glm = LinearModel(Y, X, mask=mask) # Compute the required contrast print('Computing test contrast image...') nregressors = X[0].shape[1] ## should check that all design matrices have the same c = np.zeros(nregressors) c[0:4] = cvect con, vcon, zmap, dof = glm.contrast(c) # Save Zmap image save_image(zmap, 'zmap.nii.gz')
from os.path import join, split import sys import time from glob import glob from nipy.io.imageformats import load as load_image, save as save_image from nipy.neurospin.registration import FmriRealign4d # Create Nifti1Image instances from both input files rootpath = "D:\\home\\Alexis\\data\\karla" runnames = glob(join(rootpath, "fms*.nii")) runs = [load_image(run) for run in runnames] ## DEBUG """ idx = [4,5,6,7] runs = [runs[i] for i in idx] runnames = [runnames[i] for i in idx] """ print runnames # Do the job R = FmriRealign4d(runs, tr=2.4, slice_order="ascending", interleaved=False) R.correct_motion() corr_runs = R.resample() # Save images for i in range(len(runs)): aux = split(runnames[i]) save_image(corr_runs[i], join(aux[0], "new_ra" + aux[1]))
## Clean using crude brain mask ppm = geometry_cleaner(ppm, brain_prior, mask) ppm, mask = normalize(ppm) # Smooth using log opinion pool print('Performing log opinion pool smoothing...') for tissue in tissues: ppm[tissue] = log_opinion_pool(ppm[tissue], mask, size=1) ppm, mask = normalize(ppm) # Brain ppms raw_brain = brain_ppm(raw_ppm, raw_mask) brain = brain_ppm(ppm, mask) # Save images print('Saving maps...') save_image(Image(raw_brain, affine=affine), os.path.join(datadir, 'brain_raw_ppm.nii')) save_image(Image(brain, affine=affine), os.path.join(datadir, 'brain_'+str(crude_brain)+'_ppm.nii')) # Displays """ for slice in [60, 80, 100, 120]: display(raw_brain, slice=slice) display(brain, slice=slice) """ """ display_all(raw_ppm) display_all(ppm) """