code: def map_nest_at_indices(
      nest: Iterable,
      indices: Tuple,
      fn: Callable,
      /,
      shallow: bool = True,
  ) -> Union[
      ivy.Array, ivy.NativeArray, ivy.Container, Dict, List, Tuple
  ]:
      """Map a function to the values of a nested item at the specified indices.
  
      Parameters
      ----------
      nest
          The nested object to update.
      indices
          A tuple of tuples of indices for the indices at which to update.
      fn
          The function to perform on the nest at the given index.
      shallow
          Whether to inplace update the input nest or not
          Only works if nest is a mutable type. Default is ``True``.
  
      Returns
      -------
      ret
          nest with applicable of fn on given indices.
  
      Examples
      --------
      With :code:`List` inputs:
  
      >>> nest = [['a', 'c', 'e', 'd', 'u', 'k'], ['m', 'n', 'f', 'p', 'q', 't']]
      >>> indices = [[0, 4], [1, 5]]
      >>> function = lambda x : x + 'b'
      >>> ivy.map_nest_at_indices(nest, indices, function)
      >>> print(nest)
      [['a', 'c', 'e', 'd', 'ub', 'k'], ['m', 'n', 'f', 'p', 'q', 'tb']]
  
      With :code:`Tuple` inputs:
  
      >>> nest = ([-9, 8, -27],[9, -4, -5, 7])
      >>> indices = ((0, 2),(1, 0),(1, 2))
      >>> function = abs
      >>> ivy.map_nest_at_indices(nest, indices, function)
      >>> print(nest)
      ([-9, 8, 27], [9, -4, 5, 7])
  
      With :code:`Dict` input:
  
      >>> nest = {'a': [8., 16., 22.], 'b': [10., 44., 81.], 'c': [9., 75., 37.]}
      >>> indices = (('a', 2), ('b', 0), ('c', 1))
      >>> function = lambda x : x + 1
      >>> ivy.map_nest_at_indices(nest, indices, function)
      >>> print(nest)
      {'a': [8.0, 16.0, 23.0], 'b': [11.0, 44.0, 81.0], 'c': [9.0, 76.0, 37.0]}
  
      With :class:`ivy.Array` inputs:
  
      >>> nest = ivy.array([[-9., 8., -17.],[11., -3., 5.]])
      >>> indices = ((0, 1),(1, 1),(1, 2))
      >>> function = lambda x : x ** 2
      >>> ivy.map_nest_at_indices(nest, indices, function)
      >>> print(nest)
      ivy.array([[ -9.,  64., -17.],
             [ 11.,   9.,  25.]])
      """
      is_tuple = isinstance(nest, tuple)
      nest_type = type(nest) if is_tuple else lambda x: x
      if shallow:
          result = nest_type(nest)
      else:
          result = copy_nest(nest, include_derived=True)
      result = list(result) if is_tuple else result
      for i, index in enumerate(indices):
          result = map_nest_at_index(
              nest, index, fn, _result=result, shallow=shallow
          )
      try:
          result = nest_type(result)
      except TypeError:
          result = nest_type(*result)
      return result
  
imports: from builtins import map
  from typing import Callable, Any, Union, List, Tuple, Optional, Dict, Iterable, Sequence
  from collections import UserDict, OrderedDict
  import ivy
  from ivy.utils.exceptions import handle_exceptions
label_desc: Use image node_id 10 for calling a global function with example usage: map_nest_at_indices(shallow) and returns: result