def norm_write(self, in_prefix='', out_prefix='w'): sess_scans = scans_for_fnames( fnames_presuffix(self.data_def['functionals'], in_prefix)) matname = fname_presuffix(self.data_def['anatomical'], suffix='_seg_sn.mat', use_ext=False) subj = { 'matname': np.zeros((1,), dtype=object), 'resample': np.vstack(sess_scans.flat), } subj['matname'][0] = matname roptions = { 'preserve':False, 'bb':np.array([[-78,-112, -50],[78,76,85.0]]), 'vox':fltcols([2.0,2.0,2.0]), 'interp':1.0, 'wrap':[0.0,0.0,0.0], 'prefix': out_prefix, } nwinfo = make_job('spatial', 'normalise', [{ 'write':{ 'subj': subj, 'roptions': roptions, } }]) run_jobdef(nwinfo) # knock out the list of images, replacing with only one subj['resample'] = np.zeros((1,), dtype=object) subj['resample'][0] = self.data_def['anatomical'] roptions['interp'] = 4.0 run_jobdef(nwinfo) return out_prefix + in_prefix
def smooth(self, in_prefix='', out_prefix='s'): fwhm = self.ana_def['fwhm'] try: len(fwhm) except TypeError: fwhm = [fwhm] * 3 fwhm = np.asarray(fwhm, dtype=np.float).reshape(1,3) sess_scans = scans_for_fnames( fnames_presuffix(self.data_def['functionals'], in_prefix)) sinfo = make_job('spatial', 'smooth', {'data':np.vstack(sess_scans.flat), 'fwhm':fwhm, 'dtype':0}) run_jobdef(sinfo) return out_prefix + in_prefix
def slicetime(self, in_prefix='', out_prefix='a'): sess_scans = scans_for_fnames( fnames_presuffix(self.data_def['functionals'], in_prefix)) sdef = self.study_def stinfo = make_job('temporal', 'st', { 'scans': sess_scans, 'so': sdef['time_to_space'], 'tr': sdef['TR'], 'ta': sdef['TA'], 'nslices': float(sdef['n_slices']), 'refslice':1, 'prefix': out_prefix, }) run_jobdef(stinfo) return out_prefix + in_prefix
def realign(self, in_prefix=''): sess_scans = scans_for_fnames( fnames_presuffix(self.data_def['functionals'], in_prefix)) rinfo = make_job('spatial', 'realign', [{ 'estimate':{ 'data':sess_scans, 'eoptions':{ 'quality': 0.9, 'sep': 4.0, 'fwhm': 5.0, 'rtm': True, 'interp': 2.0, 'wrap': [0.0,0.0,0.0], 'weight': [] } } }]) run_jobdef(rinfo) return in_prefix
def reslice(self, in_prefix='', out_prefix='r', out=('1..n', 'mean')): which = [0, 0] if 'mean' in out: which[1] = 1 if '1..n' in out or 'all' in out: which[0] = 2 elif '2..n' in out: which[0] = 1 sess_scans = scans_for_fnames( fnames_presuffix(self.data_def['functionals'], in_prefix)) rsinfo = make_job('spatial', 'realign', [{ 'write':{ 'data': np.vstack(sess_scans.flat), 'roptions':{ 'which': which, 'interp':4.0, 'wrap':[0.0,0.0,0.0], 'mask':True, 'prefix': out_prefix } } }]) run_jobdef(rsinfo) return out_prefix + in_prefix