Beginning Filters Python

From KitwarePublic
Jump to navigationJump to search

Introduction

ParaView filters

This usecase shows a user how to use filters to modify the display of data.

All filter examples assume that the user starts with a new model. To start over, go to the menu item Edit → Delete All, and then re-open your data.

Data is opened by going to File → Open. Example data files can be found on the ParaView web page at http://www.paraview.org.


Clip filter

>>> from paraview.simple import *
>>> reader = ExodusIIReader(FileName=".../can.ex2")
>>> Show(reader)
>>> Render()

ClipFilterPython1.png

>>> clipFilter = Clip(reader)
>>> Hide(reader)
>>> Show(clipFilter)
>>> Render()

ClipFilterPython2.png

#get camera
>>> camera = GetActiveCamera()
>>> camera.GetPosition()
#figure out where you are
>>> camera.SetPosition(4.156,4.0,-36.29)
>>> camera.Elevation(30)
>>> camera.GetPosition()
(4.1560389876787056, 19.261366923548998, -32.200729057625857)
>>> camera.SetPosition(4.15603, 30, -35)
>>> Render()

ClipFilterPython3.png

#we can see what's going on a little better
>>> clipFilter.UseValueAsOffset = 1
>>> clipFilter.Value = 5
>>> Render()

ClipFilterPython4.png

#let's change the orientation of the clip filter
>>> clipFilter.ClipType.Normal
[1.0, 0.0, 0.0]
>>> clipFilter.ClipType.Origin
[0.0, 0.0, 0.0]
#reset the offset value of the clip to 0
>>> clipFilter.Value = 0
>>> clipFilter.ClipType.Normal = [0,0,1]
>>> Render()

ClipFilterPython5.png

>>> clipFilter.Value = -3
>>> Render()

ClipFilterPython6.png

>>> clipFilter.InsideOut = 1
>>> Render()

ClipFilterPython7.png

Slice filter

Getting the camera on this one can be right since the slices are invisible from certain angles.

>>> from paraview.simple import *
>>> reader = ExodusIIReader(FileName=".../Data/can.ex2")
>>> sliceFilter = Slice(reader)
>>> Show(sliceFilter)
>>> Render()
>>> camera = GetActiveCamera()
>>> camera.Elevation(30)
>>> camera.SetPosition(-51.3152,4.987,-9.64218)
>>> Render()

SliceFilterPython1.png

>>> sliceFilter.SliceType.Normal
[1.0, 0.0, 0.0]
#the origin of the slice needs to be moved to see slices in the Y-plane
>>> sliceFilter.SliceType.Origin = [2.5,5,0]
>>> sliceFilter.SliceType.Normal = [0,1,0]
>>> Render()

SliceFilterPython2.png

>>> sliceFilter.SliceType.Normal = [0,0,1]
>>> Render()

SliceFilterPython3.png

>>> sliceFilter.SliceType.Normal = [0,1,0]
>>> sliceFilter.SliceOffsetValues
[]
>>> sliceFilter.SliceOffsetValues = [-4,-3.11,-2.22,-1.33,-0.44,0.44,1.33,2.22,3.11,4]
>>> Render()

SliceFilterPython4.png


Glyph filter

>>> from paraview.simple import *
>>> reader = ExodusIIReader(FileName=".../Data/can.ex2")
>>> Show(reader)
>>> camera = GetActiveCamera()
>>> camera.SetPosition(0,5,-45)
>>> camera.Elevation(30)
#Change the can to be wireframe so we can see the glyphs
>>> dp1 = GetDisplayProperties(reader)
>>> dp1.Representation = 'Wireframe'

>>> glyphFilter = Glyph(reader)
#We won't see much if we don't move forward in the animation a little bit
>>> tsteps = reader.TimestepValues
>>> view = GetActiveView()
>>> view.ViewTime = tsteps[20]

>>> glyphFilter.Vectors
['POINTS', 'DISPL']
#Set the glyphs to use the acceleration vectors and adjust scale factor
>>> glyphFilter.Vectors = 'ACCL'
>>> glyphFilter.SetScaleFactor
1.0
>>> glyphFilter.SetScaleFactor = 0.0000002

GlyphFilterPython1.png

