Python wrapper for running instances of trisurf-ng
Samo Penic
2017-01-20 52e871dbc7bf5b61003718cd3342b5ce5d882c6a
nir_log
@@ -2,6 +2,7 @@
from trisurf import tsmgr
from trisurf import trisurf
from trisurf import statistics
from trisurf import analyses
print("Running trisurf version "+ tsmgr.getTrisurfVersion())
Runs=[]
@@ -43,79 +44,22 @@
      run.setSubdir("run0")
      Runs.append(run)
#----------------------------
#kapa_list=[20,30]
#p=[10]
#
#N=5*Nshell**2+2
#Nc_list=[int(N*pp/100)  for pp in p]
#
#for kapa in kapa_list:
#   for Nc in Nc_list:
#      run=trisurf.Runner(snapshot='is_from_N25k'+str(kapa)+'V0_Nc312_c1.0.vtu')
#      run.setMaindir(("N", "k", "V", "_Nc", "_c","_w","_F"),  ("nshell","xk0","constvolswitch","number_of_vertices_with_c0","c0", "w","F"))
#      run.setSubdir("run0")
#
#      Runs.append(run)
#Here is how we wrap functions
def plotvolume(run, **kwargs):
   from trisurf import analyses
   analyses.plotColumnFromPostProcess(run,column='Volume',**kwargs)
#----------------------------
def plotbondrate(run, **kwargs):
   from trisurf import analyses
   analyses.plotColumnFromPostProcess(run,column='VertexMoveSucessRate',filename='statistics.csv',**kwargs)
#Nov format:
#hosts=({'name':'Hestia','address':'127.0.0.1', 'runs':Runs,  'username':'samo'},)
def analyze(run, **kwargs):
   host=kwargs.get('host', None)
   print("Demo analysis")
   print("Analysis on host "+host['name']+" for run "+run.Dir.fullpath()+" completed")
   print("here comes info on the run variable:")
   print(run)
   print("here comes info on the host variable:")
   print(host)
   print("here comes info on the args variable:")
   print(kwargs.get('args',None))
def plothbar(run, **kwargs):
   import matplotlib.pyplot as plt
   def smooth(y, box_pts):
      import numpy as np
      box = np.ones(box_pts)/box_pts
      y_smooth = np.convolve(y, box, mode='same')
      return y_smooth
   table=trisurf.Statistics(run.Dir.fullpath(),filename='data_tspoststat.csv').getTable()
   plt.plot(table['hbar'], '.')
   plt.title(run.Dir.fullpath())
   plt.xlabel('Iteration')
   plt.ylabel('hbar')
   smooth_window=10
   smoothed=smooth(table['hbar'],smooth_window)
   plt.plot(tuple(range(int(smooth_window/2),len(smoothed)-int(smooth_window/2))),smoothed[int(smooth_window/2):-int(smooth_window/2)])
   plt.show()
   print
   #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):
   import matplotlib.pyplot as plt
   table=trisurf.Statistics(run.Dir.fullpath(),filename='data_tspoststat.csv').getTable()
   def running_avg(col):
      import numpy as np
      avg=[]
      for i in range(0,len(col)):
         avg.append(np.average(col[:-i]))
      return avg
   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')
   plt.show()
def runningavgc0(run, **kwargs):
   from trisurf import analyses
   analyses.plotrunningavginteractive(run, scalar_field='spontaneous_curvature', **kwargs)
#start manager with configured runs
tsmgr.start(Runs, analyses={'analyze1':analyze, 'plotrunningavg':plotrunningavg, 'plothbar':plothbar})
tsmgr.start(Runs, analyses={'demo':analyses.demo,'runningavg':analyses.plotrunningavginteractive, 'plothbar':analyses.plotColumnFromPostProcess, 'plotvol':plotvolume, 'plotbondrate':plotbondrate, 'runningavgC0':runningavgc0})
#statistics.combine(Runs)
#here is how we combine statistics of multiple runs
#statistics.combine([Runs[1],Runs[2]])