From 158201fce4bc84680f979e8353ccb98225befc34 Mon Sep 17 00:00:00 2001
From: Miha <miha.fosnaric@fe.uni-lj.si>
Date: Mon, 25 Mar 2019 09:04:05 +0000
Subject: [PATCH] analysis.py updejtan

---
 trisurf/analyses.py |   30 ++++++++++++++++++++++++------
 1 files changed, 24 insertions(+), 6 deletions(-)

diff --git a/trisurf/analyses.py b/trisurf/analyses.py
index 9a063d7..f1f80b0 100644
--- a/trisurf/analyses.py
+++ b/trisurf/analyses.py
@@ -1,6 +1,22 @@
 from . import trisurf
 
 
+def analysis(*args):
+	"""Decorator for adding the analysis functions to function lists"""
+	def analysis_decorator(analysis_function):
+		trisurf._analysis_list[analysis_name]=analysis_function
+		def wrapper(*args, **kwargs):
+			analysis_function(*args,**kwargs)
+		return wrapper
+	if len(args) == 1 and callable(args[0]): #no arguments
+		analysis_name=args[0].__name__
+		return analysis_decorator(args[0])
+	else:
+		analysis_name=args[0]
+		return analysis_decorator
+
+
+@analysis
 def demo(run, **kwargs):
 	host=kwargs.get('host', None)
 	print("Demo analysis")
@@ -13,7 +29,9 @@
 	print(kwargs.get('args',None))
 
 
-def plotrunningavginteractive(run, **kwargs):
+# can be wrapped to specify scalar_field)
+@analysis('plotrunningavginteractive')
+def plotrunningavginteractive(run, scalar_field='hbar', ylabel="1/n sum_i=niter^n(hbar_i)", **kwargs):
 	import matplotlib.pyplot as plt
 	from trisurf import VTKRendering as vtk
 	import math
@@ -26,14 +44,14 @@
 			avg.append(np.average(col[:-i]))
 		return avg
 	def spawned_viewer(n):
-		vtk.Renderer(kwargs.get('args', None),kwargs.get('host',None),run, n)
+		vtk.Renderer(kwargs.get('args', None),kwargs.get('host',None),run, timestep=n,scalar_field=scalar_field)
 
 	fig=plt.figure(1)
-	ra=running_avg(table['hbar'])
-	l=len(table['hbar'])
+	ra=running_avg(table[scalar_field])
+	l=len(table[scalar_field])
 	plt.plot(ra)
 	plt.title('Running average')
-	plt.ylabel('1/n sum_i=niter^n(hbar_i)')
+	plt.ylabel(ylabel)
 	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))
@@ -47,7 +65,7 @@
 # -------------------------------
 # these functions should be wrapped
 # -------------------------------
-
+@analysis('plotColumnFromPostProcess')
 def plotColumnFromPostProcess(run, filename='data_tspoststat.csv', column='hbar', **kwargs):
 	import matplotlib.pyplot as plt
 

--
Gitblit v1.9.3