



import numpy as np
from sys import argv
import matplotlib.pyplot as plt
import seaborn as sns
from math import ceil

if len(argv) < 3:
	print 'expects fname, nx'
	quit()
SKIP = 0
fname = argv[1]
col1 = 0
col2 = 1
col3 = 13
xpr=2
ypr=2
#nx = int(argv[2])
remove_cont = 0
col3 = int(argv[2])



path = fname.split('/')
temp = path[-1].split('_')

#print temp

if len(temp)>2:
	xlabel = temp[0]
	ylabel = temp[2] # output format is a_vs_b_prefix.dat
	
else:
	xlabel ='xlabel'
	ylabel ='ylabel'
xsc =1
ysc=1

offset = 0
blah = 3
for things in argv:
	if len(things.split('='))>1:
		temp = things.split('=')
		try:
			exec(things)
		except:
			temp[1] = str(temp[1])
			exec('%s=\'%s\'' % (temp[0],temp[1]))

if xlabel == 'iamp':
	xsc = 1000
	xlabel = 'Applied Current (pA)'

if ylabel == 'slow':
	ysc = 20
	ylabel = 'Peak I1-I2 Rate (1/s)'

if col3 == 4:
	vmn = 0
	vmx = 2000
	offset = -2000
	zlabel = 'Burst Duration (ms)'
	
if col3 == 5:
	vmn = 0
	vmx = 1
	remove_cont=1
	zlabel = 'Spike Amp. Ratio (Last/First)'

if col3 == 2:
	vmn = 0
	vmx = 10
	zlabel = 'Burst Duration (Spikes)'
	
if col3 == 3:
	vmn = 0
	remove_cont=1
	#vmx = 20
	zlabel = 'Burst Frequency (Hz)'
	
if col3 == 8:
	vmn = -50
	vmx = -30
	zlabel = 'Dep. Block Voltage (mV)'

xd,yd,zd= np.loadtxt(fname, usecols=(col1,col2,col3),unpack=True)


ny = 0
startx = xd[0]
for things in xd:
	if things == startx:
		ny+=1
		
nx = int(len(xd)/ny)
if len(zd)%nx != 0:
	print 'problem with data length'
	quit()

#if col3!=5:
#	md=np.loadtxt(fname, usecols=(5),unpack=True)
#else:
#	md = zd

ny = len(zd)/nx

zt = zd + offset
zd = zt
zt = None

temp = yd[0]
x1 = xd[0]
y1 = yd[0]
z1 = zd[0]
#m1 = md[0]

#print nx, ny
xt = []
yt = []
zt = []
#qt = []
#mt = []

for i in range(ny): #flatten probably would be better
	for j in range(nx):
		xt.append(xd[j*ny+i])
		yt.append(yd[j*ny+i])
		zt.append(zd[j*ny+i])
		#qt.append(qd[j*ny+i])
		#mt.append(md[j*ny+i])
		#print xt[i*nx+j], yt[i*nx+j], zt[i*nx+j], qt[i*nx+j]
		
#quit()
stahp = 1
temp = yt[0]
for i in range(len(zt)):
	#if (qt[i] < 4000 or mt[i] < 0.25):
	#print xt[i], yt[i], zt[i]
	if zt[i] < 500:
		if stahp:
			print x1, y1, z1#, qt[i], mt[i]
			if stahp:
			  stahp = 0
		zt[i]=0
	elif yt[i] == temp:
		x1 = xt[i]*xsc
		y1 = yt[i]*ysc
		z1 = zt[i]
		
		#print x1, y1, z1
	else:
		stahp = 1
		temp = yt[i]

