--- a
+++ b/config/serde.py
@@ -0,0 +1,79 @@
+"""
+Created on November 10, 2019
+functions for writing/reading data to/from disk
+
+@modified_by: Soroosh Tayebi Arasteh <soroosh.arasteh@fau.de>
+"""
+import yaml
+import numpy as np
+import os
+import warnings
+import shutil
+from skimage import io
+import pdb
+import SimpleITK as sitk
+
+
+
+
+def read_config(config_path):
+    """Reads config file in yaml format into a dictionary
+
+    Parameters
+    ----------
+    config_path: str
+        Path to the config file in yaml format
+
+    Returns
+    -------
+    config dictionary
+    """
+
+    with open(config_path, 'rb') as yaml_file:
+        return yaml.safe_load(yaml_file)
+
+
+def write_config(params, cfg_path, sort_keys=False):
+    with open(cfg_path, 'w') as f:
+        yaml.dump(params, f)
+
+
+def create_experiment(experiment_name, global_config_path):
+    params = read_config(global_config_path)
+    params['experiment_name'] = experiment_name
+    create_experiment_folders(params)
+    cfg_file_name = params['experiment_name'] + '_config.yaml'
+    cfg_path = os.path.join(os.path.join(params['target_dir'], params['network_output_path']), cfg_file_name)
+    params['cfg_path'] = cfg_path
+    write_config(params, cfg_path)
+    return params
+
+
+def create_experiment_folders(params):
+    try:
+        path_keynames = ["network_output_path", "tb_logs_path", "stat_log_path", "output_data_path"]
+        for key in path_keynames:
+            params[key] = os.path.join(params['experiment_name'], params[key])
+            os.makedirs(os.path.join(params['target_dir'], params[key]))
+    except:
+        raise Exception("Experiment already exist. Please try a different experiment name")
+
+
+def open_experiment(experiment_name, global_config_path):
+    """Open Existing Experiments
+    """
+    default_params = read_config(global_config_path)
+    cfg_file_name = experiment_name + '_config.yaml'
+    cfg_path = os.path.join(os.path.join(default_params['target_dir'], experiment_name, default_params['network_output_path']), cfg_file_name)
+    params = read_config(cfg_path)
+    return params
+
+
+def delete_experiment(experiment_name, global_config_path):
+    """Delete Existing Experiment folder
+    """
+    default_params = read_config(global_config_path)
+    cfg_file_name = experiment_name + '_config.yaml'
+    cfg_path = os.path.join(os.path.join(default_params['target_dir'], experiment_name, default_params['network_output_path']), cfg_file_name)
+    params = read_config(cfg_path)
+    shutil.rmtree(os.path.join(params['target_dir'], experiment_name))
\ No newline at end of file