New file |
| | |
| | | from trisurf.trisurf import Directory, Tape |
| | | from trisurf import trisurf as ts |
| | | #from hashlib import md5 |
| | | import os |
| | | import django |
| | | import sys |
| | | os.chdir('/home/samo/trisurf-server') |
| | | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "web_trisurf.settings") |
| | | django.setup() |
| | | from database import models |
| | | |
| | | import numpy as np |
| | | import ipyvolume as ipv |
| | | import meshio |
| | | import matplotlib.pyplot as plt |
| | | import uuid |
| | | |
| | | def read_mesh(filename): |
| | | tmpfilename='/tmp/{}.vtu'.format(str(uuid.uuid4())) |
| | | with open (filename) as f: |
| | | contents=f.read() |
| | | valid_vtu=contents[0:contents.find("<trisurfversion>")]+contents[contents.find("<UnstructuredGrid>"):] |
| | | with open (tmpfilename, 'w') as f: |
| | | f.write(valid_vtu) |
| | | mesh=meshio.read(tmpfilename) |
| | | os.unlink(tmpfilename) |
| | | return mesh |
| | | |
| | | def display_vesicle(run, iteration=None, colormap='bwr', point_data='vertices_idx'): |
| | | cmap=plt.get_cmap(colormap) |
| | | if iteration is not None: |
| | | filename=os.path.join(run.Dir.fullpath(),'timestep_{:06d}.vtu'.format(int(iteration))) |
| | | else: |
| | | filename=os.path.join(run.Dir.fullpath(),run.getLastVTU()) |
| | | mesh=read_mesh(filename) |
| | | fig=ipv.figure() |
| | | color_data=mesh.point_data[point_data]/mesh.point_data[point_data].max() |
| | | points=mesh.points.transpose() |
| | | trimesh=ipv.plot_trisurf(*points, triangles=mesh.cells['triangle'], color=[c[0:3] for c in cmap(color_data)]) |
| | | ipv.xlim(points[0,:].min(),points[0,:].max()) |
| | | ipv.ylim(points[1,:].min(),points[1,:].max()) |
| | | ipv.zlim(points[2,:].min(),points[2,:].max()) |
| | | ipv.squarelim() |
| | | #ipv.style.use('nobox') |
| | | #ipv.pylab.style.use('nobox') |
| | | return fig #ipv.show() |
| | | |
| | | |
| | | def database2runs(objs): |
| | | runs=[] |
| | | for obj in objs: |
| | | r=ts.Runner(tape='/home/samo/trisurf-tapes/{}/tape'.format(obj.id)) |
| | | r.maindir=obj.simulation.directory |
| | | r.subdir=obj.subdir |
| | | runs.append(r) |
| | | return runs |