From 5f0a3578dc6208fede1dc0da0d35fac03e5474d7 Mon Sep 17 00:00:00 2001
From: Samo Penic <samo.penic@gmail.com>
Date: Sat, 14 Jan 2017 08:52:24 +0000
Subject: [PATCH] Additional functionality in VTU renderer. Added capability to specify optional timestep within the run

---
 nir_log                 |   13 ++++++++++---
 trisurf/VTKRendering.py |    8 ++++++--
 2 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/nir_log b/nir_log
index 6e896f5..2b92f9b 100644
--- a/nir_log
+++ b/nir_log
@@ -98,8 +98,10 @@
 	#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 plotrunningavg(run, **kwargs):
+def plotrunningavginteractive(run, **kwargs):
 	import matplotlib.pyplot as plt
+	from trisurf import VTKRendering as vtk
+	import math
 	table=trisurf.Statistics(run.Dir.fullpath(),filename='data_tspoststat.csv').getTable()
 	def running_avg(col):
 		import numpy as np
@@ -107,15 +109,20 @@
 		for i in range(0,len(col)):
 			avg.append(np.average(col[:-i]))
 		return avg
+	fig=plt.figure(1)
 	ra=running_avg(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))
+		vtk.Renderer(kwargs.get('args', None),kwargs.get('host',None),run, math.floor(event.xdata))
+	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':plotrunningavg, 'plothbar':plothbar})
+tsmgr.start(Runs, analyses={'analyze1':analyze, 'plotrunningavg':plotrunningavginteractive, 'plothbar':plothbar})
 
 #statistics.combine(Runs)
 #statistics.combine([Runs[1],Runs[2]])
diff --git a/trisurf/VTKRendering.py b/trisurf/VTKRendering.py
index 0ddb5a0..bc07bc2 100644
--- a/trisurf/VTKRendering.py
+++ b/trisurf/VTKRendering.py
@@ -80,10 +80,11 @@
 
 
 class Renderer:
-	def __init__(self,args,host,run):
+	def __init__(self,args,host,run, timestep=-1):
 		self.host=host
 		self.args=args
 		self.run=run
+		self.timestep=timestep
 		self.renderer = vtkRenderer()
 		self.actor=self.lastActor()
 		self.textactor=self.textActor()
@@ -128,7 +129,10 @@
 		return textactor
 
 	def lastActor(self):
-		self.filename=self.lastVTU()
+		if(self.timestep<0):
+			self.filename=self.lastVTU()
+		else:
+			self.filename=os.path.join("./",self.run.Dir.fullpath(),'timestep_{:06d}.vtu'.format(self.timestep))
 		reader=vtkXMLUnstructuredGridReader()
 		reader.SetFileName(self.filename)
 		reader.Update() # Needed because of GetScalarRange

--
Gitblit v1.9.3