From a4f8eb21f85326596a491b39e0330882ee8017f0 Mon Sep 17 00:00:00 2001 From: Samo Penic <samo.penic@gmail.com> Date: Sun, 17 Sep 2017 20:09:51 +0000 Subject: [PATCH] Added wrapper to libtrisurf --- trisurf/analyses.py | 4 trisurf/wrapper.py | 203 ++++++++++++++++++++++++++++++++++++++++++++++++++ trisurf/VTKRendering.py | 2 3 files changed, 206 insertions(+), 3 deletions(-) diff --git a/trisurf/VTKRendering.py b/trisurf/VTKRendering.py index 9080a9a..e2223d6 100644 --- a/trisurf/VTKRendering.py +++ b/trisurf/VTKRendering.py @@ -4,7 +4,7 @@ from vtk import * except: print("Vtk rendering works if you manually install vtk7 for python3") - exit(1) +# exit(1) class MultiRender: def __init__(self,args,host): diff --git a/trisurf/analyses.py b/trisurf/analyses.py index 55d2af7..1569eb9 100644 --- a/trisurf/analyses.py +++ b/trisurf/analyses.py @@ -36,7 +36,7 @@ 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=[] @@ -66,7 +66,7 @@ # 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): diff --git a/trisurf/wrapper.py b/trisurf/wrapper.py new file mode 100644 index 0000000..66e4548 --- /dev/null +++ b/trisurf/wrapper.py @@ -0,0 +1,203 @@ +from ctypes import * + +TS_SUCCESS=0 +TS_FAIL=1 + +TS_ID_FILAMENT=1 + +TS_COORD_CARTESIAN=0 +TS_COORD_SPHERICAL=1 +TS_COORD_CYLINDRICAL=2 + + +class ts_coord(Structure): + _fields_=[ + ("e1", c_double), + ("e2", c_double), + ("e3", c_double), + ("coord_type", c_uint) + ] +class ts_vertex(Structure): + pass +class ts_bond(Structure): + pass +class ts_triangle(Structure): + pass +class ts_cell(Structure): + pass +class ts_poly(Structure): + pass +class ts_cluster(Structure): + pass +ts_vertex._fields_=[ + ('idx',c_uint), + ('x',c_double), + ('y',c_double), + ('z',c_double), + ('neigh_no',c_uint), + ('neigh', POINTER(POINTER(ts_vertex))), + ('bond_length', POINTER(c_double)), + ('bond_length_dual',POINTER(c_double)), + ('curvature', c_double), + ('energy', c_double), + ('energy_h',c_double), + ('tristar_no', c_uint), + ('tristar', POINTER(POINTER(ts_triangle))), + ('bond_no',c_uint), + ('bond',POINTER(POINTER(ts_bond))), + ('cell',POINTER(ts_cell)), + ('xk',c_double), + ('c',c_double), + ('id', c_uint), + ('projArea',c_double), + ('relR', c_double), + ('solAngle', c_double), + ('grafted_poly', POINTER(ts_poly)), + ('cluster',POINTER(ts_cluster)), + ] +class ts_vertex_list(Structure): + _fields_=[('n',c_uint), ('vtx',POINTER(POINTER(ts_vertex)))] + +ts_bond._fields_=[('idx',c_uint), + ('vtx1', POINTER(ts_vertex)), + ('vtx2', POINTER(ts_vertex)), + ('bond_length',c_double), + ('bond_length_dual',c_double), + ('tainted', c_char), + ('energy',c_double), + ('x',c_double), + ('y',c_double), + ('z',c_double), + ] +class ts_bond_list(Structure): + _fields_=[('n', c_uint),('bond',POINTER(POINTER(ts_bond)))] + +ts_triangle._fields_=[ + ('idx',c_uint), + ('vertex', POINTER(ts_vertex)*3), + ('neigh_no',c_uint), + ('neigh', POINTER(POINTER(ts_triangle))), + ('xnorm', c_double), + ('ynorm', c_double), + ('znorm', c_double), + ('area', c_double), + ('volume', c_double), + ] + +class ts_triangle_list(Structure): + _fields_=[('n',c_uint),('tria', POINTER(POINTER(ts_triangle)))] + + +ts_cell._fields_=[ + ('idx', c_uint), + ('vertex', POINTER(POINTER(ts_vertex))), + ('nvertex', c_uint), + ] + +class ts_cell_list(Structure): + _fields_=[ + ('ncmax', c_uint*3), + ('cellno', c_uint), + ('cell',POINTER(POINTER(ts_cell))), + ('dcell', c_double), + ('shift', c_double), + ('max_occupancy', c_double), + ('dmin_interspecies', c_double) + ] + +class ts_spharm(Structure): + _fields_=[ + ('l',c_uint), + ('ulm', POINTER(POINTER(c_double))), + # ('ulmComplex', POINTER(POINTER(gsl_complex))), #poisci!!!! + ('ulmComplex', POINTER(POINTER(c_double))), #temporary solution + ('sumUlm2', POINTER(POINTER(c_double))), + ('N', c_uint), + ('co',POINTER(POINTER(c_double))), + ('Ylmi', POINTER(POINTER(c_double))), + ] + +ts_poly._fields_=[ + ('vlist', POINTER(ts_vertex_list)), + ('blist', POINTER(ts_bond_list)), + ('grafted_vtx',POINTER(ts_vertex)), + ('k', c_double), + ] + +class ts_poly_list(Structure): + _fields_=[('n',c_uint),('poly',POINTER(POINTER(ts_poly)))] + +class ts_tape(Structure): + _fields_=[ + ('nshell',c_long), + ('ncxmax',c_long), + ('ncymax',c_long), + ('nczmax',c_long), + ('npoly',c_long), + ('nmono',c_long), + ('internal_poly',c_long), + ('nfil',c_long), + ('nfono', c_long), + ('R_nucleus',c_long), + ('R_nucleusX',c_double), + ('R_nucleusY',c_double), + ('R_nucleusZ',c_double), + ('pswitch',c_long), + ('constvolswitch',c_long), + ('constareaswitch',c_long), + ('constvolprecision',c_double), + ('multiprocessing',c_char_p), + ('brezveze0',c_long), + ('brezveze1',c_long), + ('brezveze2',c_long), + ('xk0',c_double), + ('dmax',c_double), + ('dmin_interspecies',c_double), + ('stepsize',c_double), + ('kspring',c_double), + ('xi',c_double), + ('pressure',c_double), + ('iterations',c_long), + ('inititer',c_long), + ('mcsweeps',c_long), + ('quiet',c_long), + ('shc',c_long), + ('number_of_vertice_with_c0',c_long), + ('c0', c_double), + ('w', c_double), + ('F', c_double), + ] + + +class ts_vesicle(Structure): + _fields_=[ + ('vlist', POINTER(ts_vertex_list)), + ('blist', POINTER(ts_bond_list)), + ('tlist', POINTER(ts_triangle_list)), + ('clist', POINTER(ts_cell_list)), + ('nshell', c_uint), + ('bending_rigidity',c_double), + ('dmax',c_double), + ('stepsize',c_double), + ('cm', c_double*3), + ('volume', c_double), + ('sphHarmonics',POINTER(ts_spharm)), + ('poly_list', POINTER(ts_poly_list)), + ('filament_list', POINTER(ts_poly_list)), + ('spring_constant', c_double), + ('pressure', c_double), + ('pswitch', c_int), + ('tape', POINTER(ts_tape)), + ('R_nucleus', c_double), + ('R_nucleusX', c_double), + ('R_nucleusY', c_double), + ('R_nucleusZ', c_double), + ('nucleus_center', c_double *3 ), + ('area', c_double), + ] + +ts_cluster._fields_=[('nvtx',c_uint),('idx',c_uint),('vtx', POINTER(POINTER(ts_vertex)))] + +class ts_cluster_list(Structure): + _fields_=[('n',c_uint),('poly',POINTER(POINTER(ts_cluster)))] + -- Gitblit v1.9.3