code: def parse_hyperparameter_string(param_string):
      params = OrderedDict()
      lines = param_string.split("\n")
      for line in lines:
          # Logic kind of copied from SMAC ACLIB version 2.06.01-dev,
          # but a little bit more restrictive
          # file: ca.ubc.cs.beta.aclib.configspace.ParamConfigurationSpace.java
          # line 497-546
          # type = ""
          if not line.strip():
              continue
          elif line.count("|") == 1:
              pass
              # print "WARNING: Conditionality is not parsed yet."
              # od = _parse_conditional(line)
          elif line.strip()[0] == "{":
              continue
          elif line.count("[") == 2:
              continue
          elif line.count("{") == 1 and line.count("}") == 1:
              od = _parse_categorical(line)
          else:
              raise ValueError(
                  "Cannot parse the following line %s" % line
              )
          params[od["name"]] = od["values"]
      return params
  
file_path: auto-sklearn/autosklearn/metalearning/optimizers/optimizer_base.py
imports: import subprocess
  from collections import OrderedDict
  from io import StringIO
  from itertools import product
label_desc: Use image node_id 2 for calling a global function with example usage: parse_hyperparameter_string(param_string) and returns: params