DataDefinition
clara.viz.core.DataDefinition
类可用于指定 3D 体积数据或 2D 图像数据(以及 2D 多分辨率数据)。它还包含有关数据的信息,例如数据元素的物理大小或数据的顺序和组织。最后,它包含有关数据在使用前如何转换(翻转或置换)的信息。
有几种可能的方法可以使用 DataDefinition 类。
从文件加载
有一些高级函数可以从给定的文件名加载数据,并使用该文件中的信息和数据填充类成员。以下代码将从 NIFTI 文件 “CT.nii.gz” 加载数据。
from clara.viz.core import DataDefinition
data_definition = DataDefinition('CT.nii.gz')
多个输入数组
在某些情况下,需要指定多个数据数组,例如密度体积和掩模体积。对于这种情况,可以将文件附加到 DataDefinition 对象。
from clara.viz.core import DataDefinition
data_definition = DataDefinition()
data_definition.append('density.nii.gz', 'DXYZ')
data_definition.append('mask.nii.gz', 'MXYZ')
设置
DataDefinition 类还存储渲染器的设置。这些设置组织为字典,可以从 JSON 文件加载。
data_definition.load_settings('settings.json')
直接数据输入
还有一种“低级别”方法可以指定为 numpy 数组。为此,DataDefinition 类有一个子类 clara.viz.core.DataDefinition.Array
。
import numpy as np
input = np.fromfile('data.raw', dtype=np.int16)
input = input.reshape((512, 512, 240))
from clara.viz.core import DataDefinition
array = DataDefinition.Array()
array.levels = [input]
array.dimension_order = "DXYZ"
array.permute_axes = [0,3,1,2]
array.flip_axes = [False, True, False, False]
array.element_sizes [[1.0, 1.16, 1.0, 1.0]]
data_definition = DataDefinition()
data_definition.arrays.append(array)
多分辨率数据
ClaraViz 还支持渲染多分辨率 2D 图像数据,例如数字病理学中使用的那种。多分辨率 2D 图像可能非常大,数亿像素,多个 GBytes 的数据。因此,多分辨率 2D 图像的数据是按需加载的,这意味着数据不会预先全部加载,而是当图像的一部分可见时,才会在那个时间点加载。
为了支持这一点,DataDefinition 类使用了 cuCIM。对于用户来说,这是完全隐藏的,用户只需指定文件名即可。
from clara.viz.core import DataDefinition
data_definition = DataDefinition('large_multi_res_image.tiff')
用户也可以提供自定义的按需数据获取回调函数。