Exemple #1
0
def test_contours():
    from enthought.tvtk.api import tvtk
    from numpy import *
    import pickle,numpy
    from openravepy import *
    env = Environment()
    env.SetViewer('qtcoin')

    N = 50
    Nj = N*(0+1j)
    x, y, z = numpy.mgrid[-10:10:Nj, -10:20:Nj, -10:40:Nj]
    scalars = x*x + 2.0*y*y + z*z/2.0
    spacing=array((0.005,0.005,0.005))
    id = tvtk.ImageData(origin=array((numpy.min(x),numpy.min(y),numpy.min(z))),spacing=spacing,dimensions=scalars.shape)
    id.point_data.scalars = scalars.ravel()

    with open('tris.pp','r') as f:
        x,y,z,t,sweptdata = pickle.load(f)
    sweptdata = array(sweptdata,'float64')
    #sweptdata = sweptdata[0:61,0:60,0:60]
    id = tvtk.ImageData(origin=array((0,0,0)),spacing=array((0.005,0.005,0.005)),dimensions=sweptdata.shape[::-1])
    id.point_data.scalars = 100.0*sweptdata.ravel()

    m = tvtk.MarchingCubes()
    m.set_input(id)
    m.set_value(0,0.5)
    m.update()
    o = m.get_output()
    newpoints = array(o.points)

    h = env.plot3 (points=newpoints,pointsize=2.0,colors=array((1,0,0)))

    indices = array(o.polys.data)
    indices = array(reshape(indices,(int(len(indices)/4),4)),'int')
    h2 = env.drawtrimesh (points=newpoints,indices=indices[:,1:4],colors=array((0,0,1,0.5)))
Exemple #2
0
 def _update_image_data_fired(self):
     sp = tuple(self.spacing)
     o = tuple(self.origin)
     self.image_data = tvtk.ImageData(spacing=sp, origin=o)
     sd = self.scalar_data
     if sd is not None:
         self._scalar_data_changed(sd)
Exemple #3
0
def image_data():
    data = random.random((3, 3, 3))
    i = tvtk.ImageData(spacing=(1, 1, 1), origin=(0, 0, 0))
    i.point_data.scalars = data.ravel()
    i.point_data.scalars.name = 'scalars'
    i.dimensions = data.shape
    return i
Exemple #4
0
    def __init__(self, **kw_args):
	super(PPCoordSource, self).__init__(**kw_args)
	fn=kw_args.pop('file_name', None)

        dir=os.path.dirname(self.file_name)
        phparams=os.path.join(dir, "phasingparams.py")

	engine=kw_args.pop('engine', None)

	self.engine.add_trait('dataarrays', Dict)
	self.engine.add_trait('coords', Dict)

	if self.engine.coords.has_key(phparams):
	   self.coords=self.engine.coords[phparams]
	else:
	   self.engine.coords[phparams]=cs.CoordSystem()
	   self.coords=self.engine.coords[phparams]
	   self.coords.exec_param_file(phparams)
	self.coords.on_trait_change(self._coords_changed, 'T')

	if fn is not None:
		self.file_name= fn
		self._open(self.file_name)

	dims=self.dataarray.shape
	print "init coords update start"
        self.coords.UpdateCoordSystem(dims)
	print "init coords update end"

	self.sg=tvtk.StructuredGrid()
	self.im=tvtk.ImageData()
	self.component="Real"
	self._component_changed('Real')		#can change this for a different default
Exemple #5
0
 def test_image_data_scalar_type(self):
     "Does ImageData support all scalar types?"
     img = tvtk.ImageData()
     # There are 22 scalar types in VTK-5.2.  We should be able to
     # use them all.
     for i in range(0, 22):
         img.scalar_type = i
