[Yt-svn] yt: Adding basic, prelimianry Celeritas support
hg at spacepope.org
hg at spacepope.org
Wed Mar 24 13:01:43 PDT 2010
hg Repository: yt
details: yt/rev/f7a45b5105fc
changeset: 1476:f7a45b5105fc
user: Matthew Turk <matthewturk at gmail.com>
date:
Wed Mar 24 13:01:39 2010 -0700
description:
Adding basic, prelimianry Celeritas support
diffstat:
yt/extensions/image_panner/__init__.py | 3 +-
yt/extensions/image_panner/vm_panner.py | 48 ++++++++++++++++++++++-
2 files changed, 47 insertions(+), 4 deletions(-)
diffs (93 lines):
diff -r 1561615dd7c9 -r f7a45b5105fc yt/extensions/image_panner/__init__.py
--- a/yt/extensions/image_panner/__init__.py Wed Mar 24 00:24:43 2010 -0700
+++ b/yt/extensions/image_panner/__init__.py Wed Mar 24 13:01:39 2010 -0700
@@ -22,4 +22,5 @@
"""
from vm_panner import VariableMeshPanner, WindowedVariableMeshPanner, \
- MultipleWindowVariableMeshPanner, ImageSaver
+ MultipleWindowVariableMeshPanner, ImageSaver, \
+ PanningCeleritasStreamer
diff -r 1561615dd7c9 -r f7a45b5105fc yt/extensions/image_panner/vm_panner.py
--- a/yt/extensions/image_panner/vm_panner.py Wed Mar 24 00:24:43 2010 -0700
+++ b/yt/extensions/image_panner/vm_panner.py Wed Mar 24 13:01:39 2010 -0700
@@ -22,6 +22,7 @@
"""
import numpy as na
+import types, os
from yt.raven import FixedResolutionBuffer, ObliqueFixedResolutionBuffer
from yt.lagos import data_object_registry, AMRProjBase, AMRSliceBase, \
x_dict, y_dict
@@ -194,7 +195,8 @@
engine_id = len(self.windows)
an = "_args_%s" % id(self)
kn = "_kwargs_%s" % id(self)
- kwargs['callback'] = ImageSaver(engine_id)
+ if 'callback' not in kwargs:
+ kwargs['callback'] = ImageSaver(engine_id)
self.mec.push({an: args, kn: kwargs}, engine_id)
exec_string = "%s = %s.h.windowed_image_panner(%s, *%s, **%s)" % (
self._var_name, self._pf_name, self._source_name, an, kn)
@@ -217,8 +219,10 @@
an = "_args_%s" % self._cid
kn = "_kwargs_%s" % self._cid
self.mec.push({an: args, kn: kwargs}, self.engine_id)
- self.mec.execute("%s = %s.%s(*%s, **%s)" % (
- vn, self._var_name, fname, an, kn), self.engine_id)
+ exec_string = "%s = %s.%s(*%s, **%s)" % (
+ vn, self._var_name, fname, an, kn)
+ print "Executing %s on %s" % (exec_string, self.engine_id)
+ self.mec.execute(exec_string, self.engine_id)
return self.mec.pull(vn, self.engine_id)
return func
new_dict = {}
@@ -259,6 +263,12 @@
def _regenerate_buffer(self):
return
+ def _run_callback(self):
+ self.mec.execute("%s._regenerate_buffer()" % self._var_name,
+ self.engine_id)
+ self.mec.execute("%s.callback(%s.buffer)" % (
+ self._var_name, self._var_name), self.engine_id)
+
class ImageSaver(object):
def __init__(self, tile_id):
self.tile_id = tile_id
@@ -278,3 +288,35 @@
self.pylab.imshow(na.log10(val), interpolation='nearest')
self.pylab.savefig("wimage_%03i.png" % self.tile_id)
+class PanningCeleritasStreamer(object):
+ _initialized = False
+ def __init__(self, tile_id, cmap = "algae", port = 9988,
+ zlim = (0.0, 1.0)):
+ self.tile_id = tile_id
+ self._port = port
+ self.cmap = cmap
+ self.zlim = zlim
+
+ def initialize(self, shape):
+ if isinstance(self.cmap, types.StringTypes):
+ import matplotlib.cm
+ self.cmap = matplotlib.cm.get_cmap(self.cmap)
+
+ import celeritas_streamer
+ self.cs = celeritas_streamer.CeleritasStream()
+ #print "Setting shape: %s and port: %s in %s" % (
+ # shape, self._port, os.getpid())
+ self.cs.setSize(*shape)
+ self.cs.setLocalPort(self._port)
+ self.cs.initialize()
+ self._initialized = True
+
+ def __call__(self, val):
+ if not self._initialized: self.initialize(val.shape)
+ vv = val.copy()
+ na.subtract(vv, self.zlim[0], vv)
+ na.divide(vv, (self.zlim[1]-self.zlim[0]), vv)
+ new_buf = self.cmap(vv)
+ na.multiply(new_buf, 255.0, new_buf)
+ new_buf = new_buf[:,:,:3].astype('uint8')
+ self.cs.readFromRGBMemAndSend(new_buf)
More information about the yt-svn
mailing list