code: def _matrix_integration(q, h, t):
      ''' Returns the dp metric for a single horsetail
      curve at a given value of the epistemic uncertainties'''
  
      N = len(q)
  
      # correction if CDF has gone out of trapezium range
      if h[-1] < 0.9: h[-1] = 1.0
  
      W = np.zeros([N, N])
      for i in range(N):
          W[i, i] = 0.5*(h[min(i+1, N-1)] - h[max(i-1, 0)])
  
      dp = (q - t).T.dot(W).dot(q - t)
  
      return df _matrix_integration(q, h, t):
      ''' Returns the dp metric for a single horsetail
      curve at a given value of the epistemic uncertainties'''
  
      N = len(q)
  
      # correction if CDF has gone out of trapezium range
      if h[-1] < 0.9: h[-1] = 1.0
  
      W = np.zeros([N, N])
      for i in range(N):
          W[i, i] = 0.5*(h[min(i+1, N-1)] - h[max(i-1, 0)])
  
      dp = (q - t).T.dot(W).dot(q - t)
  
      return dp
docs: Returns the dp metric for a single horsetail
      curve at a given value of the epistemic uncertainties