class_docstr: Ishigami test function.
  
  three-dimensional function (usually evaluated on `[-pi, pi]^3`):
  
      f(x) = sin(x_1) + a sin(x_2)^2 + b x_3^4 sin(x_1)
  
  Here `a` and `b` are constants where a=7 and b=0.1 or b=0.05
  Proposed to test sensitivity analysis methods because it exhibits strong
  nonlinearity and nonmonotonicity and a peculiar dependence on x_3.
docstr: Compute derivative global sensitivity measures.
  
  This function can be called separately to estimate the dgsm measure
  The exact global integrals of these values are already added under
  as attributes dgsm_gradient, dgsm_gradient_bas, and dgsm_gradient_square.
  
  Args:
      X: Set of points at which to compute derivative measures.
  
  Returns: The average gradient, absolute gradient, and square gradients.
docstr_tok: ["Compute","derivative","global","sensitivity","measures",".","This","function","can","be","called","separately","to","estimate","the","dgsm","measure","The","exact","global","integrals","of","these","values","are","already","added","under","as","attributes","dgsm_gradient",",","dgsm_gradient_bas",",","and","dgsm_gradient_square",".","Args",":","X",":","Set","of","points","at","which","to","compute","derivative","measures",".","Returns",":","The","average","gradient",",","absolute","gradient",",","and","square","gradients","."]
code: def compute_dgsm(
      self, X: Tensor
  ) -> Tuple[List[float], List[float], List[float]]:
      r"""Compute derivative global sensitivity measures.
  
      This function can be called separately to estimate the dgsm measure
      The exact global integrals of these values are already added under
      as attributes dgsm_gradient, dgsm_gradient_bas, and dgsm_gradient_square.
  
      Args:
          X: Set of points at which to compute derivative measures.
  
      Returns: The average gradient, absolute gradient, and square gradients.
      """
      dx_1 = torch.cos(X[..., 0]) * (1 + self.b * (X[..., 2] ** 4))
      dx_2 = 14 * torch.cos(X[..., 1]) * torch.sin(X[..., 1])
      dx_3 = 0.4 * (X[..., 2] ** 3) * torch.sin(X[..., 0])
      gradient_measure = [
          torch.mean(dx_1).item(),
          torch.mean(dx_1).item(),
          torch.mean(dx_1).item(),
      ]
      gradient_absolute_measure = [
          torch.mean(torch.abs(dx_1)).item(),
          torch.mean(torch.abs(dx_2)).item(),
          torch.mean(torch.abs(dx_3)).item(),
      ]
      gradient_square_measure = [
          torch.mean(torch.pow(dx_1, 2)).item(),
          torch.mean(torch.pow(dx_2, 2)).item(),
          torch.mean(torch.pow(dx_3, 2)).item(),
      ]
      return (
          gradient_measure,
          gradient_absolute_measure,
          gradient_square_measure,
      )
  
imports: import math
  from typing import List, Optional, Tuple
  import torch
  from botorch.test_functions.synthetic import SyntheticTestFunction
  from torch import Tensor
label_desc: Use image node_id 3 for calling the Ishigami obj's underlying member method code with example usage: obj.compute_dgsm(X) and returns: gradient_measure,  gradient_absolute_measure,  gradient_square_measure