code: def get_bond_angle_index(edge_index):
      """
      edge_index: (2, E)
      bond_angle_index: (3, *)
      """
  
      def _add_item(
          node_i_indices,
          node_j_indices,
          node_k_indices,
          node_i_index,
          node_j_index,
          node_k_index,
      ):
          node_i_indices += [node_i_index, node_k_index]
          node_j_indices += [node_j_index, node_j_index]
          node_k_indices += [node_k_index, node_i_index]
  
      E = edge_index.shape[1]
      node_i_indices = []
      node_j_indices = []
      node_k_indices = []
      for edge_i in range(E - 1):
          for edge_j in range(edge_i + 1, E):
              a0, a1 = edge_index[:, edge_i]
              b0, b1 = edge_index[:, edge_j]
              if a0 == b0 and a1 == b1:
                  continue
              if a0 == b1 and a1 == b0:
                  continue
              if a0 == b0:
                  _add_item(
                      node_i_indices,
                      node_j_indices,
                      node_k_indices,
                      a1,
                      a0,
                      b1,
                  )
              if a0 == b1:
                  _add_item(
                      node_i_indices,
                      node_j_indices,
                      node_k_indices,
                      a1,
                      a0,
                      b0,
                  )
              if a1 == b0:
                  _add_item(
                      node_i_indices,
                      node_j_indices,
                      node_k_indices,
                      a0,
                      a1,
                      b1,
                  )
              if a1 == b1:
                  _add_item(
                      node_i_indices,
                      node_j_indices,
                      node_k_indices,
                      a0,
                      a1,
                      b0,
                  )
      node_ijk = np.array(
          [node_i_indices, node_j_indices, node_k_indices]
      )
      uniq_node_ijk = np.unique(node_ijk, axis=1).astype(
          "int64"
      )  # (3, *)
      return uniq_node_ijk
  
imports: import numpy
  import rdkit
  from rdkit import Chem
  from rdkit.Chem import AllChem
  import rdkit.Chem.rdPartialCharges
  from ogb.utils.features import allowable_features, atom_to_feature_vector, atom_feature_vector_to_dict, bond_feature_vector_to_dict
  from local_feature import bond_to_feature_vector, get_bond_feature_dims
  from copy import deepcopy
  import hashlib
label_desc: Use image node_id 22 for calling a global function with example usage: get_bond_angle_index(edge_index) and returns: uniq_node_ijk