code: def _sum_leaf_weights(
      self, leaf_pos: DataFrame, trees, learing_rate: float, num_dim=1
  ):
      def _compute_score(
          leaf_pos_: np.array,
          trees_: List[List[Node]],
          learning_rate: float,
          num_dim_=1,
      ):
          score = np.zeros(num_dim_)
          leaf_pos_ = leaf_pos_["sample_pos"]
          tree_idx = 0
          for node_idx, tree in zip(leaf_pos_, trees_):
              recovered_idx = -(node_idx + 1)
              score[tree_idx % num_dim_] += (
                  tree[recovered_idx].weight * learning_rate
              )
              tree_idx += 1
  
          return float(score[0]) if num_dim_ == 1 else [score]
  
      tree_list = [tree.get_nodes() for tree in trees]
      apply_func = functools.partial(
          _compute_score,
          trees_=tree_list,
          learning_rate=learing_rate,
          num_dim_=num_dim,
      )
      predict_score = leaf_pos.create_frame()
      predict_score["score"] = leaf_pos.apply_row(apply_func)
      return predict_score
  
file_path: FATE/python/fate/ml/ensemble/algo/secureboost/hetero/_base.py
imports: from typing import List
  import functools
  from fate.arch.dataframe import DataFrame
  from fate.ml.abc.module import HeteroModule, Model
  from fate.ml.ensemble.learner.decision_tree.tree_core.decision_tree import FeatureImportance, Node
  from typing import Dict
  import numpy
label_desc: Use image node_id 3 for calling the HeteroBoostingTree obj's underlying member method code with example usage: obj._sum_leaf_weights(leaf_pos, trees, learing_rate, num_dim) and returns: predict_score, unknown