[Yt-svn] yt-commit r819 - trunk/yt/raven
mturk at wrangler.dreamhost.com
mturk at wrangler.dreamhost.com
Fri Oct 10 10:13:00 PDT 2008
Author: mturk
Date: Fri Oct 10 10:12:59 2008
New Revision: 819
URL: http://yt.spacepope.org/changeset/819
Log:
VTK interface is still a mess, but getting better. I've changed it to work
with the new patch I submitted to vtk-developers about a month ago, thus not
requiring the creation of vtkAMRBox objects.
Modified:
trunk/yt/raven/VTKInterface.py
Modified: trunk/yt/raven/VTKInterface.py
==============================================================================
--- trunk/yt/raven/VTKInterface.py (original)
+++ trunk/yt/raven/VTKInterface.py Fri Oct 10 10:12:59 2008
@@ -28,7 +28,7 @@
from enthought.tvtk.tools import ivtk
from enthought.tvtk.api import tvtk
from enthought.traits.api import Float, HasTraits, Instance, Range, Any, \
- Delegate, Tuple
+ Delegate, Tuple, File, Int, Str, CArray
#from yt.reason import *
import sys
@@ -36,31 +36,81 @@
import yt.lagos as lagos
from yt.funcs import *
-#from enthought.pyface.tvtk.wxVTKRenderWindowInteractor \
- #import wxVTKRenderWindowInteractor
+from enthought.tvtk.pyface.ui.wx.wxVTKRenderWindowInteractor \
+ import wxVTKRenderWindowInteractor
-#wxVTKRenderWindowInteractor.USE_STEREO = 1
+wxVTKRenderWindowInteractor.USE_STEREO = 1
class IVTKScene(object):
def __init__(self):
- window = ivtk.IVTKWithCrustAndBrowser(size=(800,600))
+ window = ivtk.IVTKWithCrustAndBrowser(size=(800,600), stereo=True)
window.open()
self.window = window
self.scene = window.scene
-class ExtractedVTKHierarchicalDataSet(IVTKScene):
+class TVTKMapperWidget(HasTraits):
+ lookup_table = Instance(tvtk.LookupTable)
+ alpha_range = Tuple(Float(1.0), Float(1.0))
+ post_call = Any
+
+ def _alpha_range_changed(self, old, new):
+ self.lookup_table.alpha_range = new
+ self.post_call()
+
+class MappingPlane(TVTKMapperWidget):
+ plane = Instance(tvtk.Plane)
+
+ def __init__(self, vmin, vmax, vdefault, **traits):
+ HasTraits.__init__(self, **traits)
+ trait = Range(float(vmin), float(vmax), value=vdefault)
+ self.add_trait("coord", trait)
+ self.coord = vdefault
+ def _coord_changed(self, old, new):
+ orig = self.plane.origin[:]
+ orig[self.axis] = new
+ self.plane.origin = orig
+ self.post_call()
+
+class MappingMarchingCubes(TVTKMapperWidget):
+ cubes = Instance(tvtk.MarchingCubes)
+
+ def __init__(self, vmin, vmax, vdefault, **traits):
+ HasTraits.__init__(self, **traits)
+ trait = Range(float(vmin), float(vmax), value=vdefault)
+ self.add_trait("value", trait)
+ self.value = vdefault
+
+ def _value_changed(self, old, new):
+ self.cubes.set_value(0, new)
+ self.post_call()
+
+
+class ExtractedVTKHierarchicalDataSet(HasTraits):
+
+ parameter_fn = File(filter=["*.hierarchy"])
+ base_grid_level = Int(22)
+ field = Str("Density")
+ scene_frame = Instance(IVTKScene)
+ center = CArray(shape = (3,), dtype = 'float64')
+
+
_gid = 0 # AMRBoxes require unique ids
_grid_boundaries_shown = False
_grid_boundaries_actor = None
- def __init__(self, base_grid, field = "Density",
+ def _scene_frame_default(self):
+ return IVTKScene()
+
+ def _center_default(self):
+ return [0.5,0.5,0.5]
+
+ def _parameter_fn_changed(self,
scene_frame = None, center = None):
- base_gird = ensure_list(base_grid)
- if scene_frame is None: scene_frame = IVTKScene()
- self.scene_frame = scene_frame
+ pf = lagos.EnzoStaticOutput(self.parameter_fn[:-10])
+ base_grid = pf.h.select_grids(self.base_grid_level).tolist()
+ center = pf.h.find_max("Density")[1]
self.scene = self.scene_frame.scene
- self.field = field
self._take_log = True
self._grids = []
self._vtk_objs = []
@@ -70,7 +120,7 @@
self._zs = []
self._vals = []
self.operators = []
- self._oleft_edge = na.min([grid.LeftEdge for grid in base_grid], axis=1)
+ self._oleft_edge = na.min([grid.LeftEdge for grid in base_grid], axis=0)
self._base_level = base_grid[0].Level
self._hdata_set = tvtk.HierarchicalBoxDataSet()
self._mult_factor = 2**base_grid[0].Level
@@ -78,9 +128,10 @@
self._max_val = -1e60
self.left_edge = na.zeros(3, dtype='float64')
#self.right_edge = (base_grid.RightEdge - base_grid.LeftEdge)*self._mult_factor
- self.right_edge = (na.max([grid.RightEdge for grid in base_grid], axis=1) -
+ self.right_edge = (na.max([grid.RightEdge for grid in base_grid], axis=0) -
self._oleft_edge) * self._mult_factor
if center is None: center = (base_grid.RightEdge - base_grid.LeftEdge)/2.0
+ print center, self._oleft_edge, self._mult_factor
self.center = (center - self._oleft_edge)*self._mult_factor
for grid in base_grid:
self._add_grid(grid)
@@ -120,11 +171,9 @@
self._max_val = max(self._max_val, scalars.max())
ug.point_data.scalars = scalars.ravel()
ug.point_data.scalars.name = self.field
- ab = tvtk.AMRBox()
- ab.set_lo_corner(left_index)
- ab.set_hi_corner(right_index)
self._ugs.append(ug)
- self._hdata_set.set_data_set(grid.Level-self._base_level, self._gid, ab, ug)
+ self._hdata_set.set_data_set(grid.Level-self._base_level, self._gid,
+ left_index, right_index, ug)
self._gid +=1
# This is cheap, so we can set it every time
self._hdata_set.set_refinement_ratio(grid.Level-self._base_level, 2)
@@ -270,43 +319,6 @@
def _convert_coords(self, val):
return (self.val - self._oleft_edge)*self._mult_factor
-class TVTKMapperWidget(HasTraits):
- lookup_table = Instance(tvtk.LookupTable)
- alpha_range = Tuple(Float(1.0), Float(1.0))
- post_call = Any
-
- def _alpha_range_changed(self, old, new):
- self.lookup_table.alpha_range = new
- self.post_call()
-
-class MappingPlane(TVTKMapperWidget):
- plane = Instance(tvtk.Plane)
-
- def __init__(self, vmin, vmax, vdefault, **traits):
- HasTraits.__init__(self, **traits)
- trait = Range(float(vmin), float(vmax), value=vdefault)
- self.add_trait("coord", trait)
- self.coord = vdefault
-
- def _coord_changed(self, old, new):
- orig = self.plane.origin[:]
- orig[self.axis] = new
- self.plane.origin = orig
- self.post_call()
-
-class MappingMarchingCubes(TVTKMapperWidget):
- cubes = Instance(tvtk.MarchingCubes)
-
- def __init__(self, vmin, vmax, vdefault, **traits):
- HasTraits.__init__(self, **traits)
- trait = Range(float(vmin), float(vmax), value=vdefault)
- self.add_trait("value", trait)
- self.value = vdefault
-
- def _value_changed(self, old, new):
- self.cubes.set_value(0, new)
- self.post_call()
-
def get_all_parents(grid):
parents = []
if len(grid.Parents) == 0: return grid
@@ -321,16 +333,9 @@
sys.exit()
import yt.lagos as lagos
- #pf = lagos.EnzoStaticOutput("/Users/matthewturk/Research/data/ivtk/DataDump0017")
- pf = lagos.EnzoStaticOutput("/Users/matthewturk/Research/data/galaxy1200.dir/galaxy1200")
- #pf = lagos.EnzoStaticOutput("/Volumes/LaCie/data/dcollins/DD0514/DD0514/data0514")
- v, c = pf.h.find_max("Density")
- #g = pf.h.grids[1883].Parent.Parent.Parent.Parent
- g = pf.h.grids[0]
-
from enthought.pyface.api import GUI
gui = GUI()
- #ehds = ExtractedVTKHierarchicalDataSet(pf.h.select_grids(0)[0], center=c)
- ehds = ExtractedVTKHierarchicalDataSet([g], center=c)
+ ehds = ExtractedVTKHierarchicalDataSet()
+ ehds.configure_traits()
ehds.toggle_grid_boundaries()
gui.start_event_loop()
More information about the yt-svn
mailing list