def ica_convert2mne(unmixing, pca, info=None, method='fastica'): # create MNE-type of ICA object from mne.preprocessing.ica import ICA n_comp = unmixing.shape[1] if method == 'extended-infomax': ica_method = 'infomax' fit_params = dict(extended=True) else: ica_method = method fit_params = None ica = ICA(n_components=n_comp, method=ica_method, fit_params=fit_params) # add PCA object ica.pca = pca # PCA info to be used bei MNE-Python ica.pca_mean_ = pca.mean_ ica.pca_components_ = pca.components_ exp_var = pca.explained_variance_ ica.pca_explained_variance_ = exp_var ica.pca_explained_variance_ratio_ = pca.explained_variance_ratio_ # ICA info ica.n_components_ = n_comp ica.n_components = n_comp ica.components_ = unmixing # compatible with sklearn ica.unmixing_ = ica.components_ # as used by sklearn ica.mixing_ = pinv(ica.unmixing_) # as used by sklearn ica.unmixing_matrix_ = ica.unmixing_ / np.sqrt( exp_var[0:n_comp])[None, :] # as used by MNE-Python ica.mixing_matrix_ = pinv(ica.unmixing_matrix_) # as used by MNE-Python ica._ica_names = ['ICA%03d' % ii for ii in range(n_comp)] ica.fun = method if info: ica.info = info return ica