<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_dynamical_matrix_at_q(self, q):
 """Calculate dynamical matrix at a given q-point Parameters q: array_like A q-vector. shape=(3,), dtype='double' Returns ------- dynamical_matrix: ndarray Dynamical matrix. shape=(bands, bands), dtype='complex' """


        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)
        return self._dynamical_matrix.get_dynamical_matrix()