code: def add_layer2image(grid2d, x_pos, y_pos, kernel, order=1):
      
  
      x_int = int(round(x_pos))
      y_int = int(round(y_pos))
      shift_x = x_int - x_pos
      shift_y = y_int - y_pos
      kernel_shifted = interp.shift(kernel, [-shift_y, -shift_x], order=order)
      return add_layer2image_int(grid2d, x_int, y_int, kernel_shifted)
docs: adds a kernel on the grid2d image at position x_pos, y_pos with an interpolated subgrid pixel shift of order=order
      :param grid2d: 2d pixel grid (i.e. image)
      :param x_pos: x-position center (pixel coordinate) of the layer to be added
      :param y_pos: y-position center (pixel coordinate) of the layer to be added
      :param kernel: the layer to be added to the image
      :param order: interpolation order for sub-pixel shift of the kernel to be added
      :return: image with added layer, cut to original size