def test_read_dig_polhemus_isotrak_eeg(isotrak_eeg): """Test reading Polhemus IsoTrak EEG positions.""" N_CHANNELS = 5 _SEED = 42 EXPECTED_FID_IN_POLHEMUS = { 'nasion': np.array([1.1056e-01, -5.4210e-19, 0]), 'lpa': np.array([-2.1075e-04, 8.0793e-02, -7.5894e-19]), 'rpa': np.array([2.1075e-04, -8.0793e-02, -2.8731e-18]), } ch_names = ['eeg {:01d}'.format(ii) for ii in range(N_CHANNELS)] EXPECTED_CH_POS = dict(zip( ch_names, np.random.RandomState(_SEED).randn(N_CHANNELS, 3))) montage = read_dig_polhemus_isotrak(fname=isotrak_eeg, ch_names=ch_names) assert repr(montage) == ( '<DigMontage | ' '0 extras (headshape), 0 HPIs, 3 fiducials, 5 channels>' ) fiducials, fid_coordframe = _get_fid_coords(montage.dig) assert fid_coordframe == FIFF.FIFFV_COORD_UNKNOWN for kk, val in fiducials.items(): assert_array_equal(val, EXPECTED_FID_IN_POLHEMUS[kk]) for kk, dig_point in zip(montage.ch_names, _get_dig_eeg(montage.dig)): assert_array_equal(dig_point['r'], EXPECTED_CH_POS[kk]) assert dig_point['coord_frame'] == FIFF.FIFFV_COORD_UNKNOWN
def test_standard_montages_on_sphere(kind, tol, head_size): """Test some standard montage are on sphere.""" kwargs = dict() if head_size != HEAD_SIZE_DEFAULT: kwargs['head_size'] = head_size montage = make_standard_montage(kind, **kwargs) eeg_loc = np.array([ch['r'] for ch in _get_dig_eeg(montage.dig)]) assert_allclose( actual=np.linalg.norm(eeg_loc, axis=1), desired=np.full((eeg_loc.shape[0], ), head_size), atol=tol, )
def _get_dig_montage_pos(montage): return np.array([d['r'] for d in _get_dig_eeg(montage.dig)])