code: def _mix_color(slice1, slice2, alpha_channels, color_space):
      
  
      if slice1.shape != slice2.shape:
          raise ValueError('size mismatch between cropped slices and checkers!!!')
  
      alpha_channels = np.array(alpha_channels)
      if len(alpha_channels) != 2:
          raise ValueError('Alphas must be two value tuples.')
  
      slice1, slice2 = scale_images_0to1(slice1, slice2)
  
      # masking background
      combined_distr = np.concatenate((slice1.flatten(), slice2.flatten()))
      image_eps = np.percentile(combined_distr, 5)
      background = np.logical_or(slice1 <= image_eps, slice2 <= image_eps)
  
      if color_space.lower() in ['rgb']:
  
          red = alpha_channels[0] * slice1
          grn = alpha_channels[1] * slice2
          blu = np.zeros_like(slice1)
  
          # foreground = np.logical_not(background)
          # blu[foreground] = 1.0
  
          mixed = np.stack((red, grn, blu), axis=2)
  
      elif color_space.lower() in ['hsv']:
  
          raise NotImplementedError(
              'This method (color_space="hsv") is yet to fully conceptualized and implemented.')
  
          # TODO other ideas: hue/saturation/intensity value driven by difference in intensity?
          hue = alpha_channels[0] * slice1
          sat = alpha_channels[1] * slice2
          val = np.ones_like(slice1)
  
          hue[background] = 1.0
          sat[background] = 0.0
          val[background] = 0.0
  
          mixed = np.stack((hue, sat, val), axis=2)
          # converting to RGB
          mixed = mpl.colors.hsv_to_rgb(mixed)
  
      # ensuring all values are clipped to [0, 1]
      mixed[mixed <= 0.0] = 0.0
      mixed[mixed >= 1.0] = 1.0
  
      return mixed
docs: Mixing them as red and green channels