Beispiel #1
0
def test_source_psd(method, pick_ori):
    """Test source PSD computation from raw."""
    raw = read_raw_fif(fname_data)
    raw.crop(0, 5).load_data()
    inverse_operator = read_inverse_operator(fname_inv)
    fmin, fmax = 40, 65  # Hz
    n_fft = 512

    assert inverse_operator['source_ori'] == FIFF.FIFFV_MNE_FREE_ORI

    stc, ev = compute_source_psd(raw,
                                 inverse_operator,
                                 lambda2=1. / 9.,
                                 method=method,
                                 fmin=fmin,
                                 fmax=fmax,
                                 pick_ori=pick_ori,
                                 n_fft=n_fft,
                                 overlap=0.,
                                 return_sensor=True,
                                 dB=True)

    assert ev.data.shape == (len(ev.info['ch_names']), len(stc.times))
    assert ev.times[0] >= fmin
    assert ev.times[-1] <= fmax
    # Time max at line frequency (60 Hz in US)
    assert 58 <= ev.times[np.argmax(np.sum(ev.data, axis=0))] <= 61
    assert ev.nave == 2

    assert stc.shape[0] == inverse_operator['nsource']
    assert stc.times[0] >= fmin
    assert stc.times[-1] <= fmax
    assert 58 <= stc.times[np.argmax(np.sum(stc.data, axis=0))] <= 61

    if method in ('sLORETA', 'dSPM'):
        stc_dspm = stc
        stc_mne, _ = compute_source_psd(raw,
                                        inverse_operator,
                                        lambda2=1. / 9.,
                                        method='MNE',
                                        fmin=fmin,
                                        fmax=fmax,
                                        pick_ori=pick_ori,
                                        n_fft=n_fft,
                                        overlap=0.,
                                        return_sensor=True,
                                        dB=True)
        # normalize each source point by its power after undoing the dB
        stc_dspm.data = 10**(stc_dspm.data / 10.)
        stc_dspm /= stc_dspm.mean()
        stc_mne.data = 10**(stc_mne.data / 10.)
        stc_mne /= stc_mne.mean()
        assert_allclose(stc_dspm.data, stc_mne.data, atol=1e-4)
Beispiel #2
0
def test_source_psd():
    """Test source PSD computation in label."""
    raw = read_raw_fif(fname_data)
    inverse_operator = read_inverse_operator(fname_inv)
    tmin, tmax = 0, 20  # seconds
    fmin, fmax = 55, 65  # Hz
    n_fft = 2048

    assert_equal(inverse_operator['source_ori'], FIFF.FIFFV_MNE_FREE_ORI)

    for pick_ori in ('normal', None):
        stc = compute_source_psd(raw,
                                 inverse_operator,
                                 lambda2=1. / 9.,
                                 method="dSPM",
                                 tmin=tmin,
                                 tmax=tmax,
                                 fmin=fmin,
                                 fmax=fmax,
                                 pick_ori=pick_ori,
                                 n_fft=n_fft,
                                 overlap=0.1)

        assert_equal(stc.shape[0], inverse_operator['nsource'])

        assert_true(stc.times[0] >= fmin * 1e-3)
        assert_true(stc.times[-1] <= fmax * 1e-3)
        # Time max at line frequency (60 Hz in US)
        assert_true(
            58e-3 <= stc.times[np.argmax(np.sum(stc.data, axis=0))] <= 61e-3)
Beispiel #3
0
def test_source_psd():
    """Test source PSD computation in label"""
    raw = io.Raw(fname_data)
    inverse_operator = read_inverse_operator(fname_inv)
    label = read_label(fname_label)
    tmin, tmax = 0, 20  # seconds
    fmin, fmax = 55, 65  # Hz
    n_fft = 2048
    stc = compute_source_psd(raw,
                             inverse_operator,
                             lambda2=1. / 9.,
                             method="dSPM",
                             tmin=tmin,
                             tmax=tmax,
                             fmin=fmin,
                             fmax=fmax,
                             pick_ori="normal",
                             n_fft=n_fft,
                             label=label,
                             overlap=0.1)
    assert_true(stc.times[0] >= fmin * 1e-3)
    assert_true(stc.times[-1] <= fmax * 1e-3)
    # Time max at line frequency (60 Hz in US)
    assert_true(
        59e-3 <= stc.times[np.argmax(np.sum(stc.data, axis=0))] <= 61e-3)
