Source code for visiannot.configuration.update

# -*- coding: utf-8 -*-
#
# Copyright Université Rennes 1 / INSERM
# Contributor: Raphael Weber
#
# Under CeCILL license
# http://www.cecill.info

"""
Module defining functions for updating configuration dictionary before
launching GUI
"""


from . import ConfigurationWindow
from ..tools.pyqt_overlayer import get_directory_dialog
from os.path import basename


[docs]def update_data_and_annotations_directory(config_path): """ Opens a dialog window for selecting a directory containing data to display in ViSiAnnoT, loads a configuration file and updates configuration dictionary with the selected directory :param config_path: path to configuration file to load :type config_path: str The configuration file may contain the key ``data_dir_base`` in the section ``General``. Thus, the dialog window opens at the location specified by this key. Once the data directory is selected, the following field are updated in the configuration dictionary: - First field of the ``Video`` and ``Signal`` sub-configurations (data directory) - Key ``annot_dir`` in section ``General`` (annotation directory). The annotation directory is updated as follows: ``annotBase/recName/patID``, where ``annotBase`` is the initial value of the annotation directory in the configuration file, ``recName`` is the basename of the selected data directory and ``patID = recName.split('_')[0]``. """ # get configuration config_dict = ConfigurationWindow.load_config_file(config_path) # select data directory if "data_dir_base" in config_dict["General"].keys(): data_dir_base = config_dict["General"]["data_dir_base"] del config_dict["General"]["data_dir_base"] else: data_dir_base = None dir_data = get_directory_dialog(dir_root=data_dir_base) if dir_data == "": print("No input directory specified => exit") from sys import exit exit() # set configuration dictionaries if "Video" in config_dict.keys(): for value_list in config_dict["Video"].values(): value_list[0] = dir_data if "Signal" in config_dict.keys(): for value_list_list in config_dict["Signal"].values(): for value_list in value_list_list: value_list[0] = dir_data # get patient id rec_name = basename(dir_data) pat_id = rec_name.split("_")[0] config_dict["General"]["annot_dir"] = "%s/%s/%s" % ( config_dict["General"]["annot_dir"], pat_id, rec_name ) return config_dict