Scale a bem file. Parameters ---------- subject_to : str Name of the scaled MRI subject (the destination mri subject). bem_name : str Name of the bem file. For example, to scale ``fsaverage-inner_skull-bem.fif``, the bem_name would be "inner_skull-bem
(
subject_to,
bem_name,
subject_from=None,
scale=None,
subjects_dir=None,
*,
on_defects="raise",
verbose=None,
)
| 892 | |
| 893 | @verbose |
| 894 | def scale_bem( |
| 895 | subject_to, |
| 896 | bem_name, |
| 897 | subject_from=None, |
| 898 | scale=None, |
| 899 | subjects_dir=None, |
| 900 | *, |
| 901 | on_defects="raise", |
| 902 | verbose=None, |
| 903 | ): |
| 904 | """Scale a bem file. |
| 905 | |
| 906 | Parameters |
| 907 | ---------- |
| 908 | subject_to : str |
| 909 | Name of the scaled MRI subject (the destination mri subject). |
| 910 | bem_name : str |
| 911 | Name of the bem file. For example, to scale |
| 912 | ``fsaverage-inner_skull-bem.fif``, the bem_name would be |
| 913 | "inner_skull-bem". |
| 914 | subject_from : None | str |
| 915 | The subject from which to read the source space. If None, subject_from |
| 916 | is read from subject_to's config file. |
| 917 | scale : None | float | array, shape = (3,) |
| 918 | Scaling factor. Has to be specified if subjects_from is specified, |
| 919 | otherwise it is read from subject_to's config file. |
| 920 | subjects_dir : None | str |
| 921 | Override the SUBJECTS_DIR environment variable. |
| 922 | %(on_defects)s |
| 923 | |
| 924 | .. versionadded:: 1.0 |
| 925 | %(verbose)s |
| 926 | """ |
| 927 | subjects_dir, subject_from, scale, uniform = _scale_params( |
| 928 | subject_to, subject_from, scale, subjects_dir |
| 929 | ) |
| 930 | |
| 931 | src = bem_fname.format( |
| 932 | subjects_dir=subjects_dir, subject=subject_from, name=bem_name |
| 933 | ) |
| 934 | dst = bem_fname.format(subjects_dir=subjects_dir, subject=subject_to, name=bem_name) |
| 935 | |
| 936 | if os.path.exists(dst): |
| 937 | raise OSError(f"File already exists: {dst}") |
| 938 | |
| 939 | surfs = read_bem_surfaces(src, on_defects=on_defects) |
| 940 | for surf in surfs: |
| 941 | surf["rr"] *= scale |
| 942 | if not uniform: |
| 943 | assert len(surf["nn"]) > 0 |
| 944 | surf["nn"] /= scale |
| 945 | _normalize_vectors(surf["nn"]) |
| 946 | write_bem_surfaces(dst, surfs) |
| 947 | |
| 948 | |
| 949 | @verbose |
no test coverage detected