def test_source_psd():
    """Test source PSD computation in label."""
    raw = read_raw_fif(fname_data)
    inverse_operator = read_inverse_operator(fname_inv)
    label = read_label(fname_label)
    tmin, tmax = 0, 20  # seconds
    fmin, fmax = 55, 65  # Hz
    n_fft = 2048
    stc = compute_source_psd(raw, inverse_operator, lambda2=1. / 9.,
                             method="dSPM", tmin=tmin, tmax=tmax,
                             fmin=fmin, fmax=fmax, pick_ori="normal",
                             n_fft=n_fft, label=label, overlap=0.1)
    assert_true(stc.times[0] >= fmin * 1e-3)
    assert_true(stc.times[-1] <= fmax * 1e-3)
    # Time max at line frequency (60 Hz in US)
    assert_true(59e-3 <= stc.times[np.argmax(np.sum(stc.data, axis=0))] <=
                61e-3)
def test_source_psd():
    """Test source PSD computation in label."""
    raw = read_raw_fif(fname_data)
    inverse_operator = read_inverse_operator(fname_inv)
    tmin, tmax = 0, 20  # seconds
    fmin, fmax = 55, 65  # Hz
    n_fft = 2048

    assert_equal(inverse_operator['source_ori'], FIFF.FIFFV_MNE_FREE_ORI)

    for pick_ori in ('normal', None):
        stc = compute_source_psd(raw, inverse_operator, lambda2=1. / 9.,
                                 method="dSPM", tmin=tmin, tmax=tmax,
                                 fmin=fmin, fmax=fmax, pick_ori=pick_ori,
                                 n_fft=n_fft, overlap=0.1)

        assert_equal(stc.shape[0], inverse_operator['nsource'])

        assert stc.times[0] >= fmin * 1e-3
        assert stc.times[-1] <= fmax * 1e-3
        # Time max at line frequency (60 Hz in US)
        assert 58e-3 <= stc.times[np.argmax(np.sum(stc.data, axis=0))] <= 61e-3
def test_source_psd():
    """Test source PSD computation from raw."""
    raw = read_raw_fif(fname_data)
    raw.crop(0, 5).load_data()
    inverse_operator = read_inverse_operator(fname_inv)
    fmin, fmax = 40, 65  # Hz
    n_fft = 512

    assert inverse_operator['source_ori'] == FIFF.FIFFV_MNE_FREE_ORI

    stcs = list()
    for pick_ori, method in zip((None, 'normal', 'normal'),
                                ('dSPM', 'dSPM', 'MNE')):
        stc, ev = compute_source_psd(
            raw, inverse_operator, lambda2=1. / 9., method=method,
            fmin=fmin, fmax=fmax, pick_ori=pick_ori, n_fft=n_fft,
            overlap=0., return_sensor=True, dB=True)

        assert ev.data.shape == (len(ev.info['ch_names']), len(stc.times))
        assert ev.times[0] >= fmin
        assert ev.times[-1] <= fmax
        # Time max at line frequency (60 Hz in US)
        assert 58 <= ev.times[np.argmax(np.sum(ev.data, axis=0))] <= 61
        assert ev.nave == 2

        assert stc.shape[0] == inverse_operator['nsource']
        assert stc.times[0] >= fmin
        assert stc.times[-1] <= fmax
        assert 58 <= stc.times[np.argmax(np.sum(stc.data, axis=0))] <= 61

        stcs.append(stc)
    stc_dspm = stcs[-2]
    stc_mne = stcs[-1]
    # normalize each source point by its power after undoing the dB
    stc_dspm.data = 10 ** (stc_dspm.data / 10.)
    stc_dspm /= stc_dspm.mean()
    stc_mne.data = 10 ** (stc_mne.data / 10.)
    stc_mne /= stc_mne.mean()
    assert_allclose(stc_dspm.data, stc_mne.data, atol=1e-4)