code: def compute_salt_bridges(
      first, second, pairwise_distances, cutoff=5.0
  ):
      """Find salt bridge contacts between two molecules.
  
      Parameters:
      -----------
      first: rdkit.rdchem.Mol
          Interacting molecules
      second: rdkit.rdchem.Mol
          Interacting molecules
      pairwise_distances: np.ndarray
          Array of pairwise interatomic distances between molecule atoms (Angstroms)
      cutoff: float
          Cutoff distance for contact consideration
  
      Returns:
      --------
      salt_bridge_contacts: list of tuples
          List of contacts. Tuple (i, j) indicates that atom i from
          first molecule interacts with atom j from second.
      """
  
      salt_bridge_contacts = []
      contacts = np.nonzero(pairwise_distances < cutoff)
      contacts = zip(contacts[0], contacts[1])
      for contact in contacts:
          first_atom = first.GetAtoms()[int(contact[0])]
          second_atom = second.GetAtoms()[int(contact[1])]
          if is_salt_bridge(first_atom, second_atom):
              salt_bridge_contacts.append(contact)
      return salt_bridge_contacts
  
file_path: deepchem/deepchem/utils/noncovalent_utils.py
imports: import numpy
  from collections import Counter
  from deepchem.utils.fragment_utils import get_partial_charge
  from deepchem.utils.rdkit_utils import compute_ring_center
  from deepchem.utils.rdkit_utils import compute_ring_normal
  from deepchem.utils.geometry_utils import angle_between
  from deepchem.utils.geometry_utils import is_angle_within_cutoff
label_desc: Use image node_id 2 for calling a global function with example usage: compute_salt_bridges(first, second, pairwise_distances, cutoff) and returns: salt_bridge_contacts