cytoflowgui.workflow_controller¶
Controllers for LocalWorkflow and the WorkflowItems it contains – these
dynamically create the traitsui.view.View instances for the workflow’s
operations and views.
Perhaps the most confusing thing in the entire codebase is the way that these
views are created. The difficulty is that a view for a WorkflowItem is
polymorphic depending on the IWorkflowOperation that it wraps and the
IWorkflowView that is currently active.
Here’s how this works. The “Workflow” pane contains a view of the LocalWorkflow
(the model), created by WorkflowController.workflow_traits_view. The editor
is a VerticalNotebookEditor, configured to use WorkflowController.handler_factory
to create a new WorkflowItemHandler for each WorkflowItem in the LocalWorkflow.
Here’s our opportunity for polymorphism! Because each WorkflowItem has its own
WorkflowItemHandler instance, the WorkflowItemHandler.operation_traits_view
method can return a traitsui.view.View specifically for that `WorkflowItem`’s operation.
The traitsui.view.View it returns contains an InstanceHandlerEditor, which
uses WorkflowItemHandler._get_operation_handler to get a handler specifically
for the IWorkflowOperation that this WorkflowItem wraps. And this handler,
in turn, creates the view specifically for the IWorkflowOperation (and contains
the logic for connecting it to the IWorkflowOperation that is its model.)
The logic for the view traits and view parameters panes is similar. Each pane
contains a view of LocalWorkflow.selected, the currently-selected WorkflowItem.
In turn that WorkflowItem’s handler creates a view for the currently-displayed
IWorkflowView (which is in WorkflowItem.current_view). This handler, in
turn, creates a view for the IWorkflowView’s traits or plot parameters.
One last non-obvious thing. Many of the operations and views require choosing
a value from the Experiment. For example, if an IWorkflowView is plotting
a histogram, one of its traits is the channel whose histogram is being plotted.
These values – channels, conditions, statistics and numeric statistics, for
both the current WorkflowItem.result and the previous WorkflowItem.result –
are presented as properties of the WorkflowItemHandler. In turn, the
WorkflowItemHandler appears in the view’s context dictionary as context.
So, if a view wants to get the previous WorkflowItem’s channels, it can
refer to them as context.channels. (Examples of this pattern are scattered
throughout the submodules of view_plugins.
- class cytoflowgui.workflow_controller.WorkflowItemHandler(*args: Any, **kwargs: Any)[source]¶
Bases:
traitsui.api.A controller for a
WorkflowItem. It dynamically creates views for theIWorkflowOperationandIWorkflowViews that are contained, as well as exposing channels, conditions, statistics and numeric statistics as properties (so they can be accessed by the views.- deletable = <traits.traits.ForwardProperty object>¶
For the vertical notebook view, is this page deletable?
- icon = <traits.traits.ForwardProperty object>¶
The icon for the vertical notebook view
- name = <traits.trait_types.DelegatesTo object>¶
- friendly_id = <traits.trait_types.DelegatesTo object>¶
- op_plugins¶
alias of
traits.trait_types.List
- view_plugins¶
alias of
traits.trait_types.List
- conditions = <traits.traits.ForwardProperty object>¶
The conditions in this
WorkflowItem.result
- conditions_names = <traits.traits.ForwardProperty object>¶
The names of the conditions in this
WorkflowItem.result
- previous_conditions = <traits.traits.ForwardProperty object>¶
The conditions in the previous
WorkflowItem.result
- previous_conditions_names = <traits.traits.ForwardProperty object>¶
The names of the conditions in the previous
WorkflowItem.result
- statistics_names = <traits.traits.ForwardProperty object>¶
The names of the statistics in this
WorkflowItem.result
- numeric_statistics_names = <traits.traits.ForwardProperty object>¶
The names of the numeric statistics in this
WorkflowItem.result
- previous_statistics_names = <traits.traits.ForwardProperty object>¶
The names of the statistics in the previous
WorkflowItem.result
- channels = <traits.traits.ForwardProperty object>¶
The channels in this
WorkflowItem.result
- previous_channels = <traits.traits.ForwardProperty object>¶
The channels in the previous
WorkflowItem.result
- tree_node = <traits.traits.ForwardProperty object>¶
- operation_traits_view()[source]¶
Returns the
traitsui.view.Viewof theIWorkflowOperationthat thisWorkflowItemwraps. The view is actually defined by the operation’s handler’soperation_traits_viewattribute.
- view_traits_view()[source]¶
Returns the
traitsui.view.Viewshowing the traits of the currentIWorkflowView. The view is actually defined by the view’s handler’sview_traits_viewattribute.
- view_params_view()[source]¶
Returns the
traitsui.view.Viewshowing the plot parameters of the currentIWorkflowView. The view is actually defined by the view’s handler’sview_params_viewattribute.
- view_plot_name_view()[source]¶
Returns the
traitsui.view.Viewshowing the plot names of the currentIWorkflowView. The view is actually defined by the view’s handler’sview_plot_name_viewattribute.
- experiment_view()[source]¶
Returns a
traitsui.view.ViewofLocalWorkflow.selected, showing some things about the experiment – channels, conditions, statistics, etc.
- class cytoflowgui.workflow_controller.WorkflowController(*args: Any, **kwargs: Any)[source]¶
Bases:
traitsui.api.A controller for a
LocalWorkflow. It dynamically creates views for the major panes in the UI: the workflow, the selected view traits, and the selected view parameters. It also contains the logic for adding operations and activating views. Both of which are triggered by the button bars on the sides of their respective panes.- workflow_handlers = <traits.trait_types.Dict object>¶
- op_plugins¶
alias of
traits.trait_types.List
- view_plugins¶
alias of
traits.trait_types.List
- workflow_traits_view()[source]¶
Returns a
traitsui.view.Viewof theLocalWorkflowfor theWorkflowpane. Its editor is aVerticalNotebookEditor. Each item’s instance view is created byWorkflowItemHandler.operation_traits_view.
- selected_view_traits_view()[source]¶
Returns a
traitsui.view.ViewofLocalWorkflow.selectedfor theView traitspane. The actual view is created byWorkflowItemHandler.view_traits_view.
- selected_view_params_view()[source]¶
Returns a
traitsui.view.ViewofLocalWorkflow.selectedfor theView parameterspane. The actual view is created byWorkflowItemHandler.view_params_view.
- selected_view_plot_name_view()[source]¶
Returns a
traitsui.view.ViewofLocalWorkflow.selectedfor the plot names toolbar. The actual view is created byWorkflowItemHandler.view_plot_name_view.
- experiment_view()[source]¶
Returns a
traitsui.view.ViewofLocalWorkflow.selectedfor the experiment viewer.
- handler_factory(wi)[source]¶
Return an instance of
WorkflowItemHandlerfor aWorkflowIteminLocalWorkflow
- add_operation(operation_id)[source]¶
The logic to add an
IWorkflowOperationtoLocalWorkflow. Creates a newWorkflowItem, figures out where to add it, inserts it into the model and activates the default view (if present.)
- activate_view(view_id)[source]¶
The logic to activate a view on the selected
WorkflowItem. Creates a new instance of the view if necessary and makes it the current view; event handlers onWorkflowItem.current_viewtake care of everything else.