Test forwards.
(
fwd,
fwd_py,
n_sensors,
n_src,
meg_rtol=1e-4,
meg_atol=1e-9,
meg_corr_tol=0.99,
meg_rdm_tol=0.01,
eeg_rtol=1e-3,
eeg_atol=1e-3,
eeg_corr_tol=0.99,
eeg_rdm_tol=0.01,
)
| 103 | |
| 104 | |
| 105 | def _compare_forwards( |
| 106 | fwd, |
| 107 | fwd_py, |
| 108 | n_sensors, |
| 109 | n_src, |
| 110 | meg_rtol=1e-4, |
| 111 | meg_atol=1e-9, |
| 112 | meg_corr_tol=0.99, |
| 113 | meg_rdm_tol=0.01, |
| 114 | eeg_rtol=1e-3, |
| 115 | eeg_atol=1e-3, |
| 116 | eeg_corr_tol=0.99, |
| 117 | eeg_rdm_tol=0.01, |
| 118 | ): |
| 119 | """Test forwards.""" |
| 120 | # check source spaces |
| 121 | assert len(fwd["src"]) == len(fwd_py["src"]) |
| 122 | _compare_source_spaces(fwd["src"], fwd_py["src"], mode="approx") |
| 123 | for surf_ori, force_fixed in product([False, True], [False, True]): |
| 124 | # use copy here to leave our originals unmodified |
| 125 | fwd = convert_forward_solution( |
| 126 | fwd, surf_ori, force_fixed, copy=True, use_cps=True |
| 127 | ) |
| 128 | fwd_py = convert_forward_solution( |
| 129 | fwd_py, surf_ori, force_fixed, copy=True, use_cps=True |
| 130 | ) |
| 131 | check_src = n_src // 3 if force_fixed else n_src |
| 132 | |
| 133 | for key in ( |
| 134 | "nchan", |
| 135 | "source_rr", |
| 136 | "source_ori", |
| 137 | "surf_ori", |
| 138 | "coord_frame", |
| 139 | "nsource", |
| 140 | ): |
| 141 | assert_allclose(fwd_py[key], fwd[key], rtol=1e-4, atol=1e-7, err_msg=key) |
| 142 | # In surf_ori=True only Z matters for source_nn |
| 143 | if surf_ori and not force_fixed: |
| 144 | ori_sl = slice(2, None, 3) |
| 145 | else: |
| 146 | ori_sl = slice(None) |
| 147 | assert_allclose( |
| 148 | fwd_py["source_nn"][ori_sl], fwd["source_nn"][ori_sl], rtol=1e-4, atol=1e-6 |
| 149 | ) |
| 150 | assert_allclose( |
| 151 | fwd_py["mri_head_t"]["trans"], |
| 152 | fwd["mri_head_t"]["trans"], |
| 153 | rtol=1e-5, |
| 154 | atol=1e-8, |
| 155 | ) |
| 156 | |
| 157 | assert fwd_py["sol"]["data"].shape == (n_sensors, check_src) |
| 158 | assert len(fwd["sol"]["row_names"]) == n_sensors |
| 159 | assert len(fwd_py["sol"]["row_names"]) == n_sensors |
| 160 | |
| 161 | # check MEG |
| 162 | fwd_meg = fwd["sol"]["data"][:306, ori_sl] |
no test coverage detected