#Set the glyphs to use the velocity vectors and adjust scale factor
>>> glyphFilter.Vectors = 'VEL'
>>> glyphFilter.SetScaleFactor = 3e-4


#Let's add some color
>>> dp2 = GetDisplayProperties(glyphFilter)
>>> glyphFilter.PointData[:]
[Array: PedigreeNodeId, Array: DISPL, Array: VEL, Array: ACCL, Array: GlobalNodeId, Array: GlyphVector]
#We'll color by velocity so use that array.
>>> vel = glyphFilter.PointData[2]
>>> vel.GetName()
'VEL'
>>> vel.GetRange()
(-2479.9521484375, 1312.5040283203125)
>>> dp2.LookupTable = MakeBlueToRedLT(-2479.9521,1312.5)
>>> dp2.ColorAttributeType = 'POINT_DATA'
>>> dp2.ColorArrayName = 'VEL'
>>> Render()

GlyphFilterPython2.png


Threshold filter

>>> from paraview.simple import *
>>> reader = ExodusIIReader(FileName=".../Data/disk_out_ref.ex2")
>>> Show(reader)
>>> dp1 = GetDisplayProperties(reader)
>>> dp1.Representation = 'Wireframe'
>>> camera = GetActiveCamera()
>>> camera.Elevation(-60)
>>> thresholdFilter = Threshold(reader)
>>> thresholdFilter.Scalars
['POINTS', 'GlobalNodeId']
>>> thresholdFilter.Scalars = 'Temp'
>>> Show(thresholdFilter)
>>> thresholdFilter.ThresholdRange
[0.0, 0.0]
>>> thresholdFilter.ThresholdRange = [398.55,913.15]
>>> Render()

ThresholdFilterPython1.png

>>> dp2 = GetDisplayProperties(thresholdFilter)
>>> thresholdFilter.PointData[:]
[Array: GlobalNodeId, Array: PedigreeNodeId, Array: Temp, Array: V, Array: Pres, Array: AsH3, Array: GaMe3, Array: CH4, Array: H2]
>>> temp = thresholdFilter.PointData[2]
>>> temp.GetRange()
(400.46258544921875, 846.694091796875)
>>> dp2.LookupTable = MakeBlueToRedLT(400.4625,846.6909)
>>> dp2.ColorAttributeType = 'POINT_DATA'
>>> dp2.ColorArrayName = 'Temp'
>>> Render()

ThresholdFilterPython2.png

#set the lower threshold to 500
>>> thresholdFilter.ThresholdRange[0] = 500
>>> Render()

ThresholdFilterPython3.png

>>> dp1.LookupTable = MakeBlueToRedLT(400.462,84609)
>>> dp1.ColorAttributeType = 'POINT_DATA'
>>> dp1.ColorArrayname = 'Temp'
>>> Render()

ThresholdFilterPython4.png

Contour filter

>>> from paraview.simple import *
>>> reader = ExodusIIReader(FileName = ".../Data/disk_out_ref.ex2")
>>> contourFilter = Contour(reader)
>>> contourFilter.ContourBy = 'Temp'
>>> contourFilter.Isosurfaces
[]
>>> contourFilter.Isosurfaces = [400]
>>> camera = GetActiveCamera()
>>> camera.Elevation(-90)

>>> dp2 = GetDisplayProperties(contourFilter)
>>> contourFilter.PointData[:]
[Array: Temp, Array: V, Array: Pres, Array: AsH3, Array: GaMe3, Array: CH4, Array: H2]
>>> temp = contourFilter.PointData[0]
>>> temp.GetRange()
(399.99999999999994, 400.00000000000006)
>>> dp2.LookupTable = MakeBlueToRedLT(399.999,400)
>>> dp2.ColorAttributeType = 'POINT_DATA'
>>> dp2.ColorArrayName = 'Temp'
>>> Render()

ContourFilterPython1.png

>>> pres = contourFilter.PointData[2]
>>> pres.GetRange()
(0.0074376024368978605, 0.02845284189526591)
>>> dp2.LookupTable = MakeBlueToRedLT(0.007437602,0.02845284)
>>> dp2.ColorArrayName = 'Pres'

ContourFilterPython2.png

