Пример #1
0
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