Skip to content
Snippets Groups Projects
Commit c31478fc authored by payno's avatar payno
Browse files

FutureSupervisorTask: use 'TomwerOneThreadPerRun' instead of 'TomwerWithStack'

parent 1c08db46
No related branches found
No related tags found
No related merge requests found
...@@ -3,7 +3,10 @@ from __future__ import annotations ...@@ -3,7 +3,10 @@ from __future__ import annotations
import functools import functools
import logging import logging
from ewoksorange.bindings import OWEwoksWidgetWithTaskStack from ewoksorange.bindings import (
OWEwoksWidgetWithTaskStack,
OWEwoksWidgetOneThreadPerRun,
)
from ewoksorange.bindings.owwidgets import invalid_data from ewoksorange.bindings.owwidgets import invalid_data
from orangewidget.widget import OWBaseWidget from orangewidget.widget import OWBaseWidget
from processview.core.manager import DatasetState, ProcessManager from processview.core.manager import DatasetState, ProcessManager
...@@ -91,3 +94,12 @@ class TomwerWithStack( ...@@ -91,3 +94,12 @@ class TomwerWithStack(
channel.send(None) # or channel.invalidate? channel.send(None) # or channel.invalidate?
else: else:
channel.send(var.value) channel.send(var.value)
class TomwerOneThreadPerRun(
OWEwoksWidgetOneThreadPerRun, _SuperviseMixIn, WidgetLongProcessing, openclass=True
):
def setCaption(self, caption):
OWBaseWidget.setCaption(self, caption)
_SuperviseMixIn.setCaption(self, caption=caption)
...@@ -5,7 +5,7 @@ import time ...@@ -5,7 +5,7 @@ import time
from orangewidget import gui from orangewidget import gui
# from orangewidget.widget import Input, Output, OWBaseWidget # from orangewidget.widget import Input, Output, OWBaseWidget
from orangecontrib.tomwer.orange.managedprocess import TomwerWithStack from orangecontrib.tomwer.orange.managedprocess import TomwerOneThreadPerRun
from ewokscore.missing_data import MISSING_DATA from ewokscore.missing_data import MISSING_DATA
from ewoksorange.gui.orange_imports import Input from ewoksorange.gui.orange_imports import Input
...@@ -22,7 +22,7 @@ from tomwer.tasks.cluster.supervisor import FutureSupervisorTask ...@@ -22,7 +22,7 @@ from tomwer.tasks.cluster.supervisor import FutureSupervisorTask
class FutureSupervisorOW( class FutureSupervisorOW(
TomwerWithStack, TomwerOneThreadPerRun,
ewokstaskclass=FutureSupervisorTask, ewokstaskclass=FutureSupervisorTask,
): ):
""" """
...@@ -51,6 +51,8 @@ class FutureSupervisorOW( ...@@ -51,6 +51,8 @@ class FutureSupervisorOW(
want_control_area = False want_control_area = False
resizing_enabled = True resizing_enabled = True
_ewoks_inputs_to_hide_from_orange = ("process_id",)
class Inputs: class Inputs:
# redefine the input to allow multiple and default # redefine the input to allow multiple and default
future_tomo_obj = Input( future_tomo_obj = Input(
...@@ -93,6 +95,12 @@ class FutureSupervisorOW( ...@@ -93,6 +95,12 @@ class FutureSupervisorOW(
# required because today ewoksorange is not handling multiple inputs # required because today ewoksorange is not handling multiple inputs
self.set_dynamic_input("future_tomo_obj", future_tomo_obj) self.set_dynamic_input("future_tomo_obj", future_tomo_obj)
def _output_changed(self):
future_tomo_obj_to_remove = self.get_task_outputs().get("future_tomo_obj", None)
if future_tomo_obj_to_remove:
self._widget.removeFutureTomoObj(future_tomo_obj_to_remove.value)
return super()._output_changed()
class FutureTomwerObjectObserverWidget( class FutureTomwerObjectObserverWidget(
_FutureTomwerScanObserverWidget, SuperviseProcess _FutureTomwerScanObserverWidget, SuperviseProcess
......
...@@ -10,6 +10,8 @@ from tomwer.core.scan.scanbase import TomwerScanBase ...@@ -10,6 +10,8 @@ from tomwer.core.scan.scanbase import TomwerScanBase
from tomwer.core.drac.processeddataset import DracReconstructedVolumeDataset from tomwer.core.drac.processeddataset import DracReconstructedVolumeDataset
from tomwer.core.volume.volumebase import TomwerVolumeBase from tomwer.core.volume.volumebase import TomwerVolumeBase
from tomwer.core.volume.volumefactory import VolumeFactory from tomwer.core.volume.volumefactory import VolumeFactory
from ewokscore import missing_data
from processview.core.manager import DatasetState, ProcessManager from processview.core.manager import DatasetState, ProcessManager
...@@ -19,7 +21,13 @@ _logger = logging.getLogger() ...@@ -19,7 +21,13 @@ _logger = logging.getLogger()
class FutureSupervisorTask( class FutureSupervisorTask(
EwoksTask, EwoksTask,
input_names=("future_tomo_obj",), input_names=("future_tomo_obj",),
output_names=("data", "volume", "data_portal_processed_datasets", "process_id"), optional_input_names=("process_id",),
output_names=(
"data",
"volume",
"data_portal_processed_datasets",
"future_tomo_obj",
),
): ):
""" """
Task used to wait for a 'FutureTomwerObject' and convert it to original instance of: Task used to wait for a 'FutureTomwerObject' and convert it to original instance of:
...@@ -81,6 +89,7 @@ class FutureSupervisorTask( ...@@ -81,6 +89,7 @@ class FutureSupervisorTask(
self.outputs.volume = tomo_obj self.outputs.volume = tomo_obj
self.outputs.data_portal_processed_datasets = () self.outputs.data_portal_processed_datasets = ()
self.outputs.data = None self.outputs.data = None
self.outputs.future_tomo_obj = future_tomo_obj
if process is not None: if process is not None:
ProcessManager().notify_dataset_state( ProcessManager().notify_dataset_state(
...@@ -88,3 +97,15 @@ class FutureSupervisorTask( ...@@ -88,3 +97,15 @@ class FutureSupervisorTask(
process=process, process=process,
state=DatasetState.SUCCEED, state=DatasetState.SUCCEED,
) )
@property
def succeeded(self):
"""Completed without exception and with output values"""
return not (
(
missing_data.is_missing_data(self.outputs.data)
or missing_data.is_missing_data(self.outputs.volume)
)
) and not missing_data.is_missing_data(
self.outputs.data_portal_processed_datasets
)
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