code: def get_angle_degrees(self, indices):
          
          coords = ['x', 'y', 'z']
          if isinstance(indices, pd.DataFrame):
              i_pos = self.loc[indices.index, coords].values
              b_pos = self.loc[indices.loc[:, 'b'], coords].values
              a_pos = self.loc[indices.loc[:, 'a'], coords].values
          else:
              indices = np.array(indices)
              if len(indices.shape) == 1:
                  indices = indices[None, :]
              i_pos = self.loc[indices[:, 0], coords].values
              b_pos = self.loc[indices[:, 1], coords].values
              a_pos = self.loc[indices[:, 2], coords].values
  
          BI, BA = i_pos - b_pos, a_pos - b_pos
          bi, ba = [v / np.linalg.norm(v, axis=1)[:, None] for v in (BI, BA)]
          dot_product = np.sum(bi * ba, axis=1)
          dot_product[dot_product > 1] = 1
          dot_product[dot_product < -1] = -1
          angles = np.degrees(np.arccos(dot_product))
          return angles
docs: Return the angles between given atoms.
  
          Calculates the angle in degrees between the atoms with
          indices ``i, b, a``.
          The indices can be given in three ways:
  
          * As simple list ``[i, b, a]``
          * As list of lists: ``[[i1, b1, a1], [i2, b2, a2]...]``
          * As :class:`pd.DataFrame` where ``i`` is taken from the index and
            ``b`` and ``a`` from the respective columns ``'b'`` and ``'a'``.
  
          Args:
              indices (list):
  
          Returns:
              :class:`numpy.ndarray`: Vector of angles in degrees.