| | |
| | | from . import trisurf |
| | | |
| | | |
| | | def analysis(analysis_name='unnamed_analysis'): |
| | | 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 |
| | | return analysis_decorator |
| | | 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('demo') |
| | | @analysis |
| | | def demo(run, **kwargs): |
| | | host=kwargs.get('host', None) |
| | | print("Demo analysis") |
| | |
| | | |
| | | # can be wrapped to specify scalar_field) |
| | | @analysis('plotrunningavginteractive') |
| | | def plotrunningavginteractive(run, scalar_field='vertices_idx', **kwargs): |
| | | 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 |
| | | 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=[] |
| | |
| | | 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)) |
| | |
| | | # these functions should be wrapped |
| | | # ------------------------------- |
| | | @analysis('plotColumnFromPostProcess') |
| | | def plotColumnFromPostProcess(run, filename='data_tspoststat.csv', column='hbar', **kwargs): |
| | | def plotColumnFromPostProcess(run, filename='poststat.csv', column='hbar', **kwargs): |
| | | import matplotlib.pyplot as plt |
| | | |
| | | def smooth(y, box_pts): |