code: def _update_sample_pos(
      s: pd.Series,
      cur_layer_node: List[Node],
      node_map: dict,
      sitename=None,
  ):
      node_id = s.iloc[-1]
      node = cur_layer_node[node_map[node_id]]
      if node.is_leaf:
          return -(
              node.nid + 1
          )  # use negative index to represent leaves, + 1 to avoid root node 0
      feat_val = s[node.fid]
      bid = node.bid
      dir_ = _make_decision(feat_val, bid)
      if dir_:  # go left
          ret_node = node.l
      else:
          ret_node = node.r
      return ret_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 2 for calling a global function with example usage: _update_sample_pos(s, cur_layer_node, node_map, sitename) and returns: ret_node, unknown