Python wrapper for running instances of trisurf-ng
Samo Penic
2017-01-14 5f0a3578dc6208fede1dc0da0d35fac03e5474d7
Additional functionality in VTU renderer. Added capability to specify optional timestep within the run
2 files modified
21 ■■■■ changed files
nir_log 13 ●●●● patch | view | raw | blame | history
trisurf/VTKRendering.py 8 ●●●● patch | view | raw | blame | history
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]])
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