class_docstr: A SaliencyMask class that implements the integrated gradients method.
docstr: This function computes the integrated gradients which measure the importance of each feature to the prediction score of 'class_of_interest'
  for node 'node_id'.
  
  Args:
  node_id (int): The node ID in the StellarGraph object.
  class_of_interest (int): The  class of interest for which the saliency maps are computed.
  X_baseline: For integrated gradients, X_baseline is the reference X to start with. Generally we should set X_baseline to a all-zero
                                        matrix with the size of the original feature matrix for existing features.
  steps (int): The number of values we need to interpolate. Generally steps = 20 should give good enough results.
  non_exist_feature (bool): Setting it to True allows to compute the importance of features that are 0.
  return (Numpy array): Integrated gradients for the node features.
code: def get_integrated_node_masks(
      self,
      node_id,
      class_of_interest,
      X_baseline=None,
      steps=20,
      non_exist_feature=False,
  ):
      """
      This function computes the integrated gradients which measure the importance of each feature to the prediction score of 'class_of_interest'
      for node 'node_id'.
  
      Args:
      node_id (int): The node ID in the StellarGraph object.
      class_of_interest (int): The  class of interest for which the saliency maps are computed.
      X_baseline: For integrated gradients, X_baseline is the reference X to start with. Generally we should set X_baseline to a all-zero
                                            matrix with the size of the original feature matrix for existing features.
      steps (int): The number of values we need to interpolate. Generally steps = 20 should give good enough results.
      non_exist_feature (bool): Setting it to True allows to compute the importance of features that are 0.
      return (Numpy array): Integrated gradients for the node features.
      """
      node_idx = self.node_list.index(node_id)
  
      X_val = self.X
      if X_baseline is None:
          if not non_exist_feature:
              X_baseline = np.zeros(X_val.shape)
          else:
              X_baseline = X_val
              X_val = np.ones_like(X_val)
      X_diff = X_val - X_baseline
      total_gradients = np.zeros(X_val.shape)
  
      for alpha in np.linspace(1.0 / steps, 1, steps):
          X_step = X_baseline + alpha * X_diff
          total_gradients += super().get_node_masks(
              node_idx, class_of_interest, X_val=X_step
          )
      return np.squeeze(total_gradients * X_diff, 0)
  
file_path: stellargraph/stellargraph/interpretability/saliency_maps/integrated_gradients_gat.py
imports: import numpy
  from .saliency_gat import GradientSaliencyGAT
  import scipy.sparse
  from tensorflow.keras import backend
label_desc: Use image node_id 2 for calling the IntegratedGradientsGAT obj's underlying member method code with example usage: obj.get_integrated_node_masks(node_id, class_of_interest, X_baseline, steps, non_exist_feature) and returns: np