def transform_file(f, model=None, test=False, tri=False): print(f, 'starting') tic = time.time() s = cranium.brain() df = cranium.read_psi(f) if 'ac' not in df.columns: # if tri==True: # s.df_align = df[['x','y','z']] # pt1x = np.max(s.df_align.x) # pt1z = s.df_align[s.df_align.x == pt1x].z.values[0] # pt2x = np.min(s.df_align.x) # pt2z = s.df_align[s.df_align.x == pt2x].z.values[0] # # s.mm = cranium.math_model(np.polyfit([pt1x,0,pt2x],[pt1z,0,pt2z],2)) # # if test==True: # return(s,[pt1x,pt2x],[pt1z,pt2z]) # if tri==False: s.df_align = df[['x', 'y', 'z']] snum = re.findall(r'\d+', f.split('.')[0])[0] s.mm = cranium.math_model(model.loc[int(snum)].values) num = int(snum) # return(s) # if test==False: s.transform_coordinates() cranium.write_data(f, s.df_align) print(f, 'complete', time.time() - tic)
def transform_file(f,model=None): print(f,'starting') tic = time.time() s = ds.brain() df = ds.read_psi(f) # Transform coordinates if cylindrical column not present if 'ac' not in df.columns: # Add psi data to brain object s.df_align = df[['x','y','z']] #snum = re.findall(r'\d+',f.split('.')[0])[0] snum = f.split('_')[1] num = int(snum) # Extract math model and add to brain object try: mm_val = model.loc[num].values s.mm = ds.math_model(mm_val) except: s.mm = s.fit_model(s.df_align,deg,fit_dim) # Try to transform and report errors try: s.transform_coordinates() except: print(f,'failed on transform coordinates',time.time()-tic) traceback.print_exc() # Try to save data and report errors try: ds.write_data(f,s.df_align) except: print(f,'failed on write data',time.time()-tic) traceback.print_exc() print(f,'complete',time.time()-tic) else: # Report if file already appears transformed print(f,'already transformed')
def preprocess(fpath,p,stop=None,pca=None,mm=None,vertex=None): ''' Generate brain object and process until stop is triggered :param str stop: 'df_thresh' 'median' 'df_align' :return: Cranium brain object ''' b = cranium.brain() b.read_data(fpath) b.preprocess_data(p['gthresh'],p['scale'],p['microns']) if stop == 'df_thresh': return(b) if pca == None: b.calculate_pca_median(b.raw_data,p['mthresh'],p['radius'],p['microns']) pca = b.pcamed if stop == 'median': return(b) b.pca_transform_3d(b.df_thresh,pca,p['comp_order'],p['fit_dim'],deg=p['deg'],mm=mm,vertex=vertex) if (stop == 'df_align') | (stop == None): return(b)