Source code for cytoflowgui.op_plugins.ratio
#!/usr/bin/env python3.8
# coding: latin-1
# (c) Massachusetts Institute of Technology 2015-2018
# (c) Brian Teague 2018-2022
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
'''
Ratio
-----
Adds a new "channel" to the workflow, where the value of the channel is the
ratio of two other channels.
.. object:: Name
The name of the new channel.
.. object:: Numerator
The numerator for the ratio.
.. object:: Denominator
The denominator for the ratio.
'''
from traits.api import provides, List
from traitsui.api import (View, Item, TextEditor, EnumEditor)
from pyface.api import ImageResource # @UnresolvedImport
from envisage.api import Plugin
from ..workflow.operations import RatioWorkflowOp
from .i_op_plugin import IOperationPlugin, OP_PLUGIN_EXT
from .op_plugin_base import OpHandler, PluginHelpMixin, shared_op_traits_view
[docs]
class RatioHandler(OpHandler):
operation_traits_view = \
View(Item('name',
editor = TextEditor(auto_set = False, placeholder = "None")),
Item('numerator',
editor=EnumEditor(name='context_handler.previous_channels'),
label = "Numerator"),
Item('denominator',
editor=EnumEditor(name='context_handler.previous_channels'),
label = "Denominator"),
shared_op_traits_view)
[docs]
@provides(IOperationPlugin)
class RatioPlugin(Plugin, PluginHelpMixin):
id = 'cytoflowgui.op_plugins.ratio'
operation_id = 'cytoflow.operations.ratio'
view_id = None
short_name = name = "Ratio"
menu_group = "Preprocessing"
[docs]
def get_operation(self):
return RatioWorkflowOp()
[docs]
def get_handler(self, model, context):
return RatioHandler(model = model, context = context)
[docs]
def get_icon(self):
return ImageResource('ratio')
plugin = List(contributes_to = OP_PLUGIN_EXT)
def _plugin_default(self):
return [self]