code: def _generate_dir_structure(path):
      
  
      # ============================ 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
docs: 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.