|
2 | 2 | import numpy as np
|
3 | 3 | import pytest
|
4 | 4 |
|
5 |
| -from itkwidgets._transform_types import to_point_set, to_geometry, to_itk_image |
| 5 | +from itkwidgets._transform_types import to_point_set, to_geometry, to_itk_image, vtkjs_to_zarr, zarr_to_vtkjs |
6 | 6 |
|
7 | 7 |
|
8 | 8 | def test_mesh_to_geometry():
|
@@ -78,6 +78,71 @@ def test_mesh_to_geometry():
|
78 | 78 | # assert(np.alltrue(geometry['points']['values'] ==
|
79 | 79 | # geometry_array.astype(np.float32)))
|
80 | 80 |
|
| 81 | +def test_vtkjs_to_zarr(): |
| 82 | + zarr = pytest.importorskip("zarr") |
| 83 | + |
| 84 | + # 3D |
| 85 | + Dimension = 3 |
| 86 | + PixelType = itk.ctype('double') |
| 87 | + MeshType = itk.Mesh[PixelType, Dimension] |
| 88 | + mesh = MeshType.New() |
| 89 | + PointType = itk.Point[itk.F, Dimension] |
| 90 | + point0 = PointType() |
| 91 | + point0[0] = -1 |
| 92 | + point0[1] = -1 |
| 93 | + point0[2] = 0 |
| 94 | + mesh.SetPoint(0, point0) |
| 95 | + mesh.SetPointData(0, 8.0) |
| 96 | + point1 = PointType() |
| 97 | + point1[0] = 1 |
| 98 | + point1[1] = -1 |
| 99 | + point1[2] = 0 |
| 100 | + mesh.SetPointData(1, 9.0) |
| 101 | + mesh.SetPoint(1, point1) |
| 102 | + point2 = PointType() |
| 103 | + point2[0] = 1 |
| 104 | + point2[1] = 1 |
| 105 | + point2[2] = 0 |
| 106 | + mesh.SetPoint(2, point2) |
| 107 | + mesh.SetPointData(2, 19.0) |
| 108 | + point3 = PointType() |
| 109 | + point3[0] = 1 |
| 110 | + point3[1] = 1 |
| 111 | + point3[2] = 0 |
| 112 | + mesh.SetPoint(3, point3) |
| 113 | + mesh.SetPointData(3, 24.0) |
| 114 | + |
| 115 | + vtkjs = to_geometry(mesh) |
| 116 | + |
| 117 | + store = zarr.group() |
| 118 | + |
| 119 | + vtkjs_to_zarr(vtkjs, store) |
| 120 | + geometry = zarr_to_vtkjs(store) |
| 121 | + |
| 122 | + points = mesh.GetPoints() |
| 123 | + point_template = itk.template(points) |
| 124 | + element_type = point_template[1][1] |
| 125 | + point_values = itk.PyVectorContainer[element_type].array_from_vector_container( |
| 126 | + points) |
| 127 | + |
| 128 | + assert(geometry['vtkClass'] == 'vtkPolyData') |
| 129 | + assert(geometry['points']['vtkClass'] == 'vtkPoints') |
| 130 | + assert(geometry['points']['numberOfComponents'] == 3) |
| 131 | + assert(geometry['points']['dataType'] == 'Float32Array') |
| 132 | + assert(geometry['points']['size'] == 4 * 3) |
| 133 | + assert(np.array_equal(geometry['points']['values'], |
| 134 | + point_values.astype(np.float32))) |
| 135 | + assert(geometry['pointData']['vtkClass'] == 'vtkDataSetAttributes') |
| 136 | + assert(geometry['pointData']['arrays'][0] |
| 137 | + ['data']['vtkClass'] == 'vtkDataArray') |
| 138 | + assert(geometry['pointData']['arrays'][0]['data']['name'] == 'Point Data') |
| 139 | + assert(geometry['pointData']['arrays'][0] |
| 140 | + ['data']['numberOfComponents'] == 1) |
| 141 | + assert(geometry['pointData']['arrays'][0]['data']['size'] == 4) |
| 142 | + assert(geometry['pointData']['arrays'][0] |
| 143 | + ['data']['dataType'] == 'Float64Array') |
| 144 | + assert(np.array_equal(geometry['pointData']['arrays'][0]['data']['values'], |
| 145 | + np.array([8.0, 9.0, 19.0, 24.0], dtype=np.float64))) |
81 | 146 |
|
82 | 147 | def test_vtkpolydata_to_geometry():
|
83 | 148 | vtk = pytest.importorskip("vtk")
|
|
0 commit comments