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)
Exemplo n.º 2
0
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')
Exemplo n.º 3
0
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)