code: def angle_between(
      vector_i: np.ndarray, vector_j: np.ndarray
  ) -> float:
      """Returns the angle in radians between vectors "vector_i" and "vector_j"
  
      Note that this function always returns the smaller of the two angles between
      the vectors (value between 0 and pi).
  
      Parameters
      ----------
      vector_i: np.ndarray
          A numpy array of shape `(3,)`, where `3` is (x,y,z).
      vector_j: np.ndarray
          A numpy array of shape `(3,)`, where `3` is (x,y,z).
  
      Returns
      ----------
      np.ndarray
          The angle in radians between the two vectors.
  
      Examples
      --------
      >>> print("%0.06f" % angle_between((1, 0, 0), (0, 1, 0)))
      1.570796
      >>> print("%0.06f" % angle_between((1, 0, 0), (1, 0, 0)))
      0.000000
      >>> print("%0.06f" % angle_between((1, 0, 0), (-1, 0, 0)))
      3.141593
      """
      vector_i_u = unit_vector(vector_i)
      vector_j_u = unit_vector(vector_j)
      angle = np.arccos(np.dot(vector_i_u, vector_j_u))
      if np.isnan(angle):
          if np.allclose(vector_i_u, vector_j_u):
              return 0.0
          else:
              return np.pi
      return angle
  
file_path: deepchem/deepchem/utils/geometry_utils.py
imports: import numpy
  from scipy.spatial.distance import cdist
  from copy import deepcopy
label_desc: Use image node_id 2 for calling a global function with example usage: angle_between(vector_i, vector_j) and returns: angle, int, np