Assign data to the workspace.

        This function assigns a new data set to the workspace. Doing so invalidates currently fitted VAR models,
        connectivity estimates, and activations.

        Parameters
        ----------
        data : array-like, shape = [n_trials, n_channels, n_samples] or [n_channels, n_samples]
            EEG data set
        cl : list of valid dict keys
            Class labels associated with each trial.
        time_offset : float, optional
            Trial starting time; used for labelling the x-axis of time/frequency plots.

        Returns
        -------
        self : Workspace
            The Workspace object.

def set_data(self, data, cl=None, time_offset=0):
        """ Assign data to the workspace.

        This function assigns a new data set to the workspace. Doing so invalidates currently fitted VAR models,
        connectivity estimates, and activations.

        Parameters
        ----------
        data : array-like, shape = [n_trials, n_channels, n_samples] or [n_channels, n_samples]
            EEG data set
        cl : list of valid dict keys
            Class labels associated with each trial.
        time_offset : float, optional
            Trial starting time; used for labelling the x-axis of time/frequency plots.

        Returns
        -------
        self : Workspace
            The Workspace object.
        """
        self.data_ = atleast_3d(data)
        self.cl_ = np.asarray(cl if cl is not None else [None]*self.data_.shape[0])
        self.time_offset_ = time_offset
        self.var_model_ = None
        self.var_cov_ = None
        self.connectivity_ = None

        self.trial_mask_ = np.ones(self.cl_.size, dtype=bool)

        if self.unmixing_ is not None:
            self.activations_ = dot_special(self.unmixing_.T, self.data_)

        return self