BEM or sphere model. See :func:`~mne.make_bem_model` and :func:`~mne.make_bem_solution` to create a :class:`mne.bem.ConductorModel`.
| 83 | |
| 84 | |
| 85 | class ConductorModel(dict): |
| 86 | """BEM or sphere model. |
| 87 | |
| 88 | See :func:`~mne.make_bem_model` and :func:`~mne.make_bem_solution` to create a |
| 89 | :class:`mne.bem.ConductorModel`. |
| 90 | """ |
| 91 | |
| 92 | def __repr__(self): # noqa: D105 |
| 93 | if self["is_sphere"]: |
| 94 | center = ", ".join(f"{x * 1000.0:.1f}" for x in self["r0"]) |
| 95 | rad = self.radius |
| 96 | if rad is None: # no radius / MEG only |
| 97 | extra = f"Sphere (no layers): r0=[{center}] mm" |
| 98 | else: |
| 99 | extra = ( |
| 100 | f"Sphere ({len(self['layers']) - 1} layer{_pl(self['layers'])}): " |
| 101 | f"r0=[{center}] R={rad * 1000.0:1.0f} mm" |
| 102 | ) |
| 103 | else: |
| 104 | extra = f"BEM ({len(self['surfs'])} layer{_pl(self['surfs'])})" |
| 105 | extra += f" solver={self['solver']}" |
| 106 | return f"<ConductorModel | {extra}>" |
| 107 | |
| 108 | def copy(self): |
| 109 | """Return copy of ConductorModel instance.""" |
| 110 | return deepcopy(self) |
| 111 | |
| 112 | @property |
| 113 | def radius(self): |
| 114 | """Sphere radius if an EEG sphere model.""" |
| 115 | if not self["is_sphere"]: |
| 116 | raise RuntimeError("radius undefined for BEM") |
| 117 | return None if len(self["layers"]) == 0 else self["layers"][-1]["rad"] |
| 118 | |
| 119 | |
| 120 | def _calc_beta(rk, rk_norm, rk1, rk1_norm): |
no outgoing calls
no test coverage detected