MCPcopy
hub / github.com/mne-tools/mne-python / _iter_forward_solutions

Function _iter_forward_solutions

mne/simulation/raw.py:789–886  ·  view source on GitHub ↗

Calculate a forward solution for a subject.

(
    info, trans, src, bem, dev_head_ts, mindist, n_jobs, forward, picks
)

Source from the content-addressed store, hash-verified

787
788
789def _iter_forward_solutions(
790 info, trans, src, bem, dev_head_ts, mindist, n_jobs, forward, picks
791):
792 """Calculate a forward solution for a subject."""
793 logger.info("Setting up forward solutions")
794 info = pick_info(info, picks)
795 with info._unlock():
796 info.update(projs=[], bads=[]) # Ensure no 'projs' or 'bads'
797 mri_head_t, trans = _get_trans(trans)
798 sensors, rr, info, update_kwargs, bem = _prepare_for_forward(
799 src,
800 mri_head_t,
801 info,
802 bem,
803 mindist,
804 n_jobs,
805 allow_bem_none=True,
806 verbose=_verbose_safe_false(),
807 )
808 del (src, mindist)
809
810 eegnames = sensors.get("eeg", dict()).get("ch_names", [])
811 if not len(eegnames):
812 eegfwd = None
813 elif forward is not None:
814 eegfwd = pick_channels_forward(forward, eegnames, verbose=False)
815 else:
816 eegels = sensors.get("eeg", dict()).get("defs", [])
817 this_sensors = dict(eeg=dict(ch_names=eegnames, defs=eegels))
818 eegfwd = _compute_forwards(
819 rr, bem=bem, sensors=this_sensors, n_jobs=n_jobs, verbose=False
820 )["eeg"]
821 eegfwd = _to_forward_dict(eegfwd, eegnames)
822 del eegels
823 del eegnames
824
825 # short circuit here if there are no MEG channels (don't need to iterate)
826 if "meg" not in sensors:
827 eegfwd.update(**update_kwargs)
828 for _ in dev_head_ts:
829 yield eegfwd
830 yield eegfwd
831 return
832
833 coord_frame = FIFF.FIFFV_COORD_HEAD
834 if bem is not None and not bem["is_sphere"]:
835 idx = np.where(
836 np.array([s["id"] for s in bem["surfs"]]) == FIFF.FIFFV_BEM_SURF_ID_BRAIN
837 )[0]
838 assert len(idx) == 1
839 # make a copy so it isn't mangled in use
840 bem_surf = transform_surface_to(
841 bem["surfs"][idx[0]], coord_frame, mri_head_t, copy=True
842 )
843 megcoils = sensors["meg"]["defs"]
844 if "eeg" in sensors:
845 del sensors["eeg"]
846 megnames = sensors["meg"]["ch_names"]

Callers 1

__init__Method · 0.85

Calls 15

pick_infoFunction · 0.85
_get_transFunction · 0.85
_prepare_for_forwardFunction · 0.85
_verbose_safe_falseFunction · 0.85
pick_channels_forwardFunction · 0.85
_compute_forwardsFunction · 0.85
_to_forward_dictFunction · 0.85
transform_surface_toFunction · 0.85
_CheckInsideClass · 0.85
_merge_fwdsFunction · 0.85
infoMethod · 0.80

Tested by

no test coverage detected