Source code for cmp.bidsappmanager.stages.connectome.connectome

# Copyright (C) 2009-2021, Ecole Polytechnique Federale de Lausanne (EPFL) and
# Hospital Center and University of Lausanne (UNIL-CHUV), Switzerland, and CMP3 contributors
# All rights reserved.
#
#  This software is distributed under the open-source license Modified BSD.

"""Definition of structural connectome config and stage UI classes."""

# Global imports
import subprocess

from traits.api import *
from traitsui.api import *

# Own imports
from cmp.stages.connectome.connectome import ConnectomeConfig, ConnectomeStage


[docs]class ConnectomeConfigUI(ConnectomeConfig): """Class that extends the :class:`ConnectomeConfig` with graphical components. Attributes ---------- output_types : list of string A list of ``output_types``. Valid ``output_types`` are 'gPickle', 'mat', 'cff', 'graphml' connectivity_metrics : list of string A list of connectivity metrics to stored. Valid ``connectivity_metrics`` are 'Fiber number', 'Fiber length', 'Fiber density', 'Fiber proportion', 'Normalized fiber density', 'ADC', 'gFA' traits_view : traits.ui.View TraitsUI view that displays the Attributes of this class See also --------- cmp.stages.connectome.connectome.ConnectomeConfig """ output_types = List(['gPickle'], editor=CheckListEditor( values=['gPickle', 'mat', 'cff', 'graphml'], cols=4)) connectivity_metrics = List( ['Fiber number', 'Fiber length', 'Fiber density', 'Fiber proportion', 'Normalized fiber density', 'ADC', 'gFA'], editor=CheckListEditor( values=['Fiber number', 'Fiber length', 'Fiber density', 'Fiber proportion', 'Normalized fiber density', 'ADC', 'gFA'], cols=4)) traits_view = View(Item('output_types', style='custom'), Group( Item('connectivity_metrics', label='Metrics', style='custom'), Item('compute_curvature'), label='Connectivity matrix', show_border=True))
[docs]class ConnectomeStageUI(ConnectomeStage): """Class that extends the :class:`ConnectomeStage` with graphical components. Attributes ---------- log_visualization : traits.Bool If True, display with a log transformation circular_layout : traits.Bool If True, display the connectivity matrix using a circular layout inspect_output_button : traits.ui.Button Button that displays the selected connectivity matrix in the graphical component for quality inspection inspect_outputs_view : traits.ui.View TraitsUI view that displays the quality inspection window of this stage config_view : traits.ui.View TraitsUI view that displays the configuration window of this stage See also --------- cmp.stages.connectome.connectome.ConnectomeStage """ log_visualization = Bool(True) circular_layout = Bool(False) inspect_output_button = Button('View') inspect_outputs_view = View(Group( Item('name', editor=TitleEditor(), show_label=False), Group( Item('log_visualization', label='Log scale'), Item('circular_layout', label='Circular layout'), label='Visualization', show_border=True ), Group( Item('inspect_outputs_enum', show_label=False), Item('inspect_output_button', enabled_when='inspect_outputs_enum!="Outputs not available"', show_label=False), label='View outputs', show_border=True ) ), scrollable=True, resizable=True, kind='livemodal', title='Inspect stage outputs', buttons=['OK', 'Cancel'] ) config_view = View(Group( Item('name', editor=TitleEditor(), show_label=False), Group( Item('config', style='custom', show_label=False), label='Configuration', show_border=True ), ), scrollable=True, resizable=True, height=270, width=670, kind='livemodal', title='Edit stage configuration', buttons=['OK', 'Cancel'] ) def __init__(self, bids_dir, output_dir): """Constructor of the ConnectomeStageUI class. Parameters ---------- bids_dir : traits.Directory BIDS root directory output_dir : traits.Directory Output directory See also --------- cmp.stages.connectome.connectome.ConnectomeStage.__init__ """ ConnectomeStage.__init__(self, bids_dir, output_dir) self.config = ConnectomeConfigUI() self.log_visualization = self.config.log_visualization self.circular_layout = self.config.circular_layout def _log_visualization_changed(self, new): """Update the value of log_visualization in the config. Parameters ---------- new : traits.Bool New value """ self.config.log_visualization = new self.define_inspect_outputs() def _circular_layout_changed(self, new): """Update the value of circular_layout in the config. Parameters ---------- new : traits.Bool New value """ self.config.circular_layout = new self.define_inspect_outputs() def _inspect_output_button_fired(self, info): """Display the selected output when ``inspect_output_button`` is clicked. Parameters ---------- info : traits.ui.Button Button object """ subprocess.Popen(self.inspect_outputs_dict[self.inspect_outputs_enum])