From 8c9eeef076565994f4bdf8f85dbad7303252a653 Mon Sep 17 00:00:00 2001 From: Jan Grewe Date: Thu, 21 Jan 2021 16:46:15 +0100 Subject: [PATCH] [file_handler] request axis handles SetDims --- nixview/util/file_handler.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/nixview/util/file_handler.py b/nixview/util/file_handler.py index 7794274..38f69d3 100644 --- a/nixview/util/file_handler.py +++ b/nixview/util/file_handler.py @@ -6,7 +6,6 @@ from nixview.util.descriptors import FileDescriptor, ItemDescriptor from nixview.util.enums import NodeType, PlotterTypes - class Singleton(type): _instances = {} def __call__(cls, *args, **kwargs): @@ -14,6 +13,7 @@ class Singleton(type): cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs) return cls._instances[cls] + class EntityBuffer(): def __init__(self) -> None: @@ -268,13 +268,22 @@ class FileHandler(metaclass=Singleton): dimensions.append(ItemDescriptor(dim_name, type=dim_type, entity_type=NodeType.Dimension, block_id=block_id, unit=unit, label=label)) return dimensions - def request_axis(self, block_id, array_id, index, count, start=0): + def request_axis(self, block_id, array_id, dimension_index, count, start=0): da = self._entity_buffer.get(array_id) if da is None: b = self.get_block(block_id) da = b.data_arrays[array_id] - dim = da.dimensions[index] - return np.asarray(dim.axis(count, start)) + dim = da.dimensions[dimension_index] + if dim.dimension_type == nix.DimensionType.Set: + labels = dim.labels + if start + count > len(labels): + raise ValueError("Invalid argument for start, count for SetDimension") + axis = labels[start:start + count] + if len(labels) == 0: + axis = list(map(str, range(start, start+count))) + else: + axis = np.asarray(dim.axis(count, start)) + return axis def request_data_frames(self, block_id): if self._nix_file.version[1] >= 2: