from glob import glob
import numpy as np


histo_files = glob('histo*.dat')
stats_files = glob('stats*.dat')
complete_files=glob('*.dat')
binsize=25
binstart = 120#old value
endbin = 40
mean_bins = 80
pausestart=40
maxbins=21
END=1
offset=0
DYNAMIC=0
for files in histo_files:
	if END:
		num=-1
		freq=1
		text = files.split('_')
		for things in text:
			if things.startswith('freq'):
				temp = things.split('freq')
				if temp[1]!='':
					freq = float(temp[1].rstrip('.dat'))
			if things.startswith('number'):
				temp = things.split('number')
				if temp[1] !='':
					num = int(temp[1].rstrip('.dat'))
		if num < 0:
			DYNAMIC=1
		else:		
			offset = int(1000.0/freq*(num-1)/(1.0*binsize))
			print( offset)
					
	print(files)
	outname = 'tpose' +files.split('histos')[1]
	statsname = 'stats'+files.split('histos')[1]
	steadname = 'steady'+files.split('histos')[1]
	
	if outname in complete_files and steadname in complete_files:
		continue
		
	xval, yval = np.loadtxt(statsname,unpack=True,usecols=[0,1])

	data = np.loadtxt(files)
	try:
		nbins = len(data[0])
	except:
		print( files)
		continue
	bins = [-1,-1]
	for i in range(nbins):
		bins.append(i*binsize)
		


	
	steadydata = []
	for i in range(len(data)):
		shifted_data = np.concatenate((data[i][pausestart:],data[i][:pausestart-1])) # initial step now

		mean = np.mean(shifted_data[nbins-mean_bins:]) #background mean
		row = [yval[i],xval[i],mean]
		if DYNAMIC:
			offset = int(1000.0/freq*(yval[i]-1)/(1.0*binsize))
			print( i, offset)
		for j in range(maxbins-1):
			items = [] 
			for k in range(nbins): # means of equal intervals
				if k<nbins-mean_bins or k>=nbins-j-1:
					continue
				#print data[i][k:k+j+1]
				#quit()
				items.append(np.mean(data[i][k:k+j+1])) # mean of background interval of length pause
			#print items
			#quit()
			locmean = np.mean(shifted_data[offset:j+1+offset]) # mean of pause
			locvar = np.std(items) # variance of background intervals
			row.append(locmean/mean)
			row.append(locvar/mean)
		steadydata.append(row)
		#print row
	
	#steadydata = np.transpose(steadydata)
	np.savetxt(steadname,steadydata)
	
			
	#print len(data), len(data[0]), len(xval)	
			

	
	data = np.insert(data,0,yval,axis=1)
	data = np.insert(data,0,xval,axis=1)
	#print len(data), len(data[0]), len(xval)
	data = np.insert(data,0,[bins],axis=0)
	
	outdata = np.transpose(data)
	
	#print outname
	np.savetxt(outname,outdata)
	#quit()