>>> dp1 = GetDisplayProperties(reader)
>>> dp1.Representation = 'Wireframe'
>>> dp1.LookupTable = dp2.LookupTable
>>> dp1.ColorAttributeType = 'POINT_DATA'
>>> dp1.ColorArrayName = 'Pres'
>>> Show(reader)

>>> camera.Dolly(0.5)
>>> Render()
<paraview.servermanager.RenderView object at 0x14c8ed0>
>>> camera.Elevation(-30)
>>> Render()

ContourFilterPython3.png

Clip to Scalar filter

>>> from paraview.simple import *
>>> reader = ExodusIIReader(FileName=".../Data/disk_out_ref.ex2")
>>> clipFilter = Clip(reader)
>>> clipFilter.ClipType = 'Scalar'

>>> clipFilter.Scalars = 'Temp'
>>> clipFilter.Value = 400
>>> Show(clipFilter)
>>> camera = GetActiveCamera()
>>> camera.Elevation(-90)
>>> Render()

ClipScalarFilterPython1.png

>>> clipFilter2 = Clip(clipFilter)
>>> Show(clipFilter2)
>>> Hide(clipFilter)

>>> camera.SetPosition(-39,0,1.46)
>>> camera.Roll(90)

ClipScalarFilterPython2.png

>>> dp1 = GetDisplayProperties(reader)
>>> dp2 = GetDisplayProperties(clipFilter2)
>>> clipFilter2.PointData[:]
[Array: Temp, Array: V, Array: Pres, Array: AsH3, Array: GaMe3, Array: CH4, Array: H2]
>>> temp = clipFilter2.PointData[0]
>>> temp.GetRange()
(399.99999999999994, 913.1500244140625)
>>> dp2.LookupTable = MakeBlueToRedLT(400,913.15)
>>> dp2.ColorAttributeType = 'POINT_DATA'
>>> dp2.ColorArrayName = 'Temp'
>>> Hide(reader)
>>> Render()

ClipScalarFilterPython3.png

>>> dp1.Representation = 'Volume'
>>> temp.GetRange()
(399.99999999999994, 913.1500244140625)
>>> dp1.LookupTable = dp2.LookupTable
>>> dp1.ColorAttributeType = 'POINT_DATA'
>>> dp1.ColorArrayName = 'Temp'
>>> Render()

ClipScalarFilterPython4.png

Cell to Point/ Point to Cell filters

These filters are used to convert a data set from being cell data to being point data and vice versa. This is sometimes useful if a filter requires one type of data, and a user only has the other type of data. An example would be using can.exo. You cannot get a contour of EQPS directly, since EQPS is cell data and contour only works on points. Use filter Cell Data to Point Data first, then call contour.


Stream Tracer

>>> from paraview.simple import *
>>> reader = ExodusIIReader(FileName=".../Data/disk_out_ref.ex2")
>>> streamTracer = StreamTracer(reader)
>>> streamTracer.Vectors  = 'V'
>>> streamTracer.SeedType.NumberOfPoints = 100
>>> streamTracer.SeedType.Radius = 1.15
>>> streamTracer.SetPropertyWithName('Max.Propagation',20.1599)
>>> Show(streamTracer)
>>> camera = GetActiveCamera()
>>> camera.Elevation(-45)
>>> camera.Dolly(0.4)
>>> dp1 = GetDisplayProperties(streamTracer)
>>> streamTracer.PointData[:]
[Array: Temp, Array: V, Array: Pres, Array: AsH3, Array: GaMe3, Array: CH4, Array: H2, Array: IntegrationTime, Array: Vorticity, Array: Rotation, Array: AngularVelocity, Array: Normals]
>>> pres = streamTracer.PointData[2]
>>> dp1.LookupTable = MakeBlueToRedLT(pres.GetRange()[0],pres.GetRange()[1])
>>> dp1.ColorAttributeType = 'POINT_DATA'
>>> dp1.ColorArrayName = 'Pres'

>>> Render()

StreamTracerFilterPython1.png

Calculator filter

Coming soon.


Acknowledgements

Sandia is a multiprogram laboratory operated by Sandia Corporation, a Lockheed Martin Company, for the United States Department of Energy’s National Nuclear Security Administration under contract DE-AC04-94AL85000.