code: def i_update(self, fids, nids, targets, node_mapping):
      if node_mapping is None:
          positions = self._indexer.get_positions(
              nids.flatten().detach().numpy().tolist(),
              fids.detach().numpy().tolist(),
          )
          if len(positions) == 0:
              return self
          self._data.i_update(targets, positions)
      else:
          (
              positions,
              masks,
          ) = self._indexer.get_positions_with_node_mapping(
              nids.flatten().detach().numpy().tolist(),
              fids.detach().numpy().tolist(),
              node_mapping,
          )
          if len(positions) == 0:
              return self
          self._data.i_update_with_masks(targets, positions, masks)
      return self
  
file_path: FATE/python/fate/arch/histogram/_histogram_local.py
imports: import logging
  import typing
  from ._histogram_splits import HistogramSplits
  from .indexer import HistogramIndexer, Shuffler
  from .values import HistogramValuesContainer
label_desc: Use image node_id 5 for calling the Histogram obj's underlying member method code with example usage: obj.i_update(fids, nids, targets, node_mapping) and returns: self, self, self