File: itkPointSetSerializationTest.py

package info (click to toggle)
insighttoolkit5 5.4.3-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 704,384 kB
  • sloc: cpp: 783,592; ansic: 628,724; xml: 44,704; fortran: 34,250; python: 22,874; sh: 4,078; pascal: 2,636; lisp: 2,158; makefile: 464; yacc: 328; asm: 205; perl: 203; lex: 146; tcl: 132; javascript: 98; csh: 81
file content (80 lines) | stat: -rw-r--r-- 2,461 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# ==========================================================================
#
#   Copyright NumFOCUS
#
#   Licensed under the Apache License, Version 2.0 (the "License");
#   you may not use this file except in compliance with the License.
#   You may obtain a copy of the License at
#
#          https://www.apache.org/licenses/LICENSE-2.0.txt
#
#   Unless required by applicable law or agreed to in writing, software
#   distributed under the License is distributed on an "AS IS" BASIS,
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#   See the License for the specific language governing permissions and
#   limitations under the License.
#
# ==========================================================================*/


import itk
import numpy as np
import pickle
import sys
import os


Dimension = 3
PixelType = itk.D
NumberOfPoints = 5

PointSetType = itk.PointSet[PixelType, Dimension]
point_set = PointSetType.New()

# Set the name of mesh
point_set.SetObjectName("testpointset")

# Set Points in the PointSet
PointType = itk.Point[itk.F, 3]
if os.name == 'nt':
    v_point = itk.VectorContainer[itk.ULL, PointType].New()
else:
    v_point = itk.VectorContainer[itk.UL, PointType].New()
v_point.Reserve(NumberOfPoints)

point = PointType()
for i in range(NumberOfPoints):
    point[0] = i + 1.0
    point[1] = i + 2.0
    point[2] = i + 3.0
    v_point.SetElement(i, point)

arr = itk.array_view_from_vector_container(v_point)
points_vc = itk.vector_container_from_array(arr.flatten())

point_set.SetPoints(points_vc)


# Check the serialization of mesh
serialize_deserialize = pickle.loads(pickle.dumps(point_set))

assert serialize_deserialize.GetNumberOfPoints() == point_set.GetNumberOfPoints()
assert serialize_deserialize.GetObjectName() == point_set.GetObjectName()

# Check if points are same
p1 = itk.array_from_vector_container(serialize_deserialize.GetPoints())
p2 = itk.array_from_vector_container(point_set.GetPoints())
assert np.array_equal(p1, p2)


# Check dictionary set/get for ITK point_set
point_set["name"] = "testpoint_set1"
assert point_set["name"] == "testpoint_set1"

points_array = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9], dtype="float32")
point_set["points"] = points_array
assert np.array_equal(point_set["points"], points_array)

points_data_array = np.array([10, 11], dtype="float64")
point_set["pointData"] = points_data_array
assert np.array_equal(point_set["pointData"], points_data_array)