[file_handler] request axis handles SetDims

This commit is contained in:
Jan Grewe 2021-01-21 16:46:15 +01:00
parent 3a4eb13025
commit 8c9eeef076

View File

@ -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: