docstr: :param config:  The config dict for tuner experiment
  :param TUNER_CONFIG_MANAGER:   The tuner config manager
docstr_tok: [":","param","config",":","The","config","dict","for","tuner","experiment",":","param","TUNER_CONFIG_MANAGER",":","The","tuner","config","manager"]
code: def __init__(self, config, TUNER_CONFIG_MANAGER):
      """
      :param config:  The config dict for tuner experiment
      :param TUNER_CONFIG_MANAGER:   The tuner config manager
      """
      self.name = config.get("name", "tuner_experiment")
      # The dir of the config
      self.global_dir = config.get(
          "dir", os.path.dirname(TUNER_CONFIG_MANAGER.config_path)
      )
      # The dir of the result of tuner experiment
      self.tuner_ex_dir = config.get(
          "tuner_ex_dir", os.path.join(self.global_dir, self.name)
      )
      if not os.path.exists(self.tuner_ex_dir):
          os.makedirs(self.tuner_ex_dir)
      # The dir of the results of all estimator experiments
      self.estimator_ex_dir = config.get(
          "estimator_ex_dir",
          os.path.join(self.tuner_ex_dir, "estimator_experiment"),
      )
      if not os.path.exists(self.estimator_ex_dir):
          os.makedirs(self.estimator_ex_dir)
      # Get the tuner type
      self.tuner_module_path = config.get(
          "tuner_module_path", "qlib.contrib.tuner.tuner"
      )
      self.tuner_class = config.get("tuner_class", "QLibTuner")
      # Save the tuner experiment for further view
      tuner_ex_config_path = os.path.join(
          self.tuner_ex_dir, "tuner_config.yaml"
      )
      with open(tuner_ex_config_path, "w") as fp:
          yaml.dump(TUNER_CONFIG_MANAGER.config, fp)
  
file_path: qlib/qlib/contrib/tuner/config.py
imports: import yaml
  import copy
  import os
label_desc: Use image node_id 1 to create a new PipelineExperimentConfig object  with example: obj = PipelineExperimentConfig(config, TUNER_CONFIG_MANAGER)