code: def _recover_from_global_shuffle(
      self, split_points: MutableMapping[int, int]
  ):
      if self._global_seed is None:
          return split_points
      shuffler = Shuffler(
          self._node_size, self._node_data_size, self._global_seed
      )
      points = list(split_points.items())
      real_indexes = shuffler.get_reverse_indexes(
          step=1, indexes=[p[1] for p in points]
      )
      out = {}
      for (nid, _), index in zip(points, real_indexes):
          out[nid] = index
      return out
  
imports: import logging
  import typing
  from typing import List, MutableMapping, Tuple, Optional
  import torch
  from fate.arch.computing.api import KVTable
  from ._histogram_local import Histogram
  from ._histogram_splits import HistogramSplits
  from .indexer import HistogramIndexer, Shuffler
label_desc: Use image node_id 11 for calling the DistributedHistogram obj's underlying member method code with example usage: obj._recover_from_global_shuffle(split_points) and returns: out, split_points