code: def convert_results2hyper(self):
      self.eval_times = np.array(self.gfo_optimizer.eval_times).sum()
      self.iter_times = np.array(self.gfo_optimizer.iter_times).sum()
  
      if self.gfo_optimizer.best_para is not None:
          value = self.hg_conv.para2value(self.gfo_optimizer.best_para)
          position = self.hg_conv.position2value(value)
          best_para = self.hg_conv.value2para(position)
  
          self.best_para = best_para
      else:
          self.best_para = None
  
      self.best_score = self.gfo_optimizer.best_score
      self.positions = self.gfo_optimizer.search_data
  
      self.search_data = self.hg_conv.positions2results(self.positions)
  
      results_dd = self.gfo_optimizer.search_data.drop_duplicates(
          subset=self.s_space.dim_keys, keep="first"
      )
      self.memory_values_df = results_dd[
          self.s_space.dim_keys + ["score"]
      ].reset_index(drop=True)
  
file_path: Hyperactive/hyperactive/optimizers/hyper_optimizer.py
imports: import numpy
  from .objective_function import ObjectiveFunction
  from .hyper_gradient_conv import HyperGradientConv
  from .optimizer_attributes import OptimizerAttributes
  from .constraint import Constraint
label_desc: Use image node_id 3 for calling the HyperOptimizer obj's underlying member method code with example usage: obj.convert_results2hyper() without return types