From 05976d8ba4b5bcfbbfb5d69512792c67b244c3b2 Mon Sep 17 00:00:00 2001 From: bryancole Date: Wed, 19 May 2021 17:04:22 +0100 Subject: [PATCH] Got temporal focusing example working better. Added save_plot method to intensity_image view object. --- examples/temporal_focusing_microscopy_example.py | 13 +++++++++++-- raypier/gausslet_sources.py | 1 - raypier/intensity_image.py | 14 +++++++++++--- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/examples/temporal_focusing_microscopy_example.py b/examples/temporal_focusing_microscopy_example.py index ed1bc52..ac7d1d9 100644 --- a/examples/temporal_focusing_microscopy_example.py +++ b/examples/temporal_focusing_microscopy_example.py @@ -37,19 +37,20 @@ # E_vector=(0,0,1) # ) -grating = RectangularGrating(centre=(80.0,0.,0.), +grating = RectangularGrating(centre=(220.0,0.,0.), direction=(-1,1,0.), length=15., width=20.0, thickness=3.0, lines_per_mm=1400.0) +grating.orientation = 45.5 lens1 = PlanoConvexLens(centre=(40.0,0.0,0.0), direction=(-1,0,0), diameter=25.0, CT=6.0, n_inside=1.6, - curvature=25.0) + curvature=100.0) lens2 = PlanoConvexLens(centre=(10.0,-30.0,0.0), direction=(0,1,0), @@ -91,6 +92,14 @@ class MyConstraint(Constraint): @observe("time, time_offset") def on_time_change(self, evt): field.time_ps = self.time + self.time_offset + + + def animate(self, dt, count): + for i in range(count): + field.time_ps = self.time + self.time_offset + i*dt + U = field.intensity + print("Calc:", i) + image.save_plot(f"/home/bryan/tmp/range_{i:03d}.png") cst = MyConstraint() diff --git a/raypier/gausslet_sources.py b/raypier/gausslet_sources.py index 6d0f262..2dd165d 100644 --- a/raypier/gausslet_sources.py +++ b/raypier/gausslet_sources.py @@ -12,7 +12,6 @@ from raypier.tracer import normaliseVector from raypier.editors import NumEditor from raypier.decompositions import decompose_angle, make_hexagonal_grid -from virtualenv.create.via_global_ref.builtin import via_global_self_do class BaseGaussletSource(BaseRaySource): diff --git a/raypier/intensity_image.py b/raypier/intensity_image.py index 1e655e8..eca9c8e 100644 --- a/raypier/intensity_image.py +++ b/raypier/intensity_image.py @@ -8,7 +8,7 @@ from chaco.default_colormaps import Spectral from enable.api import ComponentEditor, KeySpec -from chaco.tools.api import PanTool, ZoomTool +from chaco.tools.api import PanTool, ZoomTool, SaveTool from .results import Result from .fields import EFieldPlane @@ -158,6 +158,8 @@ def _hbox_default(self): hbox.add(self.plot) hbox.add(self.cbar) #hbox.bgcolor = 'sys_window' + save_tool = SaveTool(component=hbox, filename="/home/bryan/saved_plot.png") + hbox.tools.append(save_tool) return hbox def _cbar_default(self): @@ -202,12 +204,18 @@ def _plot_default(self): plot.x_axis.title = "Width /mm" plot.y_axis.title = "Height /mm" a = probe.centre - plot.title = f"Intensity @ ({a[0]:0.3f}, {a[1]:0.3f}, {a[2]:0.3f})" + #plot.title = f"Intensity @ ({a[0]:0.3f}, {a[1]:0.3f}, {a[2]:0.3f})" pantool = PanTool(plot) #self.pan_tool pantool = self.pan_tool pantool.component = self.image_plot self.pan_tool = pantool plot.tools.append(pantool) - return plot + + def save_plot(self, filename): + from chaco.api import PlotGraphicsContext + component = self.hbox + gc = PlotGraphicsContext((int(component.outer_width), int(component.outer_height))) + component.draw(gc, mode="normal") + gc.save(filename)