def expand_mask(mask, custom_mask=None): """expand a mask with multiple integers into separate binary masks Args: mask: nibabel or Brain_Data instance custom_mask: nibabel instance or string to file path; optional Returns: out: Brain_Data instance of multiple binary masks """ from nltools.data import Brain_Data if isinstance(mask, nib.Nifti1Image): mask = Brain_Data(mask, mask=custom_mask) if not isinstance(mask, Brain_Data): raise ValueError("Make sure mask is a nibabel or Brain_Data instance.") mask.data = np.round(mask.data).astype(int) tmp = [] for i in np.nonzero(np.unique(mask.data))[0]: tmp.append((mask.data == i) * 1) out = mask.empty() out.data = np.array(tmp) return out
def collapse_mask(mask, auto_label=True, custom_mask=None): """collapse separate masks into one mask with multiple integers overlapping areas are ignored Args: mask: nibabel or Brain_Data instance custom_mask: nibabel instance or string to file path; optional Returns: out: Brain_Data instance of a mask with different integers indicating different masks """ from nltools.data import Brain_Data if not isinstance(mask, Brain_Data): if isinstance(mask, nib.Nifti1Image): mask = Brain_Data(mask, mask=custom_mask) else: raise ValueError("Make sure mask is a nibabel or Brain_Data " "instance.") if len(mask.shape()) > 1: if len(mask) > 1: out = mask.empty() # Create list of masks and find any overlaps m_list = [] for x in range(len(mask)): m_list.append(mask[x].to_nifti()) intersect = intersect_masks(m_list, threshold=1, connected=False) intersect = Brain_Data( nib.Nifti1Image(np.abs(intersect.get_data() - 1), intersect.get_affine()), mask=custom_mask, ) merge = [] if auto_label: # Combine all masks into sequential order # ignoring any areas of overlap for i in range(len(m_list)): merge.append( np.multiply( Brain_Data(m_list[i], mask=custom_mask).data, intersect.data) * (i + 1)) out.data = np.sum(np.array(merge).T, 1).astype(int) else: # Collapse masks using value as label for i in range(len(m_list)): merge.append( np.multiply( Brain_Data(m_list[i], mask=custom_mask).data, intersect.data)) out.data = np.sum(np.array(merge).T, 1) return out else: warnings.warn("Doesn't need to be collapased")
def expand_mask(mask): """ expand a mask with multiple integers into separate binary masks Args: mask: nibabel or Brain_Data instance Returns: out: Brain_Data instance of multiple binary masks """ from nltools.data import Brain_Data if isinstance(mask,nib.Nifti1Image): mask = Brain_Data(mask) if not isinstance(mask,Brain_Data): raise ValueError('Make sure mask is a nibabel or Brain_Data instance.') mask.data = mask.data.astype(int) tmp = [] for i in np.unique(mask.data): tmp.append((mask.data==i)*1) out = mask.empty() out.data = np.array(tmp) return out
def expand_mask(mask): """ expand a mask with multiple integers into separate binary masks Args: mask: nibabel or Brain_Data instance Returns: out: Brain_Data instance of multiple binary masks """ from nltools.data import Brain_Data if isinstance(mask, nib.Nifti1Image): mask = Brain_Data(mask) if not isinstance(mask, Brain_Data): raise ValueError('Make sure mask is a nibabel or Brain_Data instance.') mask.data = mask.data.astype(int) tmp = [] for i in np.unique(mask.data): tmp.append((mask.data == i) * 1) out = mask.empty() out.data = np.array(tmp) return out
print 'Load Data: Elapsed: %.2f seconds' % (time() - tic) #Stop timer ############################################################################### # Run Regression separately for each subject tic = time() #Start Timer start = 0 stop = n_trials dat.X = pd.DataFrame( { 'Intercept': np.ones(len(dat.Y)), 'X1': np.array(dat.Y).flatten() }, index=None) all = dat.empty() for i in xrange(n_subs): sub_out = dat[start:stop].regress() start = start + n_trials stop = stop + n_trials tmp = sub_out['beta'].empty(data=False)[1] all = all.append(tmp) print 'Regression: Elapsed: %.2f seconds' % (time() - tic) # Stop timer ############################################################################### # Run One sample t-test tic = time() #Start Timer l2 = all.ttest(threshold_dict={'fdr': .05}) l2['thr_t'].plot()