Esempio n. 1
0
def test_psf_ctf():
    """Test computation of PSFs and CTFs for linear estimators
    """
    forward = read_forward_solution(fname_fwd)
    labels = [mne.read_label(ss) for ss in fname_label]

    method = 'MNE'
    n_svd_comp = 2

    # make sure it works for both types of inverses
    for fname_inv in (fname_inv_meg, fname_inv_meeg):
        inverse_operator = read_inverse_operator(fname_inv)
        # Test PSFs (then CTFs)
        for mode in ('sum', 'svd'):
            stc_psf, psf_ev = point_spread_function(inverse_operator,
                                                    forward,
                                                    method=method,
                                                    labels=labels,
                                                    lambda2=lambda2,
                                                    pick_ori='normal',
                                                    mode=mode,
                                                    n_svd_comp=n_svd_comp,
                                                    use_cps=True)

            n_vert, n_samples = stc_psf.shape
            should_n_vert = (inverse_operator['src'][1]['vertno'].shape[0] +
                             inverse_operator['src'][0]['vertno'].shape[0])
            if mode == 'svd':
                should_n_samples = len(labels) * n_svd_comp + 1
            else:
                should_n_samples = len(labels) + 1

            assert_true(n_vert == should_n_vert)
            assert_true(n_samples == should_n_samples)

            n_chan, n_samples = psf_ev.data.shape
            assert_true(n_chan == forward['nchan'])

        # Test CTFs
        for mode in ('sum', 'svd'):
            stc_ctf = cross_talk_function(inverse_operator,
                                          forward,
                                          labels,
                                          method=method,
                                          lambda2=lambda2,
                                          signed=False,
                                          mode=mode,
                                          n_svd_comp=n_svd_comp,
                                          use_cps=True)

            n_vert, n_samples = stc_ctf.shape
            should_n_vert = (inverse_operator['src'][1]['vertno'].shape[0] +
                             inverse_operator['src'][0]['vertno'].shape[0])
            if mode == 'svd':
                should_n_samples = len(labels) * n_svd_comp + 1
            else:
                should_n_samples = len(labels) + 1

            assert_true(n_vert == should_n_vert)
            assert_true(n_samples == should_n_samples)
Esempio n. 2
0
def test_psf_ctf():
    """Test computation of PSFs and CTFs for linear estimators
    """

    inverse_operator = read_inverse_operator(fname_inv)
    forward = read_forward_solution(fname_fwd, force_fixed=False,
                                    surf_ori=True)
    forward = pick_types_forward(forward, meg=True, eeg=False)
    labels = [mne.read_label(ss) for ss in fname_label]

    method = 'MNE'
    n_svd_comp = 2

    # Test PSFs (then CTFs)
    for mode in ('sum', 'svd'):
        stc_psf, psf_ev = point_spread_function(inverse_operator,
                                                forward,
                                                method=method,
                                                labels=labels,
                                                lambda2=lambda2,
                                                pick_ori='normal',
                                                mode=mode,
                                                n_svd_comp=n_svd_comp)

        n_vert, n_samples = stc_psf.shape
        should_n_vert = (inverse_operator['src'][1]['vertno'].shape[0] +
                         inverse_operator['src'][0]['vertno'].shape[0])
        if mode == 'svd':
            should_n_samples = len(labels) * n_svd_comp + 1
        else:
            should_n_samples = len(labels) + 1

        assert_true(n_vert == should_n_vert)
        assert_true(n_samples == should_n_samples)

        n_chan, n_samples = psf_ev.data.shape
        assert_true(n_chan == forward['nchan'])

    forward = read_forward_solution(fname_fwd, force_fixed=True, surf_ori=True)
    forward = pick_types_forward(forward, meg=True, eeg=False)

    # Test CTFs
    for mode in ('sum', 'svd'):
        stc_ctf = cross_talk_function(inverse_operator, forward,
                                      labels, method=method,
                                      lambda2=lambda2,
                                      signed=False, mode=mode,
                                      n_svd_comp=n_svd_comp)

        n_vert, n_samples = stc_ctf.shape
        should_n_vert = (inverse_operator['src'][1]['vertno'].shape[0] +
                         inverse_operator['src'][0]['vertno'].shape[0])
        if mode == 'svd':
            should_n_samples = len(labels) * n_svd_comp + 1
        else:
            should_n_samples = len(labels) + 1

        assert_true(n_vert == should_n_vert)
        assert_true(n_samples == should_n_samples)
Esempio n. 3
0
inverse_operator_meg = read_inverse_operator(fname_inv_meg)

# read label(s)
labels = [mne.read_label(ss) for ss in fname_label]

# regularisation parameter
snr = 3.0
lambda2 = 1.0 / snr**2
method = 'MNE'  # can be 'MNE' or 'sLORETA'
mode = 'svd'
n_svd_comp = 1

stc_psf_eegmeg, _ = point_spread_function(inverse_operator_eegmeg,
                                          forward,
                                          method=method,
                                          labels=labels,
                                          lambda2=lambda2,
                                          pick_ori='normal',
                                          mode=mode,
                                          n_svd_comp=n_svd_comp)

stc_psf_meg, _ = point_spread_function(inverse_operator_meg,
                                       forward,
                                       method=method,
                                       labels=labels,
                                       lambda2=lambda2,
                                       pick_ori='normal',
                                       mode=mode,
                                       n_svd_comp=n_svd_comp)

# save for viewing in mne_analyze in order of labels in 'labels'
# last sample is average across PSFs
inverse_operator_meg = read_inverse_operator(fname_inv_meg)

# read label(s)
labels = [mne.read_label(ss) for ss in fname_label]

# regularisation parameter
snr = 3.0
lambda2 = 1.0 / snr ** 2
method = 'MNE'  # can be 'MNE' or 'sLORETA'
mode = 'svd'
n_svd_comp = 1

stc_psf_eegmeg, _ = point_spread_function(inverse_operator_eegmeg,
                                          forward, method=method,
                                          labels=labels,
                                          lambda2=lambda2,
                                          pick_ori='normal',
                                          mode=mode,
                                          n_svd_comp=n_svd_comp)

stc_psf_meg, _ = point_spread_function(inverse_operator_meg,
                                       forward, method=method,
                                       labels=labels,
                                       lambda2=lambda2,
                                       pick_ori='normal',
                                       mode=mode,
                                       n_svd_comp=n_svd_comp)

# save for viewing in mne_analyze in order of labels in 'labels'
# last sample is average across PSFs
# stc_psf_eegmeg.save('psf_eegmeg')