mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2026-08-06 16:52:29 +02:00
reworked pattern generator
This commit is contained in:
+25
-27
@@ -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())
|
||||
Reference in New Issue
Block a user