Internal function intended to generate the biosignalsnotebooks directories in order to the user
    can visualise and execute the Notebook created with "notebook" class in Jupyter.

    ----------
    Parameters
    ----------
    path : str
        Path where the biosignalsnotebooks environment (files and folders) will be stored.

    Returns
    -------
    out : str
        Path of the directory that contains the folders (one folder per category) where the
        Notebooks are stored.

def _generate_dir_structure(path):
    """
    Internal function intended to generate the biosignalsnotebooks directories in order to the user
    can visualise and execute the Notebook created with "notebook" class in Jupyter.

    ----------
    Parameters
    ----------
    path : str
        Path where the biosignalsnotebooks environment (files and folders) will be stored.

    Returns
    -------
    out : str
        Path of the directory that contains the folders (one folder per category) where the
        Notebooks are stored.

    """

    # ============================ Creation of the main directory ==================================
    current_dir = (path + "\\opensignalsfactory_environment").replace("\\", "/")
    if not os.path.isdir(current_dir):
        os.makedirs(current_dir)

    # ================== Copy of 'images' 'styles' and 'signal_samples' folders ====================
    path_cloned_files = (os.path.abspath(__file__).split(os.path.basename(__file__))[0] + \
                        "\\notebook_files\\osf_files\\").replace("\\", "/")
    for var in ["images", "styles", "signal_samples"]:
        if os.path.isdir((current_dir + "\\" + var).replace("\\", "/")):
            shutil.rmtree((current_dir + "\\" + var).replace("\\", "/"))
        src = (path_cloned_files + "\\" + var).replace("\\", "/")
        destination = (current_dir + "\\" + var).replace("\\", "/")
        shutil.copytree(src, destination)

    # =========================== Generation of 'Categories' folder ================================
    current_dir += "/Categories"
    if not os.path.isdir(current_dir):
        os.makedirs(current_dir)

    categories = list(NOTEBOOK_KEYS.keys())
    for category in categories:
        if not os.path.isdir(current_dir + "/" + category):
            os.makedirs(current_dir + "/" + category)

    return current_dir