code: def _initialize_root_node(
      self, ctx: Context, train_df: DataFrame, gh: DataFrame = None
  ):
      sitename = ctx.local.name
      if gh is None:
          sum_g, sum_h = 0, 0
      else:
          sum_gh = gh.sum()
          sum_g = float(sum_gh["g"])
          sum_h = float(sum_gh["h"])
      root_node = Node(
          nid=0,
          grad=sum_g,
          hess=sum_h,
          sitename=sitename,
          sample_num=len(train_df),
      )
  
      return root_node
  
imports: import numpy
  import pandas
  from fate.arch import Context
  from fate.arch.dataframe import DataFrame
  from fate.ml.ensemble.learner.decision_tree.tree_core.splitter import SplitInfo
  from typing import List
  import logging
label_desc: Use image node_id 7 for calling the DecisionTree obj's underlying member method code with example usage: obj._initialize_root_node(ctx, train_df, gh) and returns: root_node