23 if not os.path.isfile(path):
24 print(f
"SKIP: {path} not present (suite data file, not shipped with the repo)")
26 import peclet.pnm
as pnm
28 print(
"peclet.pnm on", pnm.execution_space)
29 sdf, origin_zyx, spacing_zyx = pnm.SDFReader.read_vti(path)
30 assert sdf.shape == (256, 256, 256)
and sdf.dtype == np.float32, (sdf.shape, sdf.dtype)
31 pores = pnm.extract_pores(sdf, origin_zyx, spacing_zyx)
32 print(f
"extract_pores: {len(pores)} pores")
33 assert len(pores) == EXPECTED_PORES, len(pores)
34 fused, seg, conns = pnm.extract_pore_network(sdf, origin_zyx, spacing_zyx)
35 assert seg.shape == sdf.shape
and seg.dtype == np.int32, (seg.shape, seg.dtype)
36 assert conns.shape[1:] == (2,)
and conns.dtype == np.int32, (conns.shape, conns.dtype)
37 print(f
"extract_pore_network: {len(fused)} pores, {len(conns)} connections, "
38 f
"{seg.max()} pore labels, {-seg.min()} solid labels")
39 assert len(fused) == EXPECTED_PORES, len(fused)
40 assert len(conns) == EXPECTED_CONNECTIONS, len(conns)
41 assert seg.max() == EXPECTED_PORES, seg.max()
43 key =
lambda p: (p.x, p.y, p.z, p.radius)
44 assert sorted(map(key, pores)) == sorted(map(key, fused))
45 print(
"packing_ring ok")