VDS JSON Object Descriptions
The following chapter contains a specification of the JSON objects that describe a VDS dataset.
VolumeDataLayout
Property |
Type |
Description |
---|---|---|
axisDescriptors |
Array |
An array of AxisDescriptor objects that describe each axis of the dataset, the dimensionality of the dataset is determined by the number of axis descriptors in this list. |
channelDescriptors |
Array |
An array of ChannelDescriptor objects that describe each data channel of the dataset. The first ChannelDescriptor is considered the primary channel of the dataset and is not allowed to have a mapping. |
layoutDescriptor |
Object |
An object describing the overall partitioning of the dataset into chunks. |
metadata |
Array |
An array of Metadata JSON objects that can be used to encode any additional information about the volume. See section about recognized metadata. |
AxisDescriptor
Property |
Type |
Description |
---|---|---|
numSamples |
Int |
The number of samples along this axis. |
name |
String |
The name of this axis, see section about recognized names and units for dimensions. |
unit |
String |
The unit of this axis, see section about recognized names and units for dimensions. |
coordinateMin |
Float |
The annotation coordinate of the first sample. |
coordinateMax |
Float |
The annotation coordinate of the last sample. |
ChannelDescriptor
Property |
Type |
Description |
format |
Enumeration |
The format for the samples in the data channel. Recognized values are:
|
components |
Enumeration |
The number of components per sample in the data channel. Recognized values are: |
name |
string |
The name for the additional data channel, see section about recognized names and units for data channels. |
unit |
string |
The unit for the additional data channel, see section about recognized names and units for data channels. |
valueRange |
Float[2] |
The estimated value range (min and max) for the additional data channel. This should not include outliers and is suitable for e.g., can be used to mapping values to colors for display purposes. |
channelMapping |
Enumeration |
Describes how this channel is mapped to the primary volume. Recognized values are: |
mappedValues |
Int |
If the ChannelMapping property is set to PerTraceindicates a per-trace mapping, this a the number of data values in this data channel for each trace in the primary volumedata channel. |
discrete |
Boolean |
If this is ‘true’, the values should not be interpolated. For example, this is true for a classification volume as interpolating Zone IDs make no sense. |
allowLossyCompression |
Boolean |
If this is ‘true’, the data values can be approximated by a value close to the true value. |
renderable |
Boolean |
If this is ‘true’, this data channel has LODs as specified in the LayoutDescriptor. |
useNoValue |
Boolean |
If this is ‘true’, there is a reserved value that indicates that a sample is missing. |
noValue |
Float |
This value (converted to the current voxel format using the NoValue conversion rules) is used to indicate a missing sample if UseNoValue is True. |
integerScale |
Float |
This value is used to scale U8 and U16 integer formats when converting to floating point values. |
integerOffset |
Float |
This value is used to offset the scaled U8 and U16 integer format values when converting to floating point values. |
LayoutDescriptor
Property |
Type |
Description |
brickSize |
Enumeration |
The size of the bricks used for partitioning the layers. Recommended brick size for uncompressed volumes is 64 and for compressed volumes 128. Recognized values are: |
brickSize2DMultiplier |
Int |
The number of 3D bricks per 2D brick in the two dimensions of the 2D brick. Recommended value is 4, which means there are 16 3D bricks overlapping a 2D brick. |
create2DLODs |
Boolean |
If this is ‘true’, layers with 2D bricks also have LODs. The default is that LODs are only created for layers with 3D bricks. |
forceFullResolutionDimension |
Boolean |
If this is ‘true’, the fullResolutionDimension indicates that one of the dimensions of the volume is never LOD decimated. |
fullResolutionDimension |
Int |
If forceFullResolutionDimension is ‘true’, this property indicates which dimension of the volume that is never LOD decimated. |
lodLevels |
Enumeration |
The number of LOD levels of the volume. Recognized values are |
negativeMargin |
Int |
This is the amount of overlap with the previous brick preceding the valid area of the brick. |
positiveMargin |
Int |
This is the amount of overlap with the next brick following the valid area of the brick. |
Metadata
Property |
Type |
Description |
---|---|---|
type |
Enumeration |
Recognized values are: |
name |
String |
The name of the additional metadata. See section about recognized names and categories for additional metadata. |
category |
String |
The category of the additional metadata. See section about recognized names and categories for additional metadata. |
value |
Variant |
Depending of the type this is an integer, integer array, float, float array, double, double array, string or base-64 encoded binary object (BLOB). |
LayerStatus
Property |
Type |
Description |
---|---|---|
layerName |
String |
The name of the layer used to form the URL of chunks and chunk metadata pages. |
channelName |
String |
The name of the data channel for this layer. |
dimensionGroup |
Enumeration |
The dimensions used to form the chunks of this layer, e.g., |
lod |
Int |
The LOD level of this layer. |
produceStatus |
Enumeration |
The produce status of the layer. Recognized values are: |
chunkCount |
Int |
The total number of chunks in this layer. |
validChunkCount (optional) |
Int |
The number of valid chunks in this layer. |
hasChunkMetadataPages |
Boolean |
If ‘true’ it is possible to request chunk metadata pages with an URL using the layerName appended with /ChunkMetadata and the page number. |
chunkMetadataPageSize |
Int |
The number of chunk metadata entries in each chunk metadata page. |
pageDirectory (optional) |
Int[] |
The stored index of each page (which can be different from the page’s index) or -1 if no page exists |
chunkMetadataByteSize |
Int |
The size of each chunk metadata entry. |
compressionMethod |
Enumeration |
This indicates which method has been used to serialize chunks in this layer. Recognized values are |
compressionTolerance |
Float |
For Wavelet and WaveletLossless this indicates how much precision is kept after transforming the data to wavelet domain. A value of 1.0 is equivalent to 8 bits of precision, and each doubling of the tolerance represents a loss of ~1 bit of precision while each halving of the tolerance represents adding ~1 bit of precision. Note that since this is done in wavelet domain it does not directly translate to how much precision is lost from the original. The WaveletLossless method adds a entropy-encoded delta between the Wavelet compressed data and the original, so the tolerance will still affect the compression ratio achieved. |
serializedSize (optional) |
Int64 |
The combined serialized size of all non-empty chunks. |
uncompressedSize |
Int64 |
The combined original size of all non-empty chunks. |
adaptiveLevelSizes |
Int64[16] |
The combined compressed size of each adaptive level (if applicable). |