code: def convert_atom_pair_to_voxel(
      coordinates_tuple: Tuple[np.ndarray, np.ndarray],
      atom_index_pair: Tuple[int, int],
      box_width: float,
      voxel_width: float,
  ) -> np.ndarray:
      """Converts a pair of atoms to i,j,k grid indexes.
  
  
      Parameters
      ----------
      coordinates_tuple: Tuple[np.ndarray, np.ndarray]
          A tuple containing two molecular coordinate arrays of shapes `(N, 3)` and `(M, 3)`.
      atom_index_pair: Tuple[int, int]
          A tuple of indices for the atoms in the two molecules.
      box_width: float
          Size of the box in Angstroms.
      voxel_width: float
          Size of a voxel in Angstroms
  
      Returns
      -------
      indices_list: np.ndarray
          A numpy array of shape `(2, 3)`, where `3` is `[i, j, k]` of the
          voxel coordinates of specified atom.
      """
  
      indices_list = []
      for coordinates, atom_index in zip(
          coordinates_tuple, atom_index_pair
      ):
          indices_list.append(
              convert_atom_to_voxel(
                  coordinates, atom_index, box_width, voxel_width
              )
          )
      return np.array(indices_list)
  
file_path: deepchem/deepchem/utils/voxel_utils.py
imports: import logging
  from typing import Any, Callable, Dict, List, Optional, Tuple, Union
  import numpy
  from deepchem.utils.noncovalent_utils import compute_pi_stack
label_desc: Use image node_id 2 for calling a global function with example usage: convert_atom_pair_to_voxel(coordinates_tuple, atom_index_pair, box_width, voxel_width) and returns: np