1import sys
2
3try:
4    import numpy
5except ImportError:
6    print("Numpy (http://numpy.scipy.org) not found.")
7    print("This test requires numpy!")
8    from vtk.test import Testing
9    Testing.skip()
10
11import vtk
12from vtk.numpy_interface import dataset_adapter as dsa
13from vtk.numpy_interface import algorithms as algs
14
15def test_dataset(ds):
16  p2c = vtk.vtkPointDataToCellData()
17  p2c.SetInputData(ds)
18  p2c.Update()
19
20  c2p = vtk.vtkCellDataToPointData()
21  c2p.SetInputConnection(p2c.GetOutputPort())
22  c2p.Update()
23
24  d1 = dsa.WrapDataObject(c2p.GetOutput())
25
26  c2p = vtk.vtkmAverageToPoints()
27  c2p.SetInputData(p2c.GetOutput())
28  c2p.SetInputArrayToProcess(0, 0, 0, vtk.vtkDataObject.FIELD_ASSOCIATION_CELLS, "RTData")
29  c2p.Update()
30
31  d2 = dsa.WrapDataObject(c2p.GetOutput())
32
33  rtD1 = d1.PointData['RTData']
34  rtD2 = d2.PointData['RTData']
35
36  assert (algs.max(algs.abs(rtD1 - rtD2)) < 10E-4)
37
38print("Testing simple debugging grid...")
39# This dataset matches the example values in vtkmCellSetExplicit:
40dbg = vtk.vtkUnstructuredGrid()
41dbg.SetPoints(vtk.vtkPoints())
42dbg.GetPoints().SetNumberOfPoints(7)
43dbg.InsertNextCell(vtk.VTK_TRIANGLE, 3, [0, 1, 2])
44dbg.InsertNextCell(vtk.VTK_QUAD,     4, [0, 1, 3, 4])
45dbg.InsertNextCell(vtk.VTK_TRIANGLE, 3, [1, 3, 5])
46dbg.InsertNextCell(vtk.VTK_LINE,     2, [5, 6])
47
48dbgRt = vtk.vtkDoubleArray()
49dbgRt.SetNumberOfTuples(7)
50dbgRt.SetName('RTData')
51dbgRt.SetValue(0, 17.40)
52dbgRt.SetValue(1, 123.0)
53dbgRt.SetValue(2, 28.60)
54dbgRt.SetValue(3, 19.47)
55dbgRt.SetValue(4, 3.350)
56dbgRt.SetValue(5, 0.212)
57dbgRt.SetValue(6, 1023.)
58dbg.GetPointData().AddArray(dbgRt)
59
60test_dataset(dbg)
61print("Success!")
62
63print("Testing homogeneous image data...")
64source = vtk.vtkRTAnalyticSource()
65source.Update()
66imgData = source.GetOutput()
67test_dataset(imgData)
68print("Success!")
69
70d = dsa.WrapDataObject(imgData)
71rtData = d.PointData['RTData']
72rtMin = algs.min(rtData)
73rtMax = algs.max(rtData)
74clipScalar = 0.5 * (rtMin + rtMax)
75
76print("Testing non-homogenous unstructured grid...")
77clip = vtk.vtkClipDataSet()
78clip.SetInputData(imgData)
79clip.SetValue(clipScalar)
80clip.Update()
81ugrid = clip.GetOutput()
82test_dataset(ugrid)
83print("Success!")
84