Source code for cmp.bidsappmanager.stages.eeg.esi

# Copyright (C) 2009-2022, 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 EEG Source Imaging config and stage UI classes."""

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

from cmp.stages.eeg.esi import (
    EEGSourceImagingConfig,
    EEGSourceImagingStage,
)


[docs]class EEGSourceImagingConfigUI(EEGSourceImagingConfig): """Class that extends the :class:`cmp.stages.eeg.esi.EEGSourceImagingConfig` with graphical components. Attributes ---------- traits_view : traits.ui.View TraitsUI view that displays the attributes of this class, e.g. the parameters for the stage See also --------- cmp.stages.eeg.esi.EEGSourceImagingConfig """ mne_electrode_transform_file_group = VGroup( Item('object.mne_electrode_transform_file.toolbox_derivatives_dir', label="Derivatives directory"), Item('object.mne_electrode_transform_file.desc', label="desc"), Item('object.mne_electrode_transform_file.suffix', label="suffix", style='readonly'), Item('object.mne_electrode_transform_file.extension', label="extension", style='readonly'), label="MNE electrode transform" ) cartool_spi_file_group = VGroup( Item('object.cartool_spi_file.toolbox_derivatives_dir', label="Derivatives directory"), Item('object.cartool_spi_file.desc', label="desc"), Item('object.cartool_spi_file.suffix', label="suffix", style='readonly'), Item('object.cartool_spi_file.extension', label="extension"), label="Source space file" ) cartool_invsol_file_group = VGroup( Item('object.cartool_invsol_file.toolbox_derivatives_dir', label="Derivatives directory"), Item('object.cartool_invsol_file.desc', label="desc"), Item('object.cartool_invsol_file.suffix', label="suffix", style='readonly'), Item('object.cartool_invsol_file.extension', label="extension"), label="Inverse solution file" ) # TODO: Add parcellation traits traits_view = View( VGroup( VGroup( Item("parcellation_cmp_dir", label="Toolbox derivatives directory"), HGroup( Item("parcellation_scheme", label="Parcellation scheme"), Item("lausanne2018_parcellation_res", label="Scale", visible_when='parcellation_scheme=="Lausanne2018"'), ), label="Structural parcellation", ), VGroup( Item("esi_tool", label="Tool"), VGroup( VGroup( Item("mne_esi_method"), Item("mne_esi_method_snr"), Item("mne_apply_electrode_transform", label="Apply electrode transform"), label="Method" ), Group( Include("mne_electrode_transform_file_group"), visible_when='mne_apply_electrode_transform' ), visible_when='esi_tool=="MNE"' ), VGroup( VGroup( Group(Include("cartool_spi_file_group")), Group(Include("cartool_invsol_file_group")) ), VGroup( Item("cartool_esi_method"), Item("cartool_esi_lamb"), label="Method" ), VGroup( Item("cartool_svd_toi_begin", label="Start TOI"), Item("cartool_svd_toi_end", label="End TOI"), label="SVD for ROI time courses extraction" ), visible_when='esi_tool=="Cartool"' ), label="EEG Source Imaging" ) ), width=0.4, height=0.6, )
[docs]class EEGSourceImagingStageUI(EEGSourceImagingStage): """Class that extends the :class:`cmp.stages.eeg.esi.EEGSourceImagingStage` with graphical components. Attributes ---------- inspect_output_button : traits.ui.Button Button that displays the selected output in an appropriate viewer (present only in the window 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.eeg.esi.EEGSourceImagingStage """ inspect_output_button = Button("View") inspect_outputs_view = View( Group( Item("name", editor=TitleEditor(), show_label=False), 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=650, width=450, kind="livemodal", title="Edit stage configuration", buttons=["OK", "Cancel"], ) # General and UI members def __init__(self, subject, session, bids_dir, output_dir): """Constructor of the EEGSourceImagingStageUI class. Parameters ----------- subject : str Subject label session : str Session label bids_dir : path BIDS root directory output_dir : path Output directory See also --------- cmp.stages.eeg.esi.EEGSourceImagingStage.__init_ cmp.cmpbidsappmanager.stages.esi.EEGSourceImagingStageUI """ EEGSourceImagingStage.__init__( self, subject=subject, session=session, bids_dir=bids_dir, output_dir=output_dir ) self.config = EEGSourceImagingConfigUI() 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])