def test_regularization(): """Test Maxwell filter regularization""" # Load testing data (raw, SSS std origin, SSS non-standard origin) min_tols = (100., 2.6, 1.0) med_tols = (1000., 21.4, 3.7) origins = ((0., 0., 0.04), (0.,) * 3, (0., 0.02, 0.02)) coord_frames = ('head', 'meg', 'head') raw_fnames = (raw_fname, erm_fname, sample_fname) sss_fnames = (sss_reg_in_fname, sss_erm_reg_in_fname, sss_samp_reg_in_fname) comp_tols = [0, 1, 4] for ii, rf in enumerate(raw_fnames): with warnings.catch_warnings(record=True): # maxshield raw = Raw(rf, allow_maxshield=True).crop(0., 1., False) sss_reg_in = Raw(sss_fnames[ii]) # Test "in" regularization raw_sss = maxwell_filter(raw, coord_frame=coord_frames[ii], origin=origins[ii]) assert_meg_snr(raw_sss, sss_reg_in, min_tols[ii], med_tols[ii], msg=rf) # check components match py_info = raw_sss.info['proc_history'][0]['max_info']['sss_info'] assert_true(py_info is not None) assert_true(len(py_info) > 0) mf_info = sss_reg_in.info['proc_history'][0]['max_info']['sss_info'] n_in = None for inf in py_info, mf_info: if n_in is None: n_in = _get_n_moments(inf['in_order']) else: assert_equal(n_in, _get_n_moments(inf['in_order'])) assert_equal(inf['components'][:n_in].sum(), inf['nfree']) assert_allclose(py_info['nfree'], mf_info['nfree'], atol=comp_tols[ii], err_msg=rf)
def test_regularization(): """Test Maxwell filter regularization""" # Load testing data (raw, SSS std origin, SSS non-standard origin) min_tols = (100., 2.6, 1.0) med_tols = (1000., 21.4, 3.7) origins = ((0., 0., 0.04), (0.,) * 3, (0., 0.02, 0.02)) coord_frames = ('head', 'meg', 'head') raw_fnames = (raw_fname, erm_fname, sample_fname) sss_fnames = (sss_reg_in_fname, sss_erm_reg_in_fname, sss_samp_reg_in_fname) comp_tols = [0, 1, 4] for ii, rf in enumerate(raw_fnames): raw = Raw(rf, allow_maxshield='yes').crop(0., 1.) sss_reg_in = Raw(sss_fnames[ii]) # Test "in" regularization raw_sss = maxwell_filter(raw, coord_frame=coord_frames[ii], origin=origins[ii]) assert_meg_snr(raw_sss, sss_reg_in, min_tols[ii], med_tols[ii], msg=rf) # check components match py_info = raw_sss.info['proc_history'][0]['max_info']['sss_info'] assert_true(py_info is not None) assert_true(len(py_info) > 0) mf_info = sss_reg_in.info['proc_history'][0]['max_info']['sss_info'] n_in = None for inf in py_info, mf_info: if n_in is None: n_in = _get_n_moments(inf['in_order']) else: assert_equal(n_in, _get_n_moments(inf['in_order'])) assert_equal(inf['components'][:n_in].sum(), inf['nfree']) assert_allclose(py_info['nfree'], mf_info['nfree'], atol=comp_tols[ii], err_msg=rf)
def test_basic(): """Test Maxwell filter basic version""" # Load testing data (raw, SSS std origin, SSS non-standard origin) with warnings.catch_warnings(record=True): # maxshield raw = Raw(raw_fname, allow_maxshield=True).crop(0., 1., False) raw_err = Raw(raw_fname, proj=True, allow_maxshield=True) raw_erm = Raw(erm_fname, allow_maxshield=True) assert_raises(RuntimeError, maxwell_filter, raw_err) assert_raises(TypeError, maxwell_filter, 1.) # not a raw assert_raises(ValueError, maxwell_filter, raw, int_order=20) # too many n_int_bases = int_order ** 2 + 2 * int_order n_ext_bases = ext_order ** 2 + 2 * ext_order nbases = n_int_bases + n_ext_bases # Check number of bases computed correctly assert_equal(_get_n_moments([int_order, ext_order]).sum(), nbases) # Test SSS computation at the standard head origin raw_sss = maxwell_filter(raw, origin=mf_head_origin, regularize=None, bad_condition='ignore') assert_meg_snr(raw_sss, Raw(sss_std_fname), 200., 1000.) py_cal = raw_sss.info['proc_history'][0]['max_info']['sss_cal'] assert_equal(len(py_cal), 0) py_ctc = raw_sss.info['proc_history'][0]['max_info']['sss_ctc'] assert_equal(len(py_ctc), 0) py_st = raw_sss.info['proc_history'][0]['max_info']['max_st'] assert_equal(len(py_st), 0) assert_raises(RuntimeError, maxwell_filter, raw_sss) # Test SSS computation at non-standard head origin raw_sss = maxwell_filter(raw, origin=[0., 0.02, 0.02], regularize=None, bad_condition='ignore') assert_meg_snr(raw_sss, Raw(sss_nonstd_fname), 250., 700.) # Test SSS computation at device origin sss_erm_std = Raw(sss_erm_std_fname) raw_sss = maxwell_filter(raw_erm, coord_frame='meg', origin=mf_meg_origin, regularize=None, bad_condition='ignore') assert_meg_snr(raw_sss, sss_erm_std, 100., 900.) for key in ('job', 'frame'): vals = [x.info['proc_history'][0]['max_info']['sss_info'][key] for x in [raw_sss, sss_erm_std]] assert_equal(vals[0], vals[1]) # Check against SSS functions from proc_history sss_info = raw_sss.info['proc_history'][0]['max_info'] assert_equal(_get_n_moments(int_order), proc_history._get_sss_rank(sss_info)) # Degenerate cases raw_bad = raw.copy() raw_bad.comp = True assert_raises(RuntimeError, maxwell_filter, raw_bad) del raw_bad assert_raises(ValueError, maxwell_filter, raw, coord_frame='foo') assert_raises(ValueError, maxwell_filter, raw, origin='foo') assert_raises(ValueError, maxwell_filter, raw, origin=[0] * 4)
def test_basic(): """Test Maxwell filter basic version.""" # Load testing data (raw, SSS std origin, SSS non-standard origin) raw = read_crop(raw_fname, (0., 1.)) raw_err = read_crop(raw_fname).apply_proj() raw_erm = read_crop(erm_fname) assert_raises(RuntimeError, maxwell_filter, raw_err) assert_raises(TypeError, maxwell_filter, 1.) # not a raw assert_raises(ValueError, maxwell_filter, raw, int_order=20) # too many n_int_bases = int_order ** 2 + 2 * int_order n_ext_bases = ext_order ** 2 + 2 * ext_order nbases = n_int_bases + n_ext_bases # Check number of bases computed correctly assert_equal(_get_n_moments([int_order, ext_order]).sum(), nbases) # Test SSS computation at the standard head origin assert_equal(len(raw.info['projs']), 12) # 11 MEG projs + 1 AVG EEG raw_sss = maxwell_filter(raw, origin=mf_head_origin, regularize=None, bad_condition='ignore') assert_equal(len(raw_sss.info['projs']), 1) # avg EEG assert_equal(raw_sss.info['projs'][0]['desc'], 'Average EEG reference') assert_meg_snr(raw_sss, read_crop(sss_std_fname), 200., 1000.) py_cal = raw_sss.info['proc_history'][0]['max_info']['sss_cal'] assert_equal(len(py_cal), 0) py_ctc = raw_sss.info['proc_history'][0]['max_info']['sss_ctc'] assert_equal(len(py_ctc), 0) py_st = raw_sss.info['proc_history'][0]['max_info']['max_st'] assert_equal(len(py_st), 0) assert_raises(RuntimeError, maxwell_filter, raw_sss) # Test SSS computation at non-standard head origin raw_sss = maxwell_filter(raw, origin=[0., 0.02, 0.02], regularize=None, bad_condition='ignore') assert_meg_snr(raw_sss, read_crop(sss_nonstd_fname), 250., 700.) # Test SSS computation at device origin sss_erm_std = read_crop(sss_erm_std_fname) raw_sss = maxwell_filter(raw_erm, coord_frame='meg', origin=mf_meg_origin, regularize=None, bad_condition='ignore') assert_meg_snr(raw_sss, sss_erm_std, 100., 900.) for key in ('job', 'frame'): vals = [x.info['proc_history'][0]['max_info']['sss_info'][key] for x in [raw_sss, sss_erm_std]] assert_equal(vals[0], vals[1]) # Check against SSS functions from proc_history sss_info = raw_sss.info['proc_history'][0]['max_info'] assert_equal(_get_n_moments(int_order), proc_history._get_sss_rank(sss_info)) # Degenerate cases assert_raises(ValueError, maxwell_filter, raw, coord_frame='foo') assert_raises(ValueError, maxwell_filter, raw, origin='foo') assert_raises(ValueError, maxwell_filter, raw, origin=[0] * 4) assert_raises(ValueError, maxwell_filter, raw, mag_scale='foo')
def _check_reg_match(sss_py, sss_mf, comp_tol): """Check regularization.""" info_py = sss_py.info['proc_history'][0]['max_info']['sss_info'] assert (info_py is not None) assert (len(info_py) > 0) info_mf = sss_mf.info['proc_history'][0]['max_info']['sss_info'] n_in = None for inf in (info_py, info_mf): if n_in is None: n_in = _get_n_moments(inf['in_order']) else: assert_equal(n_in, _get_n_moments(inf['in_order'])) assert_equal(inf['components'][:n_in].sum(), inf['nfree']) assert_allclose(info_py['nfree'], info_mf['nfree'], atol=comp_tol, err_msg=sss_py._filenames[0])
def _check_reg_match(sss_py, sss_mf, comp_tol): """Helper to check regularization.""" info_py = sss_py.info['proc_history'][0]['max_info']['sss_info'] assert_true(info_py is not None) assert_true(len(info_py) > 0) info_mf = sss_mf.info['proc_history'][0]['max_info']['sss_info'] n_in = None for inf in (info_py, info_mf): if n_in is None: n_in = _get_n_moments(inf['in_order']) else: assert_equal(n_in, _get_n_moments(inf['in_order'])) assert_equal(inf['components'][:n_in].sum(), inf['nfree']) assert_allclose(info_py['nfree'], info_mf['nfree'], atol=comp_tol, err_msg=sss_py._filenames[0])
def test_maxwell_filter_additional(): """Test processing of Maxwell filtered data""" # TODO: Future tests integrate with mne/io/tests/test_proc_history # Load testing data (raw, SSS std origin, SSS non-standard origin) data_path = op.join(testing.data_path(download=False)) file_name = 'test_move_anon' raw_fname = op.join(data_path, 'SSS', file_name + '_raw.fif') with warnings.catch_warnings(record=True): # maxshield # Use 2.0 seconds of data to get stable cov. estimate raw = Raw(raw_fname, allow_maxshield=True).crop(0., 2., False) # Get MEG channels, compute Maxwell filtered data raw.load_data() raw.pick_types(meg=True, eeg=False) int_order = 8 raw_sss = maxwell_filter(raw, origin=mf_head_origin, regularize=None, bad_condition='ignore') # Test io on processed data tempdir = _TempDir() test_outname = op.join(tempdir, 'test_raw_sss.fif') raw_sss.save(test_outname) raw_sss_loaded = Raw(test_outname, preload=True) # Some numerical imprecision since save uses 'single' fmt assert_allclose(raw_sss_loaded[:][0], raw_sss[:][0], rtol=1e-6, atol=1e-20) # Test rank of covariance matrices for raw and SSS processed data cov_raw = compute_raw_covariance(raw) cov_sss = compute_raw_covariance(raw_sss) scalings = None cov_raw_rank = _estimate_rank_meeg_cov(cov_raw['data'], raw.info, scalings) cov_sss_rank = _estimate_rank_meeg_cov(cov_sss['data'], raw_sss.info, scalings) assert_equal(cov_raw_rank, raw.info['nchan']) assert_equal(cov_sss_rank, _get_n_moments(int_order))
def test_maxwell_filter_additional(tmpdir): """Test processing of Maxwell filtered data.""" # TODO: Future tests integrate with mne/io/tests/test_proc_history # Load testing data (raw, SSS std origin, SSS non-standard origin) data_path = op.join(testing.data_path(download=False)) file_name = 'test_move_anon' raw_fname = op.join(data_path, 'SSS', file_name + '_raw.fif') # Use 2.0 seconds of data to get stable cov. estimate raw = read_crop(raw_fname, (0., 2.)) # Get MEG channels, compute Maxwell filtered data raw.load_data() raw.pick_types(meg=True, eeg=False) int_order = 8 raw_sss = maxwell_filter(raw, origin=mf_head_origin, regularize=None, bad_condition='ignore') # Test io on processed data tempdir = str(tmpdir) test_outname = op.join(tempdir, 'test_raw_sss.fif') raw_sss.save(test_outname) raw_sss_loaded = read_crop(test_outname).load_data() # Some numerical imprecision since save uses 'single' fmt assert_allclose(raw_sss_loaded[:][0], raw_sss[:][0], rtol=1e-6, atol=1e-20) # Test rank of covariance matrices for raw and SSS processed data cov_raw = compute_raw_covariance(raw) cov_sss = compute_raw_covariance(raw_sss) scalings = None cov_raw_rank = _compute_rank_int( cov_raw, scalings=scalings, info=raw.info, proj=False) cov_sss_rank = _compute_rank_int( cov_sss, scalings=scalings, info=raw_sss.info, proj=False) assert cov_raw_rank == raw.info['nchan'] assert cov_sss_rank == _get_n_moments(int_order)
def test_basic(): """Test Maxwell filter basic version.""" # Load testing data (raw, SSS std origin, SSS non-standard origin) raw = read_crop(raw_fname, (0., 1.)) raw_err = read_crop(raw_fname).apply_proj() raw_erm = read_crop(erm_fname) pytest.raises(RuntimeError, maxwell_filter, raw_err) pytest.raises(TypeError, maxwell_filter, 1.) # not a raw pytest.raises(ValueError, maxwell_filter, raw, int_order=20) # too many n_int_bases = int_order ** 2 + 2 * int_order n_ext_bases = ext_order ** 2 + 2 * ext_order nbases = n_int_bases + n_ext_bases # Check number of bases computed correctly assert_equal(_get_n_moments([int_order, ext_order]).sum(), nbases) # Test SSS computation at the standard head origin assert_equal(len(raw.info['projs']), 12) # 11 MEG projs + 1 AVG EEG with use_coil_def(elekta_def_fname): raw_sss = maxwell_filter(raw, origin=mf_head_origin, regularize=None, bad_condition='ignore') assert_equal(len(raw_sss.info['projs']), 1) # avg EEG assert_equal(raw_sss.info['projs'][0]['desc'], 'Average EEG reference') assert_meg_snr(raw_sss, read_crop(sss_std_fname), 200., 1000.) py_cal = raw_sss.info['proc_history'][0]['max_info']['sss_cal'] assert_equal(len(py_cal), 0) py_ctc = raw_sss.info['proc_history'][0]['max_info']['sss_ctc'] assert_equal(len(py_ctc), 0) py_st = raw_sss.info['proc_history'][0]['max_info']['max_st'] assert_equal(len(py_st), 0) pytest.raises(RuntimeError, maxwell_filter, raw_sss) # Test SSS computation at non-standard head origin with use_coil_def(elekta_def_fname): raw_sss = maxwell_filter(raw, origin=[0., 0.02, 0.02], regularize=None, bad_condition='ignore') assert_meg_snr(raw_sss, read_crop(sss_nonstd_fname), 250., 700.) # Test SSS computation at device origin sss_erm_std = read_crop(sss_erm_std_fname) raw_sss = maxwell_filter(raw_erm, coord_frame='meg', origin=mf_meg_origin, regularize=None, bad_condition='ignore') assert_meg_snr(raw_sss, sss_erm_std, 70., 260.) for key in ('job', 'frame'): vals = [x.info['proc_history'][0]['max_info']['sss_info'][key] for x in [raw_sss, sss_erm_std]] assert_equal(vals[0], vals[1]) # Two equivalent things: at device origin in device coords (0., 0., 0.) # and at device origin at head coords info['dev_head_t'][:3, 3] raw_sss_meg = maxwell_filter( raw, coord_frame='meg', origin=(0., 0., 0.)) raw_sss_head = maxwell_filter( raw, origin=raw.info['dev_head_t']['trans'][:3, 3]) assert_meg_snr(raw_sss_meg, raw_sss_head, 100., 900.) # Check against SSS functions from proc_history sss_info = raw_sss.info['proc_history'][0]['max_info'] assert_equal(_get_n_moments(int_order), _get_sss_rank(sss_info)) # Degenerate cases pytest.raises(ValueError, maxwell_filter, raw, coord_frame='foo') pytest.raises(ValueError, maxwell_filter, raw, origin='foo') pytest.raises(ValueError, maxwell_filter, raw, origin=[0] * 4) pytest.raises(ValueError, maxwell_filter, raw, mag_scale='foo') raw_missing = raw.copy().load_data() raw_missing.info['bads'] = ['MEG0111'] raw_missing.pick_types(meg=True) # will be missing the bad maxwell_filter(raw_missing) with pytest.warns(RuntimeWarning, match='not in data'): maxwell_filter(raw_missing, calibration=fine_cal_fname)
def test_basic(): """Test Maxwell filter basic version.""" # Load testing data (raw, SSS std origin, SSS non-standard origin) raw = read_crop(raw_fname, (0., 1.)) raw_err = read_crop(raw_fname).apply_proj() raw_erm = read_crop(erm_fname) assert_raises(RuntimeError, maxwell_filter, raw_err) assert_raises(TypeError, maxwell_filter, 1.) # not a raw assert_raises(ValueError, maxwell_filter, raw, int_order=20) # too many n_int_bases = int_order**2 + 2 * int_order n_ext_bases = ext_order**2 + 2 * ext_order nbases = n_int_bases + n_ext_bases # Check number of bases computed correctly assert_equal(_get_n_moments([int_order, ext_order]).sum(), nbases) # Test SSS computation at the standard head origin assert_equal(len(raw.info['projs']), 12) # 11 MEG projs + 1 AVG EEG raw_sss = maxwell_filter(raw, origin=mf_head_origin, regularize=None, bad_condition='ignore') assert_equal(len(raw_sss.info['projs']), 1) # avg EEG assert_equal(raw_sss.info['projs'][0]['desc'], 'Average EEG reference') assert_meg_snr(raw_sss, read_crop(sss_std_fname), 200., 1000.) py_cal = raw_sss.info['proc_history'][0]['max_info']['sss_cal'] assert_equal(len(py_cal), 0) py_ctc = raw_sss.info['proc_history'][0]['max_info']['sss_ctc'] assert_equal(len(py_ctc), 0) py_st = raw_sss.info['proc_history'][0]['max_info']['max_st'] assert_equal(len(py_st), 0) assert_raises(RuntimeError, maxwell_filter, raw_sss) # Test SSS computation at non-standard head origin raw_sss = maxwell_filter(raw, origin=[0., 0.02, 0.02], regularize=None, bad_condition='ignore') assert_meg_snr(raw_sss, read_crop(sss_nonstd_fname), 250., 700.) # Test SSS computation at device origin sss_erm_std = read_crop(sss_erm_std_fname) raw_sss = maxwell_filter(raw_erm, coord_frame='meg', origin=mf_meg_origin, regularize=None, bad_condition='ignore') assert_meg_snr(raw_sss, sss_erm_std, 100., 900.) for key in ('job', 'frame'): vals = [ x.info['proc_history'][0]['max_info']['sss_info'][key] for x in [raw_sss, sss_erm_std] ] assert_equal(vals[0], vals[1]) # Check against SSS functions from proc_history sss_info = raw_sss.info['proc_history'][0]['max_info'] assert_equal(_get_n_moments(int_order), proc_history._get_sss_rank(sss_info)) # Degenerate cases assert_raises(ValueError, maxwell_filter, raw, coord_frame='foo') assert_raises(ValueError, maxwell_filter, raw, origin='foo') assert_raises(ValueError, maxwell_filter, raw, origin=[0] * 4) assert_raises(ValueError, maxwell_filter, raw, mag_scale='foo') raw_missing = raw.copy().load_data() raw_missing.info['bads'] = ['MEG0111'] raw_missing.pick_types(meg=True) # will be missing the bad maxwell_filter(raw_missing) with warnings.catch_warnings(record=True) as w: maxwell_filter(raw_missing, calibration=fine_cal_fname) assert_equal(len(w), 1) assert_true('not in data' in str(w[0].message))
def test_basic(): """Test Maxwell filter basic version""" # Load testing data (raw, SSS std origin, SSS non-standard origin) raw = Raw(raw_fname, allow_maxshield='yes').crop(0., 1., copy=False) raw_err = Raw(raw_fname, proj=True, allow_maxshield='yes') raw_erm = Raw(erm_fname, allow_maxshield='yes') assert_raises(RuntimeError, maxwell_filter, raw_err) assert_raises(TypeError, maxwell_filter, 1.) # not a raw assert_raises(ValueError, maxwell_filter, raw, int_order=20) # too many n_int_bases = int_order**2 + 2 * int_order n_ext_bases = ext_order**2 + 2 * ext_order nbases = n_int_bases + n_ext_bases # Check number of bases computed correctly assert_equal(_get_n_moments([int_order, ext_order]).sum(), nbases) # Test SSS computation at the standard head origin assert_equal(len(raw.info['projs']), 12) # 11 MEG projs + 1 AVG EEG raw_sss = maxwell_filter(raw, origin=mf_head_origin, regularize=None, bad_condition='ignore') assert_equal(len(raw_sss.info['projs']), 1) # avg EEG assert_equal(raw_sss.info['projs'][0]['desc'], 'Average EEG reference') assert_meg_snr(raw_sss, Raw(sss_std_fname), 200., 1000.) py_cal = raw_sss.info['proc_history'][0]['max_info']['sss_cal'] assert_equal(len(py_cal), 0) py_ctc = raw_sss.info['proc_history'][0]['max_info']['sss_ctc'] assert_equal(len(py_ctc), 0) py_st = raw_sss.info['proc_history'][0]['max_info']['max_st'] assert_equal(len(py_st), 0) assert_raises(RuntimeError, maxwell_filter, raw_sss) # Test SSS computation at non-standard head origin raw_sss = maxwell_filter(raw, origin=[0., 0.02, 0.02], regularize=None, bad_condition='ignore') assert_meg_snr(raw_sss, Raw(sss_nonstd_fname), 250., 700.) # Test SSS computation at device origin sss_erm_std = Raw(sss_erm_std_fname) raw_sss = maxwell_filter(raw_erm, coord_frame='meg', origin=mf_meg_origin, regularize=None, bad_condition='ignore') assert_meg_snr(raw_sss, sss_erm_std, 100., 900.) for key in ('job', 'frame'): vals = [ x.info['proc_history'][0]['max_info']['sss_info'][key] for x in [raw_sss, sss_erm_std] ] assert_equal(vals[0], vals[1]) # Check against SSS functions from proc_history sss_info = raw_sss.info['proc_history'][0]['max_info'] assert_equal(_get_n_moments(int_order), proc_history._get_sss_rank(sss_info)) # Degenerate cases raw_bad = raw.copy() raw_bad.comp = True assert_raises(RuntimeError, maxwell_filter, raw_bad) del raw_bad assert_raises(ValueError, maxwell_filter, raw, coord_frame='foo') assert_raises(ValueError, maxwell_filter, raw, origin='foo') assert_raises(ValueError, maxwell_filter, raw, origin=[0] * 4)
def test_basic(): """Test Maxwell filter basic version.""" # Load testing data (raw, SSS std origin, SSS non-standard origin) raw = read_crop(raw_fname, (0., 1.)) raw_err = read_crop(raw_fname).apply_proj() raw_erm = read_crop(erm_fname) pytest.raises(RuntimeError, maxwell_filter, raw_err) pytest.raises(TypeError, maxwell_filter, 1.) # not a raw pytest.raises(ValueError, maxwell_filter, raw, int_order=20) # too many n_int_bases = int_order ** 2 + 2 * int_order n_ext_bases = ext_order ** 2 + 2 * ext_order nbases = n_int_bases + n_ext_bases # Check number of bases computed correctly assert _get_n_moments([int_order, ext_order]).sum() == nbases # Test SSS computation at the standard head origin assert len(raw.info['projs']) == 12 # 11 MEG projs + 1 AVG EEG with use_coil_def(elekta_def_fname): raw_sss = maxwell_filter(raw, origin=mf_head_origin, regularize=None, bad_condition='ignore') assert len(raw_sss.info['projs']) == 1 # avg EEG assert raw_sss.info['projs'][0]['desc'] == 'Average EEG reference' assert_meg_snr(raw_sss, read_crop(sss_std_fname), 200., 1000.) py_cal = raw_sss.info['proc_history'][0]['max_info']['sss_cal'] assert len(py_cal) == 0 py_ctc = raw_sss.info['proc_history'][0]['max_info']['sss_ctc'] assert len(py_ctc) == 0 py_st = raw_sss.info['proc_history'][0]['max_info']['max_st'] assert len(py_st) == 0 pytest.raises(RuntimeError, maxwell_filter, raw_sss) # Test SSS computation at non-standard head origin with use_coil_def(elekta_def_fname): raw_sss = maxwell_filter(raw, origin=[0., 0.02, 0.02], regularize=None, bad_condition='ignore') assert_meg_snr(raw_sss, read_crop(sss_nonstd_fname), 250., 700.) # Test SSS computation at device origin sss_erm_std = read_crop(sss_erm_std_fname) raw_sss = maxwell_filter(raw_erm, coord_frame='meg', origin=mf_meg_origin, regularize=None, bad_condition='ignore') assert_meg_snr(raw_sss, sss_erm_std, 70., 260.) for key in ('job', 'frame'): vals = [x.info['proc_history'][0]['max_info']['sss_info'][key] for x in [raw_sss, sss_erm_std]] assert vals[0] == vals[1] # Two equivalent things: at device origin in device coords (0., 0., 0.) # and at device origin at head coords info['dev_head_t'][:3, 3] raw_sss_meg = maxwell_filter( raw, coord_frame='meg', origin=(0., 0., 0.)) raw_sss_head = maxwell_filter( raw, origin=raw.info['dev_head_t']['trans'][:3, 3]) assert_meg_snr(raw_sss_meg, raw_sss_head, 100., 900.) # Check against SSS functions from proc_history assert _get_n_moments(int_order) == _get_rank_sss(raw_sss) # Degenerate cases pytest.raises(ValueError, maxwell_filter, raw, coord_frame='foo') pytest.raises(ValueError, maxwell_filter, raw, origin='foo') pytest.raises(ValueError, maxwell_filter, raw, origin=[0] * 4) pytest.raises(ValueError, maxwell_filter, raw, mag_scale='foo') raw_missing = raw.copy().load_data() raw_missing.info['bads'] = ['MEG0111'] raw_missing.pick_types(meg=True) # will be missing the bad maxwell_filter(raw_missing) with pytest.warns(RuntimeWarning, match='not in data'): maxwell_filter(raw_missing, calibration=fine_cal_fname)