initial commit
This commit is contained in:
183
mne/commands/mne_setup_source_space.py
Normal file
183
mne/commands/mne_setup_source_space.py
Normal file
@@ -0,0 +1,183 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
"""Set up bilateral hemisphere surface-based source space with subsampling.
|
||||
|
||||
Examples
|
||||
--------
|
||||
.. code-block:: console
|
||||
|
||||
$ mne setup_source_space --subject sample
|
||||
|
||||
|
||||
.. note : Only one of --ico, --oct or --spacing options can be set at the same
|
||||
time. Default to oct6.
|
||||
|
||||
"""
|
||||
|
||||
import sys
|
||||
|
||||
import mne
|
||||
from mne.utils import _check_option
|
||||
|
||||
|
||||
def run():
|
||||
"""Run command."""
|
||||
from mne.commands.utils import _add_verbose_flag, get_optparser
|
||||
|
||||
parser = get_optparser(__file__)
|
||||
|
||||
parser.add_option(
|
||||
"-s", "--subject", dest="subject", help="Subject name (required)", default=None
|
||||
)
|
||||
parser.add_option(
|
||||
"--src",
|
||||
dest="fname",
|
||||
help="Output file name. Use a name <dir>/<name>-src.fif",
|
||||
metavar="FILE",
|
||||
default=None,
|
||||
)
|
||||
parser.add_option(
|
||||
"--morph",
|
||||
dest="subject_to",
|
||||
help="morph the source space to this subject",
|
||||
default=None,
|
||||
)
|
||||
parser.add_option(
|
||||
"--surf",
|
||||
dest="surface",
|
||||
help="The surface to use. (default to white)",
|
||||
default="white",
|
||||
type="string",
|
||||
)
|
||||
parser.add_option(
|
||||
"--spacing",
|
||||
dest="spacing",
|
||||
help="Specifies the approximate grid spacing of the "
|
||||
"source space in mm. (default to 7mm)",
|
||||
default=None,
|
||||
type="int",
|
||||
)
|
||||
parser.add_option(
|
||||
"--ico",
|
||||
dest="ico",
|
||||
help="use the recursively subdivided icosahedron "
|
||||
"to create the source space.",
|
||||
default=None,
|
||||
type="int",
|
||||
)
|
||||
parser.add_option(
|
||||
"--oct",
|
||||
dest="oct",
|
||||
help="use the recursively subdivided octahedron to create the source space.",
|
||||
default=None,
|
||||
type="int",
|
||||
)
|
||||
parser.add_option(
|
||||
"-d",
|
||||
"--subjects-dir",
|
||||
dest="subjects_dir",
|
||||
help="Subjects directory",
|
||||
default=None,
|
||||
)
|
||||
parser.add_option(
|
||||
"-n",
|
||||
"--n-jobs",
|
||||
dest="n_jobs",
|
||||
help="The number of jobs to run in parallel "
|
||||
"(default 1). Requires the joblib package. "
|
||||
"Will use at most 2 jobs"
|
||||
" (one for each hemisphere).",
|
||||
default=1,
|
||||
type="int",
|
||||
)
|
||||
parser.add_option(
|
||||
"--add-dist",
|
||||
dest="add_dist",
|
||||
help='Add distances. Can be "True", "False", or "patch" '
|
||||
"to only compute cortical patch statistics (like the --cps option in MNE-C)",
|
||||
default="True",
|
||||
)
|
||||
parser.add_option(
|
||||
"-o",
|
||||
"--overwrite",
|
||||
dest="overwrite",
|
||||
help="to write over existing files",
|
||||
default=None,
|
||||
action="store_true",
|
||||
)
|
||||
_add_verbose_flag(parser)
|
||||
|
||||
options, args = parser.parse_args()
|
||||
|
||||
if options.subject is None:
|
||||
parser.print_help()
|
||||
sys.exit(1)
|
||||
|
||||
subject = options.subject
|
||||
subject_to = options.subject_to
|
||||
fname = options.fname
|
||||
subjects_dir = options.subjects_dir
|
||||
spacing = options.spacing
|
||||
ico = options.ico
|
||||
oct_ = options.oct
|
||||
surface = options.surface
|
||||
n_jobs = options.n_jobs
|
||||
add_dist = options.add_dist
|
||||
_check_option("add_dist", add_dist, ("True", "False", "patch"))
|
||||
add_dist = {"True": True, "False": False, "patch": "patch"}[add_dist]
|
||||
verbose = True if options.verbose is not None else False
|
||||
overwrite = True if options.overwrite is not None else False
|
||||
|
||||
# Parse source spacing option
|
||||
spacing_options = [ico, oct_, spacing]
|
||||
n_options = len([x for x in spacing_options if x is not None])
|
||||
use_spacing = "oct6"
|
||||
if n_options > 1:
|
||||
raise ValueError("Only one spacing option can be set at the same time")
|
||||
elif n_options == 0:
|
||||
# Default to oct6
|
||||
pass
|
||||
elif n_options == 1:
|
||||
if ico is not None:
|
||||
use_spacing = "ico" + str(ico)
|
||||
elif oct_ is not None:
|
||||
use_spacing = "oct" + str(oct_)
|
||||
elif spacing is not None:
|
||||
use_spacing = spacing
|
||||
del ico, oct_, spacing
|
||||
# Generate filename
|
||||
if fname is None:
|
||||
if subject_to is None:
|
||||
fname = subject + "-" + str(use_spacing) + "-src.fif"
|
||||
else:
|
||||
fname = subject_to + "-" + subject + "-" + str(use_spacing) + "-src.fif"
|
||||
else:
|
||||
if not (fname.endswith("_src.fif") or fname.endswith("-src.fif")):
|
||||
fname = fname + "-src.fif"
|
||||
# Create source space
|
||||
src = mne.setup_source_space(
|
||||
subject=subject,
|
||||
spacing=use_spacing,
|
||||
surface=surface,
|
||||
subjects_dir=subjects_dir,
|
||||
n_jobs=n_jobs,
|
||||
add_dist=add_dist,
|
||||
verbose=verbose,
|
||||
)
|
||||
# Morph source space if --morph is set
|
||||
if subject_to is not None:
|
||||
src = mne.morph_source_spaces(
|
||||
src,
|
||||
subject_to=subject_to,
|
||||
subjects_dir=subjects_dir,
|
||||
surf=surface,
|
||||
verbose=verbose,
|
||||
)
|
||||
|
||||
# Save source space to file
|
||||
src.save(fname=fname, overwrite=overwrite)
|
||||
|
||||
|
||||
mne.utils.run_command_if_main()
|
||||
Reference in New Issue
Block a user