reworked pattern generator

This commit is contained in:
2026-07-09 18:59:41 +02:00
parent b4a3e1187a
commit 46623c946a
9 changed files with 277 additions and 299 deletions
+25 -27
View File
@@ -5,11 +5,14 @@ from . import _slsdet
from ._slsdet import Pattern
class patternParameters(_slsdet.patternParameters):
def __init__(self):
super().__init__()
self.view = self.numpy_view()
self.names = self.view.dtype.names
class _StructViewMixin:
"""
Exposes the fields of a numpy structured dtype view as attributes.
"""
def _init_view(self, view):
self.__dict__["view"] = view
self.__dict__["names"] = view.dtype.names
def __getattr__(self, name):
if name in self.names:
@@ -18,9 +21,7 @@ class patternParameters(_slsdet.patternParameters):
raise KeyError(f"Key: {name} not found")
def __setattr__(self, name, value):
if name in ["view", "names"]:
self.__dict__[name] = value
elif name in self.names:
if name in self.names:
self.view[name] = value
else:
raise KeyError(f"Key: {name} not found")
@@ -29,27 +30,24 @@ class patternParameters(_slsdet.patternParameters):
def __dir__(self):
return self.names
def copy(self):
"""
Return a new instance with the same field values.
"""
new = type(self)()
new.view[:] = self.view
return new
class Pattern(_slsdet.Pattern):
__copy__ = copy
class patternParameters(_StructViewMixin, _slsdet.patternParameters):
def __init__(self):
super().__init__()
self.view = self.data().numpy_view()
self.names = self.view.dtype.names
self._init_view(self.numpy_view())
def __getattr__(self, name):
if name in self.names:
return self.view[name][0]
else:
raise KeyError(f"Key: {name} not found")
def __setattr__(self, name, value):
if name in ["view", "names"]:
self.__dict__[name] = value
elif name in self.names:
self.view[name] = value
else:
raise KeyError(f"Key: {name} not found")
# Provide custom dir for tab completion
def __dir__(self):
return self.names
class Pattern(_StructViewMixin, _slsdet.Pattern):
def __init__(self):
super().__init__()
self._init_view(self.data().numpy_view())