code: def vina_energy_term(
      coords1: np.ndarray,
      coords2: np.ndarray,
      weights: np.ndarray,
      wrot: float,
      Nrot: int,
  ) -> np.ndarray:
      """Computes the Vina Energy function for two molecular conformations
  
      Parameters
      ----------
      coords1: np.ndarray
          Molecular coordinates of shape `(N, 3)`
      coords2: np.ndarray
          Molecular coordinates of shape `(M, 3)`
      weights: np.ndarray
          A numpy array of shape `(5,)`. The 5 values are weights for repulsion interaction term,
          hydrophobic interaction term, hydrogen bond interaction term,
          first Gaussian interaction term and second Gaussian interaction term.
      wrot: float
          The scaling factor for nonlinearity
      Nrot: int
          Number of rotatable bonds in this calculation
  
      Returns
      -------
      np.ndarray
          A scalar value with free energy
      """
      # TODO(rbharath): The autodock vina source computes surface distances
      # which take into account the van der Waals radius of each atom type.
      dists = pairwise_distances(coords1, coords2)
      repulsion = vina_repulsion(dists)
      hydrophobic = vina_hydrophobic(dists)
      hbond = vina_hbond(dists)
      gauss_1 = vina_gaussian_first(dists)
      gauss_2 = vina_gaussian_second(dists)
  
      # Shape (N, M)
      interactions = weighted_linear_sum(
          weights,
          np.array([repulsion, hydrophobic, hbond, gauss_1, gauss_2]),
      )
  
      # Shape (N, M)
      thresholded = cutoff_filter(dists, interactions)
  
      free_energies = vina_nonlinearity(thresholded, wrot, Nrot)
      return np.sum(free_energies)
  
file_path: deepchem/deepchem/dock/pose_scoring.py
imports: import numpy
label_desc: Use image node_id 10 for calling a global function with example usage: vina_energy_term(coords1, coords2, weights, wrot, Nrot) and returns: np