示例#1
0
def diff_pkl2chomp ( files , savedir ) :
	#grab files, skip directories
	if os.path.isdir (files):
		fdir = files + '/'
		dlist = os.listdir(fdir)
		frames = []
		for f in dlist:
			if f.endswith('npy') and not os.path.isdir(fdir+f):
				frames.append(f)
	else:
		frames = [ files ]
		fdir = files.rpartition('/')[0].rpartition('/')[0]+'/'
	#savedir = '/home/kellys/RBC_Deriv_120125_r01/'

	#print 'attempting chomp runs..'
	frames.sort(key=natural_key)
	for frame in frames:
		savename = frame.rstrip('npy') + 'cub'
		#CB.png2chomp(fdir + frame)
		arr = numpy.load(fdir+frame)
		w = numpy.where(arr==True)
		newarr = numpy.vstack( (w[0],w[1])).T
		CB.array2chomp(newarr,fdir+savename)
		CB.run_chomp(fdir + savename, savedir+savename)
示例#2
0
def run_chomp( cub_name ):
    """
    """
    save_prefix = cub_name.rstrip( '.cub' )
    chomp_betti.run_chomp( cub_name, save_prefix+'.cbetti' )
    chomp_betti.extract_betti( save_prefix )
示例#3
0
def run_fft_filter( files, bnd_file, modes, suffix= 'fft_frames/normed_frames/',
                    make_cubs=True, run_chomp=True ):
    """
    For each frame in fdir, compute fft( frame ), then take the top
    <modes> percent of the frequencies. Threshold these filtered
    images at the mean (of pixels inside the cell boundary). Save the
    thresholded image to fft_frames/ directory.

    fdir : directory to frames

    modes : percentage of modes (low->high) to use for low-pass filter
    """
    # grab all frames, skip the directories
    print "files", files
    if os.path.isdir( files ):
        fdir = files + '/'
        dlist = os.listdir( fdir )
        if os.uname()[0] == 'Linux':
            frames = []
            for f in dlist:
                if f.endswith('npy') and not os.path.isdir( fdir+f ):
                    frames.append( f )
        else:
            frames = [ f for f in dlist if not os.path.isdir( fdir+f ) ]
    else:
        frames = [ files ]
        fdir = files.rpartition( '/' )[0].rpartition( '/' )[0] +'/'
    if not fdir.endswith( '/' ): fdir += '/'
    savedir = fdir + suffix
    # create the directory if necessary
    make_dir( savedir )

    # compute fft and filtered ifft on (normed) images
    for frame in frames:
        if frame.endswith( 'npy' ):
            savename = frame.rstrip( '.npy' )
        elif frame.endswith( 'txt' ):
            savename = frame.rstrip( '.txt' )
        else:
            savename = frame
        fft_data = {}
        # store the modes
        fft_data[ 'modes' ] = modes
        try:
            image = numpy.loadtxt( fdir+frame )
        except ValueError:
            image = numpy.load( fdir+frame )
        except IOError:
            raise
        bnd = numpy.loadtxt( bnd_file )
        # normalize the images and shift so centered at zero
        image = normalize_image( image )
        # FFT
        X = fft_image( image )
        # Y = H * X
        Y = ideal_low_pass( X, r=modes )
        Yinv = ifft_image( Y ) 
        Ypow = log1p( numpy.abs( Yinv )**2 ) 
        # crop the log of the low pass to get rid of the noise outside
        # of the cell (zero out external points using boundary array)
        crop_zeros = bnd * Ypow
        crop_zeros.resize( Ypow.shape )
        # append the cell with zeros cropped [-4]
        #Y.append( crop_zeros ) 
        m = crop_zeros[numpy.where( crop_zeros!=0 )].mean()
        # everything above the mean, [-3]
        #Ymean = numpy.ma.masked_less_equal( crop_zeros, m ) 
        # just the boolean mask, [-2]
        #Ymask = numpy.ma.masked_less_equal( crop_zeros, m ).mask 
        # now populate fft_data with the essentials and save to disk
        #fft_data['fft'] = X
        #fft_data['lowpass'] = Y
        #fft_data['ifft'] = Yinv
        #fft_data['fft_mag'] = Ypow
        fft_data['ifft_nonzero'] = crop_zeros
        fft_data['mean'] = m
        # masking is easy, so no need to save.
        #fft_data['ifft_mask_mean'] = Ymean
        #fft_data['ifft_mask'] = Ymask

        # create filename with chomp-readable name (remove the 'dot'
        # from mode)
        mode_part = str( modes ).partition( '.' )
        mode_str = mode_part[0] + mode_part[2]
        # split files into subdirectories
        datadir = savedir + 'r'+mode_str
        save_suffix = savename+'_r'+mode_str
        make_dir( datadir )
        dataname = datadir + '/' + savename+'_r'+mode_str+'.pkl'

        # save our thresholded data for later analysis
        save_fft( fft_data,  dataname )

        # additional work with chomp
        if make_cubs:
            fft2cub( dataname, datadir )
        if run_chomp:
            if not make_cubs:
                pass
            else:
                cub_name = datadir +'_cub/' + save_suffix + '.cub'
                cbetti_prefix = datadir + '_cbetti/' + save_suffix
                betti_prefix = datadir + '_betti/' + save_suffix
                make_dir( datadir + '_cbetti/' )
                make_dir( datadir + '_betti/' )
                chomp_betti.run_chomp( cub_name, cbetti_prefix+'.cbetti' )
                chomp_betti.extract_betti( cbetti_prefix, betti_prefix )
    "/sciclone/home04/jberwald/data10/wyss/data/Cells_Jesse/Old/frames/old_50125/" "fft_frames/bandpass/smooth_r0708/"
)

# grab files, skip directories
if os.path.isdir(files):
    fdir = files + "/"
    dlist = os.listdir(fdir)
    frames = []
    for f in dlist:
        if f.endswith("npy") and not os.path.isdir(fdir + f):
            frames.append(f)
else:
    frames = [files]
    fdir = files.rpartition("/")[0].rpartition("/")[0] + "/"
# savedir = '/home/kellys/RBC_Deriv_120125_r01/'
# savedir = '/home/kellys/RBC_Deriv_110125_r01/'
savedir = files + "betti/"  #'/home/kellys/RBC_Deriv_120125_r005/'

print "attempting chomp runs.."
for frame in frames:
    filename = frame.rstrip("npy") + "cub"
    savename = frame.rstrip("npy") + "cbetti"
    # CB.png2chomp(fdir + frame)
    arr = numpy.load(fdir + frame)
    w = numpy.where(arr == True)
    # w2 = numpy.where(w[2] == 0)[0]
    newarr = numpy.vstack((w[0], w[1])).T
    CB.array2chomp(newarr, fdir + filename)
    CB.run_chomp(fdir + filename, fdir + savename)
print "finished.."