webknossos.dataset
Dataset API
The high-level dataset API automatically reads and writes meta information for any dataset and updates them if necessary, such as the datasource-properties.json
.
A dataset (webknossos.dataset.dataset.Dataset
) is the entry-point for this API.
The dataset stores the data on disk in .wkw
-files (see webknossos-wrap (wkw)).
Each dataset consists of one or more layers (webknossos.dataset.layer.Layer), which themselves can comprise multiple magnifications (webknossos.dataset.mag_view.MagView).
Examples
Opening Datasets
from webknossos.dataset import Dataset
dataset = Dataset(<path_to_dataset>)
# Assuming that the dataset has a layer called 'color' and the layer has the magnification "1"
layer = dataset.get_layer("color")
mag1 = layer.get_mag("1")
Creating Datasets
from webknossos.dataset import Dataset
from webknossos.dataset import Layer
dataset = Dataset.create(<path_to_new_dataset>, scale=(1, 1, 1))
layer = dataset.add_layer(
layer_name="color",
category=LayerCategories.COLOR_TYPE,
dtype_per_channel="uint8",
num_channels=3
)
mag1 = layer.add_mag("1")
Reading Datasets
from webknossos.dataset import Dataset
dataset = Dataset(<path_to_dataset>)
# Assuming that the dataset has a layer called 'color' and the layer has the magnification "1" and "2"
layer = dataset.get_layer("color")
mag1 = layer.get_mag("1")
mag2 = layer.get_mag("2")
data_in_mag1 = mag1.read() # the offset and size from the properties are used
data_in_mag1_subset = mag1.read(offset=(10, 20, 30), size=(512, 512, 32))
data_in_mag2 = mag2.read() # the offset and size from the properties are used
data_in_mag2_subset = mag2.read(offset=(5, 10, 15), size=(256, 256, 16))
Writing Datasets
from webknossos.dataset import Dataset
dataset = Dataset(<path_to_dataset>)
# Assuming that the dataset has a layer called 'color' and the layer has the magnification "1" and "2"
layer = dataset.get_layer("color")
mag1 = layer.get_mag("1")
mag2 = layer.get_mag("2")
# The properties are updated, if the written data exceeds the bounding box in the properties
mag1.write(
offset=(10, 20, 30),
data=(np.random.rand(3, 512, 512, 32) * 255).astype(np.uint8) # assuming the layer has 3 channels
)
mag2.write(
offset=(5, 10, 15),
data=(np.random.rand(3, 256, 256, 16) * 255).astype(np.uint8) # assuming the layer has 3 channels
)
View Source
""" # Dataset API The high-level dataset API automatically reads and writes meta information for any dataset and updates them if necessary, such as the `datasource-properties.json`. A dataset (`webknossos.dataset.dataset.Dataset`) is the entry-point for this API. The dataset stores the data on disk in `.wkw`-files (see [webknossos-wrap (wkw)](https://github.com/scalableminds/webknossos-wrap)). Each dataset consists of one or more layers (webknossos.dataset.layer.Layer), which themselves can comprise multiple magnifications (webknossos.dataset.mag_view.MagView). ## Examples ### Opening Datasets ```python from webknossos.dataset import Dataset dataset = Dataset(<path_to_dataset>) # Assuming that the dataset has a layer called 'color' and the layer has the magnification "1" layer = dataset.get_layer("color") mag1 = layer.get_mag("1") ``` ### Creating Datasets ```python from webknossos.dataset import Dataset from webknossos.dataset import Layer dataset = Dataset.create(<path_to_new_dataset>, scale=(1, 1, 1)) layer = dataset.add_layer( layer_name="color", category=LayerCategories.COLOR_TYPE, dtype_per_channel="uint8", num_channels=3 ) mag1 = layer.add_mag("1") ``` ### Reading Datasets ```python from webknossos.dataset import Dataset dataset = Dataset(<path_to_dataset>) # Assuming that the dataset has a layer called 'color' and the layer has the magnification "1" and "2" layer = dataset.get_layer("color") mag1 = layer.get_mag("1") mag2 = layer.get_mag("2") data_in_mag1 = mag1.read() # the offset and size from the properties are used data_in_mag1_subset = mag1.read(offset=(10, 20, 30), size=(512, 512, 32)) data_in_mag2 = mag2.read() # the offset and size from the properties are used data_in_mag2_subset = mag2.read(offset=(5, 10, 15), size=(256, 256, 16)) ``` ### Writing Datasets ```python from webknossos.dataset import Dataset dataset = Dataset(<path_to_dataset>) # Assuming that the dataset has a layer called 'color' and the layer has the magnification "1" and "2" layer = dataset.get_layer("color") mag1 = layer.get_mag("1") mag2 = layer.get_mag("2") # The properties are updated, if the written data exceeds the bounding box in the properties mag1.write( offset=(10, 20, 30), data=(np.random.rand(3, 512, 512, 32) * 255).astype(np.uint8) # assuming the layer has 3 channels ) mag2.write( offset=(5, 10, 15), data=(np.random.rand(3, 256, 256, 16) * 255).astype(np.uint8) # assuming the layer has 3 channels ) ``` """ from .dataset import Dataset from .layer import Layer, LayerCategories, SegmentationLayer from .mag_view import MagView from .view import View