Exemple #6
0
    def setUp(self):

        datasets = [
            tvtk.ImageData(),
            tvtk.StructuredPoints(),
            tvtk.RectilinearGrid(),
            tvtk.StructuredGrid(),
            tvtk.PolyData(),
            tvtk.UnstructuredGrid(),
        ]
        exts = ['.vti', '.vti', '.vtr', '.vts', '.vtp', '.vtu']
        self.datasets = datasets
        self.exts = exts
 def make_grid4scatter(self):
     src = VTKDataSource()
     xmin, xmax, dx = 100, 200, 2
     nx = int((xmax - xmin) / dx) + 1
     ymin, ymax, dy = 100, 200, 2
     ny = int((ymax - ymin) / dy) + 1
     zmin, zmax, dz = 100, 200, 2
     nz = int((zmax - zmin) / dz) + 1
     image_data = tvtk.ImageData(origin=(xmin, ymin, zmin),
                                 spacing=(dx, dy, dz),
                                 extent=(0, nx - 1, 0, ny - 1, 0, nz - 1))
     image_data.whole_extent = image_data.extent
     src.data = image_data
     return src
Exemple #8
0
 def test_tvtk_dataset_name(self):
     "Can tvtk datasets can be converted to names correctly."
     datasets = [
         tvtk.ImageData(),
         tvtk.StructuredPoints(),
         tvtk.RectilinearGrid(),
         tvtk.StructuredGrid(),
         tvtk.PolyData(),
         tvtk.UnstructuredGrid(),
         tvtk.Property(),  # Not a dataset!
         'foo',  # Not a TVTK object.
     ]
     expect = [
         'image_data', 'image_data', 'rectilinear_grid', 'structured_grid',
         'poly_data', 'unstructured_grid', 'none', 'none'
     ]
     result = [pipeline_info.get_tvtk_dataset_name(d) for d in datasets]
     self.assertEqual(result, expect)
Exemple #9
0
def image_from_array(ary):
    """ Create a VTK image object that references the data in ary.
        The array is either 2D or 3D with.  The last dimension
        is always the number of channels.  It is only tested
        with 3 (RGB) or 4 (RGBA) channel images.
        
        Note: This works no matter what the ary type is (accept 
        probably complex...).  uint8 gives results that make since 
        to me.  Int32 and Float types give colors that I am not
        so sure about.  Need to look into this...
    """
       
    sz = ary.shape
    dims = len(sz)
    # create the vtk image data
    img = tvtk.ImageData()
    
    if dims == 2:
        # 1D array of pixels.
        img.whole_extent = (0, sz[0]-1, 0, 0, 0, 0)
        img.dimensions = sz[0], 1, 1        
        img.point_data.scalars = ary
        
    elif dims == 3:
        # 2D array of pixels.
        img.whole_extent = (0, sz[0]-1, 0, sz[1]-1, 0, 0)
        img.dimensions = sz[0], sz[1], 1
        
        # create a 2d view of the array
        ary_2d = ary[:]    
        ary_2d.shape = sz[0]*sz[1],sz[2]
        img.point_data.scalars = ary_2d
        
    else:
        raise ValueError, "ary must be 3 dimensional."
        
    return img
Exemple #10
0
    def setUp(self):
        # Create dataset with multiple scalars.
        arr1 = zeros(27, 'f')
        for n in range(27):
            arr1[n] = (1 + float(n)) / 10.0
        arr2 = (arr1 + 1).astype('d')
        arr3 = arr1 + 2.0 * (0.5 - random.random(27))
        arr3 = arr3.astype('f')

        p = tvtk.ImageData(dimensions=[3, 3, 3],
                           spacing=[1, 1, 1],
                           scalar_type='int')
        p.point_data.scalars = arr1
        p.point_data.scalars.name = 'first'
        j2 = p.point_data.add_array(arr2)
        p.point_data.get_array(j2).name = 'second'
        j3 = p.point_data.add_array(arr3)
        p.point_data.get_array(j3).name = 'third'
        p.update()
        self.img = p
        self.first = arr1
        self.second = arr2
        self.third = arr3

        # Setup the mayavi pipeline.
        e = NullEngine()
        e.start()
        e.new_scene()
        self.e = e

        src = VTKDataSource(data=p)
        e.add_source(src)
        self.src = src
        ipw = ImagePlaneWidget()
        e.add_module(ipw)
        self.ipw = ipw
