import yaml import os #r'..\RadiomicsParams.yaml' feature_classes_inface2yaml ={'First Order Statistics': 'firstorder', 'Shape-based': 'shape', 'GLCM': 'glcm', 'GLRLM': 'glrlm', 'GLSZM': 'glszm', 'GLDM': 'gldm', 'NGTDM': 'ngtdm'} feature_classes_yaml2inface = {'firstorder': 'First Order Statistics', 'shape': 'Shape-based', 'glcm': 'GLCM', 'glrlm': 'GLRLM', 'glszm': 'GLSZM', 'gldm': 'GLDM', 'ngtdm': 'NGTDM'} image_classes_inface2yaml = {'Exponential': 'Exponential', 'Gradient': 'Gradient', 'Local Binary Pattern (2D)': 'LBP2D', 'Local Binary Pattern (3D)': 'LBP3D', 'Laplacian of Gaussian': 'LoG', 'Logarithm': 'Logarithm', 'Original': 'Original', 'Square': 'Square', 'Square Root': 'SquareRoot', 'Wavelet Transform': 'Wavelet'} image_classes_yaml2inface = {'Exponential': 'Exponential', 'Gradient': 'Gradient', 'LBP2D': 'Local Binary Pattern (2D)', 'LBP3D': 'Local Binary Pattern (3D)', 'LoG': 'Laplacian of Gaussian', 'Logarithm': 'Logarithm', 'Original': 'Original', 'Square': 'Square', 'SquareRoot': 'Square Root', 'Wavelet': 'Wavelet Transform'} class RadiomicsParamsConfig: def __init__(self, file_path): self.__config_path = file_path self.__feature_classes_key = 'featureClass' self.__feature_classes = {} self.__image_classes_key = 'imageType' self.__image_classes = {} def LoadConfig(self): file = open(self.__config_path, 'r', encoding='utf-8') content = file.read() # config = yaml.load(content, Loader=yaml.FullLoader) config = yaml.load(content) self.__image_classes = config[self.__image_classes_key] self.__feature_classes = config[self.__feature_classes_key] file.close() def GetImageClasses(self): selected_image_classes = [] for key in self.__image_classes.keys(): if image_classes_yaml2inface.__contains__(key): selected_image_classes.append(image_classes_yaml2inface[key]) return selected_image_classes def GetFeatureClasses(self): selected_feature_classes = [] for key in self.__feature_classes.keys(): if feature_classes_yaml2inface.__contains__(key): selected_feature_classes.append(feature_classes_yaml2inface[key]) return selected_feature_classes def SetFeatureClasses(self, selected_feature_classes): self.__feature_classes.clear() for feature in selected_feature_classes: temp = feature_classes_inface2yaml.get(feature) self.__feature_classes[temp] = None def SetImageClasses(self, selected_iamge_classes): self.__image_classes.clear() for image in selected_iamge_classes: temp = image_classes_inface2yaml.get(image) self.__image_classes[temp] = {} print(self.__image_classes) def SaveConfig(self): file = open(self.__config_path, 'r', encoding='utf-8') content = file.read() config = yaml.load(content) file.close() file = open(self.__config_path, 'w', encoding='utf-8') config[self.__image_classes_key] = self.__image_classes config[self.__feature_classes_key] = self.__feature_classes yaml.dump(config, file) if __name__ == '__main__': # temp = {"Exponential": 'Exponential', # "Gradient": 'Gradient', # "LBP2D": 'Local Binary Pattern (2D)', # "LBP3D": 'Local Binary Pattern (3D)', # "LoG": 'Laplacian of Gaussian'} # if temp.__contains__('LoG'): # print('Log') radiomics_params = RadiomicsParamsConfig(r'RadiomicsParams.yaml') radiomics_params.LoadConfig() temp = {'Gradient', 'Laplacian of Gaussian'} radiomics_params.SetImageClasses(temp) feature = {'GLRLM', 'First Order Statistics'} radiomics_params.SetFeatureClasses(feature) radiomics_params.SaveConfig() # feature_classes = radiomics_params.GetFeatureClasses() # print(feature_classes)