code: def iuwt_recomposition(in1, scale_adjust=0, mode='ser', core_count=1, store_on_gpu=False, smoothed_array=None):
      
  
      if mode=='ser':
          return ser_iuwt_recomposition(in1, scale_adjust, smoothed_array)
      elif mode=='mp':
          return mp_iuwt_recomposition(in1, scale_adjust, core_count, smoothed_array)
      elif mode=='gpu':
          return gpu_iuwt_recomposition(in1, scale_adjust, store_on_gpu, smoothed_array)
docs: This function serves as a handler for the different implementations of the IUWT recomposition. It allows the
      different methods to be used almost interchangeably.
  
      INPUTS:
      in1                 (no default):       Array on which the decomposition is to be performed.
      scale_adjust        (no default):       Number of omitted scales.
      mode                (default='ser')     Implementation of the IUWT to be used - 'ser', 'mp' or 'gpu'.
      core_count          (default=1)         Additional option for multiprocessing - specifies core count.
      store_on_gpu        (default=False):    Boolean specifier for whether the decomposition is stored on the gpu or not.
  
      OUTPUTS:
      Returns the recomposition.