def main(): global data2d global As # First I need to turn the assignments matrix into a 1D list of assignments sys.stdout = os.fdopen(sys.stdout.fileno(),'w',0) print "Reading in Assignments... from %s " % options.assFN As = io.loadh(options.assFN)['arr_0'].astype(int) print "Reading in data... from %s " % options.dataFN try: f = io.loadh( options.dataFN ) try: data2d = f['arr_0'] except: data2d = f['Data'] except: data = load(options.dataFN) proj = Project.load_from( options.projFN ) data2d = msmTools.reshapeRawData( data, proj ) print "Calculating averages for:" pool = mp.Pool(options.procs) clusters = range( As.max() + 1) result = pool.map_async(calcAvg,clusters[:]) result.wait() sol = result.get() sol = array(sol) savetxt(options.outFN, sol) return
import os, sys, re from scipy.optimize import curve_fit import matplotlib.pyplot as plt import numpy as np import warnings warnings.filterwarnings('ignore','Warning: overflow encountered in exp') def f( x , a, b ): return np.exp( - b * x ) print "Loading data" proj = Serializer.Serializer.LoadFromHDF( options.proj_FN ) data = dataIO.readData( options.raw_FN ) data2d = msmTools.reshapeRawData( data, proj ) print "Calculating autocorrelations" Autos = [ autocorrelate.fft_autocorrelate( trj[ np.where( trj != -1 ) ] ) for trj in data2d ] print "Fitting the data to single exponentials" Fits = [ curve_fit( f, np.arange( len( corr ) ), corr )[0] for corr in Autos ] outName = '.'.join( options.out_FN.split('.')[:-1] ) Fits = np.array( Fits ) np.savetxt( outName + '.dat', Fits ) print "Plotting some fits" indList = np.random.permutation( np.arange( len( Autos ) ) )
def main(): # Need to construct the list of trajframes to use. First look at what the values are for the ones already done. OldTrajFrames = [] for tempDir in dirs2check: tempList = [ fn for fn in os.listdir( tempDir ) if re.search( 'trj\d+_frm\d+$', fn ) ] tempTrajFrames = [ re.search( 'trj(\d+)_frm(\d+)$', fn ).groups() for fn in tempList ] tempTrajFrames = [ [ int( a ), int( b ) ] for (a,b) in tempTrajFrames ] OldTrajFrames.extend( tempTrajFrames ) Xdat = dataIO.readData( options.x_dat ) Ydat = dataIO.readData( options.y_dat ) uniqX = unique( Xdat ) uniqY = unique( Ydat ) diffX = abs( uniqX[1:] - uniqX[:-1] ).min() diffY = abs( uniqY[1:] - uniqY[:-1] ).min() Nx = 1. / diffX Ny = 1. / diffY Xdat = Xdat * ( Nx ) Ydat = Ydat * ( Ny ) if len( Xdat.shape ) > 1: Xdat = Xdat[:,0] if len( Ydat.shape ) > 1: Ydat = Ydat[:,0] Xdat2D = msmTools.reshapeRawData( Xdat.astype(int), Proj ) Ydat2D = msmTools.reshapeRawData( Ydat.astype(int), Proj ) x_interval = [ float( i ) for i in options.x_int.split(',') ] y_interval = [ float( i ) for i in options.y_int.split(',') ] x_range = arange( int( x_interval[0] * Nx ), int( x_interval[1] * Nx ) + 1 ) y_range = arange( int( y_interval[0] * Ny ), int( y_interval[1] * Ny ) + 1 ) #print x_range, y_range #print Xdat.max(), Ydat.max() #print OldTrajFrames # Now construct the list of traj frames to use in the analysis TrajFrames = [] print "Finding conformations..." for Xi in x_range: for Yi in y_range: whichTrajFrames = array( where( ( Xdat2D == Xi ) * ( Ydat2D == Yi) ) ).T if len( whichTrajFrames ) <= 4: ToAddTrajFrames = [ list( i ) for i in whichTrajFrames ] else: ToAddTrajFrames = [ list( pair ) for pair in whichTrajFrames if list( pair ) in OldTrajFrames ] # The above list contains pairs for this x,y for which the simulations have already been done. if len( ToAddTrajFrames ) > 4: ToAddTrajFrames = [ list( pair ) for pair in random.permutation( ToAddTrajFrames )[:4] ] while len( ToAddTrajFrames ) < 4: randPair = whichTrajFrames[ random.randint( len( whichTrajFrames ) ) ] randPair = list( randPair ) # print '\t', randPair, ToAddTrajFrames if randPair in ToAddTrajFrames: continue else: ToAddTrajFrames.append( randPair ) TrajFrames.extend( ToAddTrajFrames ) # print Xi, Yi, ToAddTrajFrames, [ ( Xdat2D[ tuple(pair) ], Ydat2D[ tuple(pair) ] ) for pair in ToAddTrajFrames ] print TrajFrames print "Running the simulations..." run( TrajFrames )
from pyschwancr import dataIO, msmTools import os, sys, re Ass = Serializer.LoadData( args.ass_FN ) Proj = Serializer.LoadFromHDF( args.proj_FN ) if (Ass.max()+1) > 100: print "You have %d states... This is going to be a large pdf file..." % (Ass.max()+1) pp = PdfPages( args.out_FN ) Data = dataIO.readData( args.data_FN ) if len(Data.shape) == 1: Data = msmTools.reshapeRawData( Data, Proj ) x0 = 0 x1 = int(Data.max()+1) if args.x_lbl != None: x_lbl = ' '.join( args.x_lbl ) else: x_lbl = 'Data in State' for i in range( Ass.max() + 1 ): figure() state_dat = Data[ np.where( Ass == i ) ] hist( state_dat, bins=50, log=True,histtype='step',lw=2,range=(x0,x1) )
matplotlib.use("pdf") from matplotlib.pyplot import * from pyschwancr import dataIO, msmTools import os, sys, re print "Loading Data" Xdat = dataIO.readData(options.x_FN)[:, 0] Ydat = dataIO.readData(options.y_FN)[:, 0] Proj = Serializer.Serializer.LoadFromHDF(options.proj_FN) Ass = Serializer.LoadData(options.ass_FN) FCperState = dataIO.readData(options.fc_FN) print Xdat.shape, Ydat.shape Xdat = msmTools.reshapeRawData(Xdat, Proj) Ydat = msmTools.reshapeRawData(Ydat, Proj) keptAssInd = np.where(Ass != -1) Xdat = Xdat[keptAssInd] Ydat = Ydat[keptAssInd] FCdat = FCperState[Ass[keptAssInd]] # The above is all the data, but now we need to average the FC's for conformations at the same point in the projection. if Xdat.shape[0] != Ydat.shape[0] or Ydat.shape[0] != FCdat.shape[0]: print "Data is not the same shape! %d, %d, %d" % (Xdat.shape[0], Ydat.shape[0], FCdat.shape[0]) nx = len(np.unique(Xdat)) ny = len(np.unique(Ydat)) Z = np.zeros((nx, ny))