Skip to content
Snippets Groups Projects
Commit 43e78f05 authored by David Hammer's avatar David Hammer
Browse files

Arbiter kernels get notified of new geometry

parent dc270d84
No related branches found
No related tags found
2 merge requests!120DetectorAssembler: go to ERROR if trying to match without geometry,!118Draft: MID: put arbiter on manager scene
...@@ -143,7 +143,10 @@ class BaseFrameSelectionArbiter(TrainMatcher.TrainMatcher): ...@@ -143,7 +143,10 @@ class BaseFrameSelectionArbiter(TrainMatcher.TrainMatcher):
self, on_success={"state": "PASSIVE"} self, on_success={"state": "PASSIVE"}
) )
geom_utils.subscribe_to_geometry_bound(self, self.get("geometryDevice")) self._geometry = None
geom_utils.subscribe_to_geometry_bound(
self, self.get("geometryDevice"), on_geometry=self._on_geometry
)
def _guess_number_of_frames(self, sources): def _guess_number_of_frames(self, sources):
# TODO: robust frame deduction # TODO: robust frame deduction
...@@ -256,6 +259,9 @@ class SimpleFrameSelectionArbiter(BaseFrameSelectionArbiter): ...@@ -256,6 +259,9 @@ class SimpleFrameSelectionArbiter(BaseFrameSelectionArbiter):
self.info["trainId"] = train_id self.info["trainId"] = train_id
self.rate_out.update() self.rate_out.update()
def _on_geometry(self, geometry):
self.kernel.on_new_geometry(geometry)
@KARABO_CLASSINFO("AdvancedFrameSelectionArbiter", deviceVersion) @KARABO_CLASSINFO("AdvancedFrameSelectionArbiter", deviceVersion)
class AdvancedFrameSelectionArbiter(BaseFrameSelectionArbiter): class AdvancedFrameSelectionArbiter(BaseFrameSelectionArbiter):
...@@ -509,3 +515,7 @@ class AdvancedFrameSelectionArbiter(BaseFrameSelectionArbiter): ...@@ -509,3 +515,7 @@ class AdvancedFrameSelectionArbiter(BaseFrameSelectionArbiter):
kernel_prefix = f"frameSelection.selections.{name}" kernel_prefix = f"frameSelection.selections.{name}"
if conf.has(kernel_prefix): if conf.has(kernel_prefix):
kernel.reconfigure(conf[kernel_prefix]) kernel.reconfigure(conf[kernel_prefix])
def _on_geometry(self, geometry):
for kernel in self._selection_kernels.values()
kernel.on_new_geometry(geometry)
...@@ -13,10 +13,6 @@ class BaseArbiterKernel: ...@@ -13,10 +13,6 @@ class BaseArbiterKernel:
self._name = name self._name = name
self.reconfigure(config) self.reconfigure(config)
@property
def geometry(self):
return self._device._geometry
@staticmethod @staticmethod
def extend_device_schema(schema, prefix): def extend_device_schema(schema, prefix):
"""Should add configurability to the arbiter (matcher) the kernel will be """Should add configurability to the arbiter (matcher) the kernel will be
...@@ -38,6 +34,15 @@ class BaseArbiterKernel: ...@@ -38,6 +34,15 @@ class BaseArbiterKernel:
def reconfigure(self, config): def reconfigure(self, config):
pass pass
@property
def geometry(self):
"""Same as BaseCorrectionAddon.geometry"""
return self._device._geometry
def on_new_geometry(self, geometry):
"""Same as BaseCorrectionAddon.on_new_geometry"""
pass
class Assign(BaseArbiterKernel): class Assign(BaseArbiterKernel):
def consider(self, tid, src, nframes, mask, out): def consider(self, tid, src, nframes, mask, out):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment