Python wrapper for running instances of trisurf-ng
Samo Penic
2017-09-17 a4f8eb21f85326596a491b39e0330882ee8017f0
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,12 +29,14 @@
   print(kwargs.get('args',None))
def plotrunningavginteractive(run, **kwargs):
# can be wrapped to specify scalar_field)
@analysis('plotrunningavginteractive')
def plotrunningavginteractive(run, scalar_field='vertices_idx', **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()
   table=trisurf.Statistics(run.Dir.fullpath(),filename='poststat.csv').getTable()
   def running_avg(col):
      import numpy as np
      avg=[]   
@@ -26,7 +44,7 @@
         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'])
@@ -47,8 +65,8 @@
# -------------------------------
# these functions should be wrapped
# -------------------------------
def plotColumnFromPostProcess(run, filename='data_tspoststat.csv', column='hbar', **kwargs):
@analysis('plotColumnFromPostProcess')
def plotColumnFromPostProcess(run, filename='poststat.csv', column='hbar', **kwargs):
   import matplotlib.pyplot as plt
   def smooth(y, box_pts):