1st notebook
1st notebook#
[ ]:
%pip install git+https://github.com/nndt-team/nndt.git
%pip install ipyvtklink
[14]:
import nndt
import nndt.space2 as spc
from nndt.datasets import ACDC
nndt.__version__
[14]:
'0.0.3b1'
nndt.init_colab() turns on interactive plots in google collaboratory. This string is not necessary in py-scripts or jupyter notebook.
[15]:
# nndt.init_colab()
spc.load_from_path detects files in some path and loads objects automatically.
[ ]:
ACDC().load()
[16]:
space = spc.load_from_path("./.datasets/ACDC_5")
print(space.print())
Downloading...
From: https://drive.google.com/uc?export=download&id=1UzC2WPkjMQSxzI5sj1rMT47URuZbQhYb
To: /home/kostanew/PycharmProjects/nndt/tutorials/.datasets/ACDC_5/temp.7z
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████| 9.01M/9.01M [00:02<00:00, 4.31MB/s]
Loading complete
S:space 0.0.3b1
├── O3D:patient009 ((0.00, 0.00, 0.00), (0.00, 0.00, 0.00))
│ ├── FS:colored_obj mesh_obj ./.datasets/ACDC_5/patient009/colored.obj
│ ├── FS:sdf_npy sdt ./.datasets/ACDC_5/patient009/sdf.npy
│ ├── plot(default, filepath=None)
│ ├── print(default|source|full)
│ └── unload_from_memory()
├── O3D:patient029 ((0.00, 0.00, 0.00), (0.00, 0.00, 0.00))
│ ├── FS:colored_obj mesh_obj ./.datasets/ACDC_5/patient029/colored.obj
│ ├── FS:sdf_npy sdt ./.datasets/ACDC_5/patient029/sdf.npy
│ ├── plot(default, filepath=None)
│ ├── print(default|source|full)
│ └── unload_from_memory()
├── O3D:patient049 ((0.00, 0.00, 0.00), (0.00, 0.00, 0.00))
│ ├── FS:colored_obj mesh_obj ./.datasets/ACDC_5/patient049/colored.obj
│ ├── FS:sdf_npy sdt ./.datasets/ACDC_5/patient049/sdf.npy
│ ├── plot(default, filepath=None)
│ ├── print(default|source|full)
│ └── unload_from_memory()
├── O3D:patient069 ((0.00, 0.00, 0.00), (0.00, 0.00, 0.00))
│ ├── FS:colored_obj mesh_obj ./.datasets/ACDC_5/patient069/colored.obj
│ ├── FS:sdf_npy sdt ./.datasets/ACDC_5/patient069/sdf.npy
│ ├── plot(default, filepath=None)
│ ├── print(default|source|full)
│ └── unload_from_memory()
├── O3D:patient089 ((0.00, 0.00, 0.00), (0.00, 0.00, 0.00))
│ ├── FS:colored_obj mesh_obj ./.datasets/ACDC_5/patient089/colored.obj
│ ├── FS:sdf_npy sdt ./.datasets/ACDC_5/patient089/sdf.npy
│ ├── plot(default, filepath=None)
│ ├── print(default|source|full)
│ └── unload_from_memory()
├── init()
├── plot(default, filepath=None)
├── preload(identity|shift_and_scale|to_cube, scale, keep_in_memory=True)
├── print(default|source|full)
├── save_space_to_file(filepath)
├── to_json()
└── unload_from_memory()
After file detection, each file must be read at least once. Use .preload() to do this
[17]:
space.preload()
space.plot(notebook=True)
All methods of the tree above are available for the call and will work correctly with corresponding data
[18]:
help(space.patient009.sampling_grid)
Help on method sampling_grid in module nndt.space2.method_set:
sampling_grid(spacing: (<class 'int'>, <class 'int'>, <class 'int'>) = (2, 2, 2)) -> jax._src.numpy.ndarray.ndarray method of nndt.space2.method_set.SamplingMethodSetNode instance
Sample points from a bounding box (bbox) according to vertex of uniform mesh.
This method work for the normalized space.
Data transformation
sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
:param spacing: Number of slices for each coordinates of the bbox.
:return: 4-dimensional tensor, the last axis is (x,y,z) point position.
[19]:
space.patient009.sampling_grid((10, 10, 10))
[19]:
DeviceArray([[[[ 0. , 0. , 0. ],
[ 0. , 0. , 9.333333],
[ 0. , 0. , 18.666666],
...,
[ 0. , 0. , 65.33333 ],
[ 0. , 0. , 74.666664],
[ 0. , 0. , 84. ]],
[[ 0. , 20.333334, 0. ],
[ 0. , 20.333334, 9.333333],
[ 0. , 20.333334, 18.666666],
...,
[ 0. , 20.333334, 65.33333 ],
[ 0. , 20.333334, 74.666664],
[ 0. , 20.333334, 84. ]],
[[ 0. , 40.666668, 0. ],
[ 0. , 40.666668, 9.333333],
[ 0. , 40.666668, 18.666666],
...,
[ 0. , 40.666668, 65.33333 ],
[ 0. , 40.666668, 74.666664],
[ 0. , 40.666668, 84. ]],
...,
[[ 0. , 142.33334 , 0. ],
[ 0. , 142.33334 , 9.333333],
[ 0. , 142.33334 , 18.666666],
...,
[ 0. , 142.33334 , 65.33333 ],
[ 0. , 142.33334 , 74.666664],
[ 0. , 142.33334 , 84. ]],
[[ 0. , 162.66667 , 0. ],
[ 0. , 162.66667 , 9.333333],
[ 0. , 162.66667 , 18.666666],
...,
[ 0. , 162.66667 , 65.33333 ],
[ 0. , 162.66667 , 74.666664],
[ 0. , 162.66667 , 84. ]],
[[ 0. , 183. , 0. ],
[ 0. , 183. , 9.333333],
[ 0. , 183. , 18.666666],
...,
[ 0. , 183. , 65.33333 ],
[ 0. , 183. , 74.666664],
[ 0. , 183. , 84. ]]],
[[[ 14.888889, 0. , 0. ],
[ 14.888889, 0. , 9.333333],
[ 14.888889, 0. , 18.666666],
...,
[ 14.888889, 0. , 65.33333 ],
[ 14.888889, 0. , 74.666664],
[ 14.888889, 0. , 84. ]],
[[ 14.888889, 20.333334, 0. ],
[ 14.888889, 20.333334, 9.333333],
[ 14.888889, 20.333334, 18.666666],
...,
[ 14.888889, 20.333334, 65.33333 ],
[ 14.888889, 20.333334, 74.666664],
[ 14.888889, 20.333334, 84. ]],
[[ 14.888889, 40.666668, 0. ],
[ 14.888889, 40.666668, 9.333333],
[ 14.888889, 40.666668, 18.666666],
...,
[ 14.888889, 40.666668, 65.33333 ],
[ 14.888889, 40.666668, 74.666664],
[ 14.888889, 40.666668, 84. ]],
...,
[[ 14.888889, 142.33334 , 0. ],
[ 14.888889, 142.33334 , 9.333333],
[ 14.888889, 142.33334 , 18.666666],
...,
[ 14.888889, 142.33334 , 65.33333 ],
[ 14.888889, 142.33334 , 74.666664],
[ 14.888889, 142.33334 , 84. ]],
[[ 14.888889, 162.66667 , 0. ],
[ 14.888889, 162.66667 , 9.333333],
[ 14.888889, 162.66667 , 18.666666],
...,
[ 14.888889, 162.66667 , 65.33333 ],
[ 14.888889, 162.66667 , 74.666664],
[ 14.888889, 162.66667 , 84. ]],
[[ 14.888889, 183. , 0. ],
[ 14.888889, 183. , 9.333333],
[ 14.888889, 183. , 18.666666],
...,
[ 14.888889, 183. , 65.33333 ],
[ 14.888889, 183. , 74.666664],
[ 14.888889, 183. , 84. ]]],
[[[ 29.777779, 0. , 0. ],
[ 29.777779, 0. , 9.333333],
[ 29.777779, 0. , 18.666666],
...,
[ 29.777779, 0. , 65.33333 ],
[ 29.777779, 0. , 74.666664],
[ 29.777779, 0. , 84. ]],
[[ 29.777779, 20.333334, 0. ],
[ 29.777779, 20.333334, 9.333333],
[ 29.777779, 20.333334, 18.666666],
...,
[ 29.777779, 20.333334, 65.33333 ],
[ 29.777779, 20.333334, 74.666664],
[ 29.777779, 20.333334, 84. ]],
[[ 29.777779, 40.666668, 0. ],
[ 29.777779, 40.666668, 9.333333],
[ 29.777779, 40.666668, 18.666666],
...,
[ 29.777779, 40.666668, 65.33333 ],
[ 29.777779, 40.666668, 74.666664],
[ 29.777779, 40.666668, 84. ]],
...,
[[ 29.777779, 142.33334 , 0. ],
[ 29.777779, 142.33334 , 9.333333],
[ 29.777779, 142.33334 , 18.666666],
...,
[ 29.777779, 142.33334 , 65.33333 ],
[ 29.777779, 142.33334 , 74.666664],
[ 29.777779, 142.33334 , 84. ]],
[[ 29.777779, 162.66667 , 0. ],
[ 29.777779, 162.66667 , 9.333333],
[ 29.777779, 162.66667 , 18.666666],
...,
[ 29.777779, 162.66667 , 65.33333 ],
[ 29.777779, 162.66667 , 74.666664],
[ 29.777779, 162.66667 , 84. ]],
[[ 29.777779, 183. , 0. ],
[ 29.777779, 183. , 9.333333],
[ 29.777779, 183. , 18.666666],
...,
[ 29.777779, 183. , 65.33333 ],
[ 29.777779, 183. , 74.666664],
[ 29.777779, 183. , 84. ]]],
...,
[[[104.22223 , 0. , 0. ],
[104.22223 , 0. , 9.333333],
[104.22223 , 0. , 18.666666],
...,
[104.22223 , 0. , 65.33333 ],
[104.22223 , 0. , 74.666664],
[104.22223 , 0. , 84. ]],
[[104.22223 , 20.333334, 0. ],
[104.22223 , 20.333334, 9.333333],
[104.22223 , 20.333334, 18.666666],
...,
[104.22223 , 20.333334, 65.33333 ],
[104.22223 , 20.333334, 74.666664],
[104.22223 , 20.333334, 84. ]],
[[104.22223 , 40.666668, 0. ],
[104.22223 , 40.666668, 9.333333],
[104.22223 , 40.666668, 18.666666],
...,
[104.22223 , 40.666668, 65.33333 ],
[104.22223 , 40.666668, 74.666664],
[104.22223 , 40.666668, 84. ]],
...,
[[104.22223 , 142.33334 , 0. ],
[104.22223 , 142.33334 , 9.333333],
[104.22223 , 142.33334 , 18.666666],
...,
[104.22223 , 142.33334 , 65.33333 ],
[104.22223 , 142.33334 , 74.666664],
[104.22223 , 142.33334 , 84. ]],
[[104.22223 , 162.66667 , 0. ],
[104.22223 , 162.66667 , 9.333333],
[104.22223 , 162.66667 , 18.666666],
...,
[104.22223 , 162.66667 , 65.33333 ],
[104.22223 , 162.66667 , 74.666664],
[104.22223 , 162.66667 , 84. ]],
[[104.22223 , 183. , 0. ],
[104.22223 , 183. , 9.333333],
[104.22223 , 183. , 18.666666],
...,
[104.22223 , 183. , 65.33333 ],
[104.22223 , 183. , 74.666664],
[104.22223 , 183. , 84. ]]],
[[[119.111115, 0. , 0. ],
[119.111115, 0. , 9.333333],
[119.111115, 0. , 18.666666],
...,
[119.111115, 0. , 65.33333 ],
[119.111115, 0. , 74.666664],
[119.111115, 0. , 84. ]],
[[119.111115, 20.333334, 0. ],
[119.111115, 20.333334, 9.333333],
[119.111115, 20.333334, 18.666666],
...,
[119.111115, 20.333334, 65.33333 ],
[119.111115, 20.333334, 74.666664],
[119.111115, 20.333334, 84. ]],
[[119.111115, 40.666668, 0. ],
[119.111115, 40.666668, 9.333333],
[119.111115, 40.666668, 18.666666],
...,
[119.111115, 40.666668, 65.33333 ],
[119.111115, 40.666668, 74.666664],
[119.111115, 40.666668, 84. ]],
...,
[[119.111115, 142.33334 , 0. ],
[119.111115, 142.33334 , 9.333333],
[119.111115, 142.33334 , 18.666666],
...,
[119.111115, 142.33334 , 65.33333 ],
[119.111115, 142.33334 , 74.666664],
[119.111115, 142.33334 , 84. ]],
[[119.111115, 162.66667 , 0. ],
[119.111115, 162.66667 , 9.333333],
[119.111115, 162.66667 , 18.666666],
...,
[119.111115, 162.66667 , 65.33333 ],
[119.111115, 162.66667 , 74.666664],
[119.111115, 162.66667 , 84. ]],
[[119.111115, 183. , 0. ],
[119.111115, 183. , 9.333333],
[119.111115, 183. , 18.666666],
...,
[119.111115, 183. , 65.33333 ],
[119.111115, 183. , 74.666664],
[119.111115, 183. , 84. ]]],
[[[134. , 0. , 0. ],
[134. , 0. , 9.333333],
[134. , 0. , 18.666666],
...,
[134. , 0. , 65.33333 ],
[134. , 0. , 74.666664],
[134. , 0. , 84. ]],
[[134. , 20.333334, 0. ],
[134. , 20.333334, 9.333333],
[134. , 20.333334, 18.666666],
...,
[134. , 20.333334, 65.33333 ],
[134. , 20.333334, 74.666664],
[134. , 20.333334, 84. ]],
[[134. , 40.666668, 0. ],
[134. , 40.666668, 9.333333],
[134. , 40.666668, 18.666666],
...,
[134. , 40.666668, 65.33333 ],
[134. , 40.666668, 74.666664],
[134. , 40.666668, 84. ]],
...,
[[134. , 142.33334 , 0. ],
[134. , 142.33334 , 9.333333],
[134. , 142.33334 , 18.666666],
...,
[134. , 142.33334 , 65.33333 ],
[134. , 142.33334 , 74.666664],
[134. , 142.33334 , 84. ]],
[[134. , 162.66667 , 0. ],
[134. , 162.66667 , 9.333333],
[134. , 162.66667 , 18.666666],
...,
[134. , 162.66667 , 65.33333 ],
[134. , 162.66667 , 74.666664],
[134. , 162.66667 , 84. ]],
[[134. , 183. , 0. ],
[134. , 183. , 9.333333],
[134. , 183. , 18.666666],
...,
[134. , 183. , 65.33333 ],
[134. , 183. , 74.666664],
[134. , 183. , 84. ]]]], dtype=float32)
Neural network requires data normalization before training.
Normalization for space units is integrated inside the .preload()
NNDT v0.0.2 supports three method - "identity" is lack of normalization - "shift_and_scale" shifts the bounding box of object to center and divides physical units to scale parameter - "to_cube" push object to cube with edge size of [-1,1]
[20]:
space = spc.load_from_path("../tests/acdc_for_test")
space.preload("shift_and_scale", scale=50)
space.plot()
[21]:
space = spc.load_from_path("../tests/acdc_for_test")
space.preload("to_cube")
space.plot()
.print() supports several modes for pretty printing of 3D object tree. - "default" shows sources, transformations, method sets, and major functions of Object3D. - "sources" shows sources only - "full" shows full tree and all methods
[22]:
print(space.print("source"))
S:space 0.0.3b1
├── O3D:patient009 ((-1.00, -1.00, -1.00), (1.00, 1.00, 1.00))
│ ├── FS:colored_obj mesh_obj^ ../tests/acdc_for_test/patient009/colored.obj
│ ├── FS:sdf_npy sdt^ ../tests/acdc_for_test/patient009/sdf.npy
│ └── TR:transform to_cube
├── O3D:patient029 ((-1.00, -1.00, -1.00), (1.00, 1.00, 1.00))
│ ├── FS:colored_obj mesh_obj^ ../tests/acdc_for_test/patient029/colored.obj
│ ├── FS:sdf_npy sdt^ ../tests/acdc_for_test/patient029/sdf.npy
│ └── TR:transform to_cube
├── O3D:patient049 ((-1.00, -1.00, -1.00), (1.00, 1.00, 1.00))
│ ├── FS:colored_obj mesh_obj^ ../tests/acdc_for_test/patient049/colored.obj
│ ├── FS:sdf_npy sdt^ ../tests/acdc_for_test/patient049/sdf.npy
│ └── TR:transform to_cube
├── O3D:patient069 ((-1.00, -1.00, -1.00), (1.00, 1.00, 1.00))
│ ├── FS:colored_obj mesh_obj^ ../tests/acdc_for_test/patient069/colored.obj
│ ├── FS:sdf_npy sdt^ ../tests/acdc_for_test/patient069/sdf.npy
│ └── TR:transform to_cube
└── O3D:patient089 ((-1.00, -1.00, -1.00), (1.00, 1.00, 1.00))
├── FS:colored_obj mesh_obj^ ../tests/acdc_for_test/patient089/colored.obj
├── FS:sdf_npy sdt^ ../tests/acdc_for_test/patient089/sdf.npy
└── TR:transform to_cube
[23]:
print(space.print())
S:space 0.0.3b1
├── O3D:patient009 ((-1.00, -1.00, -1.00), (1.00, 1.00, 1.00))
│ ├── FS:colored_obj mesh_obj^ ../tests/acdc_for_test/patient009/colored.obj
│ ├── FS:sdf_npy sdt^ ../tests/acdc_for_test/patient009/sdf.npy
│ ├── TR:transform to_cube
│ ├── MS:mesh
│ ├── MS:mesh_colors
│ ├── MS:sampling
│ ├── MS:sdt
│ ├── MS:train_task
│ ├── plot(default, filepath=None)
│ ├── print(default|source|full)
│ ├── sampling_eachN_from_mesh(count=N, step=M, shift=K) -> (ns_ind[N], ns_xyz[N])
│ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ ├── sampling_uniform(key, N) -> ns_xyz[N,3]
│ ├── save_mesh(filepath, {name, array})
│ ├── surface_ind2rgba(ind[..,1]) -> rgba[..,4]
│ ├── surface_ind2xyz(ind[..,1]) -> ns_xyz[..,3]
│ ├── surface_rgba() -> xyz[N,4]
│ ├── surface_xyz() -> xyz[N,3]
│ ├── surface_xyz2ind(ns_xyz[..,3]) -> ns_dist[..,1], ns_ind[..,1]
│ ├── surface_xyz2localsdt(ns_xyz[3], spacing=(D,H,W), scale=1.) -> ns_xyz[D,H,W,3], ns_localsdt[D,H,W,1]
│ ├── surface_xyz2rgba(ns_xyz[..,3]) -> rgba[..,4]
│ ├── surface_xyz2sdt(ns_xyz[..,3]) -> ns_sdt[..,1]
│ ├── train_task_sdt2sdf(filename, **kwargs)
│ ├── transform_sdt_ns2ps(ns_sdt[..]) -> ps_sdt[..]
│ ├── transform_sdt_ps2ns(ps_sdt[..]) -> ns_sdt[..]
│ ├── transform_xyz_ns2ps(ns_xyz[..,3]) -> ps_xyz[..,3]
│ ├── transform_xyz_ps2ns(ps_xyz[..,3]) -> ns_xyz[..,3]
│ └── unload_from_memory()
├── O3D:patient029 ((-1.00, -1.00, -1.00), (1.00, 1.00, 1.00))
│ ├── FS:colored_obj mesh_obj^ ../tests/acdc_for_test/patient029/colored.obj
│ ├── FS:sdf_npy sdt^ ../tests/acdc_for_test/patient029/sdf.npy
│ ├── TR:transform to_cube
│ ├── MS:mesh
│ ├── MS:mesh_colors
│ ├── MS:sampling
│ ├── MS:sdt
│ ├── MS:train_task
│ ├── plot(default, filepath=None)
│ ├── print(default|source|full)
│ ├── sampling_eachN_from_mesh(count=N, step=M, shift=K) -> (ns_ind[N], ns_xyz[N])
│ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ ├── sampling_uniform(key, N) -> ns_xyz[N,3]
│ ├── save_mesh(filepath, {name, array})
│ ├── surface_ind2rgba(ind[..,1]) -> rgba[..,4]
│ ├── surface_ind2xyz(ind[..,1]) -> ns_xyz[..,3]
│ ├── surface_rgba() -> xyz[N,4]
│ ├── surface_xyz() -> xyz[N,3]
│ ├── surface_xyz2ind(ns_xyz[..,3]) -> ns_dist[..,1], ns_ind[..,1]
│ ├── surface_xyz2localsdt(ns_xyz[3], spacing=(D,H,W), scale=1.) -> ns_xyz[D,H,W,3], ns_localsdt[D,H,W,1]
│ ├── surface_xyz2rgba(ns_xyz[..,3]) -> rgba[..,4]
│ ├── surface_xyz2sdt(ns_xyz[..,3]) -> ns_sdt[..,1]
│ ├── train_task_sdt2sdf(filename, **kwargs)
│ ├── transform_sdt_ns2ps(ns_sdt[..]) -> ps_sdt[..]
│ ├── transform_sdt_ps2ns(ps_sdt[..]) -> ns_sdt[..]
│ ├── transform_xyz_ns2ps(ns_xyz[..,3]) -> ps_xyz[..,3]
│ ├── transform_xyz_ps2ns(ps_xyz[..,3]) -> ns_xyz[..,3]
│ └── unload_from_memory()
├── O3D:patient049 ((-1.00, -1.00, -1.00), (1.00, 1.00, 1.00))
│ ├── FS:colored_obj mesh_obj^ ../tests/acdc_for_test/patient049/colored.obj
│ ├── FS:sdf_npy sdt^ ../tests/acdc_for_test/patient049/sdf.npy
│ ├── TR:transform to_cube
│ ├── MS:mesh
│ ├── MS:mesh_colors
│ ├── MS:sampling
│ ├── MS:sdt
│ ├── MS:train_task
│ ├── plot(default, filepath=None)
│ ├── print(default|source|full)
│ ├── sampling_eachN_from_mesh(count=N, step=M, shift=K) -> (ns_ind[N], ns_xyz[N])
│ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ ├── sampling_uniform(key, N) -> ns_xyz[N,3]
│ ├── save_mesh(filepath, {name, array})
│ ├── surface_ind2rgba(ind[..,1]) -> rgba[..,4]
│ ├── surface_ind2xyz(ind[..,1]) -> ns_xyz[..,3]
│ ├── surface_rgba() -> xyz[N,4]
│ ├── surface_xyz() -> xyz[N,3]
│ ├── surface_xyz2ind(ns_xyz[..,3]) -> ns_dist[..,1], ns_ind[..,1]
│ ├── surface_xyz2localsdt(ns_xyz[3], spacing=(D,H,W), scale=1.) -> ns_xyz[D,H,W,3], ns_localsdt[D,H,W,1]
│ ├── surface_xyz2rgba(ns_xyz[..,3]) -> rgba[..,4]
│ ├── surface_xyz2sdt(ns_xyz[..,3]) -> ns_sdt[..,1]
│ ├── train_task_sdt2sdf(filename, **kwargs)
│ ├── transform_sdt_ns2ps(ns_sdt[..]) -> ps_sdt[..]
│ ├── transform_sdt_ps2ns(ps_sdt[..]) -> ns_sdt[..]
│ ├── transform_xyz_ns2ps(ns_xyz[..,3]) -> ps_xyz[..,3]
│ ├── transform_xyz_ps2ns(ps_xyz[..,3]) -> ns_xyz[..,3]
│ └── unload_from_memory()
├── O3D:patient069 ((-1.00, -1.00, -1.00), (1.00, 1.00, 1.00))
│ ├── FS:colored_obj mesh_obj^ ../tests/acdc_for_test/patient069/colored.obj
│ ├── FS:sdf_npy sdt^ ../tests/acdc_for_test/patient069/sdf.npy
│ ├── TR:transform to_cube
│ ├── MS:mesh
│ ├── MS:mesh_colors
│ ├── MS:sampling
│ ├── MS:sdt
│ ├── MS:train_task
│ ├── plot(default, filepath=None)
│ ├── print(default|source|full)
│ ├── sampling_eachN_from_mesh(count=N, step=M, shift=K) -> (ns_ind[N], ns_xyz[N])
│ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ ├── sampling_uniform(key, N) -> ns_xyz[N,3]
│ ├── save_mesh(filepath, {name, array})
│ ├── surface_ind2rgba(ind[..,1]) -> rgba[..,4]
│ ├── surface_ind2xyz(ind[..,1]) -> ns_xyz[..,3]
│ ├── surface_rgba() -> xyz[N,4]
│ ├── surface_xyz() -> xyz[N,3]
│ ├── surface_xyz2ind(ns_xyz[..,3]) -> ns_dist[..,1], ns_ind[..,1]
│ ├── surface_xyz2localsdt(ns_xyz[3], spacing=(D,H,W), scale=1.) -> ns_xyz[D,H,W,3], ns_localsdt[D,H,W,1]
│ ├── surface_xyz2rgba(ns_xyz[..,3]) -> rgba[..,4]
│ ├── surface_xyz2sdt(ns_xyz[..,3]) -> ns_sdt[..,1]
│ ├── train_task_sdt2sdf(filename, **kwargs)
│ ├── transform_sdt_ns2ps(ns_sdt[..]) -> ps_sdt[..]
│ ├── transform_sdt_ps2ns(ps_sdt[..]) -> ns_sdt[..]
│ ├── transform_xyz_ns2ps(ns_xyz[..,3]) -> ps_xyz[..,3]
│ ├── transform_xyz_ps2ns(ps_xyz[..,3]) -> ns_xyz[..,3]
│ └── unload_from_memory()
├── O3D:patient089 ((-1.00, -1.00, -1.00), (1.00, 1.00, 1.00))
│ ├── FS:colored_obj mesh_obj^ ../tests/acdc_for_test/patient089/colored.obj
│ ├── FS:sdf_npy sdt^ ../tests/acdc_for_test/patient089/sdf.npy
│ ├── TR:transform to_cube
│ ├── MS:mesh
│ ├── MS:mesh_colors
│ ├── MS:sampling
│ ├── MS:sdt
│ ├── MS:train_task
│ ├── plot(default, filepath=None)
│ ├── print(default|source|full)
│ ├── sampling_eachN_from_mesh(count=N, step=M, shift=K) -> (ns_ind[N], ns_xyz[N])
│ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ ├── sampling_uniform(key, N) -> ns_xyz[N,3]
│ ├── save_mesh(filepath, {name, array})
│ ├── surface_ind2rgba(ind[..,1]) -> rgba[..,4]
│ ├── surface_ind2xyz(ind[..,1]) -> ns_xyz[..,3]
│ ├── surface_rgba() -> xyz[N,4]
│ ├── surface_xyz() -> xyz[N,3]
│ ├── surface_xyz2ind(ns_xyz[..,3]) -> ns_dist[..,1], ns_ind[..,1]
│ ├── surface_xyz2localsdt(ns_xyz[3], spacing=(D,H,W), scale=1.) -> ns_xyz[D,H,W,3], ns_localsdt[D,H,W,1]
│ ├── surface_xyz2rgba(ns_xyz[..,3]) -> rgba[..,4]
│ ├── surface_xyz2sdt(ns_xyz[..,3]) -> ns_sdt[..,1]
│ ├── train_task_sdt2sdf(filename, **kwargs)
│ ├── transform_sdt_ns2ps(ns_sdt[..]) -> ps_sdt[..]
│ ├── transform_sdt_ps2ns(ps_sdt[..]) -> ns_sdt[..]
│ ├── transform_xyz_ns2ps(ns_xyz[..,3]) -> ps_xyz[..,3]
│ ├── transform_xyz_ps2ns(ps_xyz[..,3]) -> ns_xyz[..,3]
│ └── unload_from_memory()
├── MS:sampling
├── init()
├── plot(default, filepath=None)
├── preload(identity|shift_and_scale|to_cube, scale, keep_in_memory=True)
├── print(default|source|full)
├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
├── sampling_uniform(key, N) -> ns_xyz[N,3]
├── save_space_to_file(filepath)
├── to_json()
└── unload_from_memory()
[24]:
print(space.print("full"))
S:space 0.0.3b1
├── O3D:patient009 ((-1.00, -1.00, -1.00), (1.00, 1.00, 1.00))
│ ├── FS:colored_obj mesh_obj^ ../tests/acdc_for_test/patient009/colored.obj
│ │ ├── MS:sampling
│ │ │ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ │ │ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ │ │ └── sampling_uniform(key, N) -> ns_xyz[N,3]
│ │ ├── plot(default, filepath=None)
│ │ ├── print(default|source|full)
│ │ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ │ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ │ ├── sampling_uniform(key, N) -> ns_xyz[N,3]
│ │ └── unload_from_memory()
│ ├── FS:sdf_npy sdt^ ../tests/acdc_for_test/patient009/sdf.npy
│ │ ├── MS:sampling
│ │ │ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ │ │ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ │ │ └── sampling_uniform(key, N) -> ns_xyz[N,3]
│ │ ├── plot(default, filepath=None)
│ │ ├── print(default|source|full)
│ │ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ │ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ │ ├── sampling_uniform(key, N) -> ns_xyz[N,3]
│ │ └── unload_from_memory()
│ ├── TR:transform to_cube
│ │ ├── plot(default, filepath=None)
│ │ ├── print(default|source|full)
│ │ ├── transform_sdt_ns2ps(ns_sdt[..]) -> ps_sdt[..]
│ │ ├── transform_sdt_ps2ns(ps_sdt[..]) -> ns_sdt[..]
│ │ ├── transform_xyz_ns2ps(ns_xyz[..,3]) -> ps_xyz[..,3]
│ │ ├── transform_xyz_ps2ns(ps_xyz[..,3]) -> ns_xyz[..,3]
│ │ └── unload_from_memory()
│ ├── MS:mesh
│ │ ├── sampling_eachN_from_mesh(count=N, step=M, shift=K) -> (ns_ind[N], ns_xyz[N])
│ │ ├── save_mesh(filepath, {name, array})
│ │ ├── surface_ind2xyz(ind[..,1]) -> ns_xyz[..,3]
│ │ ├── surface_xyz() -> xyz[N,3]
│ │ └── surface_xyz2ind(ns_xyz[..,3]) -> ns_dist[..,1], ns_ind[..,1]
│ ├── MS:mesh_colors
│ │ ├── surface_ind2rgba(ind[..,1]) -> rgba[..,4]
│ │ ├── surface_rgba() -> xyz[N,4]
│ │ └── surface_xyz2rgba(ns_xyz[..,3]) -> rgba[..,4]
│ ├── MS:sampling
│ │ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ │ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ │ └── sampling_uniform(key, N) -> ns_xyz[N,3]
│ ├── MS:sdt
│ │ ├── surface_xyz2localsdt(ns_xyz[3], spacing=(D,H,W), scale=1.) -> ns_xyz[D,H,W,3], ns_localsdt[D,H,W,1]
│ │ └── surface_xyz2sdt(ns_xyz[..,3]) -> ns_sdt[..,1]
│ ├── MS:train_task
│ │ └── train_task_sdt2sdf(filename, **kwargs)
│ ├── plot(default, filepath=None)
│ ├── print(default|source|full)
│ ├── sampling_eachN_from_mesh(count=N, step=M, shift=K) -> (ns_ind[N], ns_xyz[N])
│ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ ├── sampling_uniform(key, N) -> ns_xyz[N,3]
│ ├── save_mesh(filepath, {name, array})
│ ├── surface_ind2rgba(ind[..,1]) -> rgba[..,4]
│ ├── surface_ind2xyz(ind[..,1]) -> ns_xyz[..,3]
│ ├── surface_rgba() -> xyz[N,4]
│ ├── surface_xyz() -> xyz[N,3]
│ ├── surface_xyz2ind(ns_xyz[..,3]) -> ns_dist[..,1], ns_ind[..,1]
│ ├── surface_xyz2localsdt(ns_xyz[3], spacing=(D,H,W), scale=1.) -> ns_xyz[D,H,W,3], ns_localsdt[D,H,W,1]
│ ├── surface_xyz2rgba(ns_xyz[..,3]) -> rgba[..,4]
│ ├── surface_xyz2sdt(ns_xyz[..,3]) -> ns_sdt[..,1]
│ ├── train_task_sdt2sdf(filename, **kwargs)
│ ├── transform_sdt_ns2ps(ns_sdt[..]) -> ps_sdt[..]
│ ├── transform_sdt_ps2ns(ps_sdt[..]) -> ns_sdt[..]
│ ├── transform_xyz_ns2ps(ns_xyz[..,3]) -> ps_xyz[..,3]
│ ├── transform_xyz_ps2ns(ps_xyz[..,3]) -> ns_xyz[..,3]
│ └── unload_from_memory()
├── O3D:patient029 ((-1.00, -1.00, -1.00), (1.00, 1.00, 1.00))
│ ├── FS:colored_obj mesh_obj^ ../tests/acdc_for_test/patient029/colored.obj
│ │ ├── MS:sampling
│ │ │ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ │ │ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ │ │ └── sampling_uniform(key, N) -> ns_xyz[N,3]
│ │ ├── plot(default, filepath=None)
│ │ ├── print(default|source|full)
│ │ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ │ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ │ ├── sampling_uniform(key, N) -> ns_xyz[N,3]
│ │ └── unload_from_memory()
│ ├── FS:sdf_npy sdt^ ../tests/acdc_for_test/patient029/sdf.npy
│ │ ├── MS:sampling
│ │ │ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ │ │ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ │ │ └── sampling_uniform(key, N) -> ns_xyz[N,3]
│ │ ├── plot(default, filepath=None)
│ │ ├── print(default|source|full)
│ │ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ │ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ │ ├── sampling_uniform(key, N) -> ns_xyz[N,3]
│ │ └── unload_from_memory()
│ ├── TR:transform to_cube
│ │ ├── plot(default, filepath=None)
│ │ ├── print(default|source|full)
│ │ ├── transform_sdt_ns2ps(ns_sdt[..]) -> ps_sdt[..]
│ │ ├── transform_sdt_ps2ns(ps_sdt[..]) -> ns_sdt[..]
│ │ ├── transform_xyz_ns2ps(ns_xyz[..,3]) -> ps_xyz[..,3]
│ │ ├── transform_xyz_ps2ns(ps_xyz[..,3]) -> ns_xyz[..,3]
│ │ └── unload_from_memory()
│ ├── MS:mesh
│ │ ├── sampling_eachN_from_mesh(count=N, step=M, shift=K) -> (ns_ind[N], ns_xyz[N])
│ │ ├── save_mesh(filepath, {name, array})
│ │ ├── surface_ind2xyz(ind[..,1]) -> ns_xyz[..,3]
│ │ ├── surface_xyz() -> xyz[N,3]
│ │ └── surface_xyz2ind(ns_xyz[..,3]) -> ns_dist[..,1], ns_ind[..,1]
│ ├── MS:mesh_colors
│ │ ├── surface_ind2rgba(ind[..,1]) -> rgba[..,4]
│ │ ├── surface_rgba() -> xyz[N,4]
│ │ └── surface_xyz2rgba(ns_xyz[..,3]) -> rgba[..,4]
│ ├── MS:sampling
│ │ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ │ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ │ └── sampling_uniform(key, N) -> ns_xyz[N,3]
│ ├── MS:sdt
│ │ ├── surface_xyz2localsdt(ns_xyz[3], spacing=(D,H,W), scale=1.) -> ns_xyz[D,H,W,3], ns_localsdt[D,H,W,1]
│ │ └── surface_xyz2sdt(ns_xyz[..,3]) -> ns_sdt[..,1]
│ ├── MS:train_task
│ │ └── train_task_sdt2sdf(filename, **kwargs)
│ ├── plot(default, filepath=None)
│ ├── print(default|source|full)
│ ├── sampling_eachN_from_mesh(count=N, step=M, shift=K) -> (ns_ind[N], ns_xyz[N])
│ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ ├── sampling_uniform(key, N) -> ns_xyz[N,3]
│ ├── save_mesh(filepath, {name, array})
│ ├── surface_ind2rgba(ind[..,1]) -> rgba[..,4]
│ ├── surface_ind2xyz(ind[..,1]) -> ns_xyz[..,3]
│ ├── surface_rgba() -> xyz[N,4]
│ ├── surface_xyz() -> xyz[N,3]
│ ├── surface_xyz2ind(ns_xyz[..,3]) -> ns_dist[..,1], ns_ind[..,1]
│ ├── surface_xyz2localsdt(ns_xyz[3], spacing=(D,H,W), scale=1.) -> ns_xyz[D,H,W,3], ns_localsdt[D,H,W,1]
│ ├── surface_xyz2rgba(ns_xyz[..,3]) -> rgba[..,4]
│ ├── surface_xyz2sdt(ns_xyz[..,3]) -> ns_sdt[..,1]
│ ├── train_task_sdt2sdf(filename, **kwargs)
│ ├── transform_sdt_ns2ps(ns_sdt[..]) -> ps_sdt[..]
│ ├── transform_sdt_ps2ns(ps_sdt[..]) -> ns_sdt[..]
│ ├── transform_xyz_ns2ps(ns_xyz[..,3]) -> ps_xyz[..,3]
│ ├── transform_xyz_ps2ns(ps_xyz[..,3]) -> ns_xyz[..,3]
│ └── unload_from_memory()
├── O3D:patient049 ((-1.00, -1.00, -1.00), (1.00, 1.00, 1.00))
│ ├── FS:colored_obj mesh_obj^ ../tests/acdc_for_test/patient049/colored.obj
│ │ ├── MS:sampling
│ │ │ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ │ │ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ │ │ └── sampling_uniform(key, N) -> ns_xyz[N,3]
│ │ ├── plot(default, filepath=None)
│ │ ├── print(default|source|full)
│ │ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ │ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ │ ├── sampling_uniform(key, N) -> ns_xyz[N,3]
│ │ └── unload_from_memory()
│ ├── FS:sdf_npy sdt^ ../tests/acdc_for_test/patient049/sdf.npy
│ │ ├── MS:sampling
│ │ │ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ │ │ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ │ │ └── sampling_uniform(key, N) -> ns_xyz[N,3]
│ │ ├── plot(default, filepath=None)
│ │ ├── print(default|source|full)
│ │ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ │ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ │ ├── sampling_uniform(key, N) -> ns_xyz[N,3]
│ │ └── unload_from_memory()
│ ├── TR:transform to_cube
│ │ ├── plot(default, filepath=None)
│ │ ├── print(default|source|full)
│ │ ├── transform_sdt_ns2ps(ns_sdt[..]) -> ps_sdt[..]
│ │ ├── transform_sdt_ps2ns(ps_sdt[..]) -> ns_sdt[..]
│ │ ├── transform_xyz_ns2ps(ns_xyz[..,3]) -> ps_xyz[..,3]
│ │ ├── transform_xyz_ps2ns(ps_xyz[..,3]) -> ns_xyz[..,3]
│ │ └── unload_from_memory()
│ ├── MS:mesh
│ │ ├── sampling_eachN_from_mesh(count=N, step=M, shift=K) -> (ns_ind[N], ns_xyz[N])
│ │ ├── save_mesh(filepath, {name, array})
│ │ ├── surface_ind2xyz(ind[..,1]) -> ns_xyz[..,3]
│ │ ├── surface_xyz() -> xyz[N,3]
│ │ └── surface_xyz2ind(ns_xyz[..,3]) -> ns_dist[..,1], ns_ind[..,1]
│ ├── MS:mesh_colors
│ │ ├── surface_ind2rgba(ind[..,1]) -> rgba[..,4]
│ │ ├── surface_rgba() -> xyz[N,4]
│ │ └── surface_xyz2rgba(ns_xyz[..,3]) -> rgba[..,4]
│ ├── MS:sampling
│ │ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ │ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ │ └── sampling_uniform(key, N) -> ns_xyz[N,3]
│ ├── MS:sdt
│ │ ├── surface_xyz2localsdt(ns_xyz[3], spacing=(D,H,W), scale=1.) -> ns_xyz[D,H,W,3], ns_localsdt[D,H,W,1]
│ │ └── surface_xyz2sdt(ns_xyz[..,3]) -> ns_sdt[..,1]
│ ├── MS:train_task
│ │ └── train_task_sdt2sdf(filename, **kwargs)
│ ├── plot(default, filepath=None)
│ ├── print(default|source|full)
│ ├── sampling_eachN_from_mesh(count=N, step=M, shift=K) -> (ns_ind[N], ns_xyz[N])
│ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ ├── sampling_uniform(key, N) -> ns_xyz[N,3]
│ ├── save_mesh(filepath, {name, array})
│ ├── surface_ind2rgba(ind[..,1]) -> rgba[..,4]
│ ├── surface_ind2xyz(ind[..,1]) -> ns_xyz[..,3]
│ ├── surface_rgba() -> xyz[N,4]
│ ├── surface_xyz() -> xyz[N,3]
│ ├── surface_xyz2ind(ns_xyz[..,3]) -> ns_dist[..,1], ns_ind[..,1]
│ ├── surface_xyz2localsdt(ns_xyz[3], spacing=(D,H,W), scale=1.) -> ns_xyz[D,H,W,3], ns_localsdt[D,H,W,1]
│ ├── surface_xyz2rgba(ns_xyz[..,3]) -> rgba[..,4]
│ ├── surface_xyz2sdt(ns_xyz[..,3]) -> ns_sdt[..,1]
│ ├── train_task_sdt2sdf(filename, **kwargs)
│ ├── transform_sdt_ns2ps(ns_sdt[..]) -> ps_sdt[..]
│ ├── transform_sdt_ps2ns(ps_sdt[..]) -> ns_sdt[..]
│ ├── transform_xyz_ns2ps(ns_xyz[..,3]) -> ps_xyz[..,3]
│ ├── transform_xyz_ps2ns(ps_xyz[..,3]) -> ns_xyz[..,3]
│ └── unload_from_memory()
├── O3D:patient069 ((-1.00, -1.00, -1.00), (1.00, 1.00, 1.00))
│ ├── FS:colored_obj mesh_obj^ ../tests/acdc_for_test/patient069/colored.obj
│ │ ├── MS:sampling
│ │ │ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ │ │ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ │ │ └── sampling_uniform(key, N) -> ns_xyz[N,3]
│ │ ├── plot(default, filepath=None)
│ │ ├── print(default|source|full)
│ │ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ │ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ │ ├── sampling_uniform(key, N) -> ns_xyz[N,3]
│ │ └── unload_from_memory()
│ ├── FS:sdf_npy sdt^ ../tests/acdc_for_test/patient069/sdf.npy
│ │ ├── MS:sampling
│ │ │ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ │ │ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ │ │ └── sampling_uniform(key, N) -> ns_xyz[N,3]
│ │ ├── plot(default, filepath=None)
│ │ ├── print(default|source|full)
│ │ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ │ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ │ ├── sampling_uniform(key, N) -> ns_xyz[N,3]
│ │ └── unload_from_memory()
│ ├── TR:transform to_cube
│ │ ├── plot(default, filepath=None)
│ │ ├── print(default|source|full)
│ │ ├── transform_sdt_ns2ps(ns_sdt[..]) -> ps_sdt[..]
│ │ ├── transform_sdt_ps2ns(ps_sdt[..]) -> ns_sdt[..]
│ │ ├── transform_xyz_ns2ps(ns_xyz[..,3]) -> ps_xyz[..,3]
│ │ ├── transform_xyz_ps2ns(ps_xyz[..,3]) -> ns_xyz[..,3]
│ │ └── unload_from_memory()
│ ├── MS:mesh
│ │ ├── sampling_eachN_from_mesh(count=N, step=M, shift=K) -> (ns_ind[N], ns_xyz[N])
│ │ ├── save_mesh(filepath, {name, array})
│ │ ├── surface_ind2xyz(ind[..,1]) -> ns_xyz[..,3]
│ │ ├── surface_xyz() -> xyz[N,3]
│ │ └── surface_xyz2ind(ns_xyz[..,3]) -> ns_dist[..,1], ns_ind[..,1]
│ ├── MS:mesh_colors
│ │ ├── surface_ind2rgba(ind[..,1]) -> rgba[..,4]
│ │ ├── surface_rgba() -> xyz[N,4]
│ │ └── surface_xyz2rgba(ns_xyz[..,3]) -> rgba[..,4]
│ ├── MS:sampling
│ │ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ │ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ │ └── sampling_uniform(key, N) -> ns_xyz[N,3]
│ ├── MS:sdt
│ │ ├── surface_xyz2localsdt(ns_xyz[3], spacing=(D,H,W), scale=1.) -> ns_xyz[D,H,W,3], ns_localsdt[D,H,W,1]
│ │ └── surface_xyz2sdt(ns_xyz[..,3]) -> ns_sdt[..,1]
│ ├── MS:train_task
│ │ └── train_task_sdt2sdf(filename, **kwargs)
│ ├── plot(default, filepath=None)
│ ├── print(default|source|full)
│ ├── sampling_eachN_from_mesh(count=N, step=M, shift=K) -> (ns_ind[N], ns_xyz[N])
│ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ ├── sampling_uniform(key, N) -> ns_xyz[N,3]
│ ├── save_mesh(filepath, {name, array})
│ ├── surface_ind2rgba(ind[..,1]) -> rgba[..,4]
│ ├── surface_ind2xyz(ind[..,1]) -> ns_xyz[..,3]
│ ├── surface_rgba() -> xyz[N,4]
│ ├── surface_xyz() -> xyz[N,3]
│ ├── surface_xyz2ind(ns_xyz[..,3]) -> ns_dist[..,1], ns_ind[..,1]
│ ├── surface_xyz2localsdt(ns_xyz[3], spacing=(D,H,W), scale=1.) -> ns_xyz[D,H,W,3], ns_localsdt[D,H,W,1]
│ ├── surface_xyz2rgba(ns_xyz[..,3]) -> rgba[..,4]
│ ├── surface_xyz2sdt(ns_xyz[..,3]) -> ns_sdt[..,1]
│ ├── train_task_sdt2sdf(filename, **kwargs)
│ ├── transform_sdt_ns2ps(ns_sdt[..]) -> ps_sdt[..]
│ ├── transform_sdt_ps2ns(ps_sdt[..]) -> ns_sdt[..]
│ ├── transform_xyz_ns2ps(ns_xyz[..,3]) -> ps_xyz[..,3]
│ ├── transform_xyz_ps2ns(ps_xyz[..,3]) -> ns_xyz[..,3]
│ └── unload_from_memory()
├── O3D:patient089 ((-1.00, -1.00, -1.00), (1.00, 1.00, 1.00))
│ ├── FS:colored_obj mesh_obj^ ../tests/acdc_for_test/patient089/colored.obj
│ │ ├── MS:sampling
│ │ │ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ │ │ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ │ │ └── sampling_uniform(key, N) -> ns_xyz[N,3]
│ │ ├── plot(default, filepath=None)
│ │ ├── print(default|source|full)
│ │ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ │ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ │ ├── sampling_uniform(key, N) -> ns_xyz[N,3]
│ │ └── unload_from_memory()
│ ├── FS:sdf_npy sdt^ ../tests/acdc_for_test/patient089/sdf.npy
│ │ ├── MS:sampling
│ │ │ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ │ │ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ │ │ └── sampling_uniform(key, N) -> ns_xyz[N,3]
│ │ ├── plot(default, filepath=None)
│ │ ├── print(default|source|full)
│ │ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ │ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ │ ├── sampling_uniform(key, N) -> ns_xyz[N,3]
│ │ └── unload_from_memory()
│ ├── TR:transform to_cube
│ │ ├── plot(default, filepath=None)
│ │ ├── print(default|source|full)
│ │ ├── transform_sdt_ns2ps(ns_sdt[..]) -> ps_sdt[..]
│ │ ├── transform_sdt_ps2ns(ps_sdt[..]) -> ns_sdt[..]
│ │ ├── transform_xyz_ns2ps(ns_xyz[..,3]) -> ps_xyz[..,3]
│ │ ├── transform_xyz_ps2ns(ps_xyz[..,3]) -> ns_xyz[..,3]
│ │ └── unload_from_memory()
│ ├── MS:mesh
│ │ ├── sampling_eachN_from_mesh(count=N, step=M, shift=K) -> (ns_ind[N], ns_xyz[N])
│ │ ├── save_mesh(filepath, {name, array})
│ │ ├── surface_ind2xyz(ind[..,1]) -> ns_xyz[..,3]
│ │ ├── surface_xyz() -> xyz[N,3]
│ │ └── surface_xyz2ind(ns_xyz[..,3]) -> ns_dist[..,1], ns_ind[..,1]
│ ├── MS:mesh_colors
│ │ ├── surface_ind2rgba(ind[..,1]) -> rgba[..,4]
│ │ ├── surface_rgba() -> xyz[N,4]
│ │ └── surface_xyz2rgba(ns_xyz[..,3]) -> rgba[..,4]
│ ├── MS:sampling
│ │ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ │ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ │ └── sampling_uniform(key, N) -> ns_xyz[N,3]
│ ├── MS:sdt
│ │ ├── surface_xyz2localsdt(ns_xyz[3], spacing=(D,H,W), scale=1.) -> ns_xyz[D,H,W,3], ns_localsdt[D,H,W,1]
│ │ └── surface_xyz2sdt(ns_xyz[..,3]) -> ns_sdt[..,1]
│ ├── MS:train_task
│ │ └── train_task_sdt2sdf(filename, **kwargs)
│ ├── plot(default, filepath=None)
│ ├── print(default|source|full)
│ ├── sampling_eachN_from_mesh(count=N, step=M, shift=K) -> (ns_ind[N], ns_xyz[N])
│ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ ├── sampling_uniform(key, N) -> ns_xyz[N,3]
│ ├── save_mesh(filepath, {name, array})
│ ├── surface_ind2rgba(ind[..,1]) -> rgba[..,4]
│ ├── surface_ind2xyz(ind[..,1]) -> ns_xyz[..,3]
│ ├── surface_rgba() -> xyz[N,4]
│ ├── surface_xyz() -> xyz[N,3]
│ ├── surface_xyz2ind(ns_xyz[..,3]) -> ns_dist[..,1], ns_ind[..,1]
│ ├── surface_xyz2localsdt(ns_xyz[3], spacing=(D,H,W), scale=1.) -> ns_xyz[D,H,W,3], ns_localsdt[D,H,W,1]
│ ├── surface_xyz2rgba(ns_xyz[..,3]) -> rgba[..,4]
│ ├── surface_xyz2sdt(ns_xyz[..,3]) -> ns_sdt[..,1]
│ ├── train_task_sdt2sdf(filename, **kwargs)
│ ├── transform_sdt_ns2ps(ns_sdt[..]) -> ps_sdt[..]
│ ├── transform_sdt_ps2ns(ps_sdt[..]) -> ns_sdt[..]
│ ├── transform_xyz_ns2ps(ns_xyz[..,3]) -> ps_xyz[..,3]
│ ├── transform_xyz_ps2ns(ps_xyz[..,3]) -> ns_xyz[..,3]
│ └── unload_from_memory()
├── MS:sampling
│ ├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
│ ├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
│ └── sampling_uniform(key, N) -> ns_xyz[N,3]
├── init()
├── plot(default, filepath=None)
├── preload(identity|shift_and_scale|to_cube, scale, keep_in_memory=True)
├── print(default|source|full)
├── sampling_grid(spacing=(D,H,W)) -> ns_xyz[D,H,W,3]
├── sampling_grid_with_noise(key, spacing=(D,H,W), sigma) -> ns_xyz[N,3]
├── sampling_uniform(key, N) -> ns_xyz[N,3]
├── save_space_to_file(filepath)
├── to_json()
└── unload_from_memory()