code: def ICM(input_dim, num_outputs, kernel, W_rank=1,W=None,kappa=None,name='ICM'):
      
      if kernel.input_dim != input_dim:
          kernel.input_dim = input_dim
          warnings.warn("kernel's input dimension overwritten to fit input_dim parameter.")
  
      K = kernel.prod(GPy.kern.Coregionalize(1, num_outputs, active_dims=[input_dim], rank=W_rank,W=W,kappa=kappa,name='B'),name=name)
      return K
docs: Builds a kernel for an Intrinsic Coregionalization Model
  
      :input_dim: Input dimensionality (does not include dimension of indices)
      :num_outputs: Number of outputs
      :param kernel: kernel that will be multiplied by the coregionalize kernel (matrix B).
      :type kernel: a GPy kernel
      :param W_rank: number tuples of the corregionalization parameters 'W'
      :type W_rank: integer