Пример #1
0
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
Пример #2
0
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 )
Пример #4
0
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) )
Пример #5
0
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))