@pytest.fixture(scope='session') def azure_windows(): """Determine if running on Azure Windows.""" return (os.getenv('AZURE_CI_WINDOWS', 'false').lower() == 'true' and sys.platform.startswith('win')) @pytest.fixture() def check_gui_ci(ci_macos, azure_windows): """Skip tests that are not reliable on CIs.""" if azure_windows or ci_macos: pytest.skip('Skipping GUI tests on MacOS CIs and Azure Windows') @pytest.fixture(scope='session', params=[testing._pytest_param()]) def _evoked(): # This one is session scoped, so be sure not to modify it (use evoked # instead) evoked = mne.read_evokeds(fname_evoked, condition='Left Auditory', baseline=(None, 0)) evoked.crop(0, 0.2) return evoked @pytest.fixture() def evoked(_evoked): """Get evoked data.""" return _evoked.copy()
with pytest.warns(RuntimeWarning, match='1 of 2 SourceEstimate vertices'): simulate_raw(raw, stc, trans, src, bem, None) def _make_stc(raw, src): """Make a STC.""" seed = 42 sfreq = raw.info['sfreq'] # Hz tstep = 1. / sfreq n_samples = len(raw.times) // 10 times = np.arange(0, n_samples) * tstep stc = simulate_sparse_stc(src, 10, times, random_state=seed) return stc @pytest.fixture(scope='function', params=[testing._pytest_param()]) def raw_data(): """Get some starting data.""" # raw with ECG channel raw = read_raw_fif(raw_fname).crop(0., 5.0).load_data() data_picks = pick_types(raw.info, meg=True, eeg=True) other_picks = pick_types(raw.info, meg=False, stim=True, eog=True) picks = np.sort(np.concatenate((data_picks[::16], other_picks))) raw = raw.pick_channels([raw.ch_names[p] for p in picks]) raw.info.normalize_proj() ecg = RawArray(np.zeros((1, len(raw.times))), create_info(['ECG 063'], raw.info['sfreq'], 'ecg')) for key in ('dev_head_t', 'highpass', 'lowpass', 'dig'): ecg.info[key] = raw.info[key] raw.add_channels([ecg])
from mne.time_frequency import CrossSpectralDensity from mne.time_frequency.csd import _sym_mat_to_vector data_path = testing.data_path(download=False) fname_raw = op.join(data_path, 'MEG', 'sample', 'sample_audvis_trunc_raw.fif') fname_fwd = op.join(data_path, 'MEG', 'sample', 'sample_audvis_trunc-meg-eeg-oct-4-fwd.fif') fname_fwd_vol = op.join(data_path, 'MEG', 'sample', 'sample_audvis_trunc-meg-vol-7-fwd.fif') fname_event = op.join(data_path, 'MEG', 'sample', 'sample_audvis_trunc_raw-eve.fif') subjects_dir = op.join(data_path, 'subjects') @pytest.fixture(scope='module', params=[testing._pytest_param()]) def _load_forward(): """Load forward models.""" fwd_free = mne.read_forward_solution(fname_fwd) fwd_free = mne.pick_types_forward(fwd_free, meg=True, eeg=False) fwd_free = mne.convert_forward_solution(fwd_free, surf_ori=False) fwd_surf = mne.convert_forward_solution(fwd_free, surf_ori=True, use_cps=False) fwd_fixed = mne.convert_forward_solution(fwd_free, force_fixed=True, use_cps=False) fwd_vol = mne.read_forward_solution(fname_fwd_vol) return fwd_free, fwd_surf, fwd_fixed, fwd_vol def _simulate_data(fwd, idx): # Somewhere on the frontal lobe by default """Simulate an oscillator on the cortex."""
for ii in range(2): # should work with (ii=0) or without (ii=1) the interpolator if ii: src[0]['interpolator'] = None img = stc.as_volume(src, mri_resolution=False) n_on = np.array(img.dataobj).astype(bool).sum() # was 20 on `master` before gh-5590 # then 44 before gh-7653, which took it back to 20 assert n_on == n_orig # without the interpolator, this should fail assert src[0]['interpolator'] is None with pytest.raises(RuntimeError, match=r'.*src\[0\], .* mri_resolution'): stc.as_volume(src, mri_resolution=True) @pytest.fixture(scope='session', params=[testing._pytest_param()]) def _mixed_morph_srcs(): # create a mixed source space labels_vol = ['Left-Cerebellum-Cortex', 'Right-Cerebellum-Cortex'] src = mne.setup_source_space('sample', spacing='oct3', add_dist=False, subjects_dir=subjects_dir) src += mne.setup_volume_source_space( 'sample', mri=fname_aseg, pos=10.0, volume_label=labels_vol, subjects_dir=subjects_dir, add_interpolator=True, verbose=True) # create the destination space src_fs = mne.read_source_spaces( op.join(subjects_dir, 'fsaverage', 'bem', 'fsaverage-ico-5-src.fif')) src_fs += mne.setup_volume_source_space( 'fsaverage', pos=7., volume_label=labels_vol, subjects_dir=subjects_dir, add_interpolator=False, verbose=True)
from mne.datasets import testing from mne import (read_label, read_forward_solution, pick_types_forward, convert_forward_solution) from mne.label import Label from mne.simulation import simulate_stc, simulate_sparse_stc, SourceSimulator from mne.utils import run_tests_if_main, check_version data_path = testing.data_path(download=False) fname_fwd = op.join(data_path, 'MEG', 'sample', 'sample_audvis_trunc-meg-eeg-oct-6-fwd.fif') label_names = ['Aud-lh', 'Aud-rh', 'Vis-rh'] subjects_dir = op.join(data_path, 'subjects') @pytest.fixture(scope="module", params=[testing._pytest_param()]) def _get_fwd_labels(): fwd = read_forward_solution(fname_fwd) fwd = convert_forward_solution(fwd, force_fixed=True, use_cps=True) fwd = pick_types_forward(fwd, meg=True, eeg=False) labels = [ read_label( op.join(data_path, 'MEG', 'sample', 'labels', '%s.label' % label)) for label in label_names ] return fwd, labels def _get_idx_label_stc(label, stc): hemi_idx_mapping = dict(lh=0, rh=1)
convert_forward_solution) from mne.label import Label from mne.simulation.source import simulate_stc, simulate_sparse_stc from mne.simulation.source import SourceSimulator from mne.utils import run_tests_if_main data_path = testing.data_path(download=False) fname_fwd = op.join(data_path, 'MEG', 'sample', 'sample_audvis_trunc-meg-eeg-oct-6-fwd.fif') label_names = ['Aud-lh', 'Aud-rh', 'Vis-rh'] subjects_dir = op.join(data_path, 'subjects') @pytest.fixture(scope="module", params=[testing._pytest_param()]) def _get_fwd_labels(): fwd = read_forward_solution(fname_fwd) fwd = convert_forward_solution(fwd, force_fixed=True, use_cps=True) fwd = pick_types_forward(fwd, meg=True, eeg=False) labels = [read_label(op.join(data_path, 'MEG', 'sample', 'labels', '%s.label' % label)) for label in label_names] return fwd, labels def _get_idx_label_stc(label, stc): hemi_idx_mapping = dict(lh=0, rh=1) hemi_idx = hemi_idx_mapping[label.hemi] idx = np.intersect1d(stc.vertices[hemi_idx], label.vertices)
@pytest.fixture() def fnirs_evoked(): """Create an fnirs evoked structure.""" montage = make_standard_montage('biosemi16') ch_names = montage.ch_names ch_types = ['eeg'] * 16 info = create_info(ch_names=ch_names, sfreq=20, ch_types=ch_types) evoked_data = np.random.randn(16, 30) evoked = EvokedArray(evoked_data, info=info, tmin=-0.2, nave=4) evoked.set_montage(montage) evoked.set_channel_types({'Fp1': 'hbo', 'Fp2': 'hbo', 'F4': 'hbo', 'Fz': 'hbo'}, verbose='error') return evoked @pytest.fixture(params=[_pytest_param()]) def fnirs_epochs(): """Create an fnirs epoch structure.""" fname = op.join(data_path(download=False), 'NIRx', 'nirscout', 'nirx_15_2_recording_w_overlap') raw_intensity = read_raw_nirx(fname, preload=False) raw_od = optical_density(raw_intensity) raw_haemo = beer_lambert_law(raw_od) evts, _ = events_from_annotations(raw_haemo, event_id={'1.0': 1}) evts_dct = {'A': 1} tn, tx = -1, 2 epochs = Epochs(raw_haemo, evts, event_id=evts_dct, tmin=tn, tmax=tx) return epochs # Create one nbclient and reuse it
data_path = testing.data_path(download=False) ft_data_path = op.join(data_path, 'fieldtrip', 'beamformer') fname_raw = op.join(data_path, 'MEG', 'sample', 'sample_audvis_trunc_raw.fif') fname_cov = op.join(data_path, 'MEG', 'sample', 'sample_audvis_trunc-cov.fif') fname_fwd = op.join(data_path, 'MEG', 'sample', 'sample_audvis_trunc-meg-eeg-oct-4-fwd.fif') fname_fwd_vol = op.join(data_path, 'MEG', 'sample', 'sample_audvis_trunc-meg-vol-7-fwd.fif') fname_event = op.join(data_path, 'MEG', 'sample', 'sample_audvis_trunc_raw-eve.fif') fname_label = op.join(data_path, 'MEG', 'sample', 'labels', 'Aud-lh.label') reject = dict(grad=4000e-13, mag=4e-12) @pytest.fixture(scope='function', params=[testing._pytest_param()]) def _get_bf_data(save_fieldtrip=False): raw, epochs, evoked, data_cov, _, _, _, _, _, fwd = _get_data(proj=False) if save_fieldtrip is True: # raw needs to be saved with all channels and picked in FieldTrip raw.save(op.join(ft_data_path, 'raw.fif'), overwrite=True) # src (tris are not available in fwd['src'] once imported into MATLAB) src = fwd['src'].copy() mne.write_source_spaces(op.join(ft_data_path, 'src.fif'), src) # pick gradiometers only: epochs.pick_types(meg='grad') evoked.pick_types(meg='grad')