<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def read_cal(cal_yaml_path):
    '''Load calibration file if exists, else create

    Args
    ----
    cal_yaml_path: str
        Path to calibration YAML file

    Returns
    -------
    cal_dict: dict
        Key value pairs of calibration meta data
    '''
    from collections import OrderedDict
    import datetime
    import os
    import warnings
    import yamlord

    from . import utils

    def __create_cal(cal_yaml_path):
        cal_dict = OrderedDict()

        # Add experiment name for calibration reference
        base_path, _ = os.path.split(cal_yaml_path)
        _, exp_name = os.path.split(base_path)
        cal_dict['experiment'] = exp_name

        return cal_dict

    # Try reading cal file, else create
    if os.path.isfile(cal_yaml_path):
        cal_dict = yamlord.read_yaml(cal_yaml_path)
    else:
        cal_dict = __create_cal(cal_yaml_path)
        cal_dict['parameters'] = OrderedDict()

    for key, val in utils.parse_experiment_params(cal_dict['experiment']).items():
        cal_dict[key] = val

    fmt = "%Y-%m-%d %H:%M:%S"
    cal_dict['date_modified'] = datetime.datetime.now().strftime(fmt)

    return cal_dict