Exemple #11
0
    def do(self):
        ############################################################
        # Imports.
        script = self.script
        from enthought.mayavi.sources.vtk_data_source import VTKDataSource
        from enthought.mayavi.modules.api import ImagePlaneWidget

        # Create dataset with multiple scalars.
        arr1 = zeros(27, 'f')
        for n in range(27):
            arr1[n] = (1 + float(n)) / 10.0
        arr2 = (arr1 + 1).astype('d')
        arr3 = arr1 + 2.0 * (0.5 - random.random(27))
        arr3 = arr3.astype('f')

        p = tvtk.ImageData(dimensions=[3, 3, 3],
                           spacing=[1, 1, 1],
                           scalar_type='int')
        p.point_data.scalars = arr1
        p.point_data.scalars.name = 'first'
        j2 = p.point_data.add_array(arr2)
        p.point_data.get_array(j2).name = 'second'
        j3 = p.point_data.add_array(arr3)
        p.point_data.get_array(j3).name = 'third'
        p.update()

        # Make the pipeline.
        self.new_scene()
        src = VTKDataSource(data=p)
        script.add_source(src)
        ipw = ImagePlaneWidget()
        script.add_module(ipw)

        # Test.
        ipw = ipw.ipw
        scalars = ipw.input.point_data.scalars
        r = scalars.range
        expect = min(arr1), max(arr1)
        assert r == expect
        o = src.outputs[0]
        o.update_traits()
        st = ipw.input.scalar_type
        assert scalars.data_type == 10
        assert st == 'float'

        src.point_scalars_name = 'second'
        scalars = ipw.input.point_data.scalars
        r = scalars.range
        expect = min(arr2), max(arr2)
        assert r == expect
        o.update_traits()
        st = ipw.input.scalar_type
        assert scalars.data_type == 11
        assert st == 'double'

        src.point_scalars_name = 'third'
        scalars = ipw.input.point_data.scalars
        r = scalars.range
        expect = min(arr3), max(arr3)
        assert r == expect
        o.update_traits()
        st = ipw.input.scalar_type
        assert scalars.data_type == 10
        assert st == 'float'
Exemple #12
0
# -*- coding: utf-8 -*-
from enthought.tvtk.api import tvtk
import numpy as np

img = tvtk.ImageData(spacing=(0.1, 0.1, 0.1),
                     origin=(0.1, 0.2, 0.3),
                     dimensions=(3, 4, 5))
img.point_data.scalars = np.arange(0.0, img.number_of_points)
img.point_data.scalars.name = 'scalars'
Exemple #13
0
import numpy as np
from enthought.tvtk.api import tvtk, write_data

data = np.random.random((10, 10, 10))

grid = tvtk.ImageData(spacing=(10, 5, -10),
                      origin=(100, 350, 200),
                      dimensions=data.shape)
grid.point_data.scalars = np.ravel(order='F')
grid.point_data.scalars.name = 'Test Data'

# Writes legacy ".vtk" format if filename ends with "vtk", otherwise
# this will write data using the newer xml-based format.
write_data(grid, 'test.vtk')
lines = [[0,4],[4,5]]

data = tvtk.PolyData(points=points, polys=cells, lines=lines)
data.point_data.scalars = numpy.linspace(-5,5,6)

lm = LUTManager()
#lm.configure_traits()
map = tvtk.PolyDataMapper(input=data)
map.lookup_table = lm.lut
act = tvtk.Actor(mapper=map)

x,y = numpy.ogrid[-5:5:0.1, -5:5:0.1]
r = x**2 + y**2
z = numpy.cos(r*2) * numpy.exp(-r/3)

img = tvtk.ImageData(origin=(2,2,2), spacing=(0.1,0.1,0.1),
                    dimensions = (z.shape[0], z.shape[1],1 ))
img.point_data.scalars=z.ravel()

img_poly = tvtk.GeometryFilter(input=img)
warp = tvtk.WarpScalar(input_connection=img_poly.output_port)
norm = tvtk.PolyDataNormals(input_connection = warp.output_port)
img_map = tvtk.PolyDataMapper(input_connection=norm.output_port)
img_act = tvtk.Actor(mapper=img_map)

ren = tvtk.Renderer()
#ren.add_actor(act)
ren.add_actor(img_act)

renwin = tvtk.RenderWindow()
renwin.add_renderer(ren)
iren = tvtk.RenderWindowInteractor(render_window=renwin)
Exemple #15
0
 def _image_data_default(self):
     s = tuple(self.spacing)
     o = tuple(self.origin)
     return tvtk.ImageData(spacing=s, origin=o)