Skip to content
Snippets Groups Projects
Commit 03ee157a authored by Stephan Seitz's avatar Stephan Seitz
Browse files

Extend ArrayWithIndexDimensions to ArrayWrapper

parent 4b8c0f08
Branches
Tags
No related merge requests found
Pipeline #20017 failed
...@@ -10,14 +10,30 @@ class _WhatEverClass: ...@@ -10,14 +10,30 @@ class _WhatEverClass:
self.__dict__.update(kwargs) self.__dict__.update(kwargs)
class ArrayWithIndexDimensions: class ArrayWrapper:
def __init__(self, def __init__(self,
array, array,
index_dimensions, index_dimensions=0,
field_type=FieldType.GENERIC): field_type=FieldType.GENERIC,
coordinate_transform=None,
spacing=None,
origin=None,
coordinate_origin=None):
self.array = array self.array = array
self.index_dimensions = index_dimensions self.index_dimensions = index_dimensions
self.field_type = field_type self.field_type = field_type
if spacing:
coordinate_transform = sympy.diag(*spacing)
if origin:
origin = sympy.Matrix(origin)
spacing = spacing or origin / origin
coordinate_transform = sympy.diag(*spacing)
coordinate_origin = origin / spacing
if coordinate_transform:
self.coordinate_transform = coordinate_transform
if coordinate_origin:
self.coordinate_origin = coordinate_origin
def __array__(self): def __array__(self):
return self.array return self.array
...@@ -40,7 +56,7 @@ def create_field_from_array_like(field_name, maybe_array, annotations=None): ...@@ -40,7 +56,7 @@ def create_field_from_array_like(field_name, maybe_array, annotations=None):
if annotations and isinstance(annotations, dict): if annotations and isinstance(annotations, dict):
index_dimensions = annotations.get('index_dimensions', 0) index_dimensions = annotations.get('index_dimensions', 0)
field_type = annotations.get('field_type', FieldType.GENERIC) field_type = annotations.get('field_type', FieldType.GENERIC)
elif isinstance(maybe_array, ArrayWithIndexDimensions): elif isinstance(maybe_array, ArrayWrapper):
index_dimensions = maybe_array.index_dimensions index_dimensions = maybe_array.index_dimensions
field_type = maybe_array.field_type field_type = maybe_array.field_type
maybe_array = maybe_array.array maybe_array = maybe_array.array
...@@ -65,6 +81,10 @@ def create_field_from_array_like(field_name, maybe_array, annotations=None): ...@@ -65,6 +81,10 @@ def create_field_from_array_like(field_name, maybe_array, annotations=None):
field = Field.create_from_numpy_array(field_name, maybe_array, index_dimensions) field = Field.create_from_numpy_array(field_name, maybe_array, index_dimensions)
field.field_type = field_type field.field_type = field_type
if hasattr(maybe_array, 'coordinate_transform'):
field.coordinate_transform = maybe_array.coordinate_transform
if hasattr(maybe_array, 'coordinate_origin'):
field.coordinate_origin = maybe_array.coordinate_origin
return field return field
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment