<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def calc_svd(self, lapack_driver='gesdd'):
 """ Return the SVD decomposition of data The input data np.ndarray shall be of dimension 2, with time as the first dimension, and the channels in the second Hence data should be of shape (nt, nch) Uses scipy.linalg.svd(), with: full_matrices = True compute_uv = True overwrite_a = False check_finite = True See scipy online doc for details Return ------ chronos: np.ndarray First arg (u) returned by scipy.linalg.svd() Contains the so-called 'chronos', of shape (nt, nt) i.e.: the time-dependent part of the decoposition s: np.ndarray Second arg (s) returned by scipy.linalg.svd() Contains the singular values, of shape (nch,) i.e.: the channel-dependent part of the decoposition topos: np.ndarray Third arg (v) returned by scipy.linalg.svd() Contains the so-called 'topos', of shape (nch, nch) i.e.: the channel-dependent part of the decoposition """

        if self._isSpectral():
            msg = "svd not implemented yet for spectral data class"
            raise Exception(msg)
        chronos, s, topos = _comp.calc_svd(self.data, lapack_driver=lapack_driver)
        return u, s, v