Пример #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)
Пример #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)
# read label(s)
labels = [mne.read_label(ss) for ss in fname_label]

inverse_operator = read_inverse_operator(fname_inv)

# regularisation parameter
snr = 3.0
lambda2 = 1.0 / snr**2
mode = 'svd'
n_svd_comp = 1

method = 'MNE'  # can be 'MNE', 'dSPM', or 'sLORETA'
stc_ctf_mne = cross_talk_function(inverse_operator,
                                  forward,
                                  labels,
                                  method=method,
                                  lambda2=lambda2,
                                  signed=False,
                                  mode=mode,
                                  n_svd_comp=n_svd_comp)

method = 'dSPM'
stc_ctf_dspm = cross_talk_function(inverse_operator,
                                   forward,
                                   labels,
                                   method=method,
                                   lambda2=lambda2,
                                   signed=False,
                                   mode=mode,
                                   n_svd_comp=n_svd_comp)

time_label = "MNE %d"
forward = mne.read_forward_solution(fname_fwd)

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

inverse_operator = read_inverse_operator(fname_inv)

# regularisation parameter
snr = 3.0
lambda2 = 1.0 / snr ** 2
mode = 'svd'
n_svd_comp = 1

method = 'MNE'  # can be 'MNE', 'dSPM', or 'sLORETA'
stc_ctf_mne = cross_talk_function(
    inverse_operator, forward, labels, method=method, lambda2=lambda2,
    signed=False, mode=mode, n_svd_comp=n_svd_comp)

method = 'dSPM'
stc_ctf_dspm = cross_talk_function(
    inverse_operator, forward, labels, method=method, lambda2=lambda2,
    signed=False, mode=mode, n_svd_comp=n_svd_comp)

fmin = 0.
time_label = "MNE %d"
fmax = stc_ctf_mne.data[:, 0].max()
fmid = fmax / 2.
brain_mne = stc_ctf_mne.plot(surface='inflated', hemi='rh',
                             subjects_dir=subjects_dir,
                             time_label=time_label, fmin=fmin,
                             fmid=fmid, fmax=fmax,