Load data for processing and (maybe) add cHPI pos channels.
(raw, add_channels, copy, info)
| 1150 | |
| 1151 | |
| 1152 | def _copy_preload_add_channels(raw, add_channels, copy, info): |
| 1153 | """Load data for processing and (maybe) add cHPI pos channels.""" |
| 1154 | if copy: |
| 1155 | raw = raw.copy() |
| 1156 | with raw.info._unlock(): |
| 1157 | raw.info["chs"] = info["chs"] # updated coil types |
| 1158 | if add_channels: |
| 1159 | kinds = [ |
| 1160 | FIFF.FIFFV_QUAT_1, |
| 1161 | FIFF.FIFFV_QUAT_2, |
| 1162 | FIFF.FIFFV_QUAT_3, |
| 1163 | FIFF.FIFFV_QUAT_4, |
| 1164 | FIFF.FIFFV_QUAT_5, |
| 1165 | FIFF.FIFFV_QUAT_6, |
| 1166 | FIFF.FIFFV_HPI_G, |
| 1167 | FIFF.FIFFV_HPI_ERR, |
| 1168 | FIFF.FIFFV_HPI_MOV, |
| 1169 | ] |
| 1170 | out_shape = (len(raw.ch_names) + len(kinds), len(raw.times)) |
| 1171 | out_data = np.zeros(out_shape, np.float64) |
| 1172 | msg = " Appending head position result channels and " |
| 1173 | if raw.preload: |
| 1174 | logger.info(msg + "copying original raw data") |
| 1175 | out_data[: len(raw.ch_names)] = raw._data |
| 1176 | raw._data = out_data |
| 1177 | else: |
| 1178 | logger.info(msg + "loading raw data from disk") |
| 1179 | with use_log_level(_verbose_safe_false()): |
| 1180 | raw._preload_data(out_data[: len(raw.ch_names)]) |
| 1181 | raw._data = out_data |
| 1182 | assert raw.preload is True |
| 1183 | off = len(raw.ch_names) |
| 1184 | chpi_chs = [ |
| 1185 | dict( |
| 1186 | ch_name=f"CHPI{ii:03d}", |
| 1187 | logno=ii + 1, |
| 1188 | scanno=off + ii + 1, |
| 1189 | unit_mul=-1, |
| 1190 | range=1.0, |
| 1191 | unit=-1, |
| 1192 | kind=kinds[ii], |
| 1193 | coord_frame=FIFF.FIFFV_COORD_UNKNOWN, |
| 1194 | cal=1e-4, |
| 1195 | coil_type=FWD.COIL_UNKNOWN, |
| 1196 | loc=np.zeros(12), |
| 1197 | ) |
| 1198 | for ii in range(len(kinds)) |
| 1199 | ] |
| 1200 | raw.info["chs"].extend(chpi_chs) |
| 1201 | raw.info._update_redundant() |
| 1202 | raw.info._check_consistency() |
| 1203 | assert raw._data.shape == (raw.info["nchan"], len(raw.times)) |
| 1204 | # Return the pos picks |
| 1205 | pos_picks = np.arange(len(raw.ch_names) - len(chpi_chs), len(raw.ch_names)) |
| 1206 | return raw, pos_picks |
| 1207 | else: |
| 1208 | if copy: |
| 1209 | if not raw.preload: |
no test coverage detected