docstr: decode HPO given para to user(externel) para and trial para
docstr_tok: ["decode","HPO","given","para","to","user","(","externel",")","para","and","trial","para"]
code: def _decode_para_convert(self, para):
      """
      decode HPO given para to user(externel) para and trial para
      """
      externel_para = para.copy()
      trial_para = para.copy()
      for name in para:
          if name in self._numerical_map:
              old_para = self._numerical_map[name]
              val = para[name]
              if old_para["scalingType"] == "LOG":
                  val = math.exp(val)
                  if val < old_para["minValue"]:
                      val = old_para["minValue"]
                  elif val > old_para["maxValue"]:
                      val = old_para["maxValue"]
              if old_para["type"] == "INTEGER":
                  val = int(round(val))
              externel_para[name] = val
              trial_para[name] = (
                  val
                  if old_para["scalingType"] != "LOG"
                  else math.log(val)
              )
          elif name in self._category_map:
              externel_para[name] = self._category_map[name][
                  int(para[name])
              ]
              trial_para[name] = para[name]
          elif name in self._discrete_map:
              externel_para[name] = eval(
                  self._discrete_map[name][int(para[name])]
              )
              trial_para[name] = para[name]
      return externel_para, trial_para
  
imports: from ...utils import get_logger
  import hyperopt
  import time
  import math
  import dill
  import multiprocessing
  import copy
  import random
label_desc: Use image node_id 9 for calling the BaseHPOptimizer obj's underlying member method code with example usage: obj._decode_para_convert(para) and returns: externel_para,  trial_para