docs: def differentiate_mi(x, y):
      '''
      for each symbol in x, change x such that there are no more of such symbols
      (replacing by a random distribution with the same proba of all other symbols)
      and compute mi(new_x, y)
      '''
      #pdb.set_trace()
      dist = Distribution(discrete.symbols_to_prob(x))
  
      diff = np.zeros(len(dist.prob))
  
      for i in range(len(dist.prob)):
          i = int(i)
          dist = Distribution(remove_symbol_from_dist(dist, i).prob)
  
          new_x = change_response(x, dist, i)
  
          diff[i] = discrete.mi(x,y)
  
      return diff