#Michael Vernon Riedlin
#A graphing tool for Market sim

from pylab import *

#This is intended as a base class
class graphtool:
	#Grabs agent data from market object
	def __init__(self, market):
		self._master = market._agents
		#self._time = 

	#a test function
	def graph(self, number):
		plot(self._master[number]._q1)
		xlabel('time')
		ylabel('wealth')
		show()

#This is an average graph object, that inherits graphtool
class Average(graphtool):
	def __init__(self, market):
		graphtool.__init__(self, market)

		self.wealth1 	= []
		self.wealth2 	= []
		self.avg1 	= []
		self.avg2	= []
	def timeaverage(self):
		self.avg1 = []
		self.avg2 = []
		print "length: ", len(self._master[0]._q1)
		#This loop fills avg1, avg2 with the average values at each time step
		for i in xrange(len(self._master[0]._q1)):
			self.wealth1 = []
			self.wealth2 = []
			for j in xrange(len(self._master)):
				if self._master[j]._dead == -1:
					self.wealth1.append(self._master[j]._q1[i])
					self.wealth2.append(self._master[j]._q2[i])
				elif (self._master[j]._dead > -1 and i < self._master[j]._dead):
					self.wealth1.append(self._master[j]._q1[i])
					self.wealth2.append(self._master[j]._q2[i])
				else:
					print "dead?!"
			print self.wealth1
			print self.wealth2
			print len(self.wealth2), i
			self.avg1.append(average(self.wealth1))
			self.avg2.append(average(self.wealth2))
		#Plot the averages

		f0 = figure()
		f1 = figure()
		f2 = figure()

		ax0 = f0.add_subplot(111)
		ax0.plot(self.avg1[0:100], 'r')
		ax1 = f0.add_subplot(111)
		ax1.plot(self.avg2[0:100], 'b')
		xlabel('time')
		ylabel('amount')

		bx0 = f1.add_subplot(111)
		bx1 = f1.add_subplot(111)
		bx0.plot(self.avg1[0:1], 'g')
		bx1.plot(self.avg2[0:1], 'b')
		#title('Wealth Time Averages')
		xlabel('time')
		ylabel('amount')

		cx0 = f2.add_subplot(111)
		cx1 = f2.add_subplot(111)
		cx0.plot(self.avg1[0:3], 'g')
		cx1.plot(self.avg2[0:3], 'b')
		#title('Wealth Time Averages')
		xlabel('time')
		ylabel('amount')

		show()

class Dist(graphtool):
	def final(self):
		x = len
