Source code for mdt.gui.model_fit.utils

import glob
import os
from PyQt5.QtCore import QObject, pyqtSignal

from mdt.gui.utils import UpdateDescriptor

__author__ = 'Robbert Harms'
__date__ = "2015-08-20"
__maintainer__ = "Robbert Harms"
__email__ = "robbert@xkls.nl"


[docs]class SharedState(QObject): state_updated_signal = pyqtSignal(str) def __init__(self, *args, **kwargs): """The shared state for the model fitting GUI Attributes: base_dir (str): the base dir for all file opening operations dimension_index (int): the dimension index used in various operations slice_index (int): the slice index used in various operations """ super().__init__(*args, **kwargs) shared_attributes = {'base_dir': None, 'dimension_index': 0, 'slice_index': 0, 'output_folder': None} for key, value in shared_attributes.items(): def get_attribute_setter(attribute_key): def setter(value): setattr(self, attribute_key, value) return setter setattr(self, '_' + key, value) setattr(SharedState, key, UpdateDescriptor(key)) setattr(self, 'set_' + key, get_attribute_setter(key))
[docs]def results_preselection_names(data): """Generate a list of useful map names to display. This is primarily to be used as argument to the config option ``maps_to_show`` in the function :func:`view_maps`. Args: data (str or dict or list of str): either a directory or a dictionary of results or a list of map names. Returns: list of str: the list of useful/filtered map names. """ keys = [] if isinstance(data, str): for extension in ('.nii', '.nii.gz'): for f in glob.glob(os.path.join(data, '*' + extension)): keys.append(os.path.basename(f)[0:-len(extension)]) elif isinstance(data, dict): keys = data.keys() else: keys = data filter_match = ('.vec', '.d', '.sigma', '.theta', '.phi', 'AIC', 'Errors', 'Errors', '.eigen_ranking', 'SignalEstimates', 'UsedMask', 'BIC') return list(sorted(filter(lambda v: all(m not in v for m in filter_match), keys)))