Exemple #1
0
 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
Exemple #2
0
    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))
Exemple #4
0
    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
Exemple #5
0
    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))
Exemple #6
0
    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))
Exemple #8
0
    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()