motile_plugin.widgets.tracks_view.tree_widget

Classes

CustomViewBox

Bases: GraphicsWidget

TreePlot

Re-implementation of QGraphicsView that removes scrollbars and allows unambiguous control of the

TreeWidget

pyqtgraph-based widget for lineage tree visualization and navigation

Module Contents

class motile_plugin.widgets.tracks_view.tree_widget.CustomViewBox(*args, **kwds)

Bases: pyqtgraph.ViewBox

Bases: GraphicsWidget

Box that allows internal scaling/panning of children by mouse drag. This class is usually created automatically as part of a PlotItem or Canvas or with GraphicsLayout.addViewBox().

Features:

  • Scaling contents by mouse or auto-scale when contents change

  • View linking–multiple views display the same data ranges

  • Configurable by context menu

  • Item coordinate mapping methods

mouseClickEvent(ev)
mouseDragEvent(ev, axis=None)
class motile_plugin.widgets.tracks_view.tree_widget.TreePlot

Bases: pyqtgraph.PlotWidget

Re-implementation of QGraphicsView that removes scrollbars and allows unambiguous control of the viewed coordinate range. Also automatically creates a GraphicsScene and a central QGraphicsWidget that is automatically scaled to the full view geometry.

This widget is the basis for PlotWidget, GraphicsLayoutWidget, and the view widget in ImageView.

By default, the view coordinate system matches the widget’s pixel coordinates and automatically updates when the view is resized. This can be overridden by setting autoPixelRange=False. The exact visible range can be set with setRange().

The view can be panned using the middle mouse button and scaled using the right mouse button if enabled via enableMouse() (but ordinarily, we use ViewBox for this functionality).

node_clicked
_pos = []
adj = []
symbolBrush = []
symbols = []
pen = []
outline_pen = []
node_ids = []
sizes = []
view_direction = None
feature = None
g
update(track_df: pandas.DataFrame, view_direction: str, feature: str, selected_nodes: list[Any])

Update the entire view, including the data, view direction, and selected nodes

Args:

track_df (pd.DataFrame): The dataframe containing the graph data view_direction (str): The view direction feature (str): The feature to be plotted (‘tree’ or ‘area’) selected_nodes (list[Any]): The currently selected nodes to be highlighted

set_view(view_direction: str, feature: str)

Set the view direction, saving the new value as an attribute and changing the axes labels. Shortcuts if the view direction is already correct. Does not actually update the rendered graph (need to call _update_viewed_data).

Args:

view_direction (str): “horizontal” or “vertical” feature (str): the feature being displayed, it can be either ‘tree’ or ‘area’

_on_click(_, points: numpy.ndarray, ev: qtpy.QtGui.QMouseEvent) None

Adds the selected point to the selected_nodes list. Called when the user clicks on the TreeWidget to select nodes.

Args:

points (np.ndarray): _description_ ev (QMouseEvent): _description_

set_data(track_df: pandas.DataFrame, feature: str) None

Updates the stored pyqtgraph content based on the given dataframe. Does not render the new information (need to call _update_viewed_data).

Args:
track_df (pd.DataFrame): The tracks df to compute the pyqtgraph

content for. Can be all lineages or any subset of them.

feature (str): The feature to be plotted. Can either be ‘tree’, or ‘area’.

_update_viewed_data()
_create_pyqtgraph_content(track_df: pandas.DataFrame, feature: str) None

Parse the given track_df into the format that pyqtgraph expects and save the information as attributes.

Args:
track_df (pd.DataFrame): The dataframe containing the graph to be

rendered in the tree view. Can be all lineages or a subset.

feature (str): The feature to be plotted. Can either be ‘tree’ or ‘area’.

set_selection(selected_nodes: list[Any], feature: str) None

Set the provided list of nodes to be selected. Increases the size and highlights the outline with blue. Also centers the view if the first selected node is not visible in the current canvas.

Args:

selected_nodes (list[Any]): A list of node ids to be selected. feature (str): the feature that is being plotted, either ‘tree’ or ‘area’

_center_view(center_x: int, center_y: int)

Center the Viewbox on given coordinates

class motile_plugin.widgets.tracks_view.tree_widget.TreeWidget(viewer: napari.Viewer)

Bases: qtpy.QtWidgets.QWidget

pyqtgraph-based widget for lineage tree visualization and navigation

track_df
lineage_df
graph = None
mode = 'all'
feature = 'tree'
view_direction = 'vertical'
tracks_viewer
selected_nodes
layout
tree_widget: TreePlot
mode_widget
feature_widget
navigation_widget
panel_layout
panel
keyPressEvent(event: qtpy.QtGui.QKeyEvent) None

Catch arrow key presses to navigate in the tree

Args:

event (QKeyEvent): The Qt Key event

keyReleaseEvent(ev)

Reset the mouse scrolling when releasing the X/Y key

_update_selected()

Called whenever the selection list is updated. Only re-computes the full graph information when the new selection is not in the lineage df (and in lineage mode)

_update_track_data() None

Called when the TracksViewer emits the tracks_updated signal, indicating that a new set of tracks should be viewed.

_set_mode(mode: str) None

Set the display mode to all or lineage view. Currently, linage view is always horizontal and all view is always vertical.

Args:

mode (str): The mode to set the view to. Options are “all” or “lineage”

_set_feature(feature: str) None

Set the feature mode to ‘tree’ or ‘area’. For this the view is always horizontal.

Args:

feature (str): The feature to plot. Options are “tree” or “area”

_update_lineage_df() None

Subset dataframe to include only nodes belonging to the current lineage