From d2f7b0c053e93b4d409d9661dbaff2eedcf391c1 Mon Sep 17 00:00:00 2001
From: Samo Penic <samo.penic@gmail.com>
Date: Sat, 14 Jan 2017 22:06:35 +0000
Subject: [PATCH] Added analyses collection file into trisurf package

---
 nir_log             |   92 +++---------------------------
 trisurf/analyses.py |   72 ++++++++++++++++++++++++
 2 files changed, 82 insertions(+), 82 deletions(-)

diff --git a/nir_log b/nir_log
index 9deaece..947c729 100644
--- a/nir_log
+++ b/nir_log
@@ -2,6 +2,7 @@
 from trisurf import tsmgr
 from trisurf import trisurf
 from trisurf import statistics
+from trisurf import analyses
 
 print("Running trisurf version "+ tsmgr.getTrisurfVersion())
 Runs=[]
@@ -43,92 +44,19 @@
 		run.setSubdir("run0")
 		Runs.append(run)
 
-#----------------------------
 
-#kapa_list=[20,30]
-#p=[10]
-#
-#N=5*Nshell**2+2
-#Nc_list=[int(N*pp/100)  for pp in p]
-#
-#for kapa in kapa_list:
-#	for Nc in Nc_list:
-#		run=trisurf.Runner(snapshot='is_from_N25k'+str(kapa)+'V0_Nc312_c1.0.vtu')
-#		run.setMaindir(("N", "k", "V", "_Nc", "_c","_w","_F"),  ("nshell","xk0","constvolswitch","number_of_vertices_with_c0","c0", "w","F"))
-#		run.setSubdir("run0")
-#
-#		Runs.append(run)
+#Here is how we wrap functions
+def plotvolume(run, **kwargs):
+	from trisurf import analyses
+	analyses.plotColumnFromPostProcess(run,column='Volume',**kwargs)
 
-#----------------------------
+def plotbondrate(run, **kwargs):
+	from trisurf import analyses
+	analyses.plotColumnFromPostProcess(run,column='VertexMoveSucessRate',filename='statistics.csv',**kwargs)
 
 
-
-#Nov format:
-#hosts=({'name':'Hestia','address':'127.0.0.1', 'runs':Runs,  'username':'samo'},)
-
-def analyze(run, **kwargs):
-	host=kwargs.get('host', None)
-	print("Demo analysis")
-	print("Analysis on host "+host['name']+" for run "+run.Dir.fullpath()+" completed")
-	print("here comes info on the run variable:")
-	print(run)
-	print("here comes info on the host variable:")
-	print(host)
-	print("here comes info on the args variable:")
-	print(kwargs.get('args',None))
-
-def plothbar(run, **kwargs):
-	import matplotlib.pyplot as plt
-
-	def smooth(y, box_pts):
-		import numpy as np
-		box = np.ones(box_pts)/box_pts
-		y_smooth = np.convolve(y, box, mode='same')
-		return y_smooth
-	table=trisurf.Statistics(run.Dir.fullpath(),filename='data_tspoststat.csv').getTable()
-	plt.plot(table['hbar'], '.')
-	plt.title(run.Dir.fullpath())
-	plt.xlabel('Iteration')
-	plt.ylabel('hbar')
-	smooth_window=10
-	smoothed=smooth(table['hbar'],smooth_window)
-	plt.plot(tuple(range(int(smooth_window/2),len(smoothed)-int(smooth_window/2))),smoothed[int(smooth_window/2):-int(smooth_window/2)])
-	plt.show()
-	print
-	#if return False or no return statement, the analysis will continue with next running instance in the list. if return True, the analysis will stop after this run.
-	return False
-
-def plotrunningavginteractive(run, **kwargs):
-	import matplotlib.pyplot as plt
-	from trisurf import VTKRendering as vtk
-	import math
-	from multiprocessing import Process
-	table=trisurf.Statistics(run.Dir.fullpath(),filename='data_tspoststat.csv').getTable()
-	def running_avg(col):
-		import numpy as np
-		avg=[]	
-		for i in range(0,len(col)):
-			avg.append(np.average(col[:-i]))
-		return avg
-	def spawned_viewer(n):
-		vtk.Renderer(kwargs.get('args', None),kwargs.get('host',None),run, n)
-
-	fig=plt.figure(1)
-	ra=running_avg(table['hbar'])
-	l=len(table['hbar'])
-	plt.plot(ra)
-	plt.title('Running average')
-	plt.ylabel('1/n sum_i=niter^n(hbar_i)')
-	plt.xlabel('n')
-	def onclick(event):
-		#print('button=%d, x=%d, y=%d, xdata=%f, ydata=%f' % (event.button, event.x, event.y, event.xdata, event.ydata))
-		p=Process(target=spawned_viewer, args=(l-math.floor(event.xdata)-1,))
-		p.start()
-	cid = fig.canvas.mpl_connect('button_press_event', onclick)
-	plt.show()
-	plt.close(1)
 #start manager with configured runs
-tsmgr.start(Runs, analyses={'analyze1':analyze, 'plotrunningavg':plotrunningavginteractive, 'plothbar':plothbar})
+tsmgr.start(Runs, analyses={'demo':analyses.demo,'runningavg':analyses.plotrunningavginteractive, 'plothbar':analyses.plotColumnFromPostProcess, 'plotvol':plotvolume, 'plotbondrate':plotbondrate})
 
-#statistics.combine(Runs)
+#here is how we combine statistics of multiple runs
 #statistics.combine([Runs[1],Runs[2]])
diff --git a/trisurf/analyses.py b/trisurf/analyses.py
new file mode 100644
index 0000000..9a063d7
--- /dev/null
+++ b/trisurf/analyses.py
@@ -0,0 +1,72 @@
+from . import trisurf
+
+
+def demo(run, **kwargs):
+	host=kwargs.get('host', None)
+	print("Demo analysis")
+	print("Analysis on host "+host['name']+" for run "+run.Dir.fullpath()+" completed")
+	print("here comes info on the run variable:")
+	print(run)
+	print("here comes info on the host variable:")
+	print(host)
+	print("here comes info on the args variable:")
+	print(kwargs.get('args',None))
+
+
+def plotrunningavginteractive(run, **kwargs):
+	import matplotlib.pyplot as plt
+	from trisurf import VTKRendering as vtk
+	import math
+	from multiprocessing import Process
+	table=trisurf.Statistics(run.Dir.fullpath(),filename='data_tspoststat.csv').getTable()
+	def running_avg(col):
+		import numpy as np
+		avg=[]	
+		for i in range(0,len(col)):
+			avg.append(np.average(col[:-i]))
+		return avg
+	def spawned_viewer(n):
+		vtk.Renderer(kwargs.get('args', None),kwargs.get('host',None),run, n)
+
+	fig=plt.figure(1)
+	ra=running_avg(table['hbar'])
+	l=len(table['hbar'])
+	plt.plot(ra)
+	plt.title('Running average')
+	plt.ylabel('1/n sum_i=niter^n(hbar_i)')
+	plt.xlabel('n')
+	def onclick(event):
+		#print('button=%d, x=%d, y=%d, xdata=%f, ydata=%f' % (event.button, event.x, event.y, event.xdata, event.ydata))
+		p=Process(target=spawned_viewer, args=(l-math.floor(event.xdata)-1,))
+		p.start()
+	cid = fig.canvas.mpl_connect('button_press_event', onclick)
+	plt.show()
+	plt.close(1)
+
+
+# -------------------------------
+# these functions should be wrapped
+# -------------------------------
+
+def plotColumnFromPostProcess(run, filename='data_tspoststat.csv', column='hbar', **kwargs):
+	import matplotlib.pyplot as plt
+
+	def smooth(y, box_pts):
+		import numpy as np
+		box = np.ones(box_pts)/box_pts
+		y_smooth = np.convolve(y, box, mode='same')
+		return y_smooth
+	table=trisurf.Statistics(run.Dir.fullpath(),filename=filename).getTable()
+	plt.plot(table[column], '.')
+	plt.title(run.Dir.fullpath())
+	plt.xlabel('Iteration')
+	plt.ylabel(column)
+	smooth_window=10
+	smoothed=smooth(table[column],smooth_window)
+	plt.plot(tuple(range(int(smooth_window/2),len(smoothed)-int(smooth_window/2))),smoothed[int(smooth_window/2):-int(smooth_window/2)])
+	plt.show()
+	print
+	#if return False or no return statement, the analysis will continue with next running instance in the list. if return True, the analysis will stop after this run.
+	return False
+
+

--
Gitblit v1.9.3