def add_operation(self, op_id): # first, find the matching plugin plugin = next((x for x in self.op_plugins if x.id == op_id)) # next, get an operation op = plugin.get_operation() # make a new workflow item wi = WorkflowItem(operation = op, deletable = (op_id != 'edu.mit.synbio.cytoflowgui.op_plugins.import')) # if the op has a default view, add it to the wi try: wi.default_view = op.default_view() wi.views.append(wi.default_view) wi.current_view = wi.default_view except AttributeError: pass # figure out where to add it if self.model.selected: idx = self.model.workflow.index(self.model.selected) + 1 else: idx = len(self.model.workflow) # the add_remove_items handler takes care of updating the linked list self.model.workflow.insert(idx, wi) # and make sure to actually select the new wi self.model.selected = wi
def add_operation(self, op_id): # first, find the matching plugin plugin = next((x for x in self.op_plugins if x.id == op_id)) # default to inserting at the end of the list if none selected after = self.model.selected if after is None: after = self.model.workflow[-1] idx = self.model.workflow.index(after) wi = WorkflowItem(task = self) wi.operation = plugin.get_operation() wi.next = after.next after.next = wi wi.previous = after if wi.next: wi.next.previous = wi self.model.workflow.insert(idx+1, wi) # set up the default view wi.default_view = plugin.get_default_view(wi.operation) if wi.default_view is not None: wi.default_view.handler = \ wi.default_view.handler_factory(model = wi.default_view, wi = wi.previous) wi.views.append(wi.default_view) # select (open) the new workflow item self.model.selected = wi if wi.default_view: wi.current_view = wi.default_view # invalidate everything following self.operation_parameters_updated()
def setUp(self): TasbeTest.setUp(self) plugin = ThresholdPlugin() op = plugin.get_operation() op.name = "Morpho" op.channel = "FSC-A" op.threshold = 100000 wi = WorkflowItem(operation=op) self.workflow.workflow.append(wi) self.assertTrue(wait_for(wi, 'status', lambda v: v == 'valid', 30)) plugin = AutofluorescencePlugin() self.op = op = plugin.get_operation() self.cwd = os.path.dirname(os.path.abspath(__file__)) op.blank_file = self.cwd + "/../../cytoflow/tests/data/tasbe/blank.fcs" op.channels = ["FITC-A", "Pacific Blue-A", "PE-Tx-Red-YG-A"] op.subset_list.append(BoolSubset(name="Morpho")) op.subset_list[0].selected_t = True self.wi = wi = WorkflowItem(operation=op) wi.default_view = self.op.default_view() wi.view_error = "Not yet plotted" wi.views.append(self.wi.default_view) self.workflow.workflow.append(wi) self.workflow.selected = self.wi # run the estimate op.do_estimate = True self.assertTrue(wait_for(wi, 'status', lambda v: v == 'valid', 30))
def add_operation(self, operation): # add the new operation after the selected workflow item or at the end # of the workflow if no wi is selected # make a new workflow item wi = WorkflowItem(operation = operation, deletable = (operation.id != "edu.mit.synbio.cytoflow.operations.import")) # they say in Python you should ask for forgiveness instead of permission try: wi.default_view = operation.default_view() wi.views.append(wi.default_view) except AttributeError: pass if self.workflow and self.selected: idx = self.workflow.index(self.selected) + 1 elif self.workflow: idx = len(self.workflow) else: idx = 0 # the add_remove_items handler takes care of updating the linked list self.workflow.insert(idx, wi) # select (open) the new workflow item self.selected = wi if wi.default_view: wi.current_view = wi.default_view
def setUp(self): TasbeTest.setUp(self) plugin = ThresholdPlugin() op = plugin.get_operation() op.name = "Morpho" op.channel = "FSC-A" op.threshold = 100000 wi = WorkflowItem(operation=op) self.workflow.workflow.append(wi) self.assertTrue(wait_for(wi, 'status', lambda v: v == 'valid', 30)) plugin = TasbePlugin() self.op = op = plugin.get_operation() self.cwd = os.path.dirname(os.path.abspath(__file__)) self.wi = wi = WorkflowItem(operation=op) wi.default_view = self.op.default_view() wi.view_error = "Not yet plotted" wi.views.append(self.wi.default_view) self.workflow.workflow.append(wi) self.workflow.selected = self.wi op.channels = ["FITC-A", "Pacific Blue-A", "PE-Tx-Red-YG-A"] op.blank_file = self.cwd + "/../../cytoflow/tests/data/tasbe/blank.fcs" op.bleedthrough_list = [ _BleedthroughControl(channel="FITC-A", file=self.cwd + "/../../cytoflow/tests/data/tasbe/eyfp.fcs"), _BleedthroughControl(channel="Pacific Blue-A", file=self.cwd + "/../../cytoflow/tests/data/tasbe/ebfp.fcs"), _BleedthroughControl(channel="PE-Tx-Red-YG-A", file=self.cwd + "/../../cytoflow/tests/data/tasbe/mkate.fcs") ] op.beads_name = "Spherotech RCP-30-5A Lot AG01, AF02, AD04 and AAE01" op.beads_file = self.cwd + "/../../cytoflow/tests/data/tasbe/beads.fcs" op.beads_unit = "MEFL" op.to_channel = "FITC-A" self.op.translation_list[ 0].file = self.cwd + "/../../cytoflow/tests/data/tasbe/rby.fcs" self.op.translation_list[ 1].file = self.cwd + "/../../cytoflow/tests/data/tasbe/rby.fcs" op.subset_list.append(BoolSubset(name="Morpho")) op.subset_list[0].selected_t = True # run the estimate op.do_estimate = True self.assertTrue(wait_for(wi, 'status', lambda v: v == 'valid', 30))
def activated(self): self.model.backup_workflow = self.model.workflow self.model.workflow = [] self.model.modified = False # add the op self.op = TasbeCalibrationOp() # make a new workflow item wi = WorkflowItem(operation=self.op, deletable=False) wi.default_view = self.op.default_view() wi.views.append(wi.default_view) wi.current_view = wi.default_view self.model.workflow.append(wi) self.model.selected = wi self.help_pane.html = self.op.get_help()
def setUp(self): TasbeTest.setUp(self) plugin = ThresholdPlugin() op = plugin.get_operation() op.name = "Morpho" op.channel = "FSC-A" op.threshold = 100000 wi = WorkflowItem(operation = op) self.workflow.workflow.append(wi) self.assertTrue(wait_for(wi, 'status', lambda v: v == 'valid', 5)) plugin = BleedthroughLinearPlugin() self.op = op = plugin.get_operation() self.cwd = os.path.dirname(os.path.abspath(__file__)) op.controls_list = [_Control(channel = "FITC-A", file = self.cwd + '/../../cytoflow/tests/data/tasbe/eyfp.fcs'), _Control(channel = "PE-Tx-Red-YG-A", file = self.cwd + '/../../cytoflow/tests/data/tasbe/mkate.fcs'), _Control(channel = "Pacific Blue-A", file = self.cwd + '/../../cytoflow/tests/data/tasbe/ebfp.fcs')] op.subset_list.append(BoolSubset(name = "Morpho")) op.subset_list[0].selected_t = True self.wi = wi = WorkflowItem(operation = op) wi.default_view = self.op.default_view() wi.view_error = "Not yet plotted" wi.views.append(self.wi.default_view) self.workflow.workflow.append(wi) self.workflow.selected = self.wi # run the estimate op.do_estimate = True self.assertTrue(wait_for(wi, 'status', lambda v: v == 'valid', 30))
def add_operation(self, op_id): # first, find the matching plugin plugin = next((x for x in self.op_plugins if x.id == op_id)) # default to inserting at the end of the list if none selected after = self.model.selected if after is None: after = self.model.workflow[-1] idx = self.model.workflow.index(after) wi = WorkflowItem(task=self) wi.operation = plugin.get_operation() wi.next = after.next after.next = wi wi.previous = after if wi.next: wi.next.previous = wi self.model.workflow.insert(idx + 1, wi) # set up the default view wi.default_view = plugin.get_default_view() if wi.default_view is not None: wi.default_view.op = wi.operation wi.default_view.handler = \ wi.default_view.handler_factory(model = wi.default_view, wi = wi.previous) wi.views.append(wi.default_view) # select (open) the new workflow item self.model.selected = wi if wi.default_view: wi.current_view = wi.default_view # invalidate everything following self.operation_parameters_updated()