code: def get_frequencies_with_eigenvectors(self, q):
          
          self._set_dynamical_matrix()
          if self._dynamical_matrix is None:
              msg = ("Dynamical matrix has not yet built.")
              raise RuntimeError(msg)
  
          self._dynamical_matrix.set_dynamical_matrix(q)
          dm = self._dynamical_matrix.get_dynamical_matrix()
          frequencies = []
          eigvals, eigenvectors = np.linalg.eigh(dm)
          frequencies = []
          for eig in eigvals:
              if eig < 0:
                  frequencies.append(-np.sqrt(-eig))
              else:
                  frequencies.append(np.sqrt(eig))
  
          return np.array(frequencies) * self._factor, eigenvectors
docs: Calculate phonon frequencies and eigenvectors at a given q-point
  
          Parameters
          ----------
          q: array_like
              A q-vector.
              shape=(3,)
  
          Returns
          -------
          (frequencies, eigenvectors)
  
          frequencies: ndarray
              Phonon frequencies
              shape=(bands, ), dtype='double', order='C'
          eigenvectors: ndarray
              Phonon eigenvectors
              shape=(bands, bands), dtype='complex', order='C'