201 lines
6.0 KiB
Python
201 lines
6.0 KiB
Python
# Authors: The MNE-Python contributors.
|
|
# License: BSD-3-Clause
|
|
# Copyright the MNE-Python contributors.
|
|
|
|
r"""Create mne report for a folder.
|
|
|
|
Examples
|
|
--------
|
|
Before getting started with ``mne report``, make sure the files you want to
|
|
render follow the filename conventions defined by MNE:
|
|
|
|
.. highlight:: console
|
|
|
|
.. cssclass:: table-bordered
|
|
.. rst-class:: midvalign
|
|
|
|
============ ==============================================================
|
|
Data object Filename convention (ends with)
|
|
============ ==============================================================
|
|
raw -raw.fif(.gz), -raw_sss.fif(.gz), -raw_tsss.fif(.gz),
|
|
_meg.fif(.gz), _eeg.fif(.gz), _ieeg.fif(.gz)
|
|
events -eve.fif(.gz)
|
|
epochs -epo.fif(.gz)
|
|
evoked -ave.fif(.gz)
|
|
covariance -cov.fif(.gz)
|
|
trans -trans.fif(.gz)
|
|
forward -fwd.fif(.gz)
|
|
inverse -inv.fif(.gz)
|
|
============ ==============================================================
|
|
|
|
To generate a barebones report from all the \*.fif files in the sample
|
|
dataset, invoke the following command in a system (e.g., Bash) shell::
|
|
|
|
$ mne report --path MNE-sample-data/ --verbose
|
|
|
|
On successful creation of the report, it will open the HTML in a new tab in
|
|
the browser. To disable this, use the ``--no-browser`` option.
|
|
|
|
TO generate a report for a single subject, give the ``SUBJECT`` name and
|
|
the ``SUBJECTS_DIR`` and this will generate the MRI slices (with BEM
|
|
contours overlaid on top if available)::
|
|
|
|
$ mne report --path MNE-sample-data/ --subject sample --subjects-dir \
|
|
MNE-sample-data/subjects --verbose
|
|
|
|
To properly render ``trans`` and ``covariance`` files, add the measurement
|
|
information::
|
|
|
|
$ mne report --path MNE-sample-data/ \
|
|
--info MNE-sample-data/MEG/sample/sample_audvis-ave.fif \
|
|
--subject sample --subjects-dir MNE-sample-data/subjects --verbose
|
|
|
|
To render whitened ``evoked`` files with baseline correction, add the noise
|
|
covariance file::
|
|
|
|
$ mne report --path MNE-sample-data/ \
|
|
--info MNE-sample-data/MEG/sample/sample_audvis-ave.fif \
|
|
--cov MNE-sample-data/MEG/sample/sample_audvis-cov.fif --bmax 0 \
|
|
--subject sample --subjects-dir MNE-sample-data/subjects --verbose
|
|
|
|
To generate the report in parallel::
|
|
|
|
$ mne report --path MNE-sample-data/ \
|
|
--info MNE-sample-data/MEG/sample/sample_audvis-ave.fif \
|
|
--subject sample --subjects-dir MNE-sample-data/subjects \
|
|
--verbose --jobs 6
|
|
|
|
For help on all the available options, do::
|
|
|
|
$ mne report --help
|
|
"""
|
|
|
|
import sys
|
|
import time
|
|
|
|
import mne
|
|
from mne.report import Report
|
|
from mne.utils import logger, verbose
|
|
|
|
|
|
@verbose
|
|
def log_elapsed(t, verbose=None):
|
|
"""Log elapsed time."""
|
|
logger.info(f"Report complete in {round(t, 1)} seconds")
|
|
|
|
|
|
def run():
|
|
"""Run command."""
|
|
from mne.commands.utils import _add_verbose_flag, get_optparser
|
|
|
|
parser = get_optparser(__file__)
|
|
|
|
parser.add_option(
|
|
"-p",
|
|
"--path",
|
|
dest="path",
|
|
help="Path to folder who MNE-Report must be created",
|
|
)
|
|
parser.add_option(
|
|
"-i",
|
|
"--info",
|
|
dest="info_fname",
|
|
help="File from which info dictionary is to be read",
|
|
metavar="FILE",
|
|
)
|
|
parser.add_option(
|
|
"-c",
|
|
"--cov",
|
|
dest="cov_fname",
|
|
help="File from which noise covariance is to be read",
|
|
metavar="FILE",
|
|
)
|
|
parser.add_option(
|
|
"--bmin",
|
|
dest="bmin",
|
|
help="Time at which baseline correction starts for evokeds",
|
|
default=None,
|
|
)
|
|
parser.add_option(
|
|
"--bmax",
|
|
dest="bmax",
|
|
help="Time at which baseline correction stops for evokeds",
|
|
default=None,
|
|
)
|
|
parser.add_option(
|
|
"-d", "--subjects-dir", dest="subjects_dir", help="The subjects directory"
|
|
)
|
|
parser.add_option("-s", "--subject", dest="subject", help="The subject name")
|
|
parser.add_option(
|
|
"--no-browser",
|
|
dest="no_browser",
|
|
action="store_false",
|
|
help="Do not open MNE-Report in browser",
|
|
)
|
|
parser.add_option(
|
|
"--overwrite",
|
|
dest="overwrite",
|
|
action="store_false",
|
|
help="Overwrite html report if it already exists",
|
|
)
|
|
parser.add_option(
|
|
"-j", "--jobs", dest="n_jobs", help="Number of jobs to run in parallel"
|
|
)
|
|
parser.add_option(
|
|
"-m",
|
|
"--mri-decim",
|
|
type="int",
|
|
dest="mri_decim",
|
|
default=2,
|
|
help="Integer factor used to decimate BEM plots",
|
|
)
|
|
parser.add_option(
|
|
"--image-format",
|
|
type="str",
|
|
dest="image_format",
|
|
default="png",
|
|
help="Image format to use (can be 'png' or 'svg')",
|
|
)
|
|
_add_verbose_flag(parser)
|
|
|
|
options, args = parser.parse_args()
|
|
path = options.path
|
|
if path is None:
|
|
parser.print_help()
|
|
sys.exit(1)
|
|
info_fname = options.info_fname
|
|
cov_fname = options.cov_fname
|
|
subjects_dir = options.subjects_dir
|
|
subject = options.subject
|
|
image_format = options.image_format
|
|
mri_decim = int(options.mri_decim)
|
|
verbose = True if options.verbose is not None else False
|
|
open_browser = False if options.no_browser is not None else True
|
|
overwrite = True if options.overwrite is not None else False
|
|
n_jobs = int(options.n_jobs) if options.n_jobs is not None else 1
|
|
|
|
bmin = float(options.bmin) if options.bmin is not None else None
|
|
bmax = float(options.bmax) if options.bmax is not None else None
|
|
# XXX: this means (None, None) cannot be specified through command line
|
|
if bmin is None and bmax is None:
|
|
baseline = None
|
|
else:
|
|
baseline = (bmin, bmax)
|
|
|
|
t0 = time.time()
|
|
report = Report(
|
|
info_fname,
|
|
subjects_dir=subjects_dir,
|
|
subject=subject,
|
|
baseline=baseline,
|
|
cov_fname=cov_fname,
|
|
verbose=verbose,
|
|
image_format=image_format,
|
|
)
|
|
report.parse_folder(path, verbose=verbose, n_jobs=n_jobs, mri_decim=mri_decim)
|
|
log_elapsed(time.time() - t0, verbose=verbose)
|
|
report.save(open_browser=open_browser, overwrite=overwrite)
|
|
|
|
|
|
mne.utils.run_command_if_main()
|