initial commit
This commit is contained in:
12
mne/datasets/__init__.py
Normal file
12
mne/datasets/__init__.py
Normal file
@@ -0,0 +1,12 @@
|
||||
"""Functions for fetching remote datasets.
|
||||
|
||||
See :ref:`datasets` for more information.
|
||||
"""
|
||||
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
import lazy_loader as lazy
|
||||
|
||||
(__getattr__, __dir__, __all__) = lazy.attach_stub(__name__, __file__)
|
||||
76
mne/datasets/__init__.pyi
Normal file
76
mne/datasets/__init__.pyi
Normal file
@@ -0,0 +1,76 @@
|
||||
__all__ = [
|
||||
"_download_all_example_data",
|
||||
"_fake",
|
||||
"brainstorm",
|
||||
"eegbci",
|
||||
"epilepsy_ecog",
|
||||
"erp_core",
|
||||
"eyelink",
|
||||
"fetch_aparc_sub_parcellation",
|
||||
"fetch_dataset",
|
||||
"fetch_fsaverage",
|
||||
"fetch_hcp_mmp_parcellation",
|
||||
"fetch_infant_template",
|
||||
"fetch_phantom",
|
||||
"fieldtrip_cmc",
|
||||
"fnirs_motor",
|
||||
"has_dataset",
|
||||
"hf_sef",
|
||||
"kiloword",
|
||||
"limo",
|
||||
"misc",
|
||||
"mtrf",
|
||||
"multimodal",
|
||||
"opm",
|
||||
"phantom_4dbti",
|
||||
"phantom_kernel",
|
||||
"phantom_kit",
|
||||
"refmeg_noise",
|
||||
"sample",
|
||||
"sleep_physionet",
|
||||
"somato",
|
||||
"spm_face",
|
||||
"ssvep",
|
||||
"testing",
|
||||
"ucl_opm_auditory",
|
||||
"visual_92_categories",
|
||||
]
|
||||
from . import (
|
||||
_fake,
|
||||
brainstorm,
|
||||
eegbci,
|
||||
epilepsy_ecog,
|
||||
erp_core,
|
||||
eyelink,
|
||||
fieldtrip_cmc,
|
||||
fnirs_motor,
|
||||
hf_sef,
|
||||
kiloword,
|
||||
limo,
|
||||
misc,
|
||||
mtrf,
|
||||
multimodal,
|
||||
opm,
|
||||
phantom_4dbti,
|
||||
phantom_kernel,
|
||||
phantom_kit,
|
||||
refmeg_noise,
|
||||
sample,
|
||||
sleep_physionet,
|
||||
somato,
|
||||
spm_face,
|
||||
ssvep,
|
||||
testing,
|
||||
ucl_opm_auditory,
|
||||
visual_92_categories,
|
||||
)
|
||||
from ._fetch import fetch_dataset
|
||||
from ._fsaverage.base import fetch_fsaverage
|
||||
from ._infant import fetch_infant_template
|
||||
from ._phantom.base import fetch_phantom
|
||||
from .utils import (
|
||||
_download_all_example_data,
|
||||
fetch_aparc_sub_parcellation,
|
||||
fetch_hcp_mmp_parcellation,
|
||||
has_dataset,
|
||||
)
|
||||
7
mne/datasets/_fake/__init__.py
Normal file
7
mne/datasets/_fake/__init__.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
"""Fake dataset for testing."""
|
||||
|
||||
from ._fake import data_path, get_version
|
||||
30
mne/datasets/_fake/_fake.py
Normal file
30
mne/datasets/_fake/_fake.py
Normal file
@@ -0,0 +1,30 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from ...utils import verbose
|
||||
from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc
|
||||
|
||||
|
||||
@verbose
|
||||
def data_path(
|
||||
path=None, force_update=False, update_path=False, download=True, *, verbose=None
|
||||
): # noqa: D103
|
||||
return _download_mne_dataset(
|
||||
name="fake",
|
||||
processor="untar",
|
||||
path=path,
|
||||
force_update=force_update,
|
||||
update_path=update_path,
|
||||
download=download,
|
||||
)
|
||||
|
||||
|
||||
data_path.__doc__ = _data_path_doc.format(name="fake", conf="MNE_DATASETS_FAKE_PATH")
|
||||
|
||||
|
||||
def get_version(): # noqa: D103
|
||||
return _get_version("fake")
|
||||
|
||||
|
||||
get_version.__doc__ = _version_doc.format(name="fake")
|
||||
307
mne/datasets/_fetch.py
Normal file
307
mne/datasets/_fetch.py
Normal file
@@ -0,0 +1,307 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from __future__ import annotations # only needed for Python ≤ 3.9
|
||||
|
||||
import os
|
||||
import os.path as op
|
||||
import sys
|
||||
import time
|
||||
from pathlib import Path
|
||||
from shutil import rmtree
|
||||
|
||||
from .. import __version__ as mne_version
|
||||
from ..fixes import _compare_version
|
||||
from ..utils import _safe_input, logger, warn
|
||||
from .config import (
|
||||
MISC_VERSIONED,
|
||||
RELEASES,
|
||||
TESTING_VERSIONED,
|
||||
_bst_license_text,
|
||||
)
|
||||
from .utils import (
|
||||
_dataset_version,
|
||||
_do_path_update,
|
||||
_downloader_params,
|
||||
_get_path,
|
||||
_log_time_size,
|
||||
)
|
||||
|
||||
_FAKE_VERSION = None # used for monkeypatching while testing versioning
|
||||
|
||||
|
||||
def fetch_dataset(
|
||||
dataset_params,
|
||||
processor=None,
|
||||
path=None,
|
||||
force_update=False,
|
||||
update_path=True,
|
||||
download=True,
|
||||
check_version=False,
|
||||
return_version=False,
|
||||
accept=False,
|
||||
auth=None,
|
||||
token=None,
|
||||
) -> Path | tuple[Path, str]:
|
||||
"""Fetch an MNE-compatible dataset using pooch.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
dataset_params : list of dict | dict
|
||||
The dataset name(s) and corresponding parameters to download the
|
||||
dataset(s). The dataset parameters that contains the following keys:
|
||||
``archive_name``, ``url``, ``folder_name``, ``hash``,
|
||||
``config_key`` (optional). See Notes.
|
||||
processor : None | "unzip" | "untar" | instance of pooch.Unzip | instance of pooch.Untar
|
||||
What to do after downloading the file. ``"unzip"`` and ``"untar"`` will
|
||||
decompress the downloaded file in place; for custom extraction (e.g.,
|
||||
only extracting certain files from the archive) pass an instance of
|
||||
``pooch.Unzip`` or ``pooch.Untar``. If ``None`` (the
|
||||
default), the files are left as-is.
|
||||
path : None | str
|
||||
Directory in which to put the dataset. If ``None``, the dataset
|
||||
location is determined by first checking whether
|
||||
``dataset_params['config_key']`` is defined, and if so, whether that
|
||||
config key exists in the MNE-Python config file. If so, the configured
|
||||
path is used; if not, the location is set to the value of the
|
||||
``MNE_DATA`` config key (if it exists), or ``~/mne_data`` otherwise.
|
||||
force_update : bool
|
||||
Force update of the dataset even if a local copy exists.
|
||||
Default is False.
|
||||
update_path : bool | None
|
||||
If True (default), set the mne-python config to the given
|
||||
path. If None, the user is prompted.
|
||||
download : bool
|
||||
If False and the dataset has not been downloaded yet, it will not be
|
||||
downloaded and the path will be returned as ``''`` (empty string). This
|
||||
is mostly used for testing purposes and can be safely ignored by most
|
||||
users.
|
||||
check_version : bool
|
||||
Whether to check the version of the dataset or not. Each version
|
||||
of the dataset is stored in the root with a ``version.txt`` file.
|
||||
return_version : bool
|
||||
Whether or not to return the version of the dataset or not.
|
||||
Defaults to False.
|
||||
accept : bool
|
||||
Some MNE-supplied datasets require acceptance of an additional license.
|
||||
Default is ``False``.
|
||||
auth : tuple | None
|
||||
Optional authentication tuple containing the username and
|
||||
password/token, passed to ``pooch.HTTPDownloader`` (e.g.,
|
||||
``auth=('foo', 012345)``).
|
||||
token : str | None
|
||||
Optional authentication token passed to ``pooch.HTTPDownloader``.
|
||||
|
||||
Returns
|
||||
-------
|
||||
data_path : instance of Path
|
||||
The path to the fetched dataset.
|
||||
version : str
|
||||
Only returned if ``return_version`` is True.
|
||||
|
||||
See Also
|
||||
--------
|
||||
mne.get_config
|
||||
mne.set_config
|
||||
mne.datasets.has_dataset
|
||||
|
||||
Notes
|
||||
-----
|
||||
The ``dataset_params`` argument must contain the following keys:
|
||||
|
||||
- ``archive_name``: The name of the (possibly compressed) file to download
|
||||
- ``url``: URL from which the file can be downloaded
|
||||
- ``folder_name``: the subfolder within the ``MNE_DATA`` folder in which to
|
||||
save and uncompress (if needed) the file(s)
|
||||
- ``hash``: the cryptographic hash type of the file followed by a colon and
|
||||
then the hash value (examples: "sha256:19uheid...", "md5:upodh2io...")
|
||||
- ``config_key`` (optional): key passed to :func:`mne.set_config` to store
|
||||
the on-disk location of the downloaded dataset (e.g.,
|
||||
``"MNE_DATASETS_EEGBCI_PATH"``). This will only work for the provided
|
||||
datasets listed :ref:`here <datasets>`; do not use for user-defined
|
||||
datasets.
|
||||
|
||||
An example would look like::
|
||||
|
||||
{'dataset_name': 'sample',
|
||||
'archive_name': 'MNE-sample-data-processed.tar.gz',
|
||||
'hash': 'md5:12b75d1cb7df9dfb4ad73ed82f61094f',
|
||||
'url': 'https://osf.io/86qa2/download?version=5',
|
||||
'folder_name': 'MNE-sample-data',
|
||||
'config_key': 'MNE_DATASETS_SAMPLE_PATH'}
|
||||
|
||||
For datasets where a single (possibly compressed) file must be downloaded,
|
||||
pass a single :class:`dict` as ``dataset_params``. For datasets where
|
||||
multiple files must be downloaded and (optionally) uncompressed separately,
|
||||
pass a list of dicts.
|
||||
""" # noqa E501
|
||||
import pooch
|
||||
|
||||
t0 = time.time()
|
||||
|
||||
if auth is not None:
|
||||
if len(auth) != 2:
|
||||
raise RuntimeError(
|
||||
"auth should be a 2-tuple consisting "
|
||||
"of a username and password/token."
|
||||
)
|
||||
|
||||
# processor to uncompress files
|
||||
if processor == "untar":
|
||||
processor = pooch.Untar(extract_dir=path)
|
||||
elif processor == "unzip":
|
||||
processor = pooch.Unzip(extract_dir=path)
|
||||
|
||||
if isinstance(dataset_params, dict):
|
||||
dataset_params = [dataset_params]
|
||||
|
||||
# extract configuration parameters
|
||||
names = [params["dataset_name"] for params in dataset_params]
|
||||
name = names[0]
|
||||
dataset_dict = dataset_params[0]
|
||||
config_key = dataset_dict.get("config_key", None)
|
||||
folder_name = dataset_dict["folder_name"]
|
||||
|
||||
# get download path for specific dataset
|
||||
path = _get_path(path=path, key=config_key, name=name)
|
||||
|
||||
# get the actual path to each dataset folder name
|
||||
final_path = op.join(path, folder_name)
|
||||
|
||||
# handle BrainStorm datasets with nested folders for datasets
|
||||
if name.startswith("bst_"):
|
||||
final_path = op.join(final_path, name)
|
||||
|
||||
final_path = Path(final_path)
|
||||
|
||||
# additional condition: check for version.txt and parse it
|
||||
# check if testing or misc data is outdated; if so, redownload it
|
||||
want_version = RELEASES.get(name, None)
|
||||
want_version = _FAKE_VERSION if name == "fake" else want_version
|
||||
|
||||
# get the version of the dataset and then check if the version is outdated
|
||||
data_version = _dataset_version(final_path, name)
|
||||
outdated = want_version is not None and _compare_version(
|
||||
want_version, ">", data_version
|
||||
)
|
||||
|
||||
if outdated:
|
||||
logger.info(
|
||||
f"Dataset {name} version {data_version} out of date, "
|
||||
f"latest version is {want_version}"
|
||||
)
|
||||
empty = Path("")
|
||||
|
||||
# return empty string if outdated dataset and we don't want to download
|
||||
if (not force_update) and outdated and not download:
|
||||
logger.info(
|
||||
"Dataset out of date but force_update=False and download=False, "
|
||||
"returning empty data_path"
|
||||
)
|
||||
return (empty, data_version) if return_version else empty
|
||||
|
||||
# reasons to bail early (hf_sef has separate code for this):
|
||||
if (not force_update) and (not outdated) and (not name.startswith("hf_sef_")):
|
||||
# ...if target folder exists (otherwise pooch downloads every
|
||||
# time because we don't save the archive files after unpacking, so
|
||||
# pooch can't check its checksum)
|
||||
if op.isdir(final_path):
|
||||
if config_key is not None:
|
||||
_do_path_update(path, update_path, config_key, name)
|
||||
return (final_path, data_version) if return_version else final_path
|
||||
# ...if download=False (useful for debugging)
|
||||
elif not download:
|
||||
return (empty, data_version) if return_version else empty
|
||||
# ...if user didn't accept the license
|
||||
elif name.startswith("bst_"):
|
||||
if accept or "--accept-brainstorm-license" in sys.argv:
|
||||
answer = "y"
|
||||
else:
|
||||
# If they don't have stdin, just accept the license
|
||||
# https://github.com/mne-tools/mne-python/issues/8513#issuecomment-726823724 # noqa: E501
|
||||
answer = _safe_input(f"{_bst_license_text}Agree (y/[n])? ", use="y")
|
||||
if answer.lower() != "y":
|
||||
raise RuntimeError("You must agree to the license to use this dataset")
|
||||
# downloader & processors
|
||||
download_params = _downloader_params(auth=auth, token=token)
|
||||
if name == "fake":
|
||||
download_params["progressbar"] = False
|
||||
downloader = pooch.HTTPDownloader(**download_params)
|
||||
|
||||
# make mappings from archive names to urls and to checksums
|
||||
urls = dict()
|
||||
registry = dict()
|
||||
for idx, this_name in enumerate(names):
|
||||
this_dataset = dataset_params[idx]
|
||||
archive_name = this_dataset["archive_name"]
|
||||
dataset_url = this_dataset["url"]
|
||||
dataset_hash = this_dataset["hash"]
|
||||
urls[archive_name] = dataset_url
|
||||
registry[archive_name] = dataset_hash
|
||||
|
||||
# create the download manager
|
||||
use_path = final_path if processor is None else Path(path)
|
||||
fetcher = pooch.create(
|
||||
path=str(use_path),
|
||||
base_url="", # Full URLs are given in the `urls` dict.
|
||||
version=None, # Data versioning is decoupled from MNE-Python version.
|
||||
urls=urls,
|
||||
registry=registry,
|
||||
retry_if_failed=2, # 2 retries = 3 total attempts
|
||||
)
|
||||
|
||||
# use our logger level for pooch's logger too
|
||||
pooch.get_logger().setLevel(logger.getEffectiveLevel())
|
||||
sz = 0
|
||||
|
||||
for idx in range(len(names)):
|
||||
# fetch and unpack the data
|
||||
archive_name = dataset_params[idx]["archive_name"]
|
||||
try:
|
||||
fetcher.fetch(
|
||||
fname=archive_name, downloader=downloader, processor=processor
|
||||
)
|
||||
except ValueError as err:
|
||||
err = str(err)
|
||||
if "hash of downloaded file" in str(err):
|
||||
raise ValueError(
|
||||
f"{err} Consider using force_update=True to force "
|
||||
"the dataset to be downloaded again."
|
||||
) from None
|
||||
else:
|
||||
raise
|
||||
fname = use_path / archive_name
|
||||
sz += fname.stat().st_size
|
||||
# after unpacking, remove the archive file
|
||||
if processor is not None:
|
||||
fname.unlink()
|
||||
|
||||
# remove version number from "misc" and "testing" datasets folder names
|
||||
if name == "misc":
|
||||
rmtree(final_path, ignore_errors=True)
|
||||
os.replace(op.join(path, MISC_VERSIONED), final_path)
|
||||
elif name == "testing":
|
||||
rmtree(final_path, ignore_errors=True)
|
||||
os.replace(op.join(path, TESTING_VERSIONED), final_path)
|
||||
|
||||
# maybe update the config
|
||||
if config_key is not None:
|
||||
old_name = "brainstorm" if name.startswith("bst_") else name
|
||||
_do_path_update(path, update_path, config_key, old_name)
|
||||
|
||||
# compare the version of the dataset and mne
|
||||
data_version = _dataset_version(path, name)
|
||||
# 0.7 < 0.7.git should be False, therefore strip
|
||||
if check_version and (
|
||||
_compare_version(data_version, "<", mne_version.strip(".git"))
|
||||
):
|
||||
# OK to `nosec` because it's false positive (misidentified as SQL)
|
||||
warn(
|
||||
f"The {name} dataset (version {data_version}) is older than "
|
||||
f"mne-python (version {mne_version}). If the examples fail, "
|
||||
f"you may need to update the {name} dataset by using "
|
||||
f"mne.datasets.{name}.data_path(force_update=True)" # nosec B608
|
||||
)
|
||||
_log_time_size(t0, sz)
|
||||
return (final_path, data_version) if return_version else final_path
|
||||
3
mne/datasets/_fsaverage/__init__.py
Normal file
3
mne/datasets/_fsaverage/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
103
mne/datasets/_fsaverage/base.py
Normal file
103
mne/datasets/_fsaverage/base.py
Normal file
@@ -0,0 +1,103 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
from ...utils import get_subjects_dir, set_config, verbose
|
||||
from ..utils import _get_path, _manifest_check_download
|
||||
|
||||
FSAVERAGE_MANIFEST_PATH = Path(__file__).parent
|
||||
|
||||
|
||||
@verbose
|
||||
def fetch_fsaverage(subjects_dir=None, *, verbose=None):
|
||||
"""Fetch and update fsaverage.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
subjects_dir : str | None
|
||||
The path to use as the subjects directory in the MNE-Python
|
||||
config file. None will use the existing config variable (i.e.,
|
||||
will not change anything), and if it does not exist, will use
|
||||
``~/mne_data/MNE-fsaverage-data``.
|
||||
%(verbose)s
|
||||
|
||||
Returns
|
||||
-------
|
||||
fs_dir : Path
|
||||
The fsaverage directory.
|
||||
(essentially ``subjects_dir / 'fsaverage'``).
|
||||
|
||||
.. versionchanged:: 1.8
|
||||
A :class:`pathlib.Path` object is returned instead of a string.
|
||||
|
||||
Notes
|
||||
-----
|
||||
This function is designed to provide
|
||||
|
||||
1. All modern (Freesurfer 6) fsaverage subject files
|
||||
2. All MNE fsaverage parcellations
|
||||
3. fsaverage head surface, fiducials, head<->MRI trans, 1- and 3-layer
|
||||
BEMs (and surfaces)
|
||||
|
||||
This function will compare the contents of ``subjects_dir/fsaverage``
|
||||
to the ones provided in the remote zip file. If any are missing,
|
||||
the zip file is downloaded and files are updated. No files will
|
||||
be overwritten.
|
||||
|
||||
.. versionadded:: 0.18
|
||||
"""
|
||||
# Code used to create the BEM (other files taken from MNE-sample-data):
|
||||
#
|
||||
# $ mne watershed_bem -s fsaverage -d $PWD --verbose info --copy
|
||||
# $ python
|
||||
# >>> bem = mne.make_bem_model('fsaverage', subjects_dir='.', verbose=True)
|
||||
# >>> mne.write_bem_surfaces(
|
||||
# ... 'fsaverage/bem/fsaverage-5120-5120-5120-bem.fif', bem)
|
||||
# >>> sol = mne.make_bem_solution(bem, verbose=True)
|
||||
# >>> mne.write_bem_solution(
|
||||
# ... 'fsaverage/bem/fsaverage-5120-5120-5120-bem-sol.fif', sol)
|
||||
# >>> import os
|
||||
# >>> import os.path as op
|
||||
# >>> names = sorted(op.join(r, f)
|
||||
# ... for r, d, files in os.walk('fsaverage')
|
||||
# ... for f in files)
|
||||
# with open('fsaverage.txt', 'w') as fid:
|
||||
# fid.write('\n'.join(names))
|
||||
#
|
||||
subjects_dir = _set_montage_coreg_path(subjects_dir)
|
||||
subjects_dir = subjects_dir.expanduser().absolute()
|
||||
fs_dir = subjects_dir / "fsaverage"
|
||||
fs_dir.mkdir(parents=True, exist_ok=True)
|
||||
_manifest_check_download(
|
||||
manifest_path=FSAVERAGE_MANIFEST_PATH / "root.txt",
|
||||
destination=subjects_dir,
|
||||
url="https://osf.io/3bxqt/download?version=2",
|
||||
hash_="5133fe92b7b8f03ae19219d5f46e4177",
|
||||
)
|
||||
_manifest_check_download(
|
||||
manifest_path=FSAVERAGE_MANIFEST_PATH / "bem.txt",
|
||||
destination=subjects_dir / "fsaverage",
|
||||
url="https://osf.io/7ve8g/download?version=4",
|
||||
hash_="b31509cdcf7908af6a83dc5ee8f49fb1",
|
||||
)
|
||||
return fs_dir
|
||||
|
||||
|
||||
def _get_create_subjects_dir(subjects_dir):
|
||||
subjects_dir = get_subjects_dir(subjects_dir, raise_error=False)
|
||||
if subjects_dir is None:
|
||||
subjects_dir = _get_path(None, "MNE_DATA", "montage coregistration")
|
||||
subjects_dir = subjects_dir / "MNE-fsaverage-data"
|
||||
subjects_dir.mkdir(parents=True, exist_ok=True)
|
||||
return subjects_dir
|
||||
|
||||
|
||||
def _set_montage_coreg_path(subjects_dir=None):
|
||||
"""Set a subject directory suitable for montage(-only) coregistration."""
|
||||
subjects_dir = _get_create_subjects_dir(subjects_dir)
|
||||
old_subjects_dir = get_subjects_dir(None, raise_error=False)
|
||||
if old_subjects_dir is None:
|
||||
set_config("SUBJECTS_DIR", subjects_dir)
|
||||
return subjects_dir
|
||||
12
mne/datasets/_fsaverage/bem.txt
Normal file
12
mne/datasets/_fsaverage/bem.txt
Normal file
@@ -0,0 +1,12 @@
|
||||
bem/fsaverage-fiducials.fif
|
||||
bem/fsaverage-5120-5120-5120-bem.fif
|
||||
bem/fsaverage-head.fif
|
||||
bem/outer_skin.surf
|
||||
bem/brain.surf
|
||||
bem/fsaverage-trans.fif
|
||||
bem/fsaverage-ico-5-src.fif
|
||||
bem/fsaverage-vol-5-src.fif
|
||||
bem/outer_skull.surf
|
||||
bem/inner_skull.surf
|
||||
bem/fsaverage-5120-5120-5120-bem-sol.fif
|
||||
bem/fsaverage-inner_skull-bem.fif
|
||||
179
mne/datasets/_fsaverage/root.txt
Normal file
179
mne/datasets/_fsaverage/root.txt
Normal file
@@ -0,0 +1,179 @@
|
||||
fsaverage/bem/fsaverage-head-dense.fif
|
||||
fsaverage/bem/fsaverage-head-medium.fif
|
||||
fsaverage/bem/fsaverage-head.fif
|
||||
fsaverage/bem/fsaverage-ico-5-src.fif
|
||||
fsaverage/label/lh.BA1.label
|
||||
fsaverage/label/lh.BA2.label
|
||||
fsaverage/label/lh.BA3a.label
|
||||
fsaverage/label/lh.BA3b.label
|
||||
fsaverage/label/lh.BA44.label
|
||||
fsaverage/label/lh.BA45.label
|
||||
fsaverage/label/lh.BA4a.label
|
||||
fsaverage/label/lh.BA4p.label
|
||||
fsaverage/label/lh.BA6.label
|
||||
fsaverage/label/lh.HCPMMP1.annot
|
||||
fsaverage/label/lh.HCPMMP1_combined.annot
|
||||
fsaverage/label/lh.MT.label
|
||||
fsaverage/label/lh.Medial_wall.label
|
||||
fsaverage/label/lh.PALS_B12.labels.gii
|
||||
fsaverage/label/lh.PALS_B12_Brodmann.annot
|
||||
fsaverage/label/lh.PALS_B12_Lobes.annot
|
||||
fsaverage/label/lh.PALS_B12_OrbitoFrontal.annot
|
||||
fsaverage/label/lh.PALS_B12_Visuotopic.annot
|
||||
fsaverage/label/lh.V1.label
|
||||
fsaverage/label/lh.V2.label
|
||||
fsaverage/label/lh.Yeo2011_17Networks_N1000.annot
|
||||
fsaverage/label/lh.Yeo2011_7Networks_N1000.annot
|
||||
fsaverage/label/lh.aparc.a2005s.annot
|
||||
fsaverage/label/lh.aparc.a2009s.annot
|
||||
fsaverage/label/lh.aparc.annot
|
||||
fsaverage/label/lh.aparc.label
|
||||
fsaverage/label/lh.aparc_sub.annot
|
||||
fsaverage/label/lh.cortex.label
|
||||
fsaverage/label/lh.entorhinal.label
|
||||
fsaverage/label/lh.oasis.chubs.annot
|
||||
fsaverage/label/rh.BA1.label
|
||||
fsaverage/label/rh.BA2.label
|
||||
fsaverage/label/rh.BA3a.label
|
||||
fsaverage/label/rh.BA3b.label
|
||||
fsaverage/label/rh.BA44.label
|
||||
fsaverage/label/rh.BA45.label
|
||||
fsaverage/label/rh.BA4a.label
|
||||
fsaverage/label/rh.BA4p.label
|
||||
fsaverage/label/rh.BA6.label
|
||||
fsaverage/label/rh.HCPMMP1.annot
|
||||
fsaverage/label/rh.HCPMMP1_combined.annot
|
||||
fsaverage/label/rh.MT.label
|
||||
fsaverage/label/rh.Medial_wall.label
|
||||
fsaverage/label/rh.PALS_B12.labels.gii
|
||||
fsaverage/label/rh.PALS_B12_Brodmann.annot
|
||||
fsaverage/label/rh.PALS_B12_Lobes.annot
|
||||
fsaverage/label/rh.PALS_B12_OrbitoFrontal.annot
|
||||
fsaverage/label/rh.PALS_B12_Visuotopic.annot
|
||||
fsaverage/label/rh.V1.label
|
||||
fsaverage/label/rh.V2.label
|
||||
fsaverage/label/rh.Yeo2011_17Networks_N1000.annot
|
||||
fsaverage/label/rh.Yeo2011_7Networks_N1000.annot
|
||||
fsaverage/label/rh.aparc.a2005s.annot
|
||||
fsaverage/label/rh.aparc.a2009s.annot
|
||||
fsaverage/label/rh.aparc.annot
|
||||
fsaverage/label/rh.aparc.label
|
||||
fsaverage/label/rh.aparc_sub.annot
|
||||
fsaverage/label/rh.cortex.label
|
||||
fsaverage/label/rh.entorhinal.label
|
||||
fsaverage/label/rh.oasis.chubs.annot
|
||||
fsaverage/mri.2mm/README
|
||||
fsaverage/mri.2mm/T1.mgz
|
||||
fsaverage/mri.2mm/aseg.mgz
|
||||
fsaverage/mri.2mm/brain.mgz
|
||||
fsaverage/mri.2mm/brainmask.mgz
|
||||
fsaverage/mri.2mm/mni305.cor.mgz
|
||||
fsaverage/mri.2mm/orig.mgz
|
||||
fsaverage/mri.2mm/reg.2mm.dat
|
||||
fsaverage/mri.2mm/reg.2mm.mni152.dat
|
||||
fsaverage/mri.2mm/subcort.mask.mgz
|
||||
fsaverage/mri.2mm/subcort.prob.mgz
|
||||
fsaverage/mri/T1.mgz
|
||||
fsaverage/mri/aparc+aseg.mgz
|
||||
fsaverage/mri/aparc.a2005s+aseg.mgz
|
||||
fsaverage/mri/aparc.a2009s+aseg.mgz
|
||||
fsaverage/mri/aseg.mgz
|
||||
fsaverage/mri/brain.mgz
|
||||
fsaverage/mri/brainmask.mgz
|
||||
fsaverage/mri/lh.ribbon.mgz
|
||||
fsaverage/mri/mni305.cor.mgz
|
||||
fsaverage/mri/orig.mgz
|
||||
fsaverage/mri/p.aseg.mgz
|
||||
fsaverage/mri/rh.ribbon.mgz
|
||||
fsaverage/mri/ribbon.mgz
|
||||
fsaverage/mri/seghead.mgz
|
||||
fsaverage/mri/subcort.prob.log
|
||||
fsaverage/mri/subcort.prob.mgz
|
||||
fsaverage/mri/transforms/reg.mni152.2mm.dat
|
||||
fsaverage/mri/transforms/talairach.xfm
|
||||
fsaverage/scripts/build-stamp.txt
|
||||
fsaverage/scripts/csurfdir
|
||||
fsaverage/scripts/make_average_surface.log
|
||||
fsaverage/scripts/make_average_volume.log
|
||||
fsaverage/scripts/mkheadsurf.log
|
||||
fsaverage/scripts/mris_inflate.log
|
||||
fsaverage/scripts/mris_inflate_lh.log
|
||||
fsaverage/scripts/mris_inflate_rh.log
|
||||
fsaverage/scripts/recon-all-status.log
|
||||
fsaverage/scripts/recon-all.cmd
|
||||
fsaverage/scripts/recon-all.done
|
||||
fsaverage/scripts/recon-all.env
|
||||
fsaverage/scripts/recon-all.env.bak
|
||||
fsaverage/scripts/recon-all.local-copy
|
||||
fsaverage/scripts/recon-all.log
|
||||
fsaverage/surf/lh.area
|
||||
fsaverage/surf/lh.area.seghead
|
||||
fsaverage/surf/lh.avg_curv
|
||||
fsaverage/surf/lh.avg_sulc
|
||||
fsaverage/surf/lh.avg_thickness
|
||||
fsaverage/surf/lh.cortex.patch.3d
|
||||
fsaverage/surf/lh.cortex.patch.flat
|
||||
fsaverage/surf/lh.curv
|
||||
fsaverage/surf/lh.curv.seghead
|
||||
fsaverage/surf/lh.fsaverage_sym.sphere.reg
|
||||
fsaverage/surf/lh.inflated
|
||||
fsaverage/surf/lh.inflated.H
|
||||
fsaverage/surf/lh.inflated.K
|
||||
fsaverage/surf/lh.inflated_avg
|
||||
fsaverage/surf/lh.inflated_pre
|
||||
fsaverage/surf/lh.orig
|
||||
fsaverage/surf/lh.orig.avg.area.mgh
|
||||
fsaverage/surf/lh.orig_avg
|
||||
fsaverage/surf/lh.pial
|
||||
fsaverage/surf/lh.pial.avg.area.mgh
|
||||
fsaverage/surf/lh.pial_avg
|
||||
fsaverage/surf/lh.pial_semi_inflated
|
||||
fsaverage/surf/lh.seghead
|
||||
fsaverage/surf/lh.seghead.inflated
|
||||
fsaverage/surf/lh.smoothwm
|
||||
fsaverage/surf/lh.sphere
|
||||
fsaverage/surf/lh.sphere.left_right
|
||||
fsaverage/surf/lh.sphere.reg
|
||||
fsaverage/surf/lh.sphere.reg.avg
|
||||
fsaverage/surf/lh.sulc
|
||||
fsaverage/surf/lh.sulc.seghead
|
||||
fsaverage/surf/lh.thickness
|
||||
fsaverage/surf/lh.white
|
||||
fsaverage/surf/lh.white.avg.area.mgh
|
||||
fsaverage/surf/lh.white_avg
|
||||
fsaverage/surf/lh.white_avg.H
|
||||
fsaverage/surf/lh.white_avg.K
|
||||
fsaverage/surf/mris_preproc.surface.lh.log
|
||||
fsaverage/surf/mris_preproc.surface.rh.log
|
||||
fsaverage/surf/rh.area
|
||||
fsaverage/surf/rh.avg_curv
|
||||
fsaverage/surf/rh.avg_sulc
|
||||
fsaverage/surf/rh.avg_thickness
|
||||
fsaverage/surf/rh.cortex.patch.3d
|
||||
fsaverage/surf/rh.cortex.patch.flat
|
||||
fsaverage/surf/rh.curv
|
||||
fsaverage/surf/rh.fsaverage_sym.sphere.reg
|
||||
fsaverage/surf/rh.inflated
|
||||
fsaverage/surf/rh.inflated.H
|
||||
fsaverage/surf/rh.inflated.K
|
||||
fsaverage/surf/rh.inflated_avg
|
||||
fsaverage/surf/rh.inflated_pre
|
||||
fsaverage/surf/rh.orig
|
||||
fsaverage/surf/rh.orig.avg.area.mgh
|
||||
fsaverage/surf/rh.orig_avg
|
||||
fsaverage/surf/rh.pial
|
||||
fsaverage/surf/rh.pial.avg.area.mgh
|
||||
fsaverage/surf/rh.pial_avg
|
||||
fsaverage/surf/rh.pial_semi_inflated
|
||||
fsaverage/surf/rh.smoothwm
|
||||
fsaverage/surf/rh.sphere
|
||||
fsaverage/surf/rh.sphere.left_right
|
||||
fsaverage/surf/rh.sphere.reg
|
||||
fsaverage/surf/rh.sphere.reg.avg
|
||||
fsaverage/surf/rh.sulc
|
||||
fsaverage/surf/rh.thickness
|
||||
fsaverage/surf/rh.white
|
||||
fsaverage/surf/rh.white.avg.area.mgh
|
||||
fsaverage/surf/rh.white_avg
|
||||
fsaverage/surf/rh.white_avg.H
|
||||
fsaverage/surf/rh.white_avg.K
|
||||
117
mne/datasets/_infant/ANTS1-0Months3T.txt
Normal file
117
mne/datasets/_infant/ANTS1-0Months3T.txt
Normal file
@@ -0,0 +1,117 @@
|
||||
bem/ANTS1-0Months3T-5120-5120-5120-bem-sol.fif
|
||||
bem/ANTS1-0Months3T-5120-5120-5120-bem.fif
|
||||
bem/ANTS1-0Months3T-fiducials.fif
|
||||
bem/ANTS1-0Months3T-head.fif
|
||||
bem/ANTS1-0Months3T-oct-6-src.fif
|
||||
bem/ANTS1-0Months3T-vol-5-src.fif
|
||||
bem/inner_skull.surf
|
||||
bem/inner_skull_large.surf
|
||||
bem/outer_skin.surf
|
||||
bem/outer_skin_large.surf
|
||||
bem/outer_skull.surf
|
||||
bem/outer_skull_large.surf
|
||||
flirt_trans_mat.txt
|
||||
label/aparc.annot.ctab
|
||||
label/lh.aparc.a2009s.annot
|
||||
label/lh.aparc.annot
|
||||
label/lh.cortex.label
|
||||
label/rh.aparc.a2009s.annot
|
||||
label/rh.aparc.annot
|
||||
label/rh.cortex.label
|
||||
montages/10-10-montage.fif
|
||||
montages/10-10_electrodes.tsv
|
||||
montages/10-20-montage.fif
|
||||
montages/10-20_electrodes.tsv
|
||||
montages/10-5-montage.fif
|
||||
montages/10-5_electrodes.tsv
|
||||
montages/HGSN128-montage.fif
|
||||
montages/HGSN128_electrodes.tsv
|
||||
montages/HGSN129-montage.fif
|
||||
montages/HGSN129_electrodes.tsv
|
||||
mprage.nii.gz
|
||||
mri/T1.mgz
|
||||
mri/aparc+aseg.mgz
|
||||
mri/aseg.count.txt
|
||||
mri/aseg.mgz
|
||||
mri/aseg.nii.gz
|
||||
mri/aseg.presurf.mgz
|
||||
mri/brain.finalsurfs.mgz
|
||||
mri/brain.mgz
|
||||
mri/brain.nii.gz
|
||||
mri/brainmask.mgz
|
||||
mri/brainmask.nii.gz
|
||||
mri/filled.mgz
|
||||
mri/lh.dpial.ribbon.mgz
|
||||
mri/lh.dwhite.ribbon.mgz
|
||||
mri/lh.ribbon.mgz
|
||||
mri/norm.mgz
|
||||
mri/norm.nii.gz
|
||||
mri/rh.dpial.ribbon.mgz
|
||||
mri/rh.dwhite.ribbon.mgz
|
||||
mri/rh.ribbon.mgz
|
||||
mri/ribbon.mgz
|
||||
mri/transforms/niftyreg_affine.lta
|
||||
mri/transforms/niftyreg_affine.nii.gz
|
||||
mri/transforms/niftyreg_affine.txt
|
||||
mri/transforms/niftyreg_affine.xfm
|
||||
mri/transforms/talairach.auto.xfm
|
||||
mri/transforms/talairach.xfm
|
||||
mri/wm.mgz
|
||||
surf/10-10-montage.obj
|
||||
surf/10-10-montage.surf
|
||||
surf/10-20-montage.obj
|
||||
surf/10-20-montage.surf
|
||||
surf/10-5-montage.obj
|
||||
surf/10-5-montage.surf
|
||||
surf/HGSN128-montage.obj
|
||||
surf/HGSN128-montage.surf
|
||||
surf/fiducials.obj
|
||||
surf/fiducials.surf
|
||||
surf/lh.area
|
||||
surf/lh.curv
|
||||
surf/lh.defects
|
||||
surf/lh.inflated
|
||||
surf/lh.inflated.H
|
||||
surf/lh.inflated.K
|
||||
surf/lh.input
|
||||
surf/lh.orig
|
||||
surf/lh.orig.euler.txt
|
||||
surf/lh.orig_corrected
|
||||
surf/lh.pial
|
||||
surf/lh.qsphere
|
||||
surf/lh.qsphere.nofix
|
||||
surf/lh.smoothwm
|
||||
surf/lh.smoothwm1
|
||||
surf/lh.smoothwm2
|
||||
surf/lh.smoothwm3
|
||||
surf/lh.smoothwm4
|
||||
surf/lh.smoothwm5
|
||||
surf/lh.sphere
|
||||
surf/lh.sphere.reg
|
||||
surf/lh.sulc
|
||||
surf/lh.thickness
|
||||
surf/lh.white
|
||||
surf/rh.area
|
||||
surf/rh.curv
|
||||
surf/rh.defects
|
||||
surf/rh.inflated
|
||||
surf/rh.inflated.H
|
||||
surf/rh.inflated.K
|
||||
surf/rh.input
|
||||
surf/rh.orig
|
||||
surf/rh.orig.euler.txt
|
||||
surf/rh.orig_corrected
|
||||
surf/rh.pial
|
||||
surf/rh.qsphere
|
||||
surf/rh.qsphere.nofix
|
||||
surf/rh.smoothwm
|
||||
surf/rh.smoothwm1
|
||||
surf/rh.smoothwm2
|
||||
surf/rh.smoothwm3
|
||||
surf/rh.smoothwm4
|
||||
surf/rh.smoothwm5
|
||||
surf/rh.sphere
|
||||
surf/rh.sphere.reg
|
||||
surf/rh.sulc
|
||||
surf/rh.thickness
|
||||
surf/rh.white
|
||||
115
mne/datasets/_infant/ANTS10-5Months3T.txt
Normal file
115
mne/datasets/_infant/ANTS10-5Months3T.txt
Normal file
@@ -0,0 +1,115 @@
|
||||
bem/ANTS10-5Months3T-5120-5120-5120-bem-sol.fif
|
||||
bem/ANTS10-5Months3T-5120-5120-5120-bem.fif
|
||||
bem/ANTS10-5Months3T-fiducials.fif
|
||||
bem/ANTS10-5Months3T-head.fif
|
||||
bem/ANTS10-5Months3T-oct-6-src.fif
|
||||
bem/ANTS10-5Months3T-vol-5-src.fif
|
||||
bem/inner_skull.surf
|
||||
bem/inner_skull_large.surf
|
||||
bem/outer_skin.surf
|
||||
bem/outer_skin_large.surf
|
||||
bem/outer_skull.surf
|
||||
bem/outer_skull_large.surf
|
||||
flirt_trans_mat.txt
|
||||
label/aparc.annot.ctab
|
||||
label/lh.aparc.a2009s.annot
|
||||
label/lh.aparc.annot
|
||||
label/lh.cortex.label
|
||||
label/rh.aparc.a2009s.annot
|
||||
label/rh.aparc.annot
|
||||
label/rh.cortex.label
|
||||
montages/10-10-montage.fif
|
||||
montages/10-10_electrodes.tsv
|
||||
montages/10-20-montage.fif
|
||||
montages/10-20_electrodes.tsv
|
||||
montages/10-5-montage.fif
|
||||
montages/10-5_electrodes.tsv
|
||||
montages/HGSN128-montage.fif
|
||||
montages/HGSN128_electrodes.tsv
|
||||
montages/HGSN129-montage.fif
|
||||
montages/HGSN129_electrodes.tsv
|
||||
mprage.nii.gz
|
||||
mri/T1.mgz
|
||||
mri/aparc+aseg.mgz
|
||||
mri/aseg.count.txt
|
||||
mri/aseg.mgz
|
||||
mri/aseg.nii.gz
|
||||
mri/aseg.presurf.mgz
|
||||
mri/brain.finalsurfs.mgz
|
||||
mri/brain.mgz
|
||||
mri/brain.nii.gz
|
||||
mri/brainmask.mgz
|
||||
mri/brainmask.nii.gz
|
||||
mri/filled.mgz
|
||||
mri/lh.dpial.ribbon.mgz
|
||||
mri/lh.dwhite.ribbon.mgz
|
||||
mri/lh.ribbon.mgz
|
||||
mri/norm.mgz
|
||||
mri/norm.nii.gz
|
||||
mri/rh.dpial.ribbon.mgz
|
||||
mri/rh.dwhite.ribbon.mgz
|
||||
mri/rh.ribbon.mgz
|
||||
mri/ribbon.mgz
|
||||
mri/transforms/niftyreg_affine.lta
|
||||
mri/transforms/niftyreg_affine.nii.gz
|
||||
mri/transforms/niftyreg_affine.txt
|
||||
mri/transforms/niftyreg_affine.xfm
|
||||
mri/transforms/talairach.auto.xfm
|
||||
mri/transforms/talairach.xfm
|
||||
mri/wm.mgz
|
||||
surf/10-10-montage.obj
|
||||
surf/10-10-montage.surf
|
||||
surf/10-20-montage.obj
|
||||
surf/10-20-montage.surf
|
||||
surf/10-5-montage.obj
|
||||
surf/10-5-montage.surf
|
||||
surf/HGSN128-montage.obj
|
||||
surf/HGSN128-montage.surf
|
||||
surf/fiducials.obj
|
||||
surf/fiducials.surf
|
||||
surf/lh.area
|
||||
surf/lh.curv
|
||||
surf/lh.inflated
|
||||
surf/lh.inflated.H
|
||||
surf/lh.inflated.K
|
||||
surf/lh.orig
|
||||
surf/lh.orig.euler.txt
|
||||
surf/lh.orig_corrected
|
||||
surf/lh.pial
|
||||
surf/lh.qsphere
|
||||
surf/lh.qsphere.nofix
|
||||
surf/lh.smoothwm
|
||||
surf/lh.smoothwm1
|
||||
surf/lh.smoothwm2
|
||||
surf/lh.smoothwm3
|
||||
surf/lh.smoothwm4
|
||||
surf/lh.smoothwm5
|
||||
surf/lh.sphere
|
||||
surf/lh.sphere.reg
|
||||
surf/lh.sulc
|
||||
surf/lh.thickness
|
||||
surf/lh.white
|
||||
surf/rh.area
|
||||
surf/rh.curv
|
||||
surf/rh.defects
|
||||
surf/rh.inflated
|
||||
surf/rh.inflated.H
|
||||
surf/rh.inflated.K
|
||||
surf/rh.input
|
||||
surf/rh.orig
|
||||
surf/rh.orig.euler.txt
|
||||
surf/rh.orig_corrected
|
||||
surf/rh.pial
|
||||
surf/rh.qsphere
|
||||
surf/rh.qsphere.nofix
|
||||
surf/rh.smoothwm
|
||||
surf/rh.smoothwm1
|
||||
surf/rh.smoothwm2
|
||||
surf/rh.smoothwm3
|
||||
surf/rh.smoothwm4
|
||||
surf/rh.smoothwm5
|
||||
surf/rh.sphere
|
||||
surf/rh.sphere.reg
|
||||
surf/rh.sulc
|
||||
surf/rh.thickness
|
||||
surf/rh.white
|
||||
121
mne/datasets/_infant/ANTS12-0Months3T.txt
Normal file
121
mne/datasets/_infant/ANTS12-0Months3T.txt
Normal file
@@ -0,0 +1,121 @@
|
||||
atlases/brain_ANTS_IXI_atlas_head_space.nii.gz
|
||||
atlases/brain_ANTS_LPBA40_atlas_head_space.nii.gz
|
||||
atlases/brain_IXI_atlas_head_space.nii.gz
|
||||
atlases/brain_LPBA40_atlas_head_space.nii.gz
|
||||
bem/ANTS12-0Months3T-5120-5120-5120-bem-sol.fif
|
||||
bem/ANTS12-0Months3T-5120-5120-5120-bem.fif
|
||||
bem/ANTS12-0Months3T-fiducials.fif
|
||||
bem/ANTS12-0Months3T-head.fif
|
||||
bem/ANTS12-0Months3T-oct-6-src.fif
|
||||
bem/ANTS12-0Months3T-vol-5-src.fif
|
||||
bem/inner_skull.surf
|
||||
bem/inner_skull_large.surf
|
||||
bem/outer_skin.surf
|
||||
bem/outer_skin_large.surf
|
||||
bem/outer_skull.surf
|
||||
bem/outer_skull_large.surf
|
||||
flirt_trans_mat.txt
|
||||
label/aparc.annot.ctab
|
||||
label/lh.aparc.a2009s.annot
|
||||
label/lh.aparc.annot
|
||||
label/lh.cortex.label
|
||||
label/rh.aparc.a2009s.annot
|
||||
label/rh.aparc.annot
|
||||
label/rh.cortex.label
|
||||
montages/10-10-montage.fif
|
||||
montages/10-10_electrodes.tsv
|
||||
montages/10-20-montage.fif
|
||||
montages/10-20_electrodes.tsv
|
||||
montages/10-5-montage.fif
|
||||
montages/10-5_electrodes.tsv
|
||||
montages/HGSN128-montage.fif
|
||||
montages/HGSN128_electrodes.tsv
|
||||
montages/HGSN129-montage.fif
|
||||
montages/HGSN129_electrodes.tsv
|
||||
mprage.nii.gz
|
||||
mri/T1.mgz
|
||||
mri/aparc+aseg.mgz
|
||||
mri/aseg.count.txt
|
||||
mri/aseg.mgz
|
||||
mri/aseg.nii.gz
|
||||
mri/aseg.presurf.mgz
|
||||
mri/brain.finalsurfs.mgz
|
||||
mri/brain.mgz
|
||||
mri/brain.nii.gz
|
||||
mri/brainmask.mgz
|
||||
mri/brainmask.nii.gz
|
||||
mri/filled.mgz
|
||||
mri/lh.dpial.ribbon.mgz
|
||||
mri/lh.dwhite.ribbon.mgz
|
||||
mri/lh.ribbon.mgz
|
||||
mri/norm.mgz
|
||||
mri/norm.nii.gz
|
||||
mri/rh.dpial.ribbon.mgz
|
||||
mri/rh.dwhite.ribbon.mgz
|
||||
mri/rh.ribbon.mgz
|
||||
mri/ribbon.mgz
|
||||
mri/transforms/niftyreg_affine.lta
|
||||
mri/transforms/niftyreg_affine.nii.gz
|
||||
mri/transforms/niftyreg_affine.txt
|
||||
mri/transforms/niftyreg_affine.xfm
|
||||
mri/transforms/talairach.auto.xfm
|
||||
mri/transforms/talairach.xfm
|
||||
mri/wm.mgz
|
||||
surf/10-10-montage.obj
|
||||
surf/10-10-montage.surf
|
||||
surf/10-20-montage.obj
|
||||
surf/10-20-montage.surf
|
||||
surf/10-5-montage.obj
|
||||
surf/10-5-montage.surf
|
||||
surf/HGSN128-montage.obj
|
||||
surf/HGSN128-montage.surf
|
||||
surf/fiducials.obj
|
||||
surf/fiducials.surf
|
||||
surf/lh.area
|
||||
surf/lh.curv
|
||||
surf/lh.defects
|
||||
surf/lh.inflated
|
||||
surf/lh.inflated.H
|
||||
surf/lh.inflated.K
|
||||
surf/lh.input
|
||||
surf/lh.orig
|
||||
surf/lh.orig.euler.txt
|
||||
surf/lh.orig_corrected
|
||||
surf/lh.pial
|
||||
surf/lh.qsphere
|
||||
surf/lh.qsphere.nofix
|
||||
surf/lh.smoothwm
|
||||
surf/lh.smoothwm1
|
||||
surf/lh.smoothwm2
|
||||
surf/lh.smoothwm3
|
||||
surf/lh.smoothwm4
|
||||
surf/lh.smoothwm5
|
||||
surf/lh.sphere
|
||||
surf/lh.sphere.reg
|
||||
surf/lh.sulc
|
||||
surf/lh.thickness
|
||||
surf/lh.white
|
||||
surf/rh.area
|
||||
surf/rh.curv
|
||||
surf/rh.defects
|
||||
surf/rh.inflated
|
||||
surf/rh.inflated.H
|
||||
surf/rh.inflated.K
|
||||
surf/rh.input
|
||||
surf/rh.orig
|
||||
surf/rh.orig.euler.txt
|
||||
surf/rh.orig_corrected
|
||||
surf/rh.pial
|
||||
surf/rh.qsphere
|
||||
surf/rh.qsphere.nofix
|
||||
surf/rh.smoothwm
|
||||
surf/rh.smoothwm1
|
||||
surf/rh.smoothwm2
|
||||
surf/rh.smoothwm3
|
||||
surf/rh.smoothwm4
|
||||
surf/rh.smoothwm5
|
||||
surf/rh.sphere
|
||||
surf/rh.sphere.reg
|
||||
surf/rh.sulc
|
||||
surf/rh.thickness
|
||||
surf/rh.white
|
||||
121
mne/datasets/_infant/ANTS15-0Months3T.txt
Normal file
121
mne/datasets/_infant/ANTS15-0Months3T.txt
Normal file
@@ -0,0 +1,121 @@
|
||||
atlases/brain_ANTS_IXI_atlas_head_space.nii.gz
|
||||
atlases/brain_ANTS_LPBA40_atlas_head_space.nii.gz
|
||||
atlases/brain_IXI_atlas_head_space.nii.gz
|
||||
atlases/brain_LPBA40_atlas_head_space.nii.gz
|
||||
bem/ANTS15-0Months3T-5120-5120-5120-bem-sol.fif
|
||||
bem/ANTS15-0Months3T-5120-5120-5120-bem.fif
|
||||
bem/ANTS15-0Months3T-fiducials.fif
|
||||
bem/ANTS15-0Months3T-head.fif
|
||||
bem/ANTS15-0Months3T-oct-6-src.fif
|
||||
bem/ANTS15-0Months3T-vol-5-src.fif
|
||||
bem/inner_skull.surf
|
||||
bem/inner_skull_large.surf
|
||||
bem/outer_skin.surf
|
||||
bem/outer_skin_large.surf
|
||||
bem/outer_skull.surf
|
||||
bem/outer_skull_large.surf
|
||||
flirt_trans_mat.txt
|
||||
label/aparc.annot.ctab
|
||||
label/lh.aparc.a2009s.annot
|
||||
label/lh.aparc.annot
|
||||
label/lh.cortex.label
|
||||
label/rh.aparc.a2009s.annot
|
||||
label/rh.aparc.annot
|
||||
label/rh.cortex.label
|
||||
montages/10-10-montage.fif
|
||||
montages/10-10_electrodes.tsv
|
||||
montages/10-20-montage.fif
|
||||
montages/10-20_electrodes.tsv
|
||||
montages/10-5-montage.fif
|
||||
montages/10-5_electrodes.tsv
|
||||
montages/HGSN128-montage.fif
|
||||
montages/HGSN128_electrodes.tsv
|
||||
montages/HGSN129-montage.fif
|
||||
montages/HGSN129_electrodes.tsv
|
||||
mprage.nii.gz
|
||||
mri/T1.mgz
|
||||
mri/aparc+aseg.mgz
|
||||
mri/aseg.count.txt
|
||||
mri/aseg.mgz
|
||||
mri/aseg.nii.gz
|
||||
mri/aseg.presurf.mgz
|
||||
mri/brain.finalsurfs.mgz
|
||||
mri/brain.mgz
|
||||
mri/brain.nii.gz
|
||||
mri/brainmask.mgz
|
||||
mri/brainmask.nii.gz
|
||||
mri/filled.mgz
|
||||
mri/lh.dpial.ribbon.mgz
|
||||
mri/lh.dwhite.ribbon.mgz
|
||||
mri/lh.ribbon.mgz
|
||||
mri/norm.mgz
|
||||
mri/norm.nii.gz
|
||||
mri/rh.dpial.ribbon.mgz
|
||||
mri/rh.dwhite.ribbon.mgz
|
||||
mri/rh.ribbon.mgz
|
||||
mri/ribbon.mgz
|
||||
mri/transforms/niftyreg_affine.lta
|
||||
mri/transforms/niftyreg_affine.nii.gz
|
||||
mri/transforms/niftyreg_affine.txt
|
||||
mri/transforms/niftyreg_affine.xfm
|
||||
mri/transforms/talairach.auto.xfm
|
||||
mri/transforms/talairach.xfm
|
||||
mri/wm.mgz
|
||||
surf/10-10-montage.obj
|
||||
surf/10-10-montage.surf
|
||||
surf/10-20-montage.obj
|
||||
surf/10-20-montage.surf
|
||||
surf/10-5-montage.obj
|
||||
surf/10-5-montage.surf
|
||||
surf/HGSN128-montage.obj
|
||||
surf/HGSN128-montage.surf
|
||||
surf/fiducials.obj
|
||||
surf/fiducials.surf
|
||||
surf/lh.area
|
||||
surf/lh.curv
|
||||
surf/lh.defects
|
||||
surf/lh.inflated
|
||||
surf/lh.inflated.H
|
||||
surf/lh.inflated.K
|
||||
surf/lh.input
|
||||
surf/lh.orig
|
||||
surf/lh.orig.euler.txt
|
||||
surf/lh.orig_corrected
|
||||
surf/lh.pial
|
||||
surf/lh.qsphere
|
||||
surf/lh.qsphere.nofix
|
||||
surf/lh.smoothwm
|
||||
surf/lh.smoothwm1
|
||||
surf/lh.smoothwm2
|
||||
surf/lh.smoothwm3
|
||||
surf/lh.smoothwm4
|
||||
surf/lh.smoothwm5
|
||||
surf/lh.sphere
|
||||
surf/lh.sphere.reg
|
||||
surf/lh.sulc
|
||||
surf/lh.thickness
|
||||
surf/lh.white
|
||||
surf/rh.area
|
||||
surf/rh.curv
|
||||
surf/rh.defects
|
||||
surf/rh.inflated
|
||||
surf/rh.inflated.H
|
||||
surf/rh.inflated.K
|
||||
surf/rh.input
|
||||
surf/rh.orig
|
||||
surf/rh.orig.euler.txt
|
||||
surf/rh.orig_corrected
|
||||
surf/rh.pial
|
||||
surf/rh.qsphere
|
||||
surf/rh.qsphere.nofix
|
||||
surf/rh.smoothwm
|
||||
surf/rh.smoothwm1
|
||||
surf/rh.smoothwm2
|
||||
surf/rh.smoothwm3
|
||||
surf/rh.smoothwm4
|
||||
surf/rh.smoothwm5
|
||||
surf/rh.sphere
|
||||
surf/rh.sphere.reg
|
||||
surf/rh.sulc
|
||||
surf/rh.thickness
|
||||
surf/rh.white
|
||||
121
mne/datasets/_infant/ANTS18-0Months3T.txt
Normal file
121
mne/datasets/_infant/ANTS18-0Months3T.txt
Normal file
@@ -0,0 +1,121 @@
|
||||
atlases/brain_ANTS_IXI_atlas_head_space.nii.gz
|
||||
atlases/brain_ANTS_LPBA40_atlas_head_space.nii.gz
|
||||
atlases/brain_IXI_atlas_head_space.nii.gz
|
||||
atlases/brain_LPBA40_atlas_head_space.nii.gz
|
||||
bem/ANTS18-0Months3T-5120-5120-5120-bem-sol.fif
|
||||
bem/ANTS18-0Months3T-5120-5120-5120-bem.fif
|
||||
bem/ANTS18-0Months3T-fiducials.fif
|
||||
bem/ANTS18-0Months3T-head.fif
|
||||
bem/ANTS18-0Months3T-oct-6-src.fif
|
||||
bem/ANTS18-0Months3T-vol-5-src.fif
|
||||
bem/inner_skull.surf
|
||||
bem/inner_skull_large.surf
|
||||
bem/outer_skin.surf
|
||||
bem/outer_skin_large.surf
|
||||
bem/outer_skull.surf
|
||||
bem/outer_skull_large.surf
|
||||
flirt_trans_mat.txt
|
||||
label/aparc.annot.ctab
|
||||
label/lh.aparc.a2009s.annot
|
||||
label/lh.aparc.annot
|
||||
label/lh.cortex.label
|
||||
label/rh.aparc.a2009s.annot
|
||||
label/rh.aparc.annot
|
||||
label/rh.cortex.label
|
||||
montages/10-10-montage.fif
|
||||
montages/10-10_electrodes.tsv
|
||||
montages/10-20-montage.fif
|
||||
montages/10-20_electrodes.tsv
|
||||
montages/10-5-montage.fif
|
||||
montages/10-5_electrodes.tsv
|
||||
montages/HGSN128-montage.fif
|
||||
montages/HGSN128_electrodes.tsv
|
||||
montages/HGSN129-montage.fif
|
||||
montages/HGSN129_electrodes.tsv
|
||||
mprage.nii.gz
|
||||
mri/T1.mgz
|
||||
mri/aparc+aseg.mgz
|
||||
mri/aseg.count.txt
|
||||
mri/aseg.mgz
|
||||
mri/aseg.nii.gz
|
||||
mri/aseg.presurf.mgz
|
||||
mri/brain.finalsurfs.mgz
|
||||
mri/brain.mgz
|
||||
mri/brain.nii.gz
|
||||
mri/brainmask.mgz
|
||||
mri/brainmask.nii.gz
|
||||
mri/filled.mgz
|
||||
mri/lh.dpial.ribbon.mgz
|
||||
mri/lh.dwhite.ribbon.mgz
|
||||
mri/lh.ribbon.mgz
|
||||
mri/norm.mgz
|
||||
mri/norm.nii.gz
|
||||
mri/rh.dpial.ribbon.mgz
|
||||
mri/rh.dwhite.ribbon.mgz
|
||||
mri/rh.ribbon.mgz
|
||||
mri/ribbon.mgz
|
||||
mri/transforms/niftyreg_affine.lta
|
||||
mri/transforms/niftyreg_affine.nii.gz
|
||||
mri/transforms/niftyreg_affine.txt
|
||||
mri/transforms/niftyreg_affine.xfm
|
||||
mri/transforms/talairach.auto.xfm
|
||||
mri/transforms/talairach.xfm
|
||||
mri/wm.mgz
|
||||
surf/10-10-montage.obj
|
||||
surf/10-10-montage.surf
|
||||
surf/10-20-montage.obj
|
||||
surf/10-20-montage.surf
|
||||
surf/10-5-montage.obj
|
||||
surf/10-5-montage.surf
|
||||
surf/HGSN128-montage.obj
|
||||
surf/HGSN128-montage.surf
|
||||
surf/fiducials.obj
|
||||
surf/fiducials.surf
|
||||
surf/lh.area
|
||||
surf/lh.curv
|
||||
surf/lh.defects
|
||||
surf/lh.inflated
|
||||
surf/lh.inflated.H
|
||||
surf/lh.inflated.K
|
||||
surf/lh.input
|
||||
surf/lh.orig
|
||||
surf/lh.orig.euler.txt
|
||||
surf/lh.orig_corrected
|
||||
surf/lh.pial
|
||||
surf/lh.qsphere
|
||||
surf/lh.qsphere.nofix
|
||||
surf/lh.smoothwm
|
||||
surf/lh.smoothwm1
|
||||
surf/lh.smoothwm2
|
||||
surf/lh.smoothwm3
|
||||
surf/lh.smoothwm4
|
||||
surf/lh.smoothwm5
|
||||
surf/lh.sphere
|
||||
surf/lh.sphere.reg
|
||||
surf/lh.sulc
|
||||
surf/lh.thickness
|
||||
surf/lh.white
|
||||
surf/rh.area
|
||||
surf/rh.curv
|
||||
surf/rh.defects
|
||||
surf/rh.inflated
|
||||
surf/rh.inflated.H
|
||||
surf/rh.inflated.K
|
||||
surf/rh.input
|
||||
surf/rh.orig
|
||||
surf/rh.orig.euler.txt
|
||||
surf/rh.orig_corrected
|
||||
surf/rh.pial
|
||||
surf/rh.qsphere
|
||||
surf/rh.qsphere.nofix
|
||||
surf/rh.smoothwm
|
||||
surf/rh.smoothwm1
|
||||
surf/rh.smoothwm2
|
||||
surf/rh.smoothwm3
|
||||
surf/rh.smoothwm4
|
||||
surf/rh.smoothwm5
|
||||
surf/rh.sphere
|
||||
surf/rh.sphere.reg
|
||||
surf/rh.sulc
|
||||
surf/rh.thickness
|
||||
surf/rh.white
|
||||
117
mne/datasets/_infant/ANTS2-0Months3T.txt
Normal file
117
mne/datasets/_infant/ANTS2-0Months3T.txt
Normal file
@@ -0,0 +1,117 @@
|
||||
bem/ANTS2-0Months3T-5120-5120-5120-bem-sol.fif
|
||||
bem/ANTS2-0Months3T-5120-5120-5120-bem.fif
|
||||
bem/ANTS2-0Months3T-fiducials.fif
|
||||
bem/ANTS2-0Months3T-head.fif
|
||||
bem/ANTS2-0Months3T-oct-6-src.fif
|
||||
bem/ANTS2-0Months3T-vol-5-src.fif
|
||||
bem/inner_skull.surf
|
||||
bem/inner_skull_large.surf
|
||||
bem/outer_skin.surf
|
||||
bem/outer_skin_large.surf
|
||||
bem/outer_skull.surf
|
||||
bem/outer_skull_large.surf
|
||||
flirt_trans_mat.txt
|
||||
label/aparc.annot.ctab
|
||||
label/lh.aparc.a2009s.annot
|
||||
label/lh.aparc.annot
|
||||
label/lh.cortex.label
|
||||
label/rh.aparc.a2009s.annot
|
||||
label/rh.aparc.annot
|
||||
label/rh.cortex.label
|
||||
montages/10-10-montage.fif
|
||||
montages/10-10_electrodes.tsv
|
||||
montages/10-20-montage.fif
|
||||
montages/10-20_electrodes.tsv
|
||||
montages/10-5-montage.fif
|
||||
montages/10-5_electrodes.tsv
|
||||
montages/HGSN128-montage.fif
|
||||
montages/HGSN128_electrodes.tsv
|
||||
montages/HGSN129-montage.fif
|
||||
montages/HGSN129_electrodes.tsv
|
||||
mprage.nii.gz
|
||||
mri/T1.mgz
|
||||
mri/aparc+aseg.mgz
|
||||
mri/aseg.count.txt
|
||||
mri/aseg.mgz
|
||||
mri/aseg.nii.gz
|
||||
mri/aseg.presurf.mgz
|
||||
mri/brain.finalsurfs.mgz
|
||||
mri/brain.mgz
|
||||
mri/brain.nii.gz
|
||||
mri/brainmask.mgz
|
||||
mri/brainmask.nii.gz
|
||||
mri/filled.mgz
|
||||
mri/lh.dpial.ribbon.mgz
|
||||
mri/lh.dwhite.ribbon.mgz
|
||||
mri/lh.ribbon.mgz
|
||||
mri/norm.mgz
|
||||
mri/norm.nii.gz
|
||||
mri/rh.dpial.ribbon.mgz
|
||||
mri/rh.dwhite.ribbon.mgz
|
||||
mri/rh.ribbon.mgz
|
||||
mri/ribbon.mgz
|
||||
mri/transforms/niftyreg_affine.lta
|
||||
mri/transforms/niftyreg_affine.nii.gz
|
||||
mri/transforms/niftyreg_affine.txt
|
||||
mri/transforms/niftyreg_affine.xfm
|
||||
mri/transforms/talairach.auto.xfm
|
||||
mri/transforms/talairach.xfm
|
||||
mri/wm.mgz
|
||||
surf/10-10-montage.obj
|
||||
surf/10-10-montage.surf
|
||||
surf/10-20-montage.obj
|
||||
surf/10-20-montage.surf
|
||||
surf/10-5-montage.obj
|
||||
surf/10-5-montage.surf
|
||||
surf/HGSN128-montage.obj
|
||||
surf/HGSN128-montage.surf
|
||||
surf/fiducials.obj
|
||||
surf/fiducials.surf
|
||||
surf/lh.area
|
||||
surf/lh.curv
|
||||
surf/lh.defects
|
||||
surf/lh.inflated
|
||||
surf/lh.inflated.H
|
||||
surf/lh.inflated.K
|
||||
surf/lh.input
|
||||
surf/lh.orig
|
||||
surf/lh.orig.euler.txt
|
||||
surf/lh.orig_corrected
|
||||
surf/lh.pial
|
||||
surf/lh.qsphere
|
||||
surf/lh.qsphere.nofix
|
||||
surf/lh.smoothwm
|
||||
surf/lh.smoothwm1
|
||||
surf/lh.smoothwm2
|
||||
surf/lh.smoothwm3
|
||||
surf/lh.smoothwm4
|
||||
surf/lh.smoothwm5
|
||||
surf/lh.sphere
|
||||
surf/lh.sphere.reg
|
||||
surf/lh.sulc
|
||||
surf/lh.thickness
|
||||
surf/lh.white
|
||||
surf/rh.area
|
||||
surf/rh.curv
|
||||
surf/rh.defects
|
||||
surf/rh.inflated
|
||||
surf/rh.inflated.H
|
||||
surf/rh.inflated.K
|
||||
surf/rh.input
|
||||
surf/rh.orig
|
||||
surf/rh.orig.euler.txt
|
||||
surf/rh.orig_corrected
|
||||
surf/rh.pial
|
||||
surf/rh.qsphere
|
||||
surf/rh.qsphere.nofix
|
||||
surf/rh.smoothwm
|
||||
surf/rh.smoothwm1
|
||||
surf/rh.smoothwm2
|
||||
surf/rh.smoothwm3
|
||||
surf/rh.smoothwm4
|
||||
surf/rh.smoothwm5
|
||||
surf/rh.sphere
|
||||
surf/rh.sphere.reg
|
||||
surf/rh.sulc
|
||||
surf/rh.thickness
|
||||
surf/rh.white
|
||||
117
mne/datasets/_infant/ANTS2-0Weeks3T.txt
Normal file
117
mne/datasets/_infant/ANTS2-0Weeks3T.txt
Normal file
@@ -0,0 +1,117 @@
|
||||
bem/ANTS2-0Weeks3T-5120-5120-5120-bem-sol.fif
|
||||
bem/ANTS2-0Weeks3T-5120-5120-5120-bem.fif
|
||||
bem/ANTS2-0Weeks3T-fiducials.fif
|
||||
bem/ANTS2-0Weeks3T-head.fif
|
||||
bem/ANTS2-0Weeks3T-oct-6-src.fif
|
||||
bem/ANTS2-0Weeks3T-vol-5-src.fif
|
||||
bem/inner_skull.surf
|
||||
bem/inner_skull_large.surf
|
||||
bem/outer_skin.surf
|
||||
bem/outer_skin_large.surf
|
||||
bem/outer_skull.surf
|
||||
bem/outer_skull_large.surf
|
||||
flirt_trans_mat.txt
|
||||
label/aparc.annot.ctab
|
||||
label/lh.aparc.a2009s.annot
|
||||
label/lh.aparc.annot
|
||||
label/lh.cortex.label
|
||||
label/rh.aparc.a2009s.annot
|
||||
label/rh.aparc.annot
|
||||
label/rh.cortex.label
|
||||
montages/10-10-montage.fif
|
||||
montages/10-10_electrodes.tsv
|
||||
montages/10-20-montage.fif
|
||||
montages/10-20_electrodes.tsv
|
||||
montages/10-5-montage.fif
|
||||
montages/10-5_electrodes.tsv
|
||||
montages/HGSN128-montage.fif
|
||||
montages/HGSN128_electrodes.tsv
|
||||
montages/HGSN129-montage.fif
|
||||
montages/HGSN129_electrodes.tsv
|
||||
mprage.nii.gz
|
||||
mri/T1.mgz
|
||||
mri/aparc+aseg.mgz
|
||||
mri/aseg.count.txt
|
||||
mri/aseg.mgz
|
||||
mri/aseg.nii.gz
|
||||
mri/aseg.presurf.mgz
|
||||
mri/brain.finalsurfs.mgz
|
||||
mri/brain.mgz
|
||||
mri/brain.nii.gz
|
||||
mri/brainmask.mgz
|
||||
mri/brainmask.nii.gz
|
||||
mri/filled.mgz
|
||||
mri/lh.dpial.ribbon.mgz
|
||||
mri/lh.dwhite.ribbon.mgz
|
||||
mri/lh.ribbon.mgz
|
||||
mri/norm.mgz
|
||||
mri/norm.nii.gz
|
||||
mri/rh.dpial.ribbon.mgz
|
||||
mri/rh.dwhite.ribbon.mgz
|
||||
mri/rh.ribbon.mgz
|
||||
mri/ribbon.mgz
|
||||
mri/transforms/niftyreg_affine.lta
|
||||
mri/transforms/niftyreg_affine.nii.gz
|
||||
mri/transforms/niftyreg_affine.txt
|
||||
mri/transforms/niftyreg_affine.xfm
|
||||
mri/transforms/talairach.auto.xfm
|
||||
mri/transforms/talairach.xfm
|
||||
mri/wm.mgz
|
||||
surf/10-10-montage.obj
|
||||
surf/10-10-montage.surf
|
||||
surf/10-20-montage.obj
|
||||
surf/10-20-montage.surf
|
||||
surf/10-5-montage.obj
|
||||
surf/10-5-montage.surf
|
||||
surf/HGSN128-montage.obj
|
||||
surf/HGSN128-montage.surf
|
||||
surf/fiducials.obj
|
||||
surf/fiducials.surf
|
||||
surf/lh.area
|
||||
surf/lh.curv
|
||||
surf/lh.defects
|
||||
surf/lh.inflated
|
||||
surf/lh.inflated.H
|
||||
surf/lh.inflated.K
|
||||
surf/lh.input
|
||||
surf/lh.orig
|
||||
surf/lh.orig.euler.txt
|
||||
surf/lh.orig_corrected
|
||||
surf/lh.pial
|
||||
surf/lh.qsphere
|
||||
surf/lh.qsphere.nofix
|
||||
surf/lh.smoothwm
|
||||
surf/lh.smoothwm1
|
||||
surf/lh.smoothwm2
|
||||
surf/lh.smoothwm3
|
||||
surf/lh.smoothwm4
|
||||
surf/lh.smoothwm5
|
||||
surf/lh.sphere
|
||||
surf/lh.sphere.reg
|
||||
surf/lh.sulc
|
||||
surf/lh.thickness
|
||||
surf/lh.white
|
||||
surf/rh.area
|
||||
surf/rh.curv
|
||||
surf/rh.defects
|
||||
surf/rh.inflated
|
||||
surf/rh.inflated.H
|
||||
surf/rh.inflated.K
|
||||
surf/rh.input
|
||||
surf/rh.orig
|
||||
surf/rh.orig.euler.txt
|
||||
surf/rh.orig_corrected
|
||||
surf/rh.pial
|
||||
surf/rh.qsphere
|
||||
surf/rh.qsphere.nofix
|
||||
surf/rh.smoothwm
|
||||
surf/rh.smoothwm1
|
||||
surf/rh.smoothwm2
|
||||
surf/rh.smoothwm3
|
||||
surf/rh.smoothwm4
|
||||
surf/rh.smoothwm5
|
||||
surf/rh.sphere
|
||||
surf/rh.sphere.reg
|
||||
surf/rh.sulc
|
||||
surf/rh.thickness
|
||||
surf/rh.white
|
||||
121
mne/datasets/_infant/ANTS2-0Years3T.txt
Normal file
121
mne/datasets/_infant/ANTS2-0Years3T.txt
Normal file
@@ -0,0 +1,121 @@
|
||||
atlases/brain_ANTS_IXI_atlas_head_space.nii.gz
|
||||
atlases/brain_ANTS_LPBA40_atlas_head_space.nii.gz
|
||||
atlases/brain_IXI_atlas_head_space.nii.gz
|
||||
atlases/brain_LPBA40_atlas_head_space.nii.gz
|
||||
bem/ANTS2-0Years3T-5120-5120-5120-bem-sol.fif
|
||||
bem/ANTS2-0Years3T-5120-5120-5120-bem.fif
|
||||
bem/ANTS2-0Years3T-fiducials.fif
|
||||
bem/ANTS2-0Years3T-head.fif
|
||||
bem/ANTS2-0Years3T-oct-6-src.fif
|
||||
bem/ANTS2-0Years3T-vol-5-src.fif
|
||||
bem/inner_skull.surf
|
||||
bem/inner_skull_large.surf
|
||||
bem/outer_skin.surf
|
||||
bem/outer_skin_large.surf
|
||||
bem/outer_skull.surf
|
||||
bem/outer_skull_large.surf
|
||||
flirt_trans_mat.txt
|
||||
label/aparc.annot.ctab
|
||||
label/lh.aparc.a2009s.annot
|
||||
label/lh.aparc.annot
|
||||
label/lh.cortex.label
|
||||
label/rh.aparc.a2009s.annot
|
||||
label/rh.aparc.annot
|
||||
label/rh.cortex.label
|
||||
montages/10-10-montage.fif
|
||||
montages/10-10_electrodes.tsv
|
||||
montages/10-20-montage.fif
|
||||
montages/10-20_electrodes.tsv
|
||||
montages/10-5-montage.fif
|
||||
montages/10-5_electrodes.tsv
|
||||
montages/HGSN128-montage.fif
|
||||
montages/HGSN128_electrodes.tsv
|
||||
montages/HGSN129-montage.fif
|
||||
montages/HGSN129_electrodes.tsv
|
||||
mprage.nii.gz
|
||||
mri/T1.mgz
|
||||
mri/aparc+aseg.mgz
|
||||
mri/aseg.count.txt
|
||||
mri/aseg.mgz
|
||||
mri/aseg.nii.gz
|
||||
mri/aseg.presurf.mgz
|
||||
mri/brain.finalsurfs.mgz
|
||||
mri/brain.mgz
|
||||
mri/brain.nii.gz
|
||||
mri/brainmask.mgz
|
||||
mri/brainmask.nii.gz
|
||||
mri/filled.mgz
|
||||
mri/lh.dpial.ribbon.mgz
|
||||
mri/lh.dwhite.ribbon.mgz
|
||||
mri/lh.ribbon.mgz
|
||||
mri/norm.mgz
|
||||
mri/norm.nii.gz
|
||||
mri/rh.dpial.ribbon.mgz
|
||||
mri/rh.dwhite.ribbon.mgz
|
||||
mri/rh.ribbon.mgz
|
||||
mri/ribbon.mgz
|
||||
mri/transforms/niftyreg_affine.lta
|
||||
mri/transforms/niftyreg_affine.nii.gz
|
||||
mri/transforms/niftyreg_affine.txt
|
||||
mri/transforms/niftyreg_affine.xfm
|
||||
mri/transforms/talairach.auto.xfm
|
||||
mri/transforms/talairach.xfm
|
||||
mri/wm.mgz
|
||||
surf/10-10-montage.obj
|
||||
surf/10-10-montage.surf
|
||||
surf/10-20-montage.obj
|
||||
surf/10-20-montage.surf
|
||||
surf/10-5-montage.obj
|
||||
surf/10-5-montage.surf
|
||||
surf/HGSN128-montage.obj
|
||||
surf/HGSN128-montage.surf
|
||||
surf/fiducials.obj
|
||||
surf/fiducials.surf
|
||||
surf/lh.area
|
||||
surf/lh.curv
|
||||
surf/lh.defects
|
||||
surf/lh.inflated
|
||||
surf/lh.inflated.H
|
||||
surf/lh.inflated.K
|
||||
surf/lh.input
|
||||
surf/lh.orig
|
||||
surf/lh.orig.euler.txt
|
||||
surf/lh.orig_corrected
|
||||
surf/lh.pial
|
||||
surf/lh.qsphere
|
||||
surf/lh.qsphere.nofix
|
||||
surf/lh.smoothwm
|
||||
surf/lh.smoothwm1
|
||||
surf/lh.smoothwm2
|
||||
surf/lh.smoothwm3
|
||||
surf/lh.smoothwm4
|
||||
surf/lh.smoothwm5
|
||||
surf/lh.sphere
|
||||
surf/lh.sphere.reg
|
||||
surf/lh.sulc
|
||||
surf/lh.thickness
|
||||
surf/lh.white
|
||||
surf/rh.area
|
||||
surf/rh.curv
|
||||
surf/rh.defects
|
||||
surf/rh.inflated
|
||||
surf/rh.inflated.H
|
||||
surf/rh.inflated.K
|
||||
surf/rh.input
|
||||
surf/rh.orig
|
||||
surf/rh.orig.euler.txt
|
||||
surf/rh.orig_corrected
|
||||
surf/rh.pial
|
||||
surf/rh.qsphere
|
||||
surf/rh.qsphere.nofix
|
||||
surf/rh.smoothwm
|
||||
surf/rh.smoothwm1
|
||||
surf/rh.smoothwm2
|
||||
surf/rh.smoothwm3
|
||||
surf/rh.smoothwm4
|
||||
surf/rh.smoothwm5
|
||||
surf/rh.sphere
|
||||
surf/rh.sphere.reg
|
||||
surf/rh.sulc
|
||||
surf/rh.thickness
|
||||
surf/rh.white
|
||||
121
mne/datasets/_infant/ANTS3-0Months3T.txt
Normal file
121
mne/datasets/_infant/ANTS3-0Months3T.txt
Normal file
@@ -0,0 +1,121 @@
|
||||
atlases/brain_ANTS_IXI_atlas_head_space.nii.gz
|
||||
atlases/brain_ANTS_LPBA40_atlas_head_space.nii.gz
|
||||
atlases/brain_IXI_atlas_head_space.nii.gz
|
||||
atlases/brain_LPBA40_atlas_head_space.nii.gz
|
||||
bem/ANTS3-0Months3T-5120-5120-5120-bem-sol.fif
|
||||
bem/ANTS3-0Months3T-5120-5120-5120-bem.fif
|
||||
bem/ANTS3-0Months3T-fiducials.fif
|
||||
bem/ANTS3-0Months3T-head.fif
|
||||
bem/ANTS3-0Months3T-oct-6-src.fif
|
||||
bem/ANTS3-0Months3T-vol-5-src.fif
|
||||
bem/inner_skull.surf
|
||||
bem/inner_skull_large.surf
|
||||
bem/outer_skin.surf
|
||||
bem/outer_skin_large.surf
|
||||
bem/outer_skull.surf
|
||||
bem/outer_skull_large.surf
|
||||
flirt_trans_mat.txt
|
||||
label/aparc.annot.ctab
|
||||
label/lh.aparc.a2009s.annot
|
||||
label/lh.aparc.annot
|
||||
label/lh.cortex.label
|
||||
label/rh.aparc.a2009s.annot
|
||||
label/rh.aparc.annot
|
||||
label/rh.cortex.label
|
||||
montages/10-10-montage.fif
|
||||
montages/10-10_electrodes.tsv
|
||||
montages/10-20-montage.fif
|
||||
montages/10-20_electrodes.tsv
|
||||
montages/10-5-montage.fif
|
||||
montages/10-5_electrodes.tsv
|
||||
montages/HGSN128-montage.fif
|
||||
montages/HGSN128_electrodes.tsv
|
||||
montages/HGSN129-montage.fif
|
||||
montages/HGSN129_electrodes.tsv
|
||||
mprage.nii.gz
|
||||
mri/T1.mgz
|
||||
mri/aparc+aseg.mgz
|
||||
mri/aseg.count.txt
|
||||
mri/aseg.mgz
|
||||
mri/aseg.nii.gz
|
||||
mri/aseg.presurf.mgz
|
||||
mri/brain.finalsurfs.mgz
|
||||
mri/brain.mgz
|
||||
mri/brain.nii.gz
|
||||
mri/brainmask.mgz
|
||||
mri/brainmask.nii.gz
|
||||
mri/filled.mgz
|
||||
mri/lh.dpial.ribbon.mgz
|
||||
mri/lh.dwhite.ribbon.mgz
|
||||
mri/lh.ribbon.mgz
|
||||
mri/norm.mgz
|
||||
mri/norm.nii.gz
|
||||
mri/rh.dpial.ribbon.mgz
|
||||
mri/rh.dwhite.ribbon.mgz
|
||||
mri/rh.ribbon.mgz
|
||||
mri/ribbon.mgz
|
||||
mri/transforms/niftyreg_affine.lta
|
||||
mri/transforms/niftyreg_affine.nii.gz
|
||||
mri/transforms/niftyreg_affine.txt
|
||||
mri/transforms/niftyreg_affine.xfm
|
||||
mri/transforms/talairach.auto.xfm
|
||||
mri/transforms/talairach.xfm
|
||||
mri/wm.mgz
|
||||
surf/10-10-montage.obj
|
||||
surf/10-10-montage.surf
|
||||
surf/10-20-montage.obj
|
||||
surf/10-20-montage.surf
|
||||
surf/10-5-montage.obj
|
||||
surf/10-5-montage.surf
|
||||
surf/HGSN128-montage.obj
|
||||
surf/HGSN128-montage.surf
|
||||
surf/fiducials.obj
|
||||
surf/fiducials.surf
|
||||
surf/lh.area
|
||||
surf/lh.curv
|
||||
surf/lh.defects
|
||||
surf/lh.inflated
|
||||
surf/lh.inflated.H
|
||||
surf/lh.inflated.K
|
||||
surf/lh.input
|
||||
surf/lh.orig
|
||||
surf/lh.orig.euler.txt
|
||||
surf/lh.orig_corrected
|
||||
surf/lh.pial
|
||||
surf/lh.qsphere
|
||||
surf/lh.qsphere.nofix
|
||||
surf/lh.smoothwm
|
||||
surf/lh.smoothwm1
|
||||
surf/lh.smoothwm2
|
||||
surf/lh.smoothwm3
|
||||
surf/lh.smoothwm4
|
||||
surf/lh.smoothwm5
|
||||
surf/lh.sphere
|
||||
surf/lh.sphere.reg
|
||||
surf/lh.sulc
|
||||
surf/lh.thickness
|
||||
surf/lh.white
|
||||
surf/rh.area
|
||||
surf/rh.curv
|
||||
surf/rh.defects
|
||||
surf/rh.inflated
|
||||
surf/rh.inflated.H
|
||||
surf/rh.inflated.K
|
||||
surf/rh.input
|
||||
surf/rh.orig
|
||||
surf/rh.orig.euler.txt
|
||||
surf/rh.orig_corrected
|
||||
surf/rh.pial
|
||||
surf/rh.qsphere
|
||||
surf/rh.qsphere.nofix
|
||||
surf/rh.smoothwm
|
||||
surf/rh.smoothwm1
|
||||
surf/rh.smoothwm2
|
||||
surf/rh.smoothwm3
|
||||
surf/rh.smoothwm4
|
||||
surf/rh.smoothwm5
|
||||
surf/rh.sphere
|
||||
surf/rh.sphere.reg
|
||||
surf/rh.sulc
|
||||
surf/rh.thickness
|
||||
surf/rh.white
|
||||
121
mne/datasets/_infant/ANTS4-5Months3T.txt
Normal file
121
mne/datasets/_infant/ANTS4-5Months3T.txt
Normal file
@@ -0,0 +1,121 @@
|
||||
atlases/brain_ANTS_IXI_atlas_head_space.nii.gz
|
||||
atlases/brain_ANTS_LPBA40_atlas_head_space.nii.gz
|
||||
atlases/brain_IXI_atlas_head_space.nii.gz
|
||||
atlases/brain_LPBA40_atlas_head_space.nii.gz
|
||||
bem/ANTS4-5Months3T-5120-5120-5120-bem-sol.fif
|
||||
bem/ANTS4-5Months3T-5120-5120-5120-bem.fif
|
||||
bem/ANTS4-5Months3T-fiducials.fif
|
||||
bem/ANTS4-5Months3T-head.fif
|
||||
bem/ANTS4-5Months3T-oct-6-src.fif
|
||||
bem/ANTS4-5Months3T-vol-5-src.fif
|
||||
bem/inner_skull.surf
|
||||
bem/inner_skull_large.surf
|
||||
bem/outer_skin.surf
|
||||
bem/outer_skin_large.surf
|
||||
bem/outer_skull.surf
|
||||
bem/outer_skull_large.surf
|
||||
flirt_trans_mat.txt
|
||||
label/aparc.annot.ctab
|
||||
label/lh.aparc.a2009s.annot
|
||||
label/lh.aparc.annot
|
||||
label/lh.cortex.label
|
||||
label/rh.aparc.a2009s.annot
|
||||
label/rh.aparc.annot
|
||||
label/rh.cortex.label
|
||||
montages/10-10-montage.fif
|
||||
montages/10-10_electrodes.tsv
|
||||
montages/10-20-montage.fif
|
||||
montages/10-20_electrodes.tsv
|
||||
montages/10-5-montage.fif
|
||||
montages/10-5_electrodes.tsv
|
||||
montages/HGSN128-montage.fif
|
||||
montages/HGSN128_electrodes.tsv
|
||||
montages/HGSN129-montage.fif
|
||||
montages/HGSN129_electrodes.tsv
|
||||
mprage.nii.gz
|
||||
mri/T1.mgz
|
||||
mri/aparc+aseg.mgz
|
||||
mri/aseg.count.txt
|
||||
mri/aseg.mgz
|
||||
mri/aseg.nii.gz
|
||||
mri/aseg.presurf.mgz
|
||||
mri/brain.finalsurfs.mgz
|
||||
mri/brain.mgz
|
||||
mri/brain.nii.gz
|
||||
mri/brainmask.mgz
|
||||
mri/brainmask.nii.gz
|
||||
mri/filled.mgz
|
||||
mri/lh.dpial.ribbon.mgz
|
||||
mri/lh.dwhite.ribbon.mgz
|
||||
mri/lh.ribbon.mgz
|
||||
mri/norm.mgz
|
||||
mri/norm.nii.gz
|
||||
mri/rh.dpial.ribbon.mgz
|
||||
mri/rh.dwhite.ribbon.mgz
|
||||
mri/rh.ribbon.mgz
|
||||
mri/ribbon.mgz
|
||||
mri/transforms/niftyreg_affine.lta
|
||||
mri/transforms/niftyreg_affine.nii.gz
|
||||
mri/transforms/niftyreg_affine.txt
|
||||
mri/transforms/niftyreg_affine.xfm
|
||||
mri/transforms/talairach.auto.xfm
|
||||
mri/transforms/talairach.xfm
|
||||
mri/wm.mgz
|
||||
surf/10-10-montage.obj
|
||||
surf/10-10-montage.surf
|
||||
surf/10-20-montage.obj
|
||||
surf/10-20-montage.surf
|
||||
surf/10-5-montage.obj
|
||||
surf/10-5-montage.surf
|
||||
surf/HGSN128-montage.obj
|
||||
surf/HGSN128-montage.surf
|
||||
surf/fiducials.obj
|
||||
surf/fiducials.surf
|
||||
surf/lh.area
|
||||
surf/lh.curv
|
||||
surf/lh.defects
|
||||
surf/lh.inflated
|
||||
surf/lh.inflated.H
|
||||
surf/lh.inflated.K
|
||||
surf/lh.input
|
||||
surf/lh.orig
|
||||
surf/lh.orig.euler.txt
|
||||
surf/lh.orig_corrected
|
||||
surf/lh.pial
|
||||
surf/lh.qsphere
|
||||
surf/lh.qsphere.nofix
|
||||
surf/lh.smoothwm
|
||||
surf/lh.smoothwm1
|
||||
surf/lh.smoothwm2
|
||||
surf/lh.smoothwm3
|
||||
surf/lh.smoothwm4
|
||||
surf/lh.smoothwm5
|
||||
surf/lh.sphere
|
||||
surf/lh.sphere.reg
|
||||
surf/lh.sulc
|
||||
surf/lh.thickness
|
||||
surf/lh.white
|
||||
surf/rh.area
|
||||
surf/rh.curv
|
||||
surf/rh.defects
|
||||
surf/rh.inflated
|
||||
surf/rh.inflated.H
|
||||
surf/rh.inflated.K
|
||||
surf/rh.input
|
||||
surf/rh.orig
|
||||
surf/rh.orig.euler.txt
|
||||
surf/rh.orig_corrected
|
||||
surf/rh.pial
|
||||
surf/rh.qsphere
|
||||
surf/rh.qsphere.nofix
|
||||
surf/rh.smoothwm
|
||||
surf/rh.smoothwm1
|
||||
surf/rh.smoothwm2
|
||||
surf/rh.smoothwm3
|
||||
surf/rh.smoothwm4
|
||||
surf/rh.smoothwm5
|
||||
surf/rh.sphere
|
||||
surf/rh.sphere.reg
|
||||
surf/rh.sulc
|
||||
surf/rh.thickness
|
||||
surf/rh.white
|
||||
121
mne/datasets/_infant/ANTS6-0Months3T.txt
Normal file
121
mne/datasets/_infant/ANTS6-0Months3T.txt
Normal file
@@ -0,0 +1,121 @@
|
||||
atlases/brain_ANTS_IXI_atlas_head_space.nii.gz
|
||||
atlases/brain_ANTS_LPBA40_atlas_head_space.nii.gz
|
||||
atlases/brain_IXI_atlas_head_space.nii.gz
|
||||
atlases/brain_LPBA40_atlas_head_space.nii.gz
|
||||
bem/ANTS6-0Months3T-5120-5120-5120-bem-sol.fif
|
||||
bem/ANTS6-0Months3T-5120-5120-5120-bem.fif
|
||||
bem/ANTS6-0Months3T-fiducials.fif
|
||||
bem/ANTS6-0Months3T-head.fif
|
||||
bem/ANTS6-0Months3T-oct-6-src.fif
|
||||
bem/ANTS6-0Months3T-vol-5-src.fif
|
||||
bem/inner_skull.surf
|
||||
bem/inner_skull_large.surf
|
||||
bem/outer_skin.surf
|
||||
bem/outer_skin_large.surf
|
||||
bem/outer_skull.surf
|
||||
bem/outer_skull_large.surf
|
||||
flirt_trans_mat.txt
|
||||
label/aparc.annot.ctab
|
||||
label/lh.aparc.a2009s.annot
|
||||
label/lh.aparc.annot
|
||||
label/lh.cortex.label
|
||||
label/rh.aparc.a2009s.annot
|
||||
label/rh.aparc.annot
|
||||
label/rh.cortex.label
|
||||
montages/10-10-montage.fif
|
||||
montages/10-10_electrodes.tsv
|
||||
montages/10-20-montage.fif
|
||||
montages/10-20_electrodes.tsv
|
||||
montages/10-5-montage.fif
|
||||
montages/10-5_electrodes.tsv
|
||||
montages/HGSN128-montage.fif
|
||||
montages/HGSN128_electrodes.tsv
|
||||
montages/HGSN129-montage.fif
|
||||
montages/HGSN129_electrodes.tsv
|
||||
mprage.nii.gz
|
||||
mri/T1.mgz
|
||||
mri/aparc+aseg.mgz
|
||||
mri/aseg.count.txt
|
||||
mri/aseg.mgz
|
||||
mri/aseg.nii.gz
|
||||
mri/aseg.presurf.mgz
|
||||
mri/brain.finalsurfs.mgz
|
||||
mri/brain.mgz
|
||||
mri/brain.nii.gz
|
||||
mri/brainmask.mgz
|
||||
mri/brainmask.nii.gz
|
||||
mri/filled.mgz
|
||||
mri/lh.dpial.ribbon.mgz
|
||||
mri/lh.dwhite.ribbon.mgz
|
||||
mri/lh.ribbon.mgz
|
||||
mri/norm.mgz
|
||||
mri/norm.nii.gz
|
||||
mri/rh.dpial.ribbon.mgz
|
||||
mri/rh.dwhite.ribbon.mgz
|
||||
mri/rh.ribbon.mgz
|
||||
mri/ribbon.mgz
|
||||
mri/transforms/niftyreg_affine.lta
|
||||
mri/transforms/niftyreg_affine.nii.gz
|
||||
mri/transforms/niftyreg_affine.txt
|
||||
mri/transforms/niftyreg_affine.xfm
|
||||
mri/transforms/talairach.auto.xfm
|
||||
mri/transforms/talairach.xfm
|
||||
mri/wm.mgz
|
||||
surf/10-10-montage.obj
|
||||
surf/10-10-montage.surf
|
||||
surf/10-20-montage.obj
|
||||
surf/10-20-montage.surf
|
||||
surf/10-5-montage.obj
|
||||
surf/10-5-montage.surf
|
||||
surf/HGSN128-montage.obj
|
||||
surf/HGSN128-montage.surf
|
||||
surf/fiducials.obj
|
||||
surf/fiducials.surf
|
||||
surf/lh.area
|
||||
surf/lh.curv
|
||||
surf/lh.defects
|
||||
surf/lh.inflated
|
||||
surf/lh.inflated.H
|
||||
surf/lh.inflated.K
|
||||
surf/lh.input
|
||||
surf/lh.orig
|
||||
surf/lh.orig.euler.txt
|
||||
surf/lh.orig_corrected
|
||||
surf/lh.pial
|
||||
surf/lh.qsphere
|
||||
surf/lh.qsphere.nofix
|
||||
surf/lh.smoothwm
|
||||
surf/lh.smoothwm1
|
||||
surf/lh.smoothwm2
|
||||
surf/lh.smoothwm3
|
||||
surf/lh.smoothwm4
|
||||
surf/lh.smoothwm5
|
||||
surf/lh.sphere
|
||||
surf/lh.sphere.reg
|
||||
surf/lh.sulc
|
||||
surf/lh.thickness
|
||||
surf/lh.white
|
||||
surf/rh.area
|
||||
surf/rh.curv
|
||||
surf/rh.defects
|
||||
surf/rh.inflated
|
||||
surf/rh.inflated.H
|
||||
surf/rh.inflated.K
|
||||
surf/rh.input
|
||||
surf/rh.orig
|
||||
surf/rh.orig.euler.txt
|
||||
surf/rh.orig_corrected
|
||||
surf/rh.pial
|
||||
surf/rh.qsphere
|
||||
surf/rh.qsphere.nofix
|
||||
surf/rh.smoothwm
|
||||
surf/rh.smoothwm1
|
||||
surf/rh.smoothwm2
|
||||
surf/rh.smoothwm3
|
||||
surf/rh.smoothwm4
|
||||
surf/rh.smoothwm5
|
||||
surf/rh.sphere
|
||||
surf/rh.sphere.reg
|
||||
surf/rh.sulc
|
||||
surf/rh.thickness
|
||||
surf/rh.white
|
||||
121
mne/datasets/_infant/ANTS7-5Months3T.txt
Normal file
121
mne/datasets/_infant/ANTS7-5Months3T.txt
Normal file
@@ -0,0 +1,121 @@
|
||||
atlases/brain_ANTS_IXI_atlas_head_space.nii.gz
|
||||
atlases/brain_ANTS_LPBA40_atlas_head_space.nii.gz
|
||||
atlases/brain_IXI_atlas_head_space.nii.gz
|
||||
atlases/brain_LPBA40_atlas_head_space.nii.gz
|
||||
bem/ANTS7-5Months3T-5120-5120-5120-bem-sol.fif
|
||||
bem/ANTS7-5Months3T-5120-5120-5120-bem.fif
|
||||
bem/ANTS7-5Months3T-fiducials.fif
|
||||
bem/ANTS7-5Months3T-head.fif
|
||||
bem/ANTS7-5Months3T-oct-6-src.fif
|
||||
bem/ANTS7-5Months3T-vol-5-src.fif
|
||||
bem/inner_skull.surf
|
||||
bem/inner_skull_large.surf
|
||||
bem/outer_skin.surf
|
||||
bem/outer_skin_large.surf
|
||||
bem/outer_skull.surf
|
||||
bem/outer_skull_large.surf
|
||||
flirt_trans_mat.txt
|
||||
label/aparc.annot.ctab
|
||||
label/lh.aparc.a2009s.annot
|
||||
label/lh.aparc.annot
|
||||
label/lh.cortex.label
|
||||
label/rh.aparc.a2009s.annot
|
||||
label/rh.aparc.annot
|
||||
label/rh.cortex.label
|
||||
montages/10-10-montage.fif
|
||||
montages/10-10_electrodes.tsv
|
||||
montages/10-20-montage.fif
|
||||
montages/10-20_electrodes.tsv
|
||||
montages/10-5-montage.fif
|
||||
montages/10-5_electrodes.tsv
|
||||
montages/HGSN128-montage.fif
|
||||
montages/HGSN128_electrodes.tsv
|
||||
montages/HGSN129-montage.fif
|
||||
montages/HGSN129_electrodes.tsv
|
||||
mprage.nii.gz
|
||||
mri/T1.mgz
|
||||
mri/aparc+aseg.mgz
|
||||
mri/aseg.count.txt
|
||||
mri/aseg.mgz
|
||||
mri/aseg.nii.gz
|
||||
mri/aseg.presurf.mgz
|
||||
mri/brain.finalsurfs.mgz
|
||||
mri/brain.mgz
|
||||
mri/brain.nii.gz
|
||||
mri/brainmask.mgz
|
||||
mri/brainmask.nii.gz
|
||||
mri/filled.mgz
|
||||
mri/lh.dpial.ribbon.mgz
|
||||
mri/lh.dwhite.ribbon.mgz
|
||||
mri/lh.ribbon.mgz
|
||||
mri/norm.mgz
|
||||
mri/norm.nii.gz
|
||||
mri/rh.dpial.ribbon.mgz
|
||||
mri/rh.dwhite.ribbon.mgz
|
||||
mri/rh.ribbon.mgz
|
||||
mri/ribbon.mgz
|
||||
mri/transforms/niftyreg_affine.lta
|
||||
mri/transforms/niftyreg_affine.nii.gz
|
||||
mri/transforms/niftyreg_affine.txt
|
||||
mri/transforms/niftyreg_affine.xfm
|
||||
mri/transforms/talairach.auto.xfm
|
||||
mri/transforms/talairach.xfm
|
||||
mri/wm.mgz
|
||||
surf/10-10-montage.obj
|
||||
surf/10-10-montage.surf
|
||||
surf/10-20-montage.obj
|
||||
surf/10-20-montage.surf
|
||||
surf/10-5-montage.obj
|
||||
surf/10-5-montage.surf
|
||||
surf/HGSN128-montage.obj
|
||||
surf/HGSN128-montage.surf
|
||||
surf/fiducials.obj
|
||||
surf/fiducials.surf
|
||||
surf/lh.area
|
||||
surf/lh.curv
|
||||
surf/lh.defects
|
||||
surf/lh.inflated
|
||||
surf/lh.inflated.H
|
||||
surf/lh.inflated.K
|
||||
surf/lh.input
|
||||
surf/lh.orig
|
||||
surf/lh.orig.euler.txt
|
||||
surf/lh.orig_corrected
|
||||
surf/lh.pial
|
||||
surf/lh.qsphere
|
||||
surf/lh.qsphere.nofix
|
||||
surf/lh.smoothwm
|
||||
surf/lh.smoothwm1
|
||||
surf/lh.smoothwm2
|
||||
surf/lh.smoothwm3
|
||||
surf/lh.smoothwm4
|
||||
surf/lh.smoothwm5
|
||||
surf/lh.sphere
|
||||
surf/lh.sphere.reg
|
||||
surf/lh.sulc
|
||||
surf/lh.thickness
|
||||
surf/lh.white
|
||||
surf/rh.area
|
||||
surf/rh.curv
|
||||
surf/rh.defects
|
||||
surf/rh.inflated
|
||||
surf/rh.inflated.H
|
||||
surf/rh.inflated.K
|
||||
surf/rh.input
|
||||
surf/rh.orig
|
||||
surf/rh.orig.euler.txt
|
||||
surf/rh.orig_corrected
|
||||
surf/rh.pial
|
||||
surf/rh.qsphere
|
||||
surf/rh.qsphere.nofix
|
||||
surf/rh.smoothwm
|
||||
surf/rh.smoothwm1
|
||||
surf/rh.smoothwm2
|
||||
surf/rh.smoothwm3
|
||||
surf/rh.smoothwm4
|
||||
surf/rh.smoothwm5
|
||||
surf/rh.sphere
|
||||
surf/rh.sphere.reg
|
||||
surf/rh.sulc
|
||||
surf/rh.thickness
|
||||
surf/rh.white
|
||||
121
mne/datasets/_infant/ANTS9-0Months3T.txt
Normal file
121
mne/datasets/_infant/ANTS9-0Months3T.txt
Normal file
@@ -0,0 +1,121 @@
|
||||
atlases/brain_ANTS_IXI_atlas_head_space.nii.gz
|
||||
atlases/brain_ANTS_LPBA40_atlas_head_space.nii.gz
|
||||
atlases/brain_IXI_atlas_head_space.nii.gz
|
||||
atlases/brain_LPBA40_atlas_head_space.nii.gz
|
||||
bem/ANTS9-0Months3T-5120-5120-5120-bem-sol.fif
|
||||
bem/ANTS9-0Months3T-5120-5120-5120-bem.fif
|
||||
bem/ANTS9-0Months3T-fiducials.fif
|
||||
bem/ANTS9-0Months3T-head.fif
|
||||
bem/ANTS9-0Months3T-oct-6-src.fif
|
||||
bem/ANTS9-0Months3T-vol-5-src.fif
|
||||
bem/inner_skull.surf
|
||||
bem/inner_skull_large.surf
|
||||
bem/outer_skin.surf
|
||||
bem/outer_skin_large.surf
|
||||
bem/outer_skull.surf
|
||||
bem/outer_skull_large.surf
|
||||
flirt_trans_mat.txt
|
||||
label/aparc.annot.ctab
|
||||
label/lh.aparc.a2009s.annot
|
||||
label/lh.aparc.annot
|
||||
label/lh.cortex.label
|
||||
label/rh.aparc.a2009s.annot
|
||||
label/rh.aparc.annot
|
||||
label/rh.cortex.label
|
||||
montages/10-10-montage.fif
|
||||
montages/10-10_electrodes.tsv
|
||||
montages/10-20-montage.fif
|
||||
montages/10-20_electrodes.tsv
|
||||
montages/10-5-montage.fif
|
||||
montages/10-5_electrodes.tsv
|
||||
montages/HGSN128-montage.fif
|
||||
montages/HGSN128_electrodes.tsv
|
||||
montages/HGSN129-montage.fif
|
||||
montages/HGSN129_electrodes.tsv
|
||||
mprage.nii.gz
|
||||
mri/T1.mgz
|
||||
mri/aparc+aseg.mgz
|
||||
mri/aseg.count.txt
|
||||
mri/aseg.mgz
|
||||
mri/aseg.nii.gz
|
||||
mri/aseg.presurf.mgz
|
||||
mri/brain.finalsurfs.mgz
|
||||
mri/brain.mgz
|
||||
mri/brain.nii.gz
|
||||
mri/brainmask.mgz
|
||||
mri/brainmask.nii.gz
|
||||
mri/filled.mgz
|
||||
mri/lh.dpial.ribbon.mgz
|
||||
mri/lh.dwhite.ribbon.mgz
|
||||
mri/lh.ribbon.mgz
|
||||
mri/norm.mgz
|
||||
mri/norm.nii.gz
|
||||
mri/rh.dpial.ribbon.mgz
|
||||
mri/rh.dwhite.ribbon.mgz
|
||||
mri/rh.ribbon.mgz
|
||||
mri/ribbon.mgz
|
||||
mri/transforms/niftyreg_affine.lta
|
||||
mri/transforms/niftyreg_affine.nii.gz
|
||||
mri/transforms/niftyreg_affine.txt
|
||||
mri/transforms/niftyreg_affine.xfm
|
||||
mri/transforms/talairach.auto.xfm
|
||||
mri/transforms/talairach.xfm
|
||||
mri/wm.mgz
|
||||
surf/10-10-montage.obj
|
||||
surf/10-10-montage.surf
|
||||
surf/10-20-montage.obj
|
||||
surf/10-20-montage.surf
|
||||
surf/10-5-montage.obj
|
||||
surf/10-5-montage.surf
|
||||
surf/HGSN128-montage.obj
|
||||
surf/HGSN128-montage.surf
|
||||
surf/fiducials.obj
|
||||
surf/fiducials.surf
|
||||
surf/lh.area
|
||||
surf/lh.curv
|
||||
surf/lh.defects
|
||||
surf/lh.inflated
|
||||
surf/lh.inflated.H
|
||||
surf/lh.inflated.K
|
||||
surf/lh.input
|
||||
surf/lh.orig
|
||||
surf/lh.orig.euler.txt
|
||||
surf/lh.orig_corrected
|
||||
surf/lh.pial
|
||||
surf/lh.qsphere
|
||||
surf/lh.qsphere.nofix
|
||||
surf/lh.smoothwm
|
||||
surf/lh.smoothwm1
|
||||
surf/lh.smoothwm2
|
||||
surf/lh.smoothwm3
|
||||
surf/lh.smoothwm4
|
||||
surf/lh.smoothwm5
|
||||
surf/lh.sphere
|
||||
surf/lh.sphere.reg
|
||||
surf/lh.sulc
|
||||
surf/lh.thickness
|
||||
surf/lh.white
|
||||
surf/rh.area
|
||||
surf/rh.curv
|
||||
surf/rh.defects
|
||||
surf/rh.inflated
|
||||
surf/rh.inflated.H
|
||||
surf/rh.inflated.K
|
||||
surf/rh.input
|
||||
surf/rh.orig
|
||||
surf/rh.orig.euler.txt
|
||||
surf/rh.orig_corrected
|
||||
surf/rh.pial
|
||||
surf/rh.qsphere
|
||||
surf/rh.qsphere.nofix
|
||||
surf/rh.smoothwm
|
||||
surf/rh.smoothwm1
|
||||
surf/rh.smoothwm2
|
||||
surf/rh.smoothwm3
|
||||
surf/rh.smoothwm4
|
||||
surf/rh.smoothwm5
|
||||
surf/rh.sphere
|
||||
surf/rh.sphere.reg
|
||||
surf/rh.sulc
|
||||
surf/rh.thickness
|
||||
surf/rh.white
|
||||
5
mne/datasets/_infant/__init__.py
Normal file
5
mne/datasets/_infant/__init__.py
Normal file
@@ -0,0 +1,5 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from .base import fetch_infant_template
|
||||
94
mne/datasets/_infant/base.py
Normal file
94
mne/datasets/_infant/base.py
Normal file
@@ -0,0 +1,94 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
from ...utils import _check_option, _validate_type, get_subjects_dir, verbose
|
||||
from ..utils import _manifest_check_download
|
||||
|
||||
_AGES = "2wk 1mo 2mo 3mo 4.5mo 6mo 7.5mo 9mo 10.5mo 12mo 15mo 18mo 2yr"
|
||||
# https://github.com/christian-oreilly/infant_template_paper/releases
|
||||
_ORIGINAL_URL = "https://github.com/christian-oreilly/infant_template_paper/releases/download/v0.1-alpha/{subject}.zip" # noqa: E501
|
||||
# Formatted the same way as md5sum *.zip on Ubuntu:
|
||||
_ORIGINAL_HASHES = """
|
||||
851737d5f8f246883f2aef9819c6ec29 ANTS10-5Months3T.zip
|
||||
32ab6d025f4311433a82e81374f1a045 ANTS1-0Months3T.zip
|
||||
48ef349e7cc542fdf63ff36d7958ab57 ANTS12-0Months3T.zip
|
||||
bba22c95aa97988c6e8892d6169ed317 ANTS15-0Months3T.zip
|
||||
e1bfe5e3ef380592822ced446a4008c7 ANTS18-0Months3T.zip
|
||||
fa7bee6c0985b9cd15ba53820cd72ccd ANTS2-0Months3T.zip
|
||||
2ad90540cdf42837c09f8ce829458a35 ANTS2-0Weeks3T.zip
|
||||
73e6a8b2579b7959a96f7d294ffb7393 ANTS2-0Years3T.zip
|
||||
cb7b9752894e16a4938ddfe220f6286a ANTS3-0Months3T.zip
|
||||
16b2a6804c7d5443cfba2ad6f7d4ac6a ANTS4-5Months3T.zip
|
||||
dbdf2a9976121f2b106da96775690da3 ANTS6-0Months3T.zip
|
||||
75fe37a1bc80ed6793a8abb47681d5ab ANTS7-5Months3T.zip
|
||||
790f7dba0a264262e6c1c2dfdf216215 ANTS9-0Months3T.zip
|
||||
"""
|
||||
_MANIFEST_PATH = Path(__file__).parent
|
||||
|
||||
|
||||
@verbose
|
||||
def fetch_infant_template(age, subjects_dir=None, *, verbose=None):
|
||||
"""Fetch and update an infant MRI template.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
age : str
|
||||
Age to download. Can be one of ``{'2wk', '1mo', '2mo', '3mo', '4.5mo',
|
||||
'6mo', '7.5mo', '9mo', '10.5mo', '12mo', '15mo', '18mo', '2yr'}``.
|
||||
subjects_dir : str | None
|
||||
The path to download the template data to.
|
||||
%(verbose)s
|
||||
|
||||
Returns
|
||||
-------
|
||||
subject : str
|
||||
The standard subject name, e.g. ``ANTS4-5Month3T``.
|
||||
|
||||
Notes
|
||||
-----
|
||||
If you use these templates in your work, please cite
|
||||
:footcite:`OReillyEtAl2021` and :footcite:`RichardsEtAl2016`.
|
||||
|
||||
.. versionadded:: 0.23
|
||||
|
||||
References
|
||||
----------
|
||||
.. footbibliography::
|
||||
"""
|
||||
# Code used to create the lists:
|
||||
#
|
||||
# $ for name in 2-0Weeks 1-0Months 2-0Months 3-0Months 4-5Months 6-0Months 7-5Months 9-0Months 10-5Months 12-0Months 15-0Months 18-0Months 2-0Years; do wget https://github.com/christian-oreilly/infant_template_paper/releases/download/v0.1-alpha/ANTS${name}3T.zip; done # noqa: E501
|
||||
# $ md5sum ANTS*.zip
|
||||
# $ python
|
||||
# >>> import os.path as op
|
||||
# >>> import zipfile
|
||||
# >>> names = [f'ANTS{name}3T' for name in '2-0Weeks 1-0Months 2-0Months 3-0Months 4-5Months 6-0Months 7-5Months 9-0Months 10-5Months 12-0Months 15-0Months 18-0Months 2-0Years'.split()] # noqa: E501
|
||||
# >>> for name in names:
|
||||
# ... with zipfile.ZipFile(f'{name}.zip', 'r') as zip:
|
||||
# ... names = sorted(name for name in zip.namelist() if not zipfile.Path(zip, name).is_dir()) # noqa: E501
|
||||
# ... with open(f'{name}.txt', 'w') as fid:
|
||||
# ... fid.write('\n'.join(names))
|
||||
_validate_type(age, str, "age")
|
||||
_check_option("age", age, _AGES.split())
|
||||
subjects_dir = get_subjects_dir(subjects_dir, raise_error=True)
|
||||
unit = dict(wk="Weeks", mo="Months", yr="Years")[age[-2:]]
|
||||
first = age[:-2].split(".")[0]
|
||||
dash = "-5" if ".5" in age else "-0"
|
||||
subject = f"ANTS{first}{dash}{unit}3T"
|
||||
# Actually get and create the files
|
||||
subject_dir = subjects_dir / subject
|
||||
subject_dir.mkdir(parents=True, exist_ok=True)
|
||||
# .zip -> hash mapping
|
||||
orig_hashes = dict(
|
||||
line.strip().split()[::-1] for line in _ORIGINAL_HASHES.strip().splitlines()
|
||||
)
|
||||
_manifest_check_download(
|
||||
manifest_path=_MANIFEST_PATH / f"{subject}.txt",
|
||||
destination=subject_dir,
|
||||
url=_ORIGINAL_URL.format(subject=subject),
|
||||
hash_=orig_hashes[f"{subject}.zip"],
|
||||
)
|
||||
return subject
|
||||
3
mne/datasets/_phantom/__init__.py
Normal file
3
mne/datasets/_phantom/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
63
mne/datasets/_phantom/base.py
Normal file
63
mne/datasets/_phantom/base.py
Normal file
@@ -0,0 +1,63 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
from ...utils import _check_option, _validate_type, get_subjects_dir, verbose
|
||||
from ..utils import _manifest_check_download
|
||||
|
||||
PHANTOM_MANIFEST_PATH = Path(__file__).parent
|
||||
|
||||
|
||||
@verbose
|
||||
def fetch_phantom(kind, subjects_dir=None, *, verbose=None):
|
||||
"""Fetch and update a phantom subject.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
kind : str
|
||||
The kind of phantom to fetch. Can only be ``'otaniemi'`` (default).
|
||||
%(subjects_dir)s
|
||||
%(verbose)s
|
||||
|
||||
Returns
|
||||
-------
|
||||
subject_dir : pathlib.Path
|
||||
The resulting phantom subject directory.
|
||||
|
||||
See Also
|
||||
--------
|
||||
mne.dipole.get_phantom_dipoles
|
||||
|
||||
Notes
|
||||
-----
|
||||
This function is designed to provide a head surface and T1.mgz for
|
||||
the 32-dipole Otaniemi phantom. The VectorView/TRIUX phantom has the same
|
||||
basic outside geometry, but different internal dipole positions.
|
||||
|
||||
Unlike most FreeSurfer subjects, the Otaniemi phantom scan was aligned
|
||||
to the "head" coordinate frame, so an identity head<->MRI :term:`trans`
|
||||
is appropriate.
|
||||
|
||||
.. versionadded:: 0.24
|
||||
"""
|
||||
phantoms = dict(
|
||||
otaniemi=dict(
|
||||
url="https://osf.io/j5czy/download?version=1",
|
||||
hash="42d17db5b1db3e30327ffb4cf2649de8",
|
||||
),
|
||||
)
|
||||
_validate_type(kind, str, "kind")
|
||||
_check_option("kind", kind, list(phantoms))
|
||||
subjects_dir = get_subjects_dir(subjects_dir, raise_error=True)
|
||||
subject = f"phantom_{kind}"
|
||||
subject_dir = subjects_dir / subject
|
||||
subject_dir.mkdir(parents=True, exist_ok=True)
|
||||
_manifest_check_download(
|
||||
manifest_path=PHANTOM_MANIFEST_PATH / f"{subject}.txt",
|
||||
destination=subjects_dir,
|
||||
url=phantoms[kind]["url"],
|
||||
hash_=phantoms[kind]["hash"],
|
||||
)
|
||||
return subject_dir
|
||||
3
mne/datasets/_phantom/phantom_otaniemi.txt
Normal file
3
mne/datasets/_phantom/phantom_otaniemi.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
phantom_otaniemi/bem/phantom_otaniemi-fiducials.fif
|
||||
phantom_otaniemi/mri/T1.mgz
|
||||
phantom_otaniemi/surf/lh.seghead
|
||||
7
mne/datasets/brainstorm/__init__.py
Normal file
7
mne/datasets/brainstorm/__init__.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
"""Brainstorm datasets."""
|
||||
|
||||
from . import bst_raw, bst_resting, bst_auditory, bst_phantom_ctf, bst_phantom_elekta
|
||||
69
mne/datasets/brainstorm/bst_auditory.py
Normal file
69
mne/datasets/brainstorm/bst_auditory.py
Normal file
@@ -0,0 +1,69 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from ...utils import verbose
|
||||
from ..utils import (
|
||||
_data_path_doc_accept,
|
||||
_download_mne_dataset,
|
||||
_get_version,
|
||||
_version_doc,
|
||||
)
|
||||
|
||||
_description = """
|
||||
URL: http://neuroimage.usc.edu/brainstorm/DatasetAuditory
|
||||
- One subject, two acquisition runs of 6 minutes each
|
||||
- Subject stimulated binaurally with intra-aural earphones
|
||||
(air tubes+transducers)
|
||||
- Each run contains:
|
||||
- 200 regular beeps (440Hz)
|
||||
- 40 easy deviant beeps (554.4Hz, 4 semitones higher)
|
||||
- Random inter-stimulus interval: between 0.7s and 1.7s seconds, uniformly
|
||||
distributed
|
||||
- The subject presses a button when detecting a deviant with the right
|
||||
index finger
|
||||
- Auditory stimuli generated with the Matlab Psychophysics toolbox
|
||||
"""
|
||||
|
||||
|
||||
@verbose
|
||||
def data_path(
|
||||
path=None,
|
||||
force_update=False,
|
||||
update_path=True,
|
||||
download=True,
|
||||
accept=False,
|
||||
*,
|
||||
verbose=None,
|
||||
): # noqa: D103
|
||||
return _download_mne_dataset(
|
||||
name="bst_auditory",
|
||||
processor="nested_untar",
|
||||
path=path,
|
||||
force_update=force_update,
|
||||
update_path=update_path,
|
||||
download=download,
|
||||
accept=accept,
|
||||
)
|
||||
|
||||
|
||||
_data_path_doc = _data_path_doc_accept.format(
|
||||
name="brainstorm", conf="MNE_DATASETS_BRAINSTORM_DATA_PATH"
|
||||
)
|
||||
_data_path_doc = _data_path_doc.replace(
|
||||
"brainstorm dataset", "brainstorm (bst_auditory) dataset"
|
||||
)
|
||||
data_path.__doc__ = _data_path_doc
|
||||
|
||||
|
||||
def get_version(): # noqa: D103
|
||||
return _get_version("bst_auditory")
|
||||
|
||||
|
||||
get_version.__doc__ = _version_doc.format(name="brainstorm")
|
||||
|
||||
|
||||
def description():
|
||||
"""Get description of brainstorm (bst_auditory) dataset."""
|
||||
for desc in _description.splitlines():
|
||||
print(desc)
|
||||
58
mne/datasets/brainstorm/bst_phantom_ctf.py
Normal file
58
mne/datasets/brainstorm/bst_phantom_ctf.py
Normal file
@@ -0,0 +1,58 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from ...utils import verbose
|
||||
from ..utils import (
|
||||
_data_path_doc_accept,
|
||||
_download_mne_dataset,
|
||||
_get_version,
|
||||
_version_doc,
|
||||
)
|
||||
|
||||
_description = """
|
||||
URL: http://neuroimage.usc.edu/brainstorm/Tutorials/PhantomCtf
|
||||
"""
|
||||
|
||||
|
||||
@verbose
|
||||
def data_path(
|
||||
path=None,
|
||||
force_update=False,
|
||||
update_path=True,
|
||||
download=True,
|
||||
accept=False,
|
||||
*,
|
||||
verbose=None,
|
||||
): # noqa: D103
|
||||
return _download_mne_dataset(
|
||||
name="bst_phantom_ctf",
|
||||
processor="nested_untar",
|
||||
path=path,
|
||||
force_update=force_update,
|
||||
update_path=update_path,
|
||||
download=download,
|
||||
accept=accept,
|
||||
)
|
||||
|
||||
|
||||
_data_path_doc = _data_path_doc_accept.format(
|
||||
name="brainstorm", conf="MNE_DATASETS_BRAINSTORM_DATA_PATH"
|
||||
)
|
||||
_data_path_doc = _data_path_doc.replace(
|
||||
"brainstorm dataset", "brainstorm (bst_phantom_ctf) dataset"
|
||||
)
|
||||
data_path.__doc__ = _data_path_doc
|
||||
|
||||
|
||||
def get_version(): # noqa: D103
|
||||
return _get_version("bst_phantom_ctf")
|
||||
|
||||
|
||||
get_version.__doc__ = _version_doc.format(name="brainstorm")
|
||||
|
||||
|
||||
def description():
|
||||
"""Get description of brainstorm (bst_phantom_ctf) dataset."""
|
||||
for desc in _description.splitlines():
|
||||
print(desc)
|
||||
58
mne/datasets/brainstorm/bst_phantom_elekta.py
Normal file
58
mne/datasets/brainstorm/bst_phantom_elekta.py
Normal file
@@ -0,0 +1,58 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from ...utils import verbose
|
||||
from ..utils import (
|
||||
_data_path_doc_accept,
|
||||
_download_mne_dataset,
|
||||
_get_version,
|
||||
_version_doc,
|
||||
)
|
||||
|
||||
_description = """
|
||||
URL: http://neuroimage.usc.edu/brainstorm/Tutorials/PhantomElekta
|
||||
"""
|
||||
|
||||
|
||||
@verbose
|
||||
def data_path(
|
||||
path=None,
|
||||
force_update=False,
|
||||
update_path=True,
|
||||
download=True,
|
||||
accept=False,
|
||||
*,
|
||||
verbose=None,
|
||||
): # noqa: D103
|
||||
return _download_mne_dataset(
|
||||
name="bst_phantom_elekta",
|
||||
processor="nested_untar",
|
||||
path=path,
|
||||
force_update=force_update,
|
||||
update_path=update_path,
|
||||
download=download,
|
||||
accept=accept,
|
||||
)
|
||||
|
||||
|
||||
_data_path_doc = _data_path_doc_accept.format(
|
||||
name="brainstorm", conf="MNE_DATASETS_BRAINSTORM_DATA_PATH"
|
||||
)
|
||||
_data_path_doc = _data_path_doc.replace(
|
||||
"brainstorm dataset", "brainstorm (bst_phantom_elekta) dataset"
|
||||
)
|
||||
data_path.__doc__ = _data_path_doc
|
||||
|
||||
|
||||
def get_version(): # noqa: D103
|
||||
return _get_version("bst_phantom_elekta")
|
||||
|
||||
|
||||
get_version.__doc__ = _version_doc.format(name="brainstorm")
|
||||
|
||||
|
||||
def description():
|
||||
"""Get description of brainstorm (bst_phantom_elekta) dataset."""
|
||||
for desc in _description.splitlines():
|
||||
print(desc)
|
||||
88
mne/datasets/brainstorm/bst_raw.py
Normal file
88
mne/datasets/brainstorm/bst_raw.py
Normal file
@@ -0,0 +1,88 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from functools import partial
|
||||
|
||||
from ...utils import get_config, verbose
|
||||
from ..utils import (
|
||||
_data_path_doc_accept,
|
||||
_download_mne_dataset,
|
||||
_get_version,
|
||||
_version_doc,
|
||||
has_dataset,
|
||||
)
|
||||
|
||||
has_brainstorm_data = partial(has_dataset, name="bst_raw")
|
||||
|
||||
_description = """
|
||||
URL: http://neuroimage.usc.edu/brainstorm/DatasetMedianNerveCtf
|
||||
- One subject, one acquisition run of 6 minutes
|
||||
- Subject stimulated using Digitimer Constant Current Stimulator
|
||||
(model DS7A)
|
||||
- The run contains 200 electric stimulations randomly distributed between
|
||||
left and right:
|
||||
- 102 stimulations of the left hand
|
||||
- 98 stimulations of the right hand
|
||||
- Inter-stimulus interval: jittered between [1500, 2000]ms
|
||||
- Stimuli generated using PsychToolBox on Windows PC (TTL pulse generated
|
||||
with the parallel port connected to the Digitimer via the rear panel BNC)
|
||||
"""
|
||||
|
||||
|
||||
@verbose
|
||||
def data_path(
|
||||
path=None,
|
||||
force_update=False,
|
||||
update_path=True,
|
||||
download=True,
|
||||
accept=False,
|
||||
*,
|
||||
verbose=None,
|
||||
): # noqa: D103
|
||||
return _download_mne_dataset(
|
||||
name="bst_raw",
|
||||
processor="nested_untar",
|
||||
path=path,
|
||||
force_update=force_update,
|
||||
update_path=update_path,
|
||||
download=download,
|
||||
accept=accept,
|
||||
)
|
||||
|
||||
|
||||
_data_path_doc = _data_path_doc_accept.format(
|
||||
name="brainstorm", conf="MNE_DATASETS_BRAINSTORM_DATA_PATH"
|
||||
)
|
||||
_data_path_doc = _data_path_doc.replace(
|
||||
"brainstorm dataset", "brainstorm (bst_raw) dataset"
|
||||
)
|
||||
data_path.__doc__ = _data_path_doc
|
||||
|
||||
|
||||
def get_version(): # noqa: D103
|
||||
return _get_version("bst_raw")
|
||||
|
||||
|
||||
get_version.__doc__ = _version_doc.format(name="brainstorm")
|
||||
|
||||
|
||||
def description(): # noqa: D103
|
||||
"""Get description of brainstorm (bst_raw) dataset."""
|
||||
for desc in _description.splitlines():
|
||||
print(desc)
|
||||
|
||||
|
||||
def _skip_bstraw_data():
|
||||
skip_testing = get_config("MNE_SKIP_TESTING_DATASET_TESTS", "false") == "true"
|
||||
skip = skip_testing or not has_brainstorm_data()
|
||||
return skip
|
||||
|
||||
|
||||
def requires_bstraw_data(func):
|
||||
"""Skip testing data test."""
|
||||
import pytest
|
||||
|
||||
return pytest.mark.skipif(
|
||||
_skip_bstraw_data(), reason="Requires brainstorm dataset"
|
||||
)(func)
|
||||
61
mne/datasets/brainstorm/bst_resting.py
Normal file
61
mne/datasets/brainstorm/bst_resting.py
Normal file
@@ -0,0 +1,61 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from ...utils import verbose
|
||||
from ..utils import (
|
||||
_data_path_doc_accept,
|
||||
_download_mne_dataset,
|
||||
_get_version,
|
||||
_version_doc,
|
||||
)
|
||||
|
||||
_description = """
|
||||
URL: http://neuroimage.usc.edu/brainstorm/DatasetResting
|
||||
- One subject
|
||||
- Two runs of 10 min of resting state recordings
|
||||
- Eyes open
|
||||
"""
|
||||
|
||||
|
||||
@verbose
|
||||
def data_path(
|
||||
path=None,
|
||||
force_update=False,
|
||||
update_path=True,
|
||||
download=True,
|
||||
accept=False,
|
||||
*,
|
||||
verbose=None,
|
||||
): # noqa: D103
|
||||
return _download_mne_dataset(
|
||||
name="bst_resting",
|
||||
processor="nested_untar",
|
||||
path=path,
|
||||
force_update=force_update,
|
||||
update_path=update_path,
|
||||
download=download,
|
||||
accept=accept,
|
||||
)
|
||||
|
||||
|
||||
_data_path_doc = _data_path_doc_accept.format(
|
||||
name="brainstorm", conf="MNE_DATASETS_BRAINSTORM_DATA_PATH"
|
||||
)
|
||||
_data_path_doc = _data_path_doc.replace(
|
||||
"brainstorm dataset", "brainstorm (bst_resting) dataset"
|
||||
)
|
||||
data_path.__doc__ = _data_path_doc
|
||||
|
||||
|
||||
def get_version(): # noqa: D103
|
||||
return _get_version("bst_resting")
|
||||
|
||||
|
||||
get_version.__doc__ = _version_doc.format(name="brainstorm")
|
||||
|
||||
|
||||
def description():
|
||||
"""Get description of brainstorm (bst_resting) dataset."""
|
||||
for desc in _description.splitlines():
|
||||
print(desc)
|
||||
371
mne/datasets/config.py
Normal file
371
mne/datasets/config.py
Normal file
@@ -0,0 +1,371 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
|
||||
_bst_license_text = """
|
||||
License
|
||||
-------
|
||||
This tutorial dataset (EEG and MRI data) remains a property of the MEG Lab,
|
||||
McConnell Brain Imaging Center, Montreal Neurological Institute,
|
||||
McGill University, Canada. Its use and transfer outside the Brainstorm
|
||||
tutorial, e.g. for research purposes, is prohibited without written consent
|
||||
from the MEG Lab.
|
||||
|
||||
If you reference this dataset in your publications, please:
|
||||
|
||||
1) acknowledge its authors: Elizabeth Bock, Esther Florin, Francois Tadel
|
||||
and Sylvain Baillet, and
|
||||
2) cite Brainstorm as indicated on the website:
|
||||
http://neuroimage.usc.edu/brainstorm
|
||||
|
||||
For questions, please contact Francois Tadel (francois.tadel@mcgill.ca).
|
||||
"""
|
||||
|
||||
_hcp_mmp_license_text = """
|
||||
License
|
||||
-------
|
||||
I request access to data collected by the Washington University - University
|
||||
of Minnesota Consortium of the Human Connectome Project (WU-Minn HCP), and
|
||||
I agree to the following:
|
||||
|
||||
1. I will not attempt to establish the identity of or attempt to contact any
|
||||
of the included human subjects.
|
||||
|
||||
2. I understand that under no circumstances will the code that would link
|
||||
these data to Protected Health Information be given to me, nor will any
|
||||
additional information about individual human subjects be released to me
|
||||
under these Open Access Data Use Terms.
|
||||
|
||||
3. I will comply with all relevant rules and regulations imposed by my
|
||||
institution. This may mean that I need my research to be approved or
|
||||
declared exempt by a committee that oversees research on human subjects,
|
||||
e.g. my IRB or Ethics Committee. The released HCP data are not considered
|
||||
de-identified, insofar as certain combinations of HCP Restricted Data
|
||||
(available through a separate process) might allow identification of
|
||||
individuals. Different committees operate under different national, state
|
||||
and local laws and may interpret regulations differently, so it is
|
||||
important to ask about this. If needed and upon request, the HCP will
|
||||
provide a certificate stating that you have accepted the HCP Open Access
|
||||
Data Use Terms.
|
||||
|
||||
4. I may redistribute original WU-Minn HCP Open Access data and any derived
|
||||
data as long as the data are redistributed under these same Data Use Terms.
|
||||
|
||||
5. I will acknowledge the use of WU-Minn HCP data and data derived from
|
||||
WU-Minn HCP data when publicly presenting any results or algorithms
|
||||
that benefitted from their use.
|
||||
|
||||
1. Papers, book chapters, books, posters, oral presentations, and all
|
||||
other printed and digital presentations of results derived from HCP
|
||||
data should contain the following wording in the acknowledgments
|
||||
section: "Data were provided [in part] by the Human Connectome
|
||||
Project, WU-Minn Consortium (Principal Investigators: David Van Essen
|
||||
and Kamil Ugurbil; 1U54MH091657) funded by the 16 NIH Institutes and
|
||||
Centers that support the NIH Blueprint for Neuroscience Research; and
|
||||
by the McDonnell Center for Systems Neuroscience at Washington
|
||||
University."
|
||||
|
||||
2. Authors of publications or presentations using WU-Minn HCP data
|
||||
should cite relevant publications describing the methods used by the
|
||||
HCP to acquire and process the data. The specific publications that
|
||||
are appropriate to cite in any given study will depend on what HCP
|
||||
data were used and for what purposes. An annotated and appropriately
|
||||
up-to-date list of publications that may warrant consideration is
|
||||
available at http://www.humanconnectome.org/about/acknowledgehcp.html
|
||||
|
||||
3. The WU-Minn HCP Consortium as a whole should not be included as an
|
||||
author of publications or presentations if this authorship would be
|
||||
based solely on the use of WU-Minn HCP data.
|
||||
|
||||
6. Failure to abide by these guidelines will result in termination of my
|
||||
privileges to access WU-Minn HCP data.
|
||||
"""
|
||||
|
||||
# To update the `testing` or `misc` datasets, push or merge commits to their
|
||||
# respective repos, and make a new release of the dataset on GitHub. Then
|
||||
# update the checksum in the MNE_DATASETS dict below, and change version
|
||||
# here: ↓↓↓↓↓↓↓↓
|
||||
RELEASES = dict(
|
||||
testing="0.156",
|
||||
misc="0.27",
|
||||
phantom_kit="0.2",
|
||||
ucl_opm_auditory="0.2",
|
||||
)
|
||||
TESTING_VERSIONED = f'mne-testing-data-{RELEASES["testing"]}'
|
||||
MISC_VERSIONED = f'mne-misc-data-{RELEASES["misc"]}'
|
||||
|
||||
# To update any other dataset besides `testing` or `misc`, upload the new
|
||||
# version of the data archive itself (e.g., to https://osf.io or wherever) and
|
||||
# then update the corresponding checksum in the MNE_DATASETS dict entry below.
|
||||
MNE_DATASETS = dict()
|
||||
|
||||
# MANDATORY KEYS:
|
||||
# - archive_name : the name of the compressed file that is downloaded
|
||||
# - hash : the checksum type followed by a colon and then the checksum value
|
||||
# (examples: "sha256:19uheid...", "md5:upodh2io...")
|
||||
# - url : URL from which the file can be downloaded
|
||||
# - folder_name : the subfolder within the MNE data folder in which to save and
|
||||
# uncompress (if needed) the file(s)
|
||||
#
|
||||
# OPTIONAL KEYS:
|
||||
# - config_key : key to use with `mne.set_config` to store the on-disk location
|
||||
# of the downloaded dataset (ex: "MNE_DATASETS_EEGBCI_PATH").
|
||||
|
||||
# Testing and misc are at the top as they're updated most often
|
||||
MNE_DATASETS["testing"] = dict(
|
||||
archive_name=f"{TESTING_VERSIONED}.tar.gz",
|
||||
hash="md5:d94fe9f3abe949a507eaeb865fb84a3f",
|
||||
url=(
|
||||
"https://codeload.github.com/mne-tools/mne-testing-data/"
|
||||
f'tar.gz/{RELEASES["testing"]}'
|
||||
),
|
||||
# In case we ever have to resort to osf.io again...
|
||||
# archive_name='mne-testing-data.tar.gz',
|
||||
# hash='md5:c805a5fed8ca46f723e7eec828d90824',
|
||||
# url='https://osf.io/dqfgy/download?version=1', # 0.136
|
||||
folder_name="MNE-testing-data",
|
||||
config_key="MNE_DATASETS_TESTING_PATH",
|
||||
)
|
||||
MNE_DATASETS["misc"] = dict(
|
||||
archive_name=f"{MISC_VERSIONED}.tar.gz", # 'mne-misc-data',
|
||||
hash="md5:e343d3a00cb49f8a2f719d14f4758afe",
|
||||
url=(
|
||||
"https://codeload.github.com/mne-tools/mne-misc-data/tar.gz/"
|
||||
f'{RELEASES["misc"]}'
|
||||
),
|
||||
folder_name="MNE-misc-data",
|
||||
config_key="MNE_DATASETS_MISC_PATH",
|
||||
)
|
||||
|
||||
MNE_DATASETS["fnirs_motor"] = dict(
|
||||
archive_name="MNE-fNIRS-motor-data.tgz",
|
||||
hash="md5:c4935d19ddab35422a69f3326a01fef8",
|
||||
url="https://osf.io/dj3eh/download?version=1",
|
||||
folder_name="MNE-fNIRS-motor-data",
|
||||
config_key="MNE_DATASETS_FNIRS_MOTOR_PATH",
|
||||
)
|
||||
|
||||
MNE_DATASETS["ucl_opm_auditory"] = dict(
|
||||
archive_name="auditory_OPM_stationary.zip",
|
||||
hash="md5:b2d69aa2d656b960bd0c18968dc1a14d",
|
||||
url="https://osf.io/download/tp324/?version=1", # original is mwrt3
|
||||
folder_name="auditory_OPM_stationary",
|
||||
config_key="MNE_DATASETS_UCL_OPM_AUDITORY_PATH",
|
||||
)
|
||||
|
||||
MNE_DATASETS["kiloword"] = dict(
|
||||
archive_name="MNE-kiloword-data.tar.gz",
|
||||
hash="md5:3a124170795abbd2e48aae8727e719a8",
|
||||
url="https://osf.io/qkvf9/download?version=1",
|
||||
folder_name="MNE-kiloword-data",
|
||||
config_key="MNE_DATASETS_KILOWORD_PATH",
|
||||
)
|
||||
|
||||
MNE_DATASETS["multimodal"] = dict(
|
||||
archive_name="MNE-multimodal-data.tar.gz",
|
||||
hash="md5:26ec847ae9ab80f58f204d09e2c08367",
|
||||
url="https://ndownloader.figshare.com/files/5999598",
|
||||
folder_name="MNE-multimodal-data",
|
||||
config_key="MNE_DATASETS_MULTIMODAL_PATH",
|
||||
)
|
||||
|
||||
MNE_DATASETS["opm"] = dict(
|
||||
archive_name="MNE-OPM-data.tar.gz",
|
||||
hash="md5:370ad1dcfd5c47e029e692c85358a374",
|
||||
url="https://osf.io/p6ae7/download?version=2",
|
||||
folder_name="MNE-OPM-data",
|
||||
config_key="MNE_DATASETS_OPM_PATH",
|
||||
)
|
||||
|
||||
MNE_DATASETS["phantom_kit"] = dict(
|
||||
archive_name="MNE-phantom-KIT-data.tar.gz",
|
||||
hash="md5:7bfdf40bbeaf17a66c99c695640e0740",
|
||||
url="https://osf.io/fb6ya/download?version=1",
|
||||
folder_name="MNE-phantom-KIT-data",
|
||||
config_key="MNE_DATASETS_PHANTOM_KIT_PATH",
|
||||
)
|
||||
|
||||
MNE_DATASETS["phantom_4dbti"] = dict(
|
||||
archive_name="MNE-phantom-4DBTi.zip",
|
||||
hash="md5:938a601440f3ffa780d20a17bae039ff",
|
||||
url="https://osf.io/v2brw/download?version=2",
|
||||
folder_name="MNE-phantom-4DBTi",
|
||||
config_key="MNE_DATASETS_PHANTOM_4DBTI_PATH",
|
||||
)
|
||||
|
||||
MNE_DATASETS["phantom_kernel"] = dict(
|
||||
archive_name="MNE-phantom-kernel.tar.gz",
|
||||
hash="md5:4e2ad987dac1a20f95bae8ffeb2d41d6",
|
||||
url="https://osf.io/dj7wz/download?version=1",
|
||||
folder_name="MNE-phantom-kernel-data",
|
||||
config_key="MNE_DATASETS_PHANTOM_KERNEL_PATH",
|
||||
)
|
||||
|
||||
MNE_DATASETS["sample"] = dict(
|
||||
archive_name="MNE-sample-data-processed.tar.gz",
|
||||
hash="md5:e8f30c4516abdc12a0c08e6bae57409c",
|
||||
url="https://osf.io/86qa2/download?version=6",
|
||||
folder_name="MNE-sample-data",
|
||||
config_key="MNE_DATASETS_SAMPLE_PATH",
|
||||
)
|
||||
|
||||
MNE_DATASETS["somato"] = dict(
|
||||
archive_name="MNE-somato-data.tar.gz",
|
||||
hash="md5:32fd2f6c8c7eb0784a1de6435273c48b",
|
||||
url="https://osf.io/tp4sg/download?version=7",
|
||||
folder_name="MNE-somato-data",
|
||||
config_key="MNE_DATASETS_SOMATO_PATH",
|
||||
)
|
||||
|
||||
MNE_DATASETS["spm"] = dict(
|
||||
archive_name="MNE-spm-face.tar.gz",
|
||||
hash="md5:9f43f67150e3b694b523a21eb929ea75",
|
||||
url="https://osf.io/je4s8/download?version=2",
|
||||
folder_name="MNE-spm-face",
|
||||
config_key="MNE_DATASETS_SPM_FACE_PATH",
|
||||
)
|
||||
|
||||
# Visual 92 categories has the dataset split into 2 files.
|
||||
# We define a dictionary holding the items with the same
|
||||
# value across both files: folder name and configuration key.
|
||||
MNE_DATASETS["visual_92_categories"] = dict(
|
||||
folder_name="MNE-visual_92_categories-data",
|
||||
config_key="MNE_DATASETS_VISUAL_92_CATEGORIES_PATH",
|
||||
)
|
||||
MNE_DATASETS["visual_92_categories_1"] = dict(
|
||||
archive_name="MNE-visual_92_categories-data-part1.tar.gz",
|
||||
hash="md5:74f50bbeb65740903eadc229c9fa759f",
|
||||
url="https://osf.io/8ejrs/download?version=1",
|
||||
folder_name="MNE-visual_92_categories-data",
|
||||
config_key="MNE_DATASETS_VISUAL_92_CATEGORIES_PATH",
|
||||
)
|
||||
MNE_DATASETS["visual_92_categories_2"] = dict(
|
||||
archive_name="MNE-visual_92_categories-data-part2.tar.gz",
|
||||
hash="md5:203410a98afc9df9ae8ba9f933370e20",
|
||||
url="https://osf.io/t4yjp/download?version=1",
|
||||
folder_name="MNE-visual_92_categories-data",
|
||||
config_key="MNE_DATASETS_VISUAL_92_CATEGORIES_PATH",
|
||||
)
|
||||
|
||||
MNE_DATASETS["mtrf"] = dict(
|
||||
archive_name="mTRF_1.5.zip",
|
||||
hash="md5:273a390ebbc48da2c3184b01a82e4636",
|
||||
url="https://osf.io/h85s2/download?version=1",
|
||||
folder_name="mTRF_1.5",
|
||||
config_key="MNE_DATASETS_MTRF_PATH",
|
||||
)
|
||||
MNE_DATASETS["refmeg_noise"] = dict(
|
||||
archive_name="sample_reference_MEG_noise-raw.zip",
|
||||
hash="md5:779fecd890d98b73a4832e717d7c7c45",
|
||||
url="https://osf.io/drt6v/download?version=1",
|
||||
folder_name="MNE-refmeg-noise-data",
|
||||
config_key="MNE_DATASETS_REFMEG_NOISE_PATH",
|
||||
)
|
||||
|
||||
MNE_DATASETS["ssvep"] = dict(
|
||||
archive_name="ssvep_example_data.zip",
|
||||
hash="md5:af866bbc0f921114ac9d683494fe87d6",
|
||||
url="https://osf.io/z8h6k/download?version=5",
|
||||
folder_name="ssvep-example-data",
|
||||
config_key="MNE_DATASETS_SSVEP_PATH",
|
||||
)
|
||||
|
||||
MNE_DATASETS["erp_core"] = dict(
|
||||
archive_name="MNE-ERP-CORE-data.tar.gz",
|
||||
hash="md5:5866c0d6213bd7ac97f254c776f6c4b1",
|
||||
url="https://osf.io/rzgba/download?version=1",
|
||||
folder_name="MNE-ERP-CORE-data",
|
||||
config_key="MNE_DATASETS_ERP_CORE_PATH",
|
||||
)
|
||||
|
||||
MNE_DATASETS["epilepsy_ecog"] = dict(
|
||||
archive_name="MNE-epilepsy-ecog-data.tar.gz",
|
||||
hash="md5:ffb139174afa0f71ec98adbbb1729dea",
|
||||
url="https://osf.io/z4epq/download?version=1",
|
||||
folder_name="MNE-epilepsy-ecog-data",
|
||||
config_key="MNE_DATASETS_EPILEPSY_ECOG_PATH",
|
||||
)
|
||||
|
||||
# Fieldtrip CMC dataset
|
||||
MNE_DATASETS["fieldtrip_cmc"] = dict(
|
||||
archive_name="SubjectCMC.zip",
|
||||
hash="md5:6f9fd6520f9a66e20994423808d2528c",
|
||||
url="https://osf.io/j9b6s/download?version=1",
|
||||
folder_name="MNE-fieldtrip_cmc-data",
|
||||
config_key="MNE_DATASETS_FIELDTRIP_CMC_PATH",
|
||||
)
|
||||
|
||||
# brainstorm datasets:
|
||||
MNE_DATASETS["bst_auditory"] = dict(
|
||||
archive_name="bst_auditory.tar.gz",
|
||||
hash="md5:fa371a889a5688258896bfa29dd1700b",
|
||||
url="https://osf.io/5t9n8/download?version=1",
|
||||
folder_name="MNE-brainstorm-data",
|
||||
config_key="MNE_DATASETS_BRAINSTORM_PATH",
|
||||
)
|
||||
MNE_DATASETS["bst_phantom_ctf"] = dict(
|
||||
archive_name="bst_phantom_ctf.tar.gz",
|
||||
hash="md5:80819cb7f5b92d1a5289db3fb6acb33c",
|
||||
url="https://osf.io/sxr8y/download?version=1",
|
||||
folder_name="MNE-brainstorm-data",
|
||||
config_key="MNE_DATASETS_BRAINSTORM_PATH",
|
||||
)
|
||||
MNE_DATASETS["bst_phantom_elekta"] = dict(
|
||||
archive_name="bst_phantom_elekta.tar.gz",
|
||||
hash="md5:1badccbe17998d18cc373526e86a7aaf",
|
||||
url="https://osf.io/dpcku/download?version=1",
|
||||
folder_name="MNE-brainstorm-data",
|
||||
config_key="MNE_DATASETS_BRAINSTORM_PATH",
|
||||
)
|
||||
MNE_DATASETS["bst_raw"] = dict(
|
||||
archive_name="bst_raw.tar.gz",
|
||||
hash="md5:fa2efaaec3f3d462b319bc24898f440c",
|
||||
url="https://osf.io/9675n/download?version=2",
|
||||
folder_name="MNE-brainstorm-data",
|
||||
config_key="MNE_DATASETS_BRAINSTORM_PATH",
|
||||
)
|
||||
MNE_DATASETS["bst_resting"] = dict(
|
||||
archive_name="bst_resting.tar.gz",
|
||||
hash="md5:70fc7bf9c3b97c4f2eab6260ee4a0430",
|
||||
url="https://osf.io/m7bd3/download?version=3",
|
||||
folder_name="MNE-brainstorm-data",
|
||||
config_key="MNE_DATASETS_BRAINSTORM_PATH",
|
||||
)
|
||||
|
||||
# HF-SEF
|
||||
MNE_DATASETS["hf_sef_raw"] = dict(
|
||||
archive_name="hf_sef_raw.tar.gz",
|
||||
hash="md5:33934351e558542bafa9b262ac071168",
|
||||
url="https://zenodo.org/record/889296/files/hf_sef_raw.tar.gz",
|
||||
folder_name="hf_sef",
|
||||
config_key="MNE_DATASETS_HF_SEF_PATH",
|
||||
)
|
||||
MNE_DATASETS["hf_sef_evoked"] = dict(
|
||||
archive_name="hf_sef_evoked.tar.gz",
|
||||
hash="md5:13d34cb5db584e00868677d8fb0aab2b",
|
||||
# Zenodo can be slow, so we use the OSF mirror
|
||||
# url=('https://zenodo.org/record/3523071/files/'
|
||||
# 'hf_sef_evoked.tar.gz'),
|
||||
url="https://osf.io/25f8d/download?version=2",
|
||||
folder_name="hf_sef",
|
||||
config_key="MNE_DATASETS_HF_SEF_PATH",
|
||||
)
|
||||
|
||||
# "fake" dataset (for testing)
|
||||
MNE_DATASETS["fake"] = dict(
|
||||
archive_name="foo.tgz",
|
||||
hash="md5:3194e9f7b46039bb050a74f3e1ae9908",
|
||||
url="https://github.com/mne-tools/mne-testing-data/raw/master/datasets/foo.tgz",
|
||||
folder_name="foo",
|
||||
config_key="MNE_DATASETS_FAKE_PATH",
|
||||
)
|
||||
|
||||
# eyelink dataset
|
||||
MNE_DATASETS["eyelink"] = dict(
|
||||
archive_name="MNE-eyelink-data.zip",
|
||||
hash="md5:68a6323ef17d655f1a659c3290ee1c3f",
|
||||
url=("https://osf.io/xsu4g/download?version=1"),
|
||||
folder_name="MNE-eyelink-data",
|
||||
config_key="MNE_DATASETS_EYELINK_PATH",
|
||||
)
|
||||
7
mne/datasets/eegbci/__init__.py
Normal file
7
mne/datasets/eegbci/__init__.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
"""EEG Motor Movement/Imagery Dataset."""
|
||||
|
||||
from .eegbci import data_path, load_data, standardize
|
||||
268
mne/datasets/eegbci/eegbci.py
Normal file
268
mne/datasets/eegbci/eegbci.py
Normal file
@@ -0,0 +1,268 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
import os
|
||||
import re
|
||||
import time
|
||||
from importlib.resources import files
|
||||
from os import path as op
|
||||
from pathlib import Path
|
||||
|
||||
from ...utils import _url_to_local_path, logger, verbose, warn
|
||||
from ..utils import _do_path_update, _downloader_params, _get_path, _log_time_size
|
||||
|
||||
EEGMI_URL = "https://physionet.org/files/eegmmidb/1.0.0/"
|
||||
|
||||
|
||||
@verbose
|
||||
def data_path(url, path=None, force_update=False, update_path=None, *, verbose=None):
|
||||
"""Get path to local copy of EEGMMI dataset URL.
|
||||
|
||||
This is a low-level function useful for getting a local copy of a remote EEGBCI
|
||||
dataset :footcite:`SchalkEtAl2004`, which is also available at PhysioNet
|
||||
:footcite:`GoldbergerEtAl2000`. Metadata, such as the meaning of event markers
|
||||
may be obtained from the
|
||||
`PhysioNet documentation page <https://physionet.org/content/eegmmidb/1.0.0/>`_.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
url : str
|
||||
The dataset to use.
|
||||
path : None | path-like
|
||||
Location of where to look for the EEGBCI data. If ``None``, the environment
|
||||
variable or config parameter ``MNE_DATASETS_EEGBCI_PATH`` is used. If neither
|
||||
exists, the ``~/mne_data`` directory is used. If the EEGBCI dataset is not found
|
||||
under the given path, the data will be automatically downloaded to the specified
|
||||
folder.
|
||||
force_update : bool
|
||||
Force update of the dataset even if a local copy exists.
|
||||
update_path : bool | None
|
||||
If ``True``, set ``MNE_DATASETS_EEGBCI_PATH`` in the configuration to the given
|
||||
path. If ``None``, the user is prompted.
|
||||
%(verbose)s
|
||||
|
||||
Returns
|
||||
-------
|
||||
path : list of Path
|
||||
Local path to the given data file. This path is contained inside a list of
|
||||
length one for compatibility.
|
||||
|
||||
Notes
|
||||
-----
|
||||
For example, one could do:
|
||||
|
||||
>>> from mne.datasets import eegbci
|
||||
>>> url = "http://www.physionet.org/physiobank/database/eegmmidb/"
|
||||
>>> eegbci.data_path(url, "~/datasets") # doctest:+SKIP
|
||||
|
||||
This would download the given EEGBCI data file to the ``~/datasets`` folder and
|
||||
prompt the user to store this path in the config (if it does not already exist).
|
||||
|
||||
References
|
||||
----------
|
||||
.. footbibliography::
|
||||
"""
|
||||
import pooch
|
||||
|
||||
key = "MNE_DATASETS_EEGBCI_PATH"
|
||||
name = "EEGBCI"
|
||||
path = _get_path(path, key, name)
|
||||
fname = "MNE-eegbci-data"
|
||||
destination = _url_to_local_path(url, op.join(path, fname))
|
||||
destinations = [destination]
|
||||
|
||||
# fetch the file
|
||||
downloader = pooch.HTTPDownloader(**_downloader_params())
|
||||
if not op.isfile(destination) or force_update:
|
||||
if op.isfile(destination):
|
||||
os.remove(destination)
|
||||
if not op.isdir(op.dirname(destination)):
|
||||
os.makedirs(op.dirname(destination))
|
||||
pooch.retrieve(
|
||||
url=url,
|
||||
path=destination,
|
||||
downloader=downloader,
|
||||
fname=fname,
|
||||
)
|
||||
|
||||
# offer to update the path
|
||||
_do_path_update(path, update_path, key, name)
|
||||
destinations = [Path(dest) for dest in destinations]
|
||||
return destinations
|
||||
|
||||
|
||||
@verbose
|
||||
def load_data(
|
||||
subjects=None,
|
||||
runs=None,
|
||||
*,
|
||||
subject=None,
|
||||
path=None,
|
||||
force_update=False,
|
||||
update_path=None,
|
||||
base_url=EEGMI_URL,
|
||||
verbose=None,
|
||||
): # noqa: D301
|
||||
"""Get paths to local copies of EEGBCI dataset files.
|
||||
|
||||
This will fetch data for the EEGBCI dataset :footcite:`SchalkEtAl2004`, which is
|
||||
also available at PhysioNet :footcite:`GoldbergerEtAl2000`. Metadata, such as the
|
||||
meaning of event markers may be obtained from the
|
||||
`PhysioNet documentation page <https://physionet.org/content/eegmmidb/1.0.0/>`_.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
subjects : int | list of int
|
||||
The subjects to use. Can be in the range of 1-109 (inclusive).
|
||||
runs : int | list of int
|
||||
The runs to use (see Notes for details).
|
||||
subject : int
|
||||
This parameter is deprecated and will be removed in mne version 1.9.
|
||||
Please use ``subjects`` instead.
|
||||
path : None | path-like
|
||||
Location of where to look for the EEGBCI data. If ``None``, the environment
|
||||
variable or config parameter ``MNE_DATASETS_EEGBCI_PATH`` is used. If neither
|
||||
exists, the ``~/mne_data`` directory is used. If the EEGBCI dataset is not found
|
||||
under the given path, the data will be automatically downloaded to the specified
|
||||
folder.
|
||||
force_update : bool
|
||||
Force update of the dataset even if a local copy exists.
|
||||
update_path : bool | None
|
||||
If ``True``, set ``MNE_DATASETS_EEGBCI_PATH`` in the configuration to the given
|
||||
path. If ``None``, the user is prompted.
|
||||
base_url : str
|
||||
The URL root for the data.
|
||||
%(verbose)s
|
||||
|
||||
Returns
|
||||
-------
|
||||
paths : list
|
||||
List of local data paths of the given type.
|
||||
|
||||
Notes
|
||||
-----
|
||||
The run numbers correspond to:
|
||||
|
||||
========= ===================================
|
||||
run task
|
||||
========= ===================================
|
||||
1 Baseline, eyes open
|
||||
2 Baseline, eyes closed
|
||||
3, 7, 11 Motor execution: left vs right hand
|
||||
4, 8, 12 Motor imagery: left vs right hand
|
||||
5, 9, 13 Motor execution: hands vs feet
|
||||
6, 10, 14 Motor imagery: hands vs feet
|
||||
========= ===================================
|
||||
|
||||
For example, one could do::
|
||||
|
||||
>>> from mne.datasets import eegbci
|
||||
>>> eegbci.load_data([1, 2], [6, 10, 14], "~/datasets") # doctest:+SKIP
|
||||
|
||||
This would download runs 6, 10, and 14 (hand/foot motor imagery) runs from subjects
|
||||
1 and 2 in the EEGBCI dataset to "~/datasets" and prompt the user to store this path
|
||||
in the config (if it does not already exist).
|
||||
|
||||
References
|
||||
----------
|
||||
.. footbibliography::
|
||||
"""
|
||||
import pooch
|
||||
|
||||
# XXX: Remove this with mne 1.9 ↓↓↓
|
||||
# Also remove the subject parameter at that point.
|
||||
# Also remove the `None` default for subjects and runs params at that point.
|
||||
if subject is not None:
|
||||
subjects = subject
|
||||
warn(
|
||||
"The ``subject`` parameter is deprecated and will be removed in version "
|
||||
"1.9. Use the ``subjects`` parameter (note the `s`) to suppress this "
|
||||
"warning.",
|
||||
FutureWarning,
|
||||
)
|
||||
del subject
|
||||
if subjects is None or runs is None:
|
||||
raise ValueError("You must pass the parameters ``subjects`` and ``runs``.")
|
||||
# ↑↑↑
|
||||
|
||||
t0 = time.time()
|
||||
|
||||
if not hasattr(subjects, "__iter__"):
|
||||
subjects = [subjects]
|
||||
|
||||
if not hasattr(runs, "__iter__"):
|
||||
runs = [runs]
|
||||
|
||||
# get local storage path
|
||||
config_key = "MNE_DATASETS_EEGBCI_PATH"
|
||||
folder = "MNE-eegbci-data"
|
||||
name = "EEGBCI"
|
||||
path = _get_path(path, config_key, name)
|
||||
|
||||
# extract path parts
|
||||
pattern = r"(?:https?://.*)(files)/(eegmmidb)/(\d+\.\d+\.\d+)/?"
|
||||
match = re.compile(pattern).match(base_url)
|
||||
if match is None:
|
||||
raise ValueError(
|
||||
"base_url does not match the expected EEGMI folder "
|
||||
"structure. Please notify MNE-Python developers."
|
||||
)
|
||||
base_path = op.join(path, folder, *match.groups())
|
||||
|
||||
# create the download manager
|
||||
fetcher = pooch.create(
|
||||
path=base_path,
|
||||
base_url=base_url,
|
||||
version=None, # data versioning is decoupled from MNE-Python version
|
||||
registry=None, # registry is loaded from file (below)
|
||||
retry_if_failed=2, # 2 retries = 3 total attempts
|
||||
)
|
||||
|
||||
# load the checksum registry
|
||||
registry = files("mne").joinpath("data", "eegbci_checksums.txt")
|
||||
fetcher.load_registry(registry)
|
||||
|
||||
# fetch the file(s)
|
||||
data_paths = []
|
||||
sz = 0
|
||||
for subject in subjects:
|
||||
for run in runs:
|
||||
file_part = f"S{subject:03d}/S{subject:03d}R{run:02d}.edf"
|
||||
destination = Path(base_path, file_part)
|
||||
data_paths.append(destination)
|
||||
if destination.exists():
|
||||
if force_update:
|
||||
destination.unlink()
|
||||
else:
|
||||
continue
|
||||
if sz == 0: # log once
|
||||
logger.info("Downloading EEGBCI data")
|
||||
fetcher.fetch(file_part)
|
||||
# update path in config if desired
|
||||
sz += destination.stat().st_size
|
||||
|
||||
_do_path_update(path, update_path, config_key, name)
|
||||
if sz > 0:
|
||||
_log_time_size(t0, sz)
|
||||
return data_paths
|
||||
|
||||
|
||||
def standardize(raw):
|
||||
"""Standardize channel positions and names.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
raw : instance of Raw
|
||||
The raw data to standardize. Operates in-place.
|
||||
"""
|
||||
rename = dict()
|
||||
for name in raw.ch_names:
|
||||
std_name = name.strip(".")
|
||||
std_name = std_name.upper()
|
||||
if std_name.endswith("Z"):
|
||||
std_name = std_name[:-1] + "z"
|
||||
if std_name.startswith("FP"):
|
||||
std_name = "Fp" + std_name[2:]
|
||||
rename[name] = std_name
|
||||
raw.rename_channels(rename)
|
||||
7
mne/datasets/epilepsy_ecog/__init__.py
Normal file
7
mne/datasets/epilepsy_ecog/__init__.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
"""Clinical epilepsy datasets."""
|
||||
|
||||
from ._data import data_path, get_version
|
||||
32
mne/datasets/epilepsy_ecog/_data.py
Normal file
32
mne/datasets/epilepsy_ecog/_data.py
Normal file
@@ -0,0 +1,32 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from ...utils import verbose
|
||||
from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc
|
||||
|
||||
|
||||
@verbose
|
||||
def data_path(
|
||||
path=None, force_update=False, update_path=True, download=True, *, verbose=None
|
||||
): # noqa: D103
|
||||
return _download_mne_dataset(
|
||||
name="epilepsy_ecog",
|
||||
processor="untar",
|
||||
path=path,
|
||||
force_update=force_update,
|
||||
update_path=update_path,
|
||||
download=download,
|
||||
)
|
||||
|
||||
|
||||
data_path.__doc__ = _data_path_doc.format(
|
||||
name="epilepsy_ecog", conf="MNE_DATASETS_EPILEPSY_ECOG_PATH"
|
||||
)
|
||||
|
||||
|
||||
def get_version(): # noqa: D103
|
||||
return _get_version("epilepsy_ecog")
|
||||
|
||||
|
||||
get_version.__doc__ = _version_doc.format(name="epilepsy_ecog")
|
||||
7
mne/datasets/erp_core/__init__.py
Normal file
7
mne/datasets/erp_core/__init__.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
"""ERP-CORE EEG dataset."""
|
||||
|
||||
from .erp_core import data_path, get_version
|
||||
32
mne/datasets/erp_core/erp_core.py
Normal file
32
mne/datasets/erp_core/erp_core.py
Normal file
@@ -0,0 +1,32 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from ...utils import verbose
|
||||
from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc
|
||||
|
||||
|
||||
@verbose
|
||||
def data_path(
|
||||
path=None, force_update=False, update_path=True, download=True, *, verbose=None
|
||||
): # noqa: D103
|
||||
return _download_mne_dataset(
|
||||
name="erp_core",
|
||||
processor="untar",
|
||||
path=path,
|
||||
force_update=force_update,
|
||||
update_path=update_path,
|
||||
download=download,
|
||||
)
|
||||
|
||||
|
||||
data_path.__doc__ = _data_path_doc.format(
|
||||
name="erp_core", conf="MNE_DATASETS_ERP_CORE_PATH"
|
||||
)
|
||||
|
||||
|
||||
def get_version(): # noqa: D103
|
||||
return _get_version("erp_core")
|
||||
|
||||
|
||||
get_version.__doc__ = _version_doc.format(name="erp_core")
|
||||
7
mne/datasets/eyelink/__init__.py
Normal file
7
mne/datasets/eyelink/__init__.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
"""Eyelink test dataset."""
|
||||
|
||||
from .eyelink import data_path, get_version
|
||||
32
mne/datasets/eyelink/eyelink.py
Normal file
32
mne/datasets/eyelink/eyelink.py
Normal file
@@ -0,0 +1,32 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from ...utils import verbose
|
||||
from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc
|
||||
|
||||
|
||||
@verbose
|
||||
def data_path(
|
||||
path=None, force_update=False, update_path=True, download=True, *, verbose=None
|
||||
): # noqa: D103
|
||||
return _download_mne_dataset(
|
||||
name="eyelink",
|
||||
processor="unzip",
|
||||
path=path,
|
||||
force_update=force_update,
|
||||
update_path=update_path,
|
||||
download=download,
|
||||
)
|
||||
|
||||
|
||||
data_path.__doc__ = _data_path_doc.format(
|
||||
name="eyelink", conf="MNE_DATASETS_EYELINK_PATH"
|
||||
)
|
||||
|
||||
|
||||
def get_version(): # noqa: D103
|
||||
return _get_version("eyelink")
|
||||
|
||||
|
||||
get_version.__doc__ = _version_doc.format(name="eyelink")
|
||||
7
mne/datasets/fieldtrip_cmc/__init__.py
Normal file
7
mne/datasets/fieldtrip_cmc/__init__.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
"""fieldtrip Cortico-Muscular Coherence (CMC) Dataset."""
|
||||
|
||||
from .fieldtrip_cmc import data_path, get_version
|
||||
32
mne/datasets/fieldtrip_cmc/fieldtrip_cmc.py
Normal file
32
mne/datasets/fieldtrip_cmc/fieldtrip_cmc.py
Normal file
@@ -0,0 +1,32 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from ...utils import verbose
|
||||
from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc
|
||||
|
||||
|
||||
@verbose
|
||||
def data_path(
|
||||
path=None, force_update=False, update_path=True, download=True, *, verbose=None
|
||||
): # noqa: D103
|
||||
return _download_mne_dataset(
|
||||
name="fieldtrip_cmc",
|
||||
processor="nested_unzip",
|
||||
path=path,
|
||||
force_update=force_update,
|
||||
update_path=update_path,
|
||||
download=download,
|
||||
)
|
||||
|
||||
|
||||
data_path.__doc__ = _data_path_doc.format(
|
||||
name="fieldtrip_cmc", conf="MNE_DATASETS_FIELDTRIP_CMC_PATH"
|
||||
)
|
||||
|
||||
|
||||
def get_version(): # noqa: D103
|
||||
return _get_version("fieldtrip_cmc")
|
||||
|
||||
|
||||
get_version.__doc__ = _version_doc.format(name="fieldtrip_cmc")
|
||||
7
mne/datasets/fnirs_motor/__init__.py
Normal file
7
mne/datasets/fnirs_motor/__init__.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
"""fNIRS motor dataset."""
|
||||
|
||||
from .fnirs_motor import data_path, get_version
|
||||
32
mne/datasets/fnirs_motor/fnirs_motor.py
Normal file
32
mne/datasets/fnirs_motor/fnirs_motor.py
Normal file
@@ -0,0 +1,32 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from ...utils import verbose
|
||||
from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc
|
||||
|
||||
|
||||
@verbose
|
||||
def data_path(
|
||||
path=None, force_update=False, update_path=True, download=True, *, verbose=None
|
||||
): # noqa: D103
|
||||
return _download_mne_dataset(
|
||||
name="fnirs_motor",
|
||||
processor="untar",
|
||||
path=path,
|
||||
force_update=force_update,
|
||||
update_path=update_path,
|
||||
download=download,
|
||||
)
|
||||
|
||||
|
||||
data_path.__doc__ = _data_path_doc.format(
|
||||
name="fnirs_motor", conf="MNE_DATASETS_FNIRS_MOTOR_PATH"
|
||||
)
|
||||
|
||||
|
||||
def get_version(): # noqa: D103
|
||||
return _get_version("fnirs_motor")
|
||||
|
||||
|
||||
get_version.__doc__ = _version_doc.format(name="fnirs_motor")
|
||||
7
mne/datasets/hf_sef/__init__.py
Normal file
7
mne/datasets/hf_sef/__init__.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
"""HF-SEF dataset."""
|
||||
|
||||
from .hf_sef import data_path
|
||||
87
mne/datasets/hf_sef/hf_sef.py
Normal file
87
mne/datasets/hf_sef/hf_sef.py
Normal file
@@ -0,0 +1,87 @@
|
||||
#!/usr/bin/env python2
|
||||
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
|
||||
import os
|
||||
import os.path as op
|
||||
|
||||
from ...utils import _check_option, verbose
|
||||
from ..config import MNE_DATASETS
|
||||
from ..utils import _do_path_update, _download_mne_dataset, _get_path
|
||||
|
||||
|
||||
@verbose
|
||||
def data_path(
|
||||
dataset="evoked", path=None, force_update=False, update_path=True, *, verbose=None
|
||||
):
|
||||
"""Get path to local copy of the high frequency SEF dataset.
|
||||
|
||||
Gets a local copy of the high frequency SEF MEG dataset
|
||||
:footcite:`NurminenEtAl2017`.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
dataset : 'evoked' | 'raw'
|
||||
Whether to get the main dataset (evoked, structural and the rest) or
|
||||
the separate dataset containing raw MEG data only.
|
||||
path : None | str
|
||||
Where to look for the HF-SEF data storing location.
|
||||
If None, the environment variable or config parameter
|
||||
``MNE_DATASETS_HF_SEF_PATH`` is used. If it doesn't exist, the
|
||||
"~/mne_data" directory is used. If the HF-SEF dataset
|
||||
is not found under the given path, the data
|
||||
will be automatically downloaded to the specified folder.
|
||||
force_update : bool
|
||||
Force update of the dataset even if a local copy exists.
|
||||
update_path : bool | None
|
||||
If True, set the MNE_DATASETS_HF_SEF_PATH in mne-python
|
||||
config to the given path. If None, the user is prompted.
|
||||
%(verbose)s
|
||||
|
||||
Returns
|
||||
-------
|
||||
path : str
|
||||
Local path to the directory where the HF-SEF data is stored.
|
||||
|
||||
References
|
||||
----------
|
||||
.. footbibliography::
|
||||
"""
|
||||
_check_option("dataset", dataset, ("evoked", "raw"))
|
||||
if dataset == "raw":
|
||||
data_dict = MNE_DATASETS["hf_sef_raw"]
|
||||
data_dict["dataset_name"] = "hf_sef_raw"
|
||||
else:
|
||||
data_dict = MNE_DATASETS["hf_sef_evoked"]
|
||||
data_dict["dataset_name"] = "hf_sef_evoked"
|
||||
config_key = data_dict["config_key"]
|
||||
folder_name = data_dict["folder_name"]
|
||||
|
||||
# get download path for specific dataset
|
||||
path = _get_path(path=path, key=config_key, name=folder_name)
|
||||
final_path = op.join(path, folder_name)
|
||||
megdir = op.join(final_path, "MEG", "subject_a")
|
||||
has_raw = (
|
||||
dataset == "raw"
|
||||
and op.isdir(megdir)
|
||||
and any("raw" in filename for filename in os.listdir(megdir))
|
||||
)
|
||||
has_evoked = dataset == "evoked" and op.isdir(op.join(final_path, "subjects"))
|
||||
# data not there, or force_update requested:
|
||||
if has_raw or has_evoked and not force_update:
|
||||
_do_path_update(path, update_path, config_key, folder_name)
|
||||
return final_path
|
||||
|
||||
# instantiate processor that unzips file
|
||||
data_path = _download_mne_dataset(
|
||||
name=data_dict["dataset_name"],
|
||||
processor="untar",
|
||||
path=path,
|
||||
force_update=force_update,
|
||||
update_path=update_path,
|
||||
download=True,
|
||||
)
|
||||
return data_path
|
||||
7
mne/datasets/kiloword/__init__.py
Normal file
7
mne/datasets/kiloword/__init__.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
"""MNE visual_92_categories dataset."""
|
||||
|
||||
from .kiloword import data_path, get_version
|
||||
64
mne/datasets/kiloword/kiloword.py
Normal file
64
mne/datasets/kiloword/kiloword.py
Normal file
@@ -0,0 +1,64 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from ...utils import verbose
|
||||
from ..utils import _download_mne_dataset, _get_version, _version_doc
|
||||
|
||||
|
||||
@verbose
|
||||
def data_path(
|
||||
path=None, force_update=False, update_path=True, download=True, *, verbose=None
|
||||
):
|
||||
"""Get path to local copy of the kiloword dataset.
|
||||
|
||||
This is the dataset from :footcite:`DufauEtAl2015`.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
path : None | str
|
||||
Location of where to look for the kiloword data storing
|
||||
location. If None, the environment variable or config parameter
|
||||
MNE_DATASETS_KILOWORD_PATH is used. If it doesn't exist,
|
||||
the "mne-python/examples" directory is used. If the
|
||||
kiloword dataset is not found under the given path (e.g.,
|
||||
as "mne-python/examples/MNE-kiloword-data"), the data
|
||||
will be automatically downloaded to the specified folder.
|
||||
force_update : bool
|
||||
Force update of the dataset even if a local copy exists.
|
||||
update_path : bool | None
|
||||
If True, set the MNE_DATASETS_KILOWORD_PATH in mne-python
|
||||
config to the given path. If None, the user is prompted.
|
||||
download : bool
|
||||
If False and the kiloword dataset has not been downloaded yet,
|
||||
it will not be downloaded and the path will be returned as
|
||||
'' (empty string). This is mostly used for debugging purposes
|
||||
and can be safely ignored by most users.
|
||||
%(verbose)s
|
||||
|
||||
Returns
|
||||
-------
|
||||
path : list of Path
|
||||
Local path to the given data file. This path is contained inside a list
|
||||
of length one, for compatibility.
|
||||
|
||||
References
|
||||
----------
|
||||
.. footbibliography::
|
||||
"""
|
||||
return _download_mne_dataset(
|
||||
name="kiloword",
|
||||
processor="untar",
|
||||
path=path,
|
||||
force_update=force_update,
|
||||
update_path=update_path,
|
||||
download=download,
|
||||
)
|
||||
|
||||
|
||||
def get_version():
|
||||
"""Get dataset version."""
|
||||
return _get_version("kiloword")
|
||||
|
||||
|
||||
get_version.__doc__ = _version_doc.format(name="kiloword")
|
||||
7
mne/datasets/limo/__init__.py
Normal file
7
mne/datasets/limo/__init__.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
"""LIMO Dataset."""
|
||||
|
||||
from .limo import data_path, load_data
|
||||
372
mne/datasets/limo/limo.py
Normal file
372
mne/datasets/limo/limo.py
Normal file
@@ -0,0 +1,372 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
import os.path as op
|
||||
import time
|
||||
from pathlib import Path
|
||||
|
||||
import numpy as np
|
||||
from scipy.io import loadmat
|
||||
|
||||
from ..._fiff.meas_info import create_info
|
||||
from ...channels import make_standard_montage
|
||||
from ...epochs import EpochsArray
|
||||
from ...utils import _check_pandas_installed, logger, verbose
|
||||
from ..utils import _do_path_update, _downloader_params, _get_path, _log_time_size
|
||||
|
||||
# root url for LIMO files
|
||||
root_url = "https://files.de-1.osf.io/v1/resources/52rea/providers/osfstorage/"
|
||||
|
||||
|
||||
@verbose
|
||||
def data_path(
|
||||
subject, path=None, force_update=False, update_path=None, *, verbose=None
|
||||
):
|
||||
"""Get path to local copy of LIMO dataset URL.
|
||||
|
||||
This is a low-level function useful for getting a local copy of the
|
||||
remote LIMO dataset :footcite:`Rousselet2016`. The complete dataset is
|
||||
available at datashare.is.ed.ac.uk/.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
subject : int
|
||||
Subject to download. Must be of :class:`ìnt` in the range from 1
|
||||
to 18 (inclusive).
|
||||
path : None | str
|
||||
Location of where to look for the LIMO data storing directory.
|
||||
If None, the environment variable or config parameter
|
||||
``MNE_DATASETS_LIMO_PATH`` is used. If it doesn't exist, the
|
||||
"~/mne_data" directory is used. If the LIMO dataset
|
||||
is not found under the given path, the data
|
||||
will be automatically downloaded to the specified folder.
|
||||
force_update : bool
|
||||
Force update of the dataset even if a local copy exists.
|
||||
update_path : bool | None
|
||||
If True, set the MNE_DATASETS_LIMO_PATH in mne-python
|
||||
config to the given path. If None, the user is prompted.
|
||||
%(verbose)s
|
||||
|
||||
Returns
|
||||
-------
|
||||
path : str
|
||||
Local path to the given data file.
|
||||
|
||||
Notes
|
||||
-----
|
||||
For example, one could do:
|
||||
|
||||
>>> from mne.datasets import limo
|
||||
>>> limo.data_path(subject=1, path=os.getenv('HOME') + '/datasets') # doctest:+SKIP
|
||||
|
||||
This would download the LIMO data file to the 'datasets' folder,
|
||||
and prompt the user to save the 'datasets' path to the mne-python config,
|
||||
if it isn't there already.
|
||||
|
||||
References
|
||||
----------
|
||||
.. footbibliography::
|
||||
""" # noqa: E501
|
||||
import pooch
|
||||
|
||||
t0 = time.time()
|
||||
|
||||
downloader = pooch.HTTPDownloader(**_downloader_params())
|
||||
|
||||
# local storage patch
|
||||
config_key = "MNE_DATASETS_LIMO_PATH"
|
||||
name = "LIMO"
|
||||
subj = f"S{subject}"
|
||||
path = _get_path(path, config_key, name)
|
||||
base_path = op.join(path, "MNE-limo-data")
|
||||
subject_path = op.join(base_path, subj)
|
||||
# the remote URLs are in the form of UUIDs:
|
||||
urls = dict(
|
||||
S18={
|
||||
"Yr.mat": "5cf839833a4d9500178a6ff8",
|
||||
"LIMO.mat": "5cf83907e650a2001ad592e4",
|
||||
},
|
||||
S17={
|
||||
"Yr.mat": "5cf838e83a4d9500168aeb76",
|
||||
"LIMO.mat": "5cf83867a542b80019c87602",
|
||||
},
|
||||
S16={
|
||||
"Yr.mat": "5cf83857e650a20019d5778f",
|
||||
"LIMO.mat": "5cf837dc3a4d9500188a64fe",
|
||||
},
|
||||
S15={
|
||||
"Yr.mat": "5cf837cce650a2001ad591e8",
|
||||
"LIMO.mat": "5cf83758a542b8001ac7d11d",
|
||||
},
|
||||
S14={
|
||||
"Yr.mat": "5cf837493a4d9500198a938f",
|
||||
"LIMO.mat": "5cf836e4a542b8001bc7cc53",
|
||||
},
|
||||
S13={
|
||||
"Yr.mat": "5cf836d23a4d9500178a6df7",
|
||||
"LIMO.mat": "5cf836543a4d9500168ae7cb",
|
||||
},
|
||||
S12={
|
||||
"Yr.mat": "5cf83643d4c7d700193e5954",
|
||||
"LIMO.mat": "5cf835193a4d9500178a6c92",
|
||||
},
|
||||
S11={
|
||||
"Yr.mat": "5cf8356ea542b8001cc81517",
|
||||
"LIMO.mat": "5cf834f7d4c7d700163daab8",
|
||||
},
|
||||
S10={
|
||||
"Yr.mat": "5cf833b0e650a20019d57454",
|
||||
"LIMO.mat": "5cf83204e650a20018d59eb2",
|
||||
},
|
||||
S9={
|
||||
"Yr.mat": "5cf83201a542b8001cc811cf",
|
||||
"LIMO.mat": "5cf8316c3a4d9500168ae13b",
|
||||
},
|
||||
S8={
|
||||
"Yr.mat": "5cf8326ce650a20017d60373",
|
||||
"LIMO.mat": "5cf8316d3a4d9500198a8dc5",
|
||||
},
|
||||
S7={
|
||||
"Yr.mat": "5cf834a03a4d9500168ae59b",
|
||||
"LIMO.mat": "5cf83069e650a20017d600d7",
|
||||
},
|
||||
S6={
|
||||
"Yr.mat": "5cf830e6a542b80019c86a70",
|
||||
"LIMO.mat": "5cf83057a542b80019c869ca",
|
||||
},
|
||||
S5={
|
||||
"Yr.mat": "5cf8115be650a20018d58041",
|
||||
"LIMO.mat": "5cf80c0bd4c7d700193e213c",
|
||||
},
|
||||
S4={
|
||||
"Yr.mat": "5cf810c9a542b80019c8450a",
|
||||
"LIMO.mat": "5cf80bf83a4d9500198a6eb4",
|
||||
},
|
||||
S3={
|
||||
"Yr.mat": "5cf80c55d4c7d700163d8f52",
|
||||
"LIMO.mat": "5cf80bdea542b80019c83cab",
|
||||
},
|
||||
S2={
|
||||
"Yr.mat": "5cde827123fec40019e01300",
|
||||
"LIMO.mat": "5cde82682a50c4001677c259",
|
||||
},
|
||||
S1={
|
||||
"Yr.mat": "5d6d3071536cf5001a8b0c78",
|
||||
"LIMO.mat": "5d6d305f6f41fc001a3151d8",
|
||||
},
|
||||
)
|
||||
# these can't be in the registry file (mne/data/dataset_checksums.txt)
|
||||
# because of filename duplication
|
||||
hashes = dict(
|
||||
S18={
|
||||
"Yr.mat": "md5:87f883d442737971a80fc0a35d057e51",
|
||||
"LIMO.mat": "md5:8b4879646f65d7876fa4adf2e40162c5",
|
||||
},
|
||||
S17={
|
||||
"Yr.mat": "md5:7b667ec9eefd7a9996f61ae270e295ee",
|
||||
"LIMO.mat": "md5:22eaca4e6fad54431fd61b307fc426b8",
|
||||
},
|
||||
S16={
|
||||
"Yr.mat": "md5:c877afdb4897426421577e863a45921a",
|
||||
"LIMO.mat": "md5:86672d7afbea1e8c39305bc3f852c8c2",
|
||||
},
|
||||
S15={
|
||||
"Yr.mat": "md5:eea9e0140af598fefc08c886a6f05de5",
|
||||
"LIMO.mat": "md5:aed5cb71ddbfd27c6a3ac7d3e613d07f",
|
||||
},
|
||||
S14={
|
||||
"Yr.mat": "md5:8bd842cfd8588bd5d32e72fdbe70b66e",
|
||||
"LIMO.mat": "md5:1e07d1f36f2eefad435a77530daf2680",
|
||||
},
|
||||
S13={
|
||||
"Yr.mat": "md5:d7925d2af7288b8a5186dfb5dbb63d34",
|
||||
"LIMO.mat": "md5:ba891015d2f9e447955fffa9833404ca",
|
||||
},
|
||||
S12={
|
||||
"Yr.mat": "md5:0e1d05beaa4bf2726e0d0671b78fe41e",
|
||||
"LIMO.mat": "md5:423fd479d71097995b6614ecb11df9ad",
|
||||
},
|
||||
S11={
|
||||
"Yr.mat": "md5:1b0016fb9832e43b71f79c1992fcbbb1",
|
||||
"LIMO.mat": "md5:1a281348c2a41ee899f42731d30cda70",
|
||||
},
|
||||
S10={
|
||||
"Yr.mat": "md5:13c66f60e241b9a9cc576eaf1b55a417",
|
||||
"LIMO.mat": "md5:3c4b41e221eb352a21bbef1a7e006f06",
|
||||
},
|
||||
S9={
|
||||
"Yr.mat": "md5:3ae1d9c3a1d9325deea2f2dddd1ab507",
|
||||
"LIMO.mat": "md5:5e204e2a4bcfe4f535b4b1af469b37f7",
|
||||
},
|
||||
S8={
|
||||
"Yr.mat": "md5:7e9adbca4e03d8d7ce8ea07ccecdc8fd",
|
||||
"LIMO.mat": "md5:88313c21d34428863590e586b2bc3408",
|
||||
},
|
||||
S7={
|
||||
"Yr.mat": "md5:6b5290a6725ecebf1022d5d2789b186d",
|
||||
"LIMO.mat": "md5:8c769219ebc14ce3f595063e84bfc0a9",
|
||||
},
|
||||
S6={
|
||||
"Yr.mat": "md5:420c858a8340bf7c28910b7b0425dc5d",
|
||||
"LIMO.mat": "md5:9cf4e1a405366d6bd0cc6d996e32fd63",
|
||||
},
|
||||
S5={
|
||||
"Yr.mat": "md5:946436cfb474c8debae56ffb1685ecf3",
|
||||
"LIMO.mat": "md5:241fac95d3a79d2cea081391fb7078bd",
|
||||
},
|
||||
S4={
|
||||
"Yr.mat": "md5:c8216af78ac87b739e86e57b345cafdd",
|
||||
"LIMO.mat": "md5:8e10ef36c2e075edc2f787581ba33459",
|
||||
},
|
||||
S3={
|
||||
"Yr.mat": "md5:ff02e885b65b7b807146f259a30b1b5e",
|
||||
"LIMO.mat": "md5:59b5fb3a9749003133608b5871309e2c",
|
||||
},
|
||||
S2={
|
||||
"Yr.mat": "md5:a4329022e57fd07ceceb7d1735fd2718",
|
||||
"LIMO.mat": "md5:98b284b567f2dd395c936366e404f2c6",
|
||||
},
|
||||
S1={
|
||||
"Yr.mat": "md5:076c0ae78fb71d43409c1877707df30e",
|
||||
"LIMO.mat": "md5:136c8cf89f8f111a11f531bd9fa6ae69",
|
||||
},
|
||||
)
|
||||
# create the download manager
|
||||
fetcher = pooch.create(
|
||||
path=subject_path,
|
||||
base_url="",
|
||||
version=None, # Data versioning is decoupled from MNE-Python version.
|
||||
registry=hashes[subj],
|
||||
urls={key: f"{root_url}{uuid}" for key, uuid in urls[subj].items()},
|
||||
retry_if_failed=2, # 2 retries = 3 total attempts
|
||||
)
|
||||
# use our logger level for pooch's logger too
|
||||
pooch.get_logger().setLevel(logger.getEffectiveLevel())
|
||||
# fetch the data
|
||||
sz = 0
|
||||
for fname in ("LIMO.mat", "Yr.mat"):
|
||||
destination = Path(subject_path, fname)
|
||||
if destination.exists():
|
||||
if force_update:
|
||||
destination.unlink()
|
||||
else:
|
||||
continue
|
||||
if sz == 0: # log once
|
||||
logger.info("Downloading LIMO data")
|
||||
# fetch the remote file (if local file missing or has hash mismatch)
|
||||
fetcher.fetch(fname=fname, downloader=downloader)
|
||||
sz += destination.stat().st_size
|
||||
# update path in config if desired
|
||||
_do_path_update(path, update_path, config_key, name)
|
||||
if sz > 0:
|
||||
_log_time_size(t0, sz)
|
||||
return base_path
|
||||
|
||||
|
||||
@verbose
|
||||
def load_data(subject, path=None, force_update=False, update_path=None, verbose=None):
|
||||
"""Fetch subjects epochs data for the LIMO data set.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
subject : int
|
||||
Subject to use. Must be of class ìnt in the range from 1 to 18.
|
||||
path : str
|
||||
Location of where to look for the LIMO data.
|
||||
If None, the environment variable or config parameter
|
||||
``MNE_DATASETS_LIMO_PATH`` is used. If it doesn't exist, the
|
||||
"~/mne_data" directory is used.
|
||||
force_update : bool
|
||||
Force update of the dataset even if a local copy exists.
|
||||
update_path : bool | None
|
||||
If True, set the MNE_DATASETS_LIMO_PATH in mne-python
|
||||
config to the given path. If None, the user is prompted.
|
||||
%(verbose)s
|
||||
|
||||
Returns
|
||||
-------
|
||||
epochs : instance of Epochs
|
||||
The epochs.
|
||||
""" # noqa: E501
|
||||
pd = _check_pandas_installed()
|
||||
# subject in question
|
||||
if isinstance(subject, int) and 1 <= subject <= 18:
|
||||
subj = f"S{subject}"
|
||||
else:
|
||||
raise ValueError("subject must be an int in the range from 1 to 18")
|
||||
|
||||
# set limo path, download and decompress files if not found
|
||||
limo_path = data_path(subject, path, force_update, update_path)
|
||||
|
||||
# -- 1) import .mat files
|
||||
# epochs info
|
||||
fname_info = op.join(limo_path, subj, "LIMO.mat")
|
||||
data_info = loadmat(fname_info)
|
||||
# number of epochs per condition
|
||||
design = data_info["LIMO"]["design"][0][0]["X"][0][0]
|
||||
data_info = data_info["LIMO"]["data"][0][0][0][0]
|
||||
# epochs data
|
||||
fname_eeg = op.join(limo_path, subj, "Yr.mat")
|
||||
data = loadmat(fname_eeg)
|
||||
|
||||
# -- 2) get epochs information from structure
|
||||
# sampling rate
|
||||
sfreq = data_info["sampling_rate"][0][0]
|
||||
# tmin and tmax
|
||||
tmin = data_info["start"][0][0]
|
||||
# create events matrix
|
||||
sample = np.arange(len(design))
|
||||
prev_id = np.zeros(len(design))
|
||||
ev_id = design[:, 1]
|
||||
events = np.array([sample, prev_id, ev_id]).astype(int).T
|
||||
# event ids, such that Face B == 1
|
||||
event_id = {"Face/A": 0, "Face/B": 1}
|
||||
|
||||
# -- 3) extract channel labels from LIMO structure
|
||||
# get individual labels
|
||||
labels = data_info["chanlocs"]["labels"]
|
||||
labels = [label for label, *_ in labels[0]]
|
||||
# get montage
|
||||
montage = make_standard_montage("biosemi128")
|
||||
# add external electrodes (e.g., eogs)
|
||||
ch_names = montage.ch_names + ["EXG1", "EXG2", "EXG3", "EXG4"]
|
||||
# match individual labels to labels in montage
|
||||
found_inds = [ind for ind, name in enumerate(ch_names) if name in labels]
|
||||
missing_chans = [name for name in ch_names if name not in labels]
|
||||
assert labels == [ch_names[ind] for ind in found_inds]
|
||||
|
||||
# -- 4) extract data from subjects Yr structure
|
||||
# data is stored as channels x time points x epochs
|
||||
# data['Yr'].shape # <-- see here
|
||||
# transpose to epochs x channels time points
|
||||
data = np.transpose(data["Yr"], (2, 0, 1))
|
||||
# initialize data in expected order
|
||||
temp_data = np.empty((data.shape[0], len(ch_names), data.shape[2]))
|
||||
# copy over the non-missing data
|
||||
for source, target in enumerate(found_inds):
|
||||
# avoid copy when fancy indexing
|
||||
temp_data[:, target, :] = data[:, source, :]
|
||||
# data to V (to match MNE's format)
|
||||
data = temp_data / 1e6
|
||||
# create list containing channel types
|
||||
types = ["eog" if ch.startswith("EXG") else "eeg" for ch in ch_names]
|
||||
|
||||
# -- 5) Create custom info for mne epochs structure
|
||||
# create info
|
||||
info = create_info(ch_names, sfreq, types).set_montage(montage)
|
||||
# get faces and noise variables from design matrix
|
||||
event_list = list(events[:, 2])
|
||||
faces = ["B" if event else "A" for event in event_list]
|
||||
noise = list(design[:, 2])
|
||||
# create epochs metadata
|
||||
metadata = {"face": faces, "phase-coherence": noise}
|
||||
metadata = pd.DataFrame(metadata)
|
||||
|
||||
# -- 6) Create custom epochs array
|
||||
epochs = EpochsArray(
|
||||
data, info, events, tmin, event_id, metadata=metadata, verbose=False
|
||||
)
|
||||
epochs.info["bads"] = missing_chans # missing channels are marked as bad.
|
||||
|
||||
return epochs
|
||||
7
mne/datasets/misc/__init__.py
Normal file
7
mne/datasets/misc/__init__.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
"""MNE misc dataset."""
|
||||
|
||||
from ._misc import data_path, _pytest_mark
|
||||
31
mne/datasets/misc/_misc.py
Normal file
31
mne/datasets/misc/_misc.py
Normal file
@@ -0,0 +1,31 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from ...utils import verbose
|
||||
from ..utils import _data_path_doc, _download_mne_dataset, has_dataset
|
||||
|
||||
|
||||
@verbose
|
||||
def data_path(
|
||||
path=None, force_update=False, update_path=True, download=True, *, verbose=None
|
||||
): # noqa: D103
|
||||
return _download_mne_dataset(
|
||||
name="misc",
|
||||
processor="untar",
|
||||
path=path,
|
||||
force_update=force_update,
|
||||
update_path=update_path,
|
||||
download=download,
|
||||
)
|
||||
|
||||
|
||||
def _pytest_mark():
|
||||
import pytest
|
||||
|
||||
return pytest.mark.skipif(
|
||||
not has_dataset(name="misc"), reason="Requires misc dataset"
|
||||
)
|
||||
|
||||
|
||||
data_path.__doc__ = _data_path_doc.format(name="misc", conf="MNE_DATASETS_MISC_PATH")
|
||||
7
mne/datasets/mtrf/__init__.py
Normal file
7
mne/datasets/mtrf/__init__.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
"""mTRF Dataset."""
|
||||
|
||||
from .mtrf import data_path, get_version
|
||||
32
mne/datasets/mtrf/mtrf.py
Normal file
32
mne/datasets/mtrf/mtrf.py
Normal file
@@ -0,0 +1,32 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from ...utils import verbose
|
||||
from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc
|
||||
|
||||
data_name = "mtrf"
|
||||
|
||||
|
||||
@verbose
|
||||
def data_path(
|
||||
path=None, force_update=False, update_path=True, download=True, *, verbose=None
|
||||
): # noqa: D103
|
||||
return _download_mne_dataset(
|
||||
name=data_name,
|
||||
processor="unzip",
|
||||
path=path,
|
||||
force_update=force_update,
|
||||
update_path=update_path,
|
||||
download=download,
|
||||
)
|
||||
|
||||
|
||||
data_path.__doc__ = _data_path_doc.format(name=data_name, conf="MNE_DATASETS_MTRF_PATH")
|
||||
|
||||
|
||||
def get_version(): # noqa: D103
|
||||
return _get_version(data_name)
|
||||
|
||||
|
||||
get_version.__doc__ = _version_doc.format(name=data_name)
|
||||
7
mne/datasets/multimodal/__init__.py
Normal file
7
mne/datasets/multimodal/__init__.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
"""Multimodal dataset."""
|
||||
|
||||
from .multimodal import data_path, get_version
|
||||
32
mne/datasets/multimodal/multimodal.py
Normal file
32
mne/datasets/multimodal/multimodal.py
Normal file
@@ -0,0 +1,32 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from ...utils import verbose
|
||||
from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc
|
||||
|
||||
|
||||
@verbose
|
||||
def data_path(
|
||||
path=None, force_update=False, update_path=True, download=True, *, verbose=None
|
||||
): # noqa: D103
|
||||
return _download_mne_dataset(
|
||||
name="multimodal",
|
||||
processor="untar",
|
||||
path=path,
|
||||
force_update=force_update,
|
||||
update_path=update_path,
|
||||
download=download,
|
||||
)
|
||||
|
||||
|
||||
data_path.__doc__ = _data_path_doc.format(
|
||||
name="multimodal", conf="MNE_DATASETS_MULTIMODAL_PATH"
|
||||
)
|
||||
|
||||
|
||||
def get_version(): # noqa: D103
|
||||
return _get_version("multimodal")
|
||||
|
||||
|
||||
get_version.__doc__ = _version_doc.format(name="multimodal")
|
||||
7
mne/datasets/opm/__init__.py
Normal file
7
mne/datasets/opm/__init__.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
"""OPM dataset."""
|
||||
|
||||
from .opm import data_path, get_version
|
||||
30
mne/datasets/opm/opm.py
Normal file
30
mne/datasets/opm/opm.py
Normal file
@@ -0,0 +1,30 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from ...utils import verbose
|
||||
from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc
|
||||
|
||||
|
||||
@verbose
|
||||
def data_path(
|
||||
path=None, force_update=False, update_path=True, download=True, *, verbose=None
|
||||
): # noqa: D103
|
||||
return _download_mne_dataset(
|
||||
name="opm",
|
||||
processor="untar",
|
||||
path=path,
|
||||
force_update=force_update,
|
||||
update_path=update_path,
|
||||
download=download,
|
||||
)
|
||||
|
||||
|
||||
data_path.__doc__ = _data_path_doc.format(name="opm", conf="MNE_DATASETS_OPML_PATH")
|
||||
|
||||
|
||||
def get_version(): # noqa: D103
|
||||
return _get_version("opm")
|
||||
|
||||
|
||||
get_version.__doc__ = _version_doc.format(name="opm")
|
||||
7
mne/datasets/phantom_4dbti/__init__.py
Normal file
7
mne/datasets/phantom_4dbti/__init__.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
"""Multimodal dataset."""
|
||||
|
||||
from .phantom_4dbti import data_path, get_version
|
||||
32
mne/datasets/phantom_4dbti/phantom_4dbti.py
Normal file
32
mne/datasets/phantom_4dbti/phantom_4dbti.py
Normal file
@@ -0,0 +1,32 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from ...utils import verbose
|
||||
from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc
|
||||
|
||||
|
||||
@verbose
|
||||
def data_path(
|
||||
path=None, force_update=False, update_path=True, download=True, *, verbose=None
|
||||
): # noqa: D103
|
||||
return _download_mne_dataset(
|
||||
name="phantom_4dbti",
|
||||
processor="unzip",
|
||||
path=path,
|
||||
force_update=force_update,
|
||||
update_path=update_path,
|
||||
download=download,
|
||||
)
|
||||
|
||||
|
||||
data_path.__doc__ = _data_path_doc.format(
|
||||
name="phantom_4dbti", conf="MNE_DATASETS_PHANTOM_4DBTI_PATH"
|
||||
)
|
||||
|
||||
|
||||
def get_version(): # noqa: D103
|
||||
return _get_version("phantom_4dbti")
|
||||
|
||||
|
||||
get_version.__doc__ = _version_doc.format(name="phantom_4dbti")
|
||||
7
mne/datasets/phantom_kernel/__init__.py
Normal file
7
mne/datasets/phantom_kernel/__init__.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
"""Multimodal dataset."""
|
||||
|
||||
from .phantom_kernel import data_path, get_version
|
||||
32
mne/datasets/phantom_kernel/phantom_kernel.py
Normal file
32
mne/datasets/phantom_kernel/phantom_kernel.py
Normal file
@@ -0,0 +1,32 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from ...utils import verbose
|
||||
from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc
|
||||
|
||||
|
||||
@verbose
|
||||
def data_path(
|
||||
path=None, force_update=False, update_path=True, download=True, *, verbose=None
|
||||
): # noqa: D103
|
||||
return _download_mne_dataset(
|
||||
name="phantom_kernel",
|
||||
processor="nested_untar",
|
||||
path=path,
|
||||
force_update=force_update,
|
||||
update_path=update_path,
|
||||
download=download,
|
||||
)
|
||||
|
||||
|
||||
data_path.__doc__ = _data_path_doc.format(
|
||||
name="phantom_kernel", conf="MNE_DATASETS_PHANTOM_KERNEL_PATH"
|
||||
)
|
||||
|
||||
|
||||
def get_version(): # noqa: D103
|
||||
return _get_version("phantom_kernel")
|
||||
|
||||
|
||||
get_version.__doc__ = _version_doc.format(name="phantom_kernel")
|
||||
7
mne/datasets/phantom_kit/__init__.py
Normal file
7
mne/datasets/phantom_kit/__init__.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
"""KIT phantom dataset."""
|
||||
|
||||
from .phantom_kit import data_path, get_version
|
||||
32
mne/datasets/phantom_kit/phantom_kit.py
Normal file
32
mne/datasets/phantom_kit/phantom_kit.py
Normal file
@@ -0,0 +1,32 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from ...utils import verbose
|
||||
from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc
|
||||
|
||||
|
||||
@verbose
|
||||
def data_path(
|
||||
path=None, force_update=False, update_path=True, download=True, *, verbose=None
|
||||
): # noqa: D103
|
||||
return _download_mne_dataset(
|
||||
name="phantom_kit",
|
||||
processor="untar",
|
||||
path=path,
|
||||
force_update=force_update,
|
||||
update_path=update_path,
|
||||
download=download,
|
||||
)
|
||||
|
||||
|
||||
data_path.__doc__ = _data_path_doc.format(
|
||||
name="phantom_kit", conf="MNE_DATASETS_PHANTOM_KIT_PATH"
|
||||
)
|
||||
|
||||
|
||||
def get_version(): # noqa: D103
|
||||
return _get_version("phantom_kit")
|
||||
|
||||
|
||||
get_version.__doc__ = _version_doc.format(name="phantom_kit")
|
||||
7
mne/datasets/refmeg_noise/__init__.py
Normal file
7
mne/datasets/refmeg_noise/__init__.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
"""MEG reference-noise data set."""
|
||||
|
||||
from .refmeg_noise import data_path, get_version
|
||||
32
mne/datasets/refmeg_noise/refmeg_noise.py
Normal file
32
mne/datasets/refmeg_noise/refmeg_noise.py
Normal file
@@ -0,0 +1,32 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from ...utils import verbose
|
||||
from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc
|
||||
|
||||
|
||||
@verbose
|
||||
def data_path(
|
||||
path=None, force_update=False, update_path=True, download=True, *, verbose=None
|
||||
): # noqa: D103
|
||||
return _download_mne_dataset(
|
||||
name="refmeg_noise",
|
||||
processor="unzip",
|
||||
path=path,
|
||||
force_update=force_update,
|
||||
update_path=update_path,
|
||||
download=download,
|
||||
)
|
||||
|
||||
|
||||
data_path.__doc__ = _data_path_doc.format(
|
||||
name="refmeg_noise", conf="MNE_DATASETS_REFMEG_NOISE_PATH"
|
||||
)
|
||||
|
||||
|
||||
def get_version(): # noqa: D103
|
||||
return _get_version("refmeg_noise")
|
||||
|
||||
|
||||
get_version.__doc__ = _version_doc.format(name="refmeg_noise")
|
||||
7
mne/datasets/sample/__init__.py
Normal file
7
mne/datasets/sample/__init__.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
"""MNE sample dataset."""
|
||||
|
||||
from .sample import data_path, get_version
|
||||
32
mne/datasets/sample/sample.py
Normal file
32
mne/datasets/sample/sample.py
Normal file
@@ -0,0 +1,32 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from ...utils import verbose
|
||||
from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc
|
||||
|
||||
|
||||
@verbose
|
||||
def data_path(
|
||||
path=None, force_update=False, update_path=True, download=True, *, verbose=None
|
||||
): # noqa: D103
|
||||
return _download_mne_dataset(
|
||||
name="sample",
|
||||
processor="untar",
|
||||
path=path,
|
||||
force_update=force_update,
|
||||
update_path=update_path,
|
||||
download=download,
|
||||
)
|
||||
|
||||
|
||||
data_path.__doc__ = _data_path_doc.format(
|
||||
name="sample", conf="MNE_DATASETS_SAMPLE_PATH"
|
||||
)
|
||||
|
||||
|
||||
def get_version(): # noqa: D103
|
||||
return _get_version("sample")
|
||||
|
||||
|
||||
get_version.__doc__ = _version_doc.format(name="sample")
|
||||
394
mne/datasets/sleep_physionet/SHA1SUMS
Normal file
394
mne/datasets/sleep_physionet/SHA1SUMS
Normal file
@@ -0,0 +1,394 @@
|
||||
adabd3b01fc7bb75c523a974f38ee3ae4e57b40f SC4001E0-PSG.edf
|
||||
21c998eadc8b1e3ea6727d3585186b8f76e7e70b SC4001EC-Hypnogram.edf
|
||||
c6b6d7a8605cc7e7602b6028ee77f6fbf5f7581d SC4002E0-PSG.edf
|
||||
386230188a3552b1fc90bba0fb7476ceaca174b6 SC4002EC-Hypnogram.edf
|
||||
4d17451f7847355bcab17584de05e7e1df58c660 SC4011E0-PSG.edf
|
||||
d582a3cbe2db481a362af890bc5a2f5ca7c878dc SC4011EH-Hypnogram.edf
|
||||
a47d525f5147904b6890231e2ad338359c7ab94c SC4012E0-PSG.edf
|
||||
fa99f60d7f54617cdd1128aff4f21c4daed763c7 SC4012EC-Hypnogram.edf
|
||||
8b135afa7fb93bb5f1998fda50355944777c245e SC4021E0-PSG.edf
|
||||
91043cfe46695088b17b6a02937b25efd674c3fb SC4021EH-Hypnogram.edf
|
||||
d739e142b3b328c71b4752149901805dcd6d7e19 SC4022E0-PSG.edf
|
||||
0c46a03699dd00e8f92a7edff99ebc4642cb3d48 SC4022EJ-Hypnogram.edf
|
||||
85e58dc1e3303537dade8c5827ab58328239c384 SC4031E0-PSG.edf
|
||||
6363d8b0fdc48cf396c9abf054bb4a9696d38bdb SC4031EC-Hypnogram.edf
|
||||
43963d300642b3aa840e8c468f321b8162601772 SC4032E0-PSG.edf
|
||||
7925514bc8d2ef3f1103130f08f7b3afd2136b88 SC4032EP-Hypnogram.edf
|
||||
04d2b88d25f2ae4a65ba44cd9145bd12800a0e20 SC4041E0-PSG.edf
|
||||
f148821669bd3588187b3b430bd79adf569f86d1 SC4041EC-Hypnogram.edf
|
||||
76253d964d7797540ffd791e6e136023ed67a485 SC4042E0-PSG.edf
|
||||
9873df429f971f8a4b720a454f6c0472b8a25ebb SC4042EC-Hypnogram.edf
|
||||
ea073451b65ce8a6f1a02a8cc2b89d1a162ca0ae SC4051E0-PSG.edf
|
||||
4159ef8a3e119d6dcc1bede806f6fbc017b27a0f SC4051EC-Hypnogram.edf
|
||||
5a2efbd21be9b745fd534394eb2503caca7dc53f SC4052E0-PSG.edf
|
||||
0e96482d44762df4da65dc4fdb970b342264d22a SC4052EC-Hypnogram.edf
|
||||
1736736e585807c14f1ae8bc87a94cae222c5170 SC4061E0-PSG.edf
|
||||
4bf99622c67c281b25ceccd35e7050328a2946e8 SC4061EC-Hypnogram.edf
|
||||
763c7ac059f1771a0165e5cb351b176afb1cfe15 SC4062E0-PSG.edf
|
||||
14f07411cd04d3b4b522d37c129334955287ff5f SC4062EC-Hypnogram.edf
|
||||
1374b34f6139b6ff7e865d8243eef39ba334ef50 SC4071E0-PSG.edf
|
||||
608024fd19a140ad233a4680e07c2495a74b69c2 SC4071EC-Hypnogram.edf
|
||||
1c570644243d79396df612fa2b9bc027b24430e4 SC4072E0-PSG.edf
|
||||
a8da6c20b9b48189f05ab537886b59dd141374d2 SC4072EH-Hypnogram.edf
|
||||
0e1cc2c4e1da14ab94515e3e7e75e8ad30ec99cb SC4081E0-PSG.edf
|
||||
9ec663ffa5c17afcaca59d7829d77b9165102237 SC4081EC-Hypnogram.edf
|
||||
d57d4aa7cbc5045f611a3a3e342b501e086ea426 SC4082E0-PSG.edf
|
||||
d43c785dba43063d7baa332671c6bac9c832b5b7 SC4082EP-Hypnogram.edf
|
||||
b3502e0bd54683e973182c791aa962b804e79633 SC4091E0-PSG.edf
|
||||
7aa63b408c769a4a983a908b6ba41d87dd743c6e SC4091EC-Hypnogram.edf
|
||||
246e35852119b33d197db2f7bcfb1b46a5270a03 SC4092E0-PSG.edf
|
||||
9d85766a83231b1c6076cb293367ccc354c57eeb SC4092EC-Hypnogram.edf
|
||||
3ae168ff2c9c0c56f51205fdb10f05a4c6b2064e SC4101E0-PSG.edf
|
||||
60d9c3913881e11b06ad99e9870bd1ca4d93c952 SC4101EC-Hypnogram.edf
|
||||
86f307190961eaab0214fdc0213f8fe05812c7a5 SC4102E0-PSG.edf
|
||||
8072e2d52bc6c19b45fbd921550e5243bc5a1de7 SC4102EC-Hypnogram.edf
|
||||
e490956b4dce01c46ba88a2b847f091bb54ea16e SC4111E0-PSG.edf
|
||||
12db1920e2f6083c8ab1f2c24fe35dfa03715e4a SC4111EC-Hypnogram.edf
|
||||
ca24dc464df61144627588b29d35a85fcc7ac984 SC4112E0-PSG.edf
|
||||
54dbc39015b0a445b51189987a00e08cc27d8f0c SC4112EC-Hypnogram.edf
|
||||
33c72025a7a215ea5e255f4254cb0f93b1313369 SC4121E0-PSG.edf
|
||||
daa57ece807cb5325c6d1ce059f0e8a8d1c85391 SC4121EC-Hypnogram.edf
|
||||
34f5145ab62dcc5a53ba18735519e5bb2b13841a SC4122E0-PSG.edf
|
||||
b7af1a32d8ca15e8185e4c94213ffc18ad7f6e8a SC4122EV-Hypnogram.edf
|
||||
42ff97035aae6dd34ca9437857c48ac6f2ab97df SC4131E0-PSG.edf
|
||||
5beef85170bdbb5cf2eea24a79f0f5c2c3975c4b SC4131EC-Hypnogram.edf
|
||||
83493e1c32d441c9e5ee3de6a024bfb5e7ab9f5f SC4141E0-PSG.edf
|
||||
511d398f22b9b2b304de27c40740a41584ff6af2 SC4141EU-Hypnogram.edf
|
||||
63d13828b7ebe0d2ed7f491d2b5520e928b9b55d SC4142E0-PSG.edf
|
||||
6f123e6fdc90a01b83e694d9744a6d27f3c87b25 SC4142EU-Hypnogram.edf
|
||||
5a92d49699d4de369d66d9462e91b0dcb3312649 SC4151E0-PSG.edf
|
||||
37dcbd339c95322d028b3a5466812697041cc373 SC4151EC-Hypnogram.edf
|
||||
778626489bc4fe2c9137d2d361876d97dce97e5e SC4152E0-PSG.edf
|
||||
294cdc47cd3d165031f7041c17f18dd013d216cb SC4152EC-Hypnogram.edf
|
||||
e56ff3aa366fe9a04a0fdfdd4cd862e77e8ac807 SC4161E0-PSG.edf
|
||||
56711b1bfed292032491f5cce57494629286a131 SC4161EC-Hypnogram.edf
|
||||
722692f9940f3a1bccb9b4488c4477edf7fb128f SC4162E0-PSG.edf
|
||||
c85647fb4bc1f382fe46bf9aaf579dc483115885 SC4162EC-Hypnogram.edf
|
||||
f1a65522cb7d6c71ac47742535a12c88e2019dad SC4171E0-PSG.edf
|
||||
dd257c8d922f08c2c8ca5236c9bf54da887c68e5 SC4171EU-Hypnogram.edf
|
||||
572b81bc24c2c9482e6fc7ba9202a7bf253655e1 SC4172E0-PSG.edf
|
||||
c9a3b590748d7d6c7ad97c62222bd53d8ebaf630 SC4172EC-Hypnogram.edf
|
||||
23674d20572853eb6d988d24378c52123f66500c SC4181E0-PSG.edf
|
||||
51fc3df2df7d4da654f3e18ed1b233d0c60cfa80 SC4181EC-Hypnogram.edf
|
||||
83e8cbe882ba863da9fd3c11393c95b6fec5b7a5 SC4182E0-PSG.edf
|
||||
43c487955edddb4ee2f60193a097c68c25c5dd4d SC4182EC-Hypnogram.edf
|
||||
d6da621dbb20dec3494a38c7d2a0363793ac5ebe SC4191E0-PSG.edf
|
||||
defc7b9368c2d3c4ab4a294757843825a83cdb5d SC4191EP-Hypnogram.edf
|
||||
941353118732321d0246a1d58d72e903bd2f0d8f SC4192E0-PSG.edf
|
||||
97b91b3067c5ecde766042fc2cff9e22f8023371 SC4192EV-Hypnogram.edf
|
||||
38a0be6e45ddd9b1f17d09964a32e005dc5a6519 SC4201E0-PSG.edf
|
||||
83822f9970d3959ad2e0613492ae39bd0fae6068 SC4201EC-Hypnogram.edf
|
||||
aa69f5bd47c2ae03c9d38bfe6d0e58408744b885 SC4202E0-PSG.edf
|
||||
5c5c63016b43421a523d1efcb34247e90aa6318b SC4202EC-Hypnogram.edf
|
||||
c106ad072dbc975a3742f7eff151219870f0c794 SC4211E0-PSG.edf
|
||||
9126937ea8a414d6ae9bc4a4194d841a891fa8a8 SC4211EC-Hypnogram.edf
|
||||
a06ecb3f0a7b2c306f5ae4dbd83685f877cd945b SC4212E0-PSG.edf
|
||||
a85f178b69a1cda47d11dd1e5394dfdcb58de1d4 SC4212EC-Hypnogram.edf
|
||||
8733ea022d3778259a436507156cf3360ad8be06 SC4221E0-PSG.edf
|
||||
b158eda4f81772095c129be77f8e60ec9d81b884 SC4221EJ-Hypnogram.edf
|
||||
211410fab6381da0dfaef4134d5a05eec935a4ec SC4222E0-PSG.edf
|
||||
1488fbfbc149499dafa8dafff4f7504053af429f SC4222EC-Hypnogram.edf
|
||||
d96f1f35b2f77c7de706036c6e4114139e07b307 SC4231E0-PSG.edf
|
||||
9f6df70676d6cddcf069ceb7f408a7989af99ce2 SC4231EJ-Hypnogram.edf
|
||||
6b493fa424c1329ea1c13543d08ba82a9f1e85b6 SC4232E0-PSG.edf
|
||||
d8ca7d694b3c48ab9d983b9cf67e17744c6b50fb SC4232EV-Hypnogram.edf
|
||||
58719e53fe18d2fc4cb1776ab5d43306beb1325d SC4241E0-PSG.edf
|
||||
fb1432e303a8f99a2256ce682db95d88772c479f SC4241EC-Hypnogram.edf
|
||||
5a6277972c5f03572ed99d9ff63fb637945be778 SC4242E0-PSG.edf
|
||||
bbbf097f4cc6560fc20c903fba2c7055e1549f85 SC4242EA-Hypnogram.edf
|
||||
7dbc0289707ff70662d367d65de7bec188484d1b SC4251E0-PSG.edf
|
||||
e38be8134e4a36eb418ca1f06a1fe02b52d0ebf1 SC4251EP-Hypnogram.edf
|
||||
cb3922910ea03d06c1fc5c8f15b71339dc26bc9d SC4252E0-PSG.edf
|
||||
4cb7a383736e09125a82ef7e4f17b41130c7ac00 SC4252EU-Hypnogram.edf
|
||||
b81c9bd1875b33713b5eb56b58f1e120841b507f SC4261F0-PSG.edf
|
||||
501eda59557bb99d530d01bdad3579f1e1158991 SC4261FM-Hypnogram.edf
|
||||
c9f9ad7cd751d5be91396886a2b64a7c1de564ee SC4262F0-PSG.edf
|
||||
7ccd12803c5fc602ac1929ff3afd914b894b9143 SC4262FC-Hypnogram.edf
|
||||
20994715d34edb26113180ee330ce287dbf57b60 SC4271F0-PSG.edf
|
||||
26c5c7f3a5c350d3505af2857835ce81252c5990 SC4271FC-Hypnogram.edf
|
||||
9e79eb465e34b7eb6fe27ae3ce35d28d6693d44b SC4272F0-PSG.edf
|
||||
956fe4b45d29a8999faf280a6168e332afab6abc SC4272FM-Hypnogram.edf
|
||||
51811913d7854f95c319076e670d988687ca667c SC4281G0-PSG.edf
|
||||
d188150831e912081dbeda2695231177200c39f9 SC4281GC-Hypnogram.edf
|
||||
e9f080a766a9b7a247f228e44e9c4ec67e571c95 SC4282G0-PSG.edf
|
||||
12d777787dd1975eef9015329fd774b2bfa1d53a SC4282GC-Hypnogram.edf
|
||||
f81c7574a5e5829e006d0b705bf5208a3349c9c7 SC4291G0-PSG.edf
|
||||
577c1345f6d070d975db5016048722f78b1b414e SC4291GA-Hypnogram.edf
|
||||
7416f44a3b149b4ca1fc3e53d546a093a7333bb5 SC4292G0-PSG.edf
|
||||
6e111a15160a31609761f742315df800b1311b3b SC4292GC-Hypnogram.edf
|
||||
7818e5a02afa89e913111d91ecd651aa3e786e5d SC4301E0-PSG.edf
|
||||
d49df84bfea28bb241c09b922cd2dc64f57c5ae5 SC4301EC-Hypnogram.edf
|
||||
d52859ba6a7ded3364b0d8ef2b722e1d3edda060 SC4302E0-PSG.edf
|
||||
b3d6f687831ee32f6df1da59f2d568c13f9c09d0 SC4302EV-Hypnogram.edf
|
||||
b62f5104bddf452f4700c85997e51bec17f0243b SC4311E0-PSG.edf
|
||||
812c34844e834b97949019741fa7f835d973725d SC4311EC-Hypnogram.edf
|
||||
b0a9b4922665734773abbaba06e7aab32010b862 SC4312E0-PSG.edf
|
||||
fca1935a8974eac27803e3125cea177995deca11 SC4312EM-Hypnogram.edf
|
||||
335381ae310e9f1f053c37763eeee74d7d873471 SC4321E0-PSG.edf
|
||||
67ba7d3b97354deb31db095e748ea3a4014fae2c SC4321EC-Hypnogram.edf
|
||||
c9fdcfcce7e603b3289b7417891987fd67f6d921 SC4322E0-PSG.edf
|
||||
40cf9a6397a52c7deda693ca596e928cc2b9f4e9 SC4322EC-Hypnogram.edf
|
||||
f37cb4df27286e38c604cae943169ff29b1473fc SC4331F0-PSG.edf
|
||||
ca943e2b73c6404f929c372ebd817b7b3b71b4dd SC4331FV-Hypnogram.edf
|
||||
5bce6ea9b2d6c9bfb41065e92bf9cc05a11b5b75 SC4332F0-PSG.edf
|
||||
e4595b0313d5320b0bffefa43260485e19977e3c SC4332FC-Hypnogram.edf
|
||||
17de25c8f023fe632aa403a6d9525c1cde8eaef5 SC4341F0-PSG.edf
|
||||
81ba3c0d8320c9ee306f678b4bc9e6e266165886 SC4341FA-Hypnogram.edf
|
||||
b659037447a1871f4ba72bbe496cfbe507330530 SC4342F0-PSG.edf
|
||||
e8e74c0905e89a59022ce0814ca9a050748ec9ae SC4342FA-Hypnogram.edf
|
||||
631900bef36d359a0f5807a7e1b202f80b0427ac SC4351F0-PSG.edf
|
||||
a15cdf3973b77198d8276dc505dbb35cb39a9b4a SC4351FA-Hypnogram.edf
|
||||
325423a85890dcc921253bde7c7027d66f14033e SC4352F0-PSG.edf
|
||||
1e0583b2a58432c964506ff44752d597753658c9 SC4352FV-Hypnogram.edf
|
||||
30b90aaf965938d569ea362f66e2afa0c08c7017 SC4362F0-PSG.edf
|
||||
fb870d50ce3f4d961d8b061a83d21e5467e4ae6c SC4362FC-Hypnogram.edf
|
||||
0dc56fce13b6317f197d0b17c04f5be4af1c964f SC4371F0-PSG.edf
|
||||
c19b6cbfdf3a33169ce9b4a5dc94f93b696a21ba SC4371FA-Hypnogram.edf
|
||||
c024c491dd836ed0169300e7171c276fd14b1c44 SC4372F0-PSG.edf
|
||||
97b2915a8a343efc7b785998c0532beaea2fbe91 SC4372FC-Hypnogram.edf
|
||||
6098d2b501b82ca0ddc8893547c6990e204e8ba6 SC4381F0-PSG.edf
|
||||
fdbf653a4a675843c97d0a76ef5e4cebf5d2dbcb SC4381FC-Hypnogram.edf
|
||||
40ce0168d5f546fcd445996ab614f43823a7c2b1 SC4382F0-PSG.edf
|
||||
796f8507254c2d8d345171c077dbd855e112eb47 SC4382FW-Hypnogram.edf
|
||||
28fd8ad1aee307847e2eb579763ebca18e56f540 SC4401E0-PSG.edf
|
||||
65b5671a89871351ee3da7ea800aad276a445b2a SC4401EC-Hypnogram.edf
|
||||
3d4bafa57933cfb20c342e8cc54c15916a621454 SC4402E0-PSG.edf
|
||||
037efea0fc8a6dfa8f85fa1f2fa6fd9a19f2c830 SC4402EW-Hypnogram.edf
|
||||
30a533b67fdb2adac6a4e83088a07fe1bbaddb6c SC4411E0-PSG.edf
|
||||
5df1bf20d4f29b95a2bdde853b2a157dd9530a8a SC4411EJ-Hypnogram.edf
|
||||
bc8e6ea829f14da5396a4b250394c1b72d6631c3 SC4412E0-PSG.edf
|
||||
f46b1dcfe4f4e3c9d4d4c8516dab9759f9c1224e SC4412EM-Hypnogram.edf
|
||||
e8a5d9e0f160ae7bd0b35d75d77b4c872daa30f8 SC4421E0-PSG.edf
|
||||
d2e34f9bcaac7af23da4448f742ac6ea3c895ed9 SC4421EA-Hypnogram.edf
|
||||
80f246adffb92a3785f91368a77b0250aa040462 SC4422E0-PSG.edf
|
||||
709251cc7ae6556544c153caf9dac7f82bba113b SC4422EA-Hypnogram.edf
|
||||
194ae942cf80764e81b4cdabeed9e5a57916aab3 SC4431E0-PSG.edf
|
||||
497ad7e671edab6e7adc9d35a6aa45b7fd9a706b SC4431EM-Hypnogram.edf
|
||||
c45a66d27ea03bf448903fe30f17838e9a0fa0de SC4432E0-PSG.edf
|
||||
10fe276e215f9406c0ddedaa48651cf480892476 SC4432EM-Hypnogram.edf
|
||||
e3a09d832cb79b0095d7a311ef1b6ed7c569b79d SC4441E0-PSG.edf
|
||||
68d4e44ad54069701972df66d8a81b4ca434bf2f SC4441EC-Hypnogram.edf
|
||||
fe51d45e9f3e64a61fa8a5e5274b2e4951a9de43 SC4442E0-PSG.edf
|
||||
efc2b86bb796b0143f61667402612dfbb85cbb78 SC4442EV-Hypnogram.edf
|
||||
315db0f9d91988ddc2b198f89cc22f96190eff71 SC4451F0-PSG.edf
|
||||
bc1f755c3367e378091c44481948a72fc7a928e5 SC4451FY-Hypnogram.edf
|
||||
a06350e1c85b61c30c3d7d5dc640121b416fe30d SC4452F0-PSG.edf
|
||||
0286d52cdf898ed8e3b17bb26b9c50ef512daf4d SC4452FW-Hypnogram.edf
|
||||
e4295014c6d4474d8f7f7792c2ea088eb9e43e9f SC4461F0-PSG.edf
|
||||
8980e770e58e5704bd36124f6b6bd8d5e3506e12 SC4461FA-Hypnogram.edf
|
||||
53b69cb41339bc69144eaa5a5a42c2937f237fc9 SC4462F0-PSG.edf
|
||||
0c6d3974e140c1e62ed2cadaed395781575af042 SC4462FJ-Hypnogram.edf
|
||||
05d71b55de4c86791195391b1cec8b35e447922d SC4471F0-PSG.edf
|
||||
ee235454dbfe947432f3f813c9a6384f6e42d36a SC4471FA-Hypnogram.edf
|
||||
7a12c0d6f3005998472b128e06dd645a8619dae7 SC4472F0-PSG.edf
|
||||
d234d5d6c396bf7ef0a2106a59ee8204429aa3c5 SC4472FA-Hypnogram.edf
|
||||
c15f6a0e1802dcf74ecec41745677a4932375faf SC4481F0-PSG.edf
|
||||
50fce6396aceaf35d9d7e16175053a3b78f214d0 SC4481FV-Hypnogram.edf
|
||||
34d71530fd1da925ba20b4c48a07f7b18153e0c7 SC4482F0-PSG.edf
|
||||
e3c48563e63eed27b071d4a7b37c45a0f9dc7eef SC4482FJ-Hypnogram.edf
|
||||
23ea1f5f299c6cd99d434f014d7490621dbbc854 SC4491G0-PSG.edf
|
||||
36c6c8112524c7bc9553db37601b38984946209b SC4491GJ-Hypnogram.edf
|
||||
02c975bfc0773928095239b80d00ac5a7ea5880f SC4492G0-PSG.edf
|
||||
3673eaad8396ef0ec36cb4299541c30653b72e1f SC4492GJ-Hypnogram.edf
|
||||
1c31fc02412029bc7369979b8c9f5956420748f5 SC4501E0-PSG.edf
|
||||
eb2621c1670a42eb38dfa86a9bc3326818365f3d SC4501EW-Hypnogram.edf
|
||||
ff9eae25afa73115e2b184a68e3a72a39efd37e6 SC4502E0-PSG.edf
|
||||
7605a1893701925ea0fdd047926bbd6c7c043875 SC4502EM-Hypnogram.edf
|
||||
e12eb259c2894d45b8d0b2f0e75810c2de02237d SC4511E0-PSG.edf
|
||||
e549275e9182b9e36ade5abb721098e235ecb164 SC4511EJ-Hypnogram.edf
|
||||
53c5d982139d248736f6dd7ff3f97f635647eacd SC4512E0-PSG.edf
|
||||
e22966c263f6ae7444704881f5249f6fb5dee0c1 SC4512EW-Hypnogram.edf
|
||||
af70ffdbd3012615923f6a4901e7c0dd3a0fd8ca SC4522E0-PSG.edf
|
||||
57af3eaed541229dcb2478c6050f0582e020f878 SC4522EM-Hypnogram.edf
|
||||
71222ac5b7784ed1d3a79ee3e9036431d6eba9bd SC4531E0-PSG.edf
|
||||
934dbfeb29f4f4db4b61e36fb8ddab4ddbf4ff94 SC4531EM-Hypnogram.edf
|
||||
2d472fb64da5d05a546f780da876b90ad26208f9 SC4532E0-PSG.edf
|
||||
708b43e7d43a6f5719f48c11bd6a81b037aabfc4 SC4532EV-Hypnogram.edf
|
||||
4d3ec2f85149bb10fed1013831c3aa1f58049229 SC4541F0-PSG.edf
|
||||
a301385e6fbde02c83f2545f17cdf75d594d37ce SC4541FA-Hypnogram.edf
|
||||
2909f5b0d3fdb89e19d42b406798e9cbb4615bb6 SC4542F0-PSG.edf
|
||||
9548ed641fb961fa46706339891a9453b731369f SC4542FW-Hypnogram.edf
|
||||
0bf97e463cbcefb7df48bca712f29dcc74223330 SC4551F0-PSG.edf
|
||||
e50b44e6b049baaeb528c31563642b2a2b933834 SC4551FC-Hypnogram.edf
|
||||
dfa0adaae50110bdd0077483c31d57956020fcb9 SC4552F0-PSG.edf
|
||||
7380403f8d72fa4c30013cd026cc1dad23ac2b3e SC4552FW-Hypnogram.edf
|
||||
1a9baf1b072ca9d2784a404292169ff3177ea83f SC4561F0-PSG.edf
|
||||
b31a2dfe652508df46f6afe03ab904c333f7b818 SC4561FJ-Hypnogram.edf
|
||||
4c7081edf572cadee51d30174cd65aa6c658f5a9 SC4562F0-PSG.edf
|
||||
676ab92dbc6532f67d672f80337c71f817fd3a6d SC4562FJ-Hypnogram.edf
|
||||
e67f3bd381ddfb96d584f6c6d6f6762087d6553d SC4571F0-PSG.edf
|
||||
08ee39eb94d819968512297ca883f9bca046de9c SC4571FV-Hypnogram.edf
|
||||
deb2aef7a6a4b502c819345a7151ffc2529d4ba7 SC4572F0-PSG.edf
|
||||
7a38cbe581167dfec27a15935e6d386b228616fa SC4572FC-Hypnogram.edf
|
||||
16a1edbd6a089386fd7de72aef802182d0a2959d SC4581G0-PSG.edf
|
||||
bfc729575cfdf5f409be2de47dad4e00d43195bf SC4581GM-Hypnogram.edf
|
||||
9da93f4c2459dd4fe2e5ee6a171904d4f604cd6e SC4582G0-PSG.edf
|
||||
acbade13cfae4fc5fbda2d0766feea83d114aa23 SC4582GP-Hypnogram.edf
|
||||
017793b040df8a860df0e43e3e0a496e2cb3f9c1 SC4591G0-PSG.edf
|
||||
f3bb949a7f82acb7fd3d8f35e92efee1402a383f SC4591GY-Hypnogram.edf
|
||||
1e284bddd7952862327c83092db21805e6ab6c38 SC4592G0-PSG.edf
|
||||
58d1678e9ec9f49c9c6a15031dee26d802026851 SC4592GY-Hypnogram.edf
|
||||
ece6d6ce09fac6fc521cf3f1b536f1ea2a8a1778 SC4601E0-PSG.edf
|
||||
8f77b05fe58f43cdfdcdba7cc3d27abcac7d37f2 SC4601EC-Hypnogram.edf
|
||||
0e50df304ced29651267f43689ce49e063f808d6 SC4602E0-PSG.edf
|
||||
1c52de92668fe4c89cd5e270e17017ef47880991 SC4602EJ-Hypnogram.edf
|
||||
2cc6e418c0b7af472aa34d2bbd5ece85bdb6a879 SC4611E0-PSG.edf
|
||||
f5715ab48f24221c28c1d5c45508c8bb58c912ec SC4611EG-Hypnogram.edf
|
||||
6593e1af07101fa4c5bce8984296858be17e7d4f SC4612E0-PSG.edf
|
||||
cedb61bbe7a273b12f45579963d5a84f2ab21811 SC4612EA-Hypnogram.edf
|
||||
31cd2cae56977c6b872311f2a6e60827748b973d SC4621E0-PSG.edf
|
||||
7acc5296b33ca4eee8d6577064c8c651ee96e527 SC4621EV-Hypnogram.edf
|
||||
7a7e226d47dccd959305e3f633686335c8e66557 SC4622E0-PSG.edf
|
||||
9957c9c9e0c705aac0f7125f411b2531a722601c SC4622EJ-Hypnogram.edf
|
||||
6dfb32aa4c94968a52d61b90a38573d178669bfb SC4631E0-PSG.edf
|
||||
48e28f93fc71ffc539776196f9d9d1365415e0b4 SC4631EM-Hypnogram.edf
|
||||
3baa8081b30cc3dfece9d550289dfc94812530d5 SC4632E0-PSG.edf
|
||||
cd2765ebdabc66cb4ac2320d02e3b7ab0340ede4 SC4632EA-Hypnogram.edf
|
||||
0e5d109a929490cbecf59573577a97df07a05cd0 SC4641E0-PSG.edf
|
||||
7b896dc5b34d71381d8462001dc3e05b145cf48c SC4641EP-Hypnogram.edf
|
||||
03169b7ee9de83b2e17e9bd0d6274965e9518b37 SC4642E0-PSG.edf
|
||||
d8a870d26e468a643eaebe3275e5e2912690c0d8 SC4642EP-Hypnogram.edf
|
||||
f2134a2ad001bc146f3e2d9d76cb7f00f03bbe52 SC4651E0-PSG.edf
|
||||
fad4311c7e11a9aa9a73a8e48d6fa966db61e71d SC4651EP-Hypnogram.edf
|
||||
aa66553cb0132634d7d11ffe7fab80aa5119b3d7 SC4652E0-PSG.edf
|
||||
6ed9c4f66c03e56f86730ddd8986f3600c040d4a SC4652EG-Hypnogram.edf
|
||||
c6057505d2acf7b08371e266cf0fca1bfeb1e4e1 SC4661E0-PSG.edf
|
||||
06474e72126d2a00c1968e70730e1deac060f94e SC4661EJ-Hypnogram.edf
|
||||
24d278194360dc78ebd0cfe940fb4d5f7f93ccbc SC4662E0-PSG.edf
|
||||
07ca0fbfb6030289a089f84e50d7bbfd043f31ad SC4662EJ-Hypnogram.edf
|
||||
4357aa9fedf0b53896d41e5dccd7b525f7212177 SC4671G0-PSG.edf
|
||||
459889157743c434933194446af5168cb145dfcb SC4671GJ-Hypnogram.edf
|
||||
fd86b31a5c22176e1887e2fac460edce42bd2fdf SC4672G0-PSG.edf
|
||||
dedb182b8c063cefabf1763eb19cd26d0608017f SC4672GV-Hypnogram.edf
|
||||
3f60b5ad5e1092e90c38f2072b3c041bd7313550 SC4701E0-PSG.edf
|
||||
196a388f60ee4aecfa982f89e2db03ff91e906e7 SC4701EC-Hypnogram.edf
|
||||
a6853fee26b1541f85be7ddc3f42f06ccfe2fcfc SC4702E0-PSG.edf
|
||||
464f7382ec11703b5bc6512930fdfbb1ab6d030a SC4702EA-Hypnogram.edf
|
||||
e97d691bfecf770ca4e47289b846886c16ef19fb SC4711E0-PSG.edf
|
||||
81ec5d0288f36c4368e5f06f21980f99774bf533 SC4711EC-Hypnogram.edf
|
||||
9b99be6cb45af22bdbead7ea01f1375631c9b365 SC4712E0-PSG.edf
|
||||
66b121441a45ae19852b7002fd78c2caf236631a SC4712EA-Hypnogram.edf
|
||||
5c9caa01cc1f8065f87195c9f2dc2aeebf83c03d SC4721E0-PSG.edf
|
||||
efe62b1e8bac1ea08dbf12374ca6812a6f271d5e SC4721EC-Hypnogram.edf
|
||||
a473f32a6075e9ed830a8e9a246129e05959e8b7 SC4722E0-PSG.edf
|
||||
efb2358de27da4219f64f7bfb37912dc9efb0281 SC4722EM-Hypnogram.edf
|
||||
b03e4a2df4d086778f3426ed7b6c5bf800cbfe92 SC4731E0-PSG.edf
|
||||
eb3dc65d7184d676a6678a70b18730d11a414588 SC4731EM-Hypnogram.edf
|
||||
574ff5c0634137f7d5c51eb5f7626b451f1f9b9d SC4732E0-PSG.edf
|
||||
77a523ca9ef4698885b681bf4e27d28dc5c58424 SC4732EJ-Hypnogram.edf
|
||||
e6ff7462f4ce401e9aff9b3d9c93f0710bc37678 SC4741E0-PSG.edf
|
||||
bda4d1ab190f4160ec7a3f4420e30d718f02369e SC4741EA-Hypnogram.edf
|
||||
2b09f78a2f276061c8758a55585fae7355b38111 SC4742E0-PSG.edf
|
||||
d4bb4266859c2f92ae8ba96111d59d8ab467f6a0 SC4742EC-Hypnogram.edf
|
||||
17c356a283b026e507331209512453573bcfebe5 SC4751E0-PSG.edf
|
||||
d35737e86979127ea01b95dcecea018dd2e44f45 SC4751EC-Hypnogram.edf
|
||||
b650a49d6e3bb81971e4689c720ee079404857e6 SC4752E0-PSG.edf
|
||||
3d1c86d8d7ecb6ff79ee12cb950690e929394161 SC4752EM-Hypnogram.edf
|
||||
8bde3f0d5ab6a592f229dfd7886341b3f800bdb3 SC4761E0-PSG.edf
|
||||
3dbf15f28a293ac89dcf458d844a8c6443aaf1e6 SC4761EP-Hypnogram.edf
|
||||
7bdc8eacf1a6502c8f007b08556b7e8b52180d44 SC4762E0-PSG.edf
|
||||
f6ae10f082a10ead671bfd5fdc50f62c42b9f10d SC4762EG-Hypnogram.edf
|
||||
ac8c2be9175cb02e00cccb5d5df2acfaf05971cc SC4771G0-PSG.edf
|
||||
09e80b973502d89368d7823ad4aec7417b735f6e SC4771GC-Hypnogram.edf
|
||||
eea8671791936358037e5d096491865069989a85 SC4772G0-PSG.edf
|
||||
25a3b8859091a70ca0cff9ebb777879aa156689e SC4772GC-Hypnogram.edf
|
||||
0ce00a144dd9bc1b0e20cd30e6501a3852e4dbef SC4801G0-PSG.edf
|
||||
f82d2b8e45723f2a69f8c30286cc68486b0792a6 SC4801GC-Hypnogram.edf
|
||||
8959ada929c07945757bd6c9ef0267e7c9427a66 SC4802G0-PSG.edf
|
||||
41ff2d1118425f5828342c07aa58b9d346755b1a SC4802GV-Hypnogram.edf
|
||||
dcae3307af54ccf5349945e2fa493464de0a5da2 SC4811G0-PSG.edf
|
||||
2406ce37b86fc3c7492a3ebe89ae58d15686b33d SC4811GG-Hypnogram.edf
|
||||
fd93757cf6bcf45854fca960a067612352e05547 SC4812G0-PSG.edf
|
||||
244b3bbb4987db0a9cef85950d14899ab9a3aec4 SC4812GV-Hypnogram.edf
|
||||
9008c6ffc917fb90a3d399e768fe3c563a144a2f SC4821G0-PSG.edf
|
||||
59534244c603cd5c3c27db26ae2f014983ec6c9b SC4821GC-Hypnogram.edf
|
||||
84f9a60f6b0e7ac33388d8f6492096bcfa60bc18 SC4822G0-PSG.edf
|
||||
8d14c371bc290658469729addee4461866bb67e2 SC4822GC-Hypnogram.edf
|
||||
b9d11484126ebff1884034396d6a20c62c0ef48d ST7011J0-PSG.edf
|
||||
ff28e5e01296cefed49ae0c27cfb3ebc42e710bf ST7011JP-Hypnogram.edf
|
||||
b97c67d2ec40721349fd6faea32ea7155a11940a ST7012J0-PSG.edf
|
||||
7a98a0ebba9e5e8fc4aac9ab82849385570d7789 ST7012JP-Hypnogram.edf
|
||||
552e579d96e6c4ae083c7e1422e11b945ebcdabd ST7021J0-PSG.edf
|
||||
635b07240047ade50649ff0f72ccde792f464f09 ST7021JM-Hypnogram.edf
|
||||
ebabfa224599201d9baf91311f78f6410971810f ST7022J0-PSG.edf
|
||||
228c608743abcc28f8c4946e8394ecf8e6ada89c ST7022JM-Hypnogram.edf
|
||||
41f8e344b9872d93c8c2f2da283252231584b08f ST7041J0-PSG.edf
|
||||
422655bae4525d121bd45fead048207be9b34c4b ST7041JO-Hypnogram.edf
|
||||
229ee3bb4d060332c219c3dc1153732ab5499d57 ST7042J0-PSG.edf
|
||||
eff297358a0c9d175109ba692ac3f9f4cd2c08ed ST7042JO-Hypnogram.edf
|
||||
17b186214e8944667571f52098564e377b32d695 ST7051J0-PSG.edf
|
||||
d7696bd1b891dd85e96e20ea727dcebe49ab6dfd ST7051JA-Hypnogram.edf
|
||||
489fcb38c07688192d9c0eae5455d95241028ad8 ST7052J0-PSG.edf
|
||||
64f2718c004e64ab598979da139b90452febc9bf ST7052JA-Hypnogram.edf
|
||||
9fb2b4ed47a6d4b2f0b60a354123e491e8738b19 ST7061J0-PSG.edf
|
||||
fd9214d026453fce71efa2975ea732e1c1458f69 ST7061JR-Hypnogram.edf
|
||||
afc5599194648da5568dafa1a811818e77df4842 ST7062J0-PSG.edf
|
||||
c2a4abe15f08f230b734a328494ab0d2ae9dc786 ST7062JR-Hypnogram.edf
|
||||
010a65ad86b79d19c372a421f0e7c975e56278c8 ST7071J0-PSG.edf
|
||||
bc08c797bb7aaf92de1c869d46c6dd4590939996 ST7071JA-Hypnogram.edf
|
||||
15c5aa5591e35d60ba25044cdd4b3d748d3c0cfc ST7072J0-PSG.edf
|
||||
1a7813b7a2389c0346e3844835590b9cb2f40f56 ST7072JA-Hypnogram.edf
|
||||
cb66a0493d90d0d1204936e3e7c944ed536265e3 ST7081J0-PSG.edf
|
||||
8259b52c62203b85268d23b3a2d87605fdcfa2a6 ST7081JW-Hypnogram.edf
|
||||
b1cb29c7a7321b7e628d04a477338c4f62f0c093 ST7082J0-PSG.edf
|
||||
bc33c3aba61c0fa937ef56d4ce7b1468c80663b5 ST7082JW-Hypnogram.edf
|
||||
b046dd63d92339914eca0489d8a4c566b69e7723 ST7091J0-PSG.edf
|
||||
af845641a8118d004bcfa6b597f23517e3a752e9 ST7091JE-Hypnogram.edf
|
||||
2986f4d64f5118c5e356a2abe6bf86521ffde339 ST7092J0-PSG.edf
|
||||
ec89bb908ff70e123ffa94bc2c11bb1ce54bcb6a ST7092JE-Hypnogram.edf
|
||||
5662b560f095b8397303cced87e43d407a0d18f7 ST7101J0-PSG.edf
|
||||
5919542c566d882fbf947c66f4858ad17199103a ST7101JE-Hypnogram.edf
|
||||
f697a140f18d1005107fcbb7c81d85a5e8cb6ec6 ST7102J0-PSG.edf
|
||||
1f05e92c9ca076350f981d0ec75ad720606bacbc ST7102JE-Hypnogram.edf
|
||||
e2bf9db482f230a56372603d23fb12f5c56062f7 ST7111J0-PSG.edf
|
||||
5964553fe07cbca302526b2153a2507f7d02fab8 ST7111JE-Hypnogram.edf
|
||||
d3c7907b9b1e4f087f31bd655548b8673b6ec735 ST7112J0-PSG.edf
|
||||
e4d8406eaca361d2c5d9953b3c67ed1098dd5925 ST7112JE-Hypnogram.edf
|
||||
6e90bac48e48f71e5572944a364009eab6ea818d ST7121J0-PSG.edf
|
||||
a991ed3d8be6d55ee563545077f3d280466a4989 ST7121JE-Hypnogram.edf
|
||||
ae7426c464296ec0a839ccaa9763e3f2c57f41f1 ST7122J0-PSG.edf
|
||||
b6c2c21e3cf17b371b31af78c64f28aa5811e36f ST7122JE-Hypnogram.edf
|
||||
d0d6c83b76f627b067e0daac3c181e3666f8ab08 ST7131J0-PSG.edf
|
||||
91ee1bd29b156b33e03cb8c324a8fac15ec06674 ST7131JR-Hypnogram.edf
|
||||
54a50dcc40e3d6677b80c629b2f908339d9a7c3e ST7132J0-PSG.edf
|
||||
028a5c4ed911d67a17b45f12966b32c46949d374 ST7132JR-Hypnogram.edf
|
||||
6bf8feeabc2259d15f1f535abda90caacc8d4a86 ST7141J0-PSG.edf
|
||||
203e78e02a92a9f85f07790398f64c66f248e5cc ST7141JE-Hypnogram.edf
|
||||
b42eb28089bbdcbf3244dead53fd01d5f5ac3ddf ST7142J0-PSG.edf
|
||||
1f7cc3a1923dd6a3504c82d76f820555ad0b6a1b ST7142JE-Hypnogram.edf
|
||||
c0df1253b6509c4b4ed9e1283f26cf206a8c725c ST7151J0-PSG.edf
|
||||
cfcb0089e22244bc5047f61e72a39735cbdc36cf ST7151JA-Hypnogram.edf
|
||||
faefa07a1ca180861d6f26d5f35285c009dca21e ST7152J0-PSG.edf
|
||||
27e9b4527eea33ded9072db3c6626f94a966da58 ST7152JA-Hypnogram.edf
|
||||
8a4f1c44a17b5d665cc30f1141d003043274ac2b ST7161J0-PSG.edf
|
||||
5a1ef1d375b01f83264e84db4af58acded68f15e ST7161JM-Hypnogram.edf
|
||||
66925c8fa9f6da18f8590dcf2a6174cfe46e912d ST7162J0-PSG.edf
|
||||
18b3d7eb9685ec8131fc0a8f81ba6205122595dc ST7162JM-Hypnogram.edf
|
||||
67c47cb92de8806c60303a4baa87ca6cf52a2245 ST7171J0-PSG.edf
|
||||
13c371fc4384751cc4bdd3044c6a0813ea12816e ST7171JA-Hypnogram.edf
|
||||
a46118a5ca9cfaa62ca11c6a8b079e82877305ef ST7172J0-PSG.edf
|
||||
8de0f3f59dd27d07f5f6a74216814ced08f104b5 ST7172JA-Hypnogram.edf
|
||||
501f2f9d9ebe15e6dfc86fda6e90f9a54a39660a ST7181J0-PSG.edf
|
||||
483aa0b448393d61043c98c204c93d4c60abb6bd ST7181JR-Hypnogram.edf
|
||||
0eab40d3687a2cf708e48137eab26c0c43b75773 ST7182J0-PSG.edf
|
||||
50efc607882659f8229db773703f5b973b471ed4 ST7182JR-Hypnogram.edf
|
||||
b1b10cd45a7c0f91286c6fc3f755e59af483bac1 ST7191J0-PSG.edf
|
||||
e7fcb89cf0f1484ab114bf40dcf2bf4cd413696b ST7191JR-Hypnogram.edf
|
||||
e80de913aa41b987a43d94cf8f0106d61e4e883b ST7192J0-PSG.edf
|
||||
def09a7d469984005b0c8414b7995ae8e269fd15 ST7192JR-Hypnogram.edf
|
||||
454233ae9e6a948848030c5f4d9e60dfcb0facde ST7201J0-PSG.edf
|
||||
17a0e8aebb885a960a74343bace57d2ab0b6296a ST7201JO-Hypnogram.edf
|
||||
1e97e392968415da67432842c952344b6d3cdc8c ST7202J0-PSG.edf
|
||||
ed26efdb6b2d9e815f2a725970262cb9c15c7b98 ST7202JO-Hypnogram.edf
|
||||
c6582cfa8fcf6542a688fa8842011a93d86f2c60 ST7211J0-PSG.edf
|
||||
b8756397056f623674c3b03db808b2c8c64b0a0a ST7211JJ-Hypnogram.edf
|
||||
389f3920b39b4b9ad4fba6f91198299b7c6f6676 ST7212J0-PSG.edf
|
||||
e25e47adf0c0f09df542ef061272ed9569fb80ea ST7212JJ-Hypnogram.edf
|
||||
58315bec82d381dec56bf96924a94014462bb608 ST7221J0-PSG.edf
|
||||
7656827835362b7b44b296bad83ff6001e14f489 ST7221JA-Hypnogram.edf
|
||||
4961a08b87416246b8b8186190eca0e96da6a50d ST7222J0-PSG.edf
|
||||
da840db60086e43a2429fb1322ede5e5976b3cda ST7222JA-Hypnogram.edf
|
||||
7a850ce4bc6bd14ea072f3a45b002f8015cf2f14 ST7241J0-PSG.edf
|
||||
bbaac4f2c2f330f70583eb179d855fcf42b4fbff ST7241JO-Hypnogram.edf
|
||||
5c8bd182bfc9609929094769718b2835fe1099ad ST7242J0-PSG.edf
|
||||
f70b3dfce2c14f01221a66a4acb522df1affffdb ST7242JO-Hypnogram.edf
|
||||
5
mne/datasets/sleep_physionet/__init__.py
Normal file
5
mne/datasets/sleep_physionet/__init__.py
Normal file
@@ -0,0 +1,5 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from . import age, temazepam, _utils
|
||||
244
mne/datasets/sleep_physionet/_utils.py
Normal file
244
mne/datasets/sleep_physionet/_utils.py
Normal file
@@ -0,0 +1,244 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
import os
|
||||
import os.path as op
|
||||
|
||||
import numpy as np
|
||||
|
||||
from ...utils import _check_pandas_installed, _on_missing, _TempDir, verbose
|
||||
from ..utils import _downloader_params, _get_path
|
||||
|
||||
AGE_SLEEP_RECORDS = op.join(op.dirname(__file__), "age_records.csv")
|
||||
TEMAZEPAM_SLEEP_RECORDS = op.join(op.dirname(__file__), "temazepam_records.csv")
|
||||
|
||||
TEMAZEPAM_RECORDS_URL = (
|
||||
"https://physionet.org/physiobank/database/sleep-edfx/ST-subjects.xls" # noqa: E501
|
||||
)
|
||||
TEMAZEPAM_RECORDS_URL_SHA1 = "f52fffe5c18826a2bd4c5d5cb375bb4a9008c885"
|
||||
|
||||
AGE_RECORDS_URL = "https://physionet.org/physiobank/database/sleep-edfx/SC-subjects.xls"
|
||||
AGE_RECORDS_URL_SHA1 = "0ba6650892c5d33a8e2b3f62ce1cc9f30438c54f"
|
||||
|
||||
sha1sums_fname = op.join(op.dirname(__file__), "SHA1SUMS")
|
||||
|
||||
|
||||
def _fetch_one(fname, hashsum, path, force_update, base_url):
|
||||
import pooch
|
||||
|
||||
# Fetch the file
|
||||
url = base_url + "/" + fname
|
||||
destination = op.join(path, fname)
|
||||
if op.isfile(destination) and not force_update:
|
||||
return destination, False
|
||||
if op.isfile(destination):
|
||||
os.remove(destination)
|
||||
if not op.isdir(op.dirname(destination)):
|
||||
os.makedirs(op.dirname(destination))
|
||||
downloader = pooch.HTTPDownloader(**_downloader_params())
|
||||
pooch.retrieve(
|
||||
url=url,
|
||||
known_hash=f"sha1:{hashsum}",
|
||||
path=path,
|
||||
downloader=downloader,
|
||||
fname=fname,
|
||||
)
|
||||
return destination, True
|
||||
|
||||
|
||||
@verbose
|
||||
def _data_path(path=None, verbose=None):
|
||||
"""Get path to local copy of EEG Physionet age Polysomnography dataset URL.
|
||||
|
||||
This is a low-level function useful for getting a local copy of a
|
||||
remote Polysomnography dataset :footcite:`KempEtAl2000` which is available
|
||||
at PhysioNet :footcite:`GoldbergerEtAl2000`.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
path : None | str
|
||||
Location of where to look for the data storing location.
|
||||
If None, the environment variable or config parameter
|
||||
``PHYSIONET_SLEEP_PATH`` is used. If it doesn't exist, the "~/mne_data"
|
||||
directory is used. If the dataset is not found under the given path,
|
||||
the data will be automatically downloaded to the specified folder.
|
||||
%(verbose)s
|
||||
|
||||
Returns
|
||||
-------
|
||||
path : list of Path
|
||||
Local path to the given data file. This path is contained inside a list
|
||||
of length one, for compatibility.
|
||||
|
||||
References
|
||||
----------
|
||||
.. footbibliography::
|
||||
""" # noqa: E501
|
||||
key = "PHYSIONET_SLEEP_PATH"
|
||||
name = "PHYSIONET_SLEEP"
|
||||
path = _get_path(path, key, name)
|
||||
return op.join(path, "physionet-sleep-data")
|
||||
|
||||
|
||||
def _update_sleep_temazepam_records(fname=TEMAZEPAM_SLEEP_RECORDS):
|
||||
"""Help function to download Physionet's temazepam dataset records."""
|
||||
import pooch
|
||||
|
||||
pd = _check_pandas_installed()
|
||||
tmp = _TempDir()
|
||||
|
||||
# Download subjects info.
|
||||
subjects_fname = op.join(tmp, "ST-subjects.xls")
|
||||
downloader = pooch.HTTPDownloader(**_downloader_params())
|
||||
pooch.retrieve(
|
||||
url=TEMAZEPAM_RECORDS_URL,
|
||||
known_hash=f"sha1:{TEMAZEPAM_RECORDS_URL_SHA1}",
|
||||
path=tmp,
|
||||
downloader=downloader,
|
||||
fname=op.basename(subjects_fname),
|
||||
)
|
||||
|
||||
# Load and Massage the checksums.
|
||||
sha1_df = pd.read_csv(
|
||||
sha1sums_fname, sep=" ", header=None, names=["sha", "fname"], engine="python"
|
||||
)
|
||||
select_age_records = sha1_df.fname.str.startswith(
|
||||
"ST"
|
||||
) & sha1_df.fname.str.endswith("edf")
|
||||
sha1_df = sha1_df[select_age_records]
|
||||
sha1_df["id"] = [name[:6] for name in sha1_df.fname]
|
||||
|
||||
# Load and massage the data.
|
||||
data = pd.read_excel(subjects_fname, header=[0, 1])
|
||||
data = data.set_index(("Subject - age - sex", "Nr"))
|
||||
data.index.name = "subject"
|
||||
data.columns.names = [None, None]
|
||||
data = (
|
||||
data.set_index(
|
||||
[("Subject - age - sex", "Age"), ("Subject - age - sex", "M1/F2")],
|
||||
append=True,
|
||||
)
|
||||
.stack(level=0)
|
||||
.reset_index()
|
||||
)
|
||||
|
||||
data = data.rename(
|
||||
columns={
|
||||
("Subject - age - sex", "Age"): "age",
|
||||
("Subject - age - sex", "M1/F2"): "sex",
|
||||
"level_3": "drug",
|
||||
}
|
||||
)
|
||||
data["id"] = [f"ST7{s:02d}{n:1d}" for s, n in zip(data.subject, data["night nr"])]
|
||||
|
||||
data = pd.merge(sha1_df, data, how="outer", on="id")
|
||||
data["record type"] = (
|
||||
data.fname.str.split("-", expand=True)[1]
|
||||
.str.split(".", expand=True)[0]
|
||||
.astype("category")
|
||||
)
|
||||
|
||||
data = data.set_index(
|
||||
["id", "subject", "age", "sex", "drug", "lights off", "night nr", "record type"]
|
||||
).unstack()
|
||||
data.columns = [l1 + "_" + l2 for l1, l2 in data.columns]
|
||||
data = data.reset_index().drop(columns=["id"])
|
||||
|
||||
data["sex"] = data.sex.astype("category").cat.rename_categories(
|
||||
{1: "male", 2: "female"}
|
||||
)
|
||||
|
||||
data["drug"] = data["drug"].str.split(expand=True)[0]
|
||||
data["subject_orig"] = data["subject"]
|
||||
data["subject"] = data.index // 2 # to make sure index is from 0 to 21
|
||||
|
||||
# Save the data.
|
||||
data.to_csv(fname, index=False)
|
||||
|
||||
|
||||
def _update_sleep_age_records(fname=AGE_SLEEP_RECORDS):
|
||||
"""Help function to download Physionet's age dataset records."""
|
||||
import pooch
|
||||
|
||||
pd = _check_pandas_installed()
|
||||
tmp = _TempDir()
|
||||
|
||||
# Download subjects info.
|
||||
subjects_fname = op.join(tmp, "SC-subjects.xls")
|
||||
downloader = pooch.HTTPDownloader(**_downloader_params())
|
||||
pooch.retrieve(
|
||||
url=AGE_RECORDS_URL,
|
||||
known_hash=f"sha1:{AGE_RECORDS_URL_SHA1}",
|
||||
path=tmp,
|
||||
downloader=downloader,
|
||||
fname=op.basename(subjects_fname),
|
||||
)
|
||||
|
||||
# Load and Massage the checksums.
|
||||
sha1_df = pd.read_csv(
|
||||
sha1sums_fname, sep=" ", header=None, names=["sha", "fname"], engine="python"
|
||||
)
|
||||
select_age_records = sha1_df.fname.str.startswith(
|
||||
"SC"
|
||||
) & sha1_df.fname.str.endswith("edf")
|
||||
sha1_df = sha1_df[select_age_records]
|
||||
sha1_df["id"] = [name[:6] for name in sha1_df.fname]
|
||||
|
||||
# Load and massage the data.
|
||||
data = pd.read_excel(subjects_fname)
|
||||
data = data.rename(
|
||||
index=str, columns={"sex (F=1)": "sex", "LightsOff": "lights off"}
|
||||
)
|
||||
data["sex"] = data.sex.astype("category").cat.rename_categories(
|
||||
{1: "female", 2: "male"}
|
||||
)
|
||||
|
||||
data["id"] = [f"SC4{s:02d}{n:1d}" for s, n in zip(data.subject, data.night)]
|
||||
|
||||
data = data.set_index("id").join(sha1_df.set_index("id")).dropna()
|
||||
|
||||
data["record type"] = (
|
||||
data.fname.str.split("-", expand=True)[1]
|
||||
.str.split(".", expand=True)[0]
|
||||
.astype("category")
|
||||
)
|
||||
|
||||
data = data.reset_index().drop(columns=["id"])
|
||||
data = data[
|
||||
["subject", "night", "record type", "age", "sex", "lights off", "sha", "fname"]
|
||||
]
|
||||
|
||||
# Save the data.
|
||||
data.to_csv(fname, index=False)
|
||||
|
||||
|
||||
def _check_subjects(subjects, n_subjects, missing=None, on_missing="raise"):
|
||||
"""Check whether subjects are available.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
subjects : list
|
||||
Subject numbers to be checked.
|
||||
n_subjects : int
|
||||
Number of subjects available.
|
||||
missing : list | None
|
||||
Subject numbers that are missing.
|
||||
on_missing : 'raise' | 'warn' | 'ignore'
|
||||
What to do if one or several subjects are not available. Valid keys
|
||||
are 'raise' | 'warn' | 'ignore'. Default is 'error'. If on_missing
|
||||
is 'warn' it will proceed but warn, if 'ignore' it will proceed
|
||||
silently.
|
||||
"""
|
||||
valid_subjects = np.arange(n_subjects)
|
||||
if missing is not None:
|
||||
valid_subjects = np.setdiff1d(valid_subjects, missing)
|
||||
unknown_subjects = np.setdiff1d(subjects, valid_subjects)
|
||||
if unknown_subjects.size > 0:
|
||||
subjects_list = ", ".join([str(s) for s in unknown_subjects])
|
||||
msg = (
|
||||
f"This dataset contains subjects 0 to {n_subjects - 1} with "
|
||||
f"missing subjects {missing}. Unknown subjects: "
|
||||
f"{subjects_list}."
|
||||
)
|
||||
_on_missing(on_missing, msg)
|
||||
153
mne/datasets/sleep_physionet/age.py
Normal file
153
mne/datasets/sleep_physionet/age.py
Normal file
@@ -0,0 +1,153 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
import os
|
||||
import time
|
||||
|
||||
import numpy as np
|
||||
|
||||
from ...utils import verbose
|
||||
from ..utils import _log_time_size
|
||||
from ._utils import (
|
||||
AGE_SLEEP_RECORDS,
|
||||
_check_subjects,
|
||||
_data_path,
|
||||
_fetch_one,
|
||||
_on_missing,
|
||||
)
|
||||
|
||||
data_path = _data_path # expose _data_path(..) as data_path(..)
|
||||
|
||||
BASE_URL = "https://physionet.org/physiobank/database/sleep-edfx/sleep-cassette/"
|
||||
|
||||
|
||||
@verbose
|
||||
def fetch_data(
|
||||
subjects,
|
||||
recording=(1, 2),
|
||||
path=None,
|
||||
force_update=False,
|
||||
base_url=BASE_URL,
|
||||
on_missing="raise",
|
||||
*,
|
||||
verbose=None,
|
||||
): # noqa: D301, E501
|
||||
"""Get paths to local copies of PhysioNet Polysomnography dataset files.
|
||||
|
||||
This will fetch data from the publicly available subjects from PhysioNet's
|
||||
study of age effects on sleep in healthy subjects
|
||||
:footcite:`MourtazaevEtAl1995,GoldbergerEtAl2000`. This
|
||||
corresponds to a subset of 153 recordings from 37 males and 41 females that
|
||||
were 25-101 years old at the time of the recordings. There are two night
|
||||
recordings per subject except for subjects 13, 36 and 52 which have one
|
||||
record missing each due to missing recording hardware.
|
||||
|
||||
See more details in
|
||||
`physionet website <https://physionet.org/physiobank/database/sleep-edfx/sleep-cassette/>`_.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
subjects : list of int
|
||||
The subjects to use. Can be in the range of 0-82 (inclusive), however
|
||||
the following subjects are not available: 39, 68, 69, 78 and 79.
|
||||
recording : list of int
|
||||
The night recording indices. Valid values are : [1], [2], or [1, 2].
|
||||
The following recordings are not available: recording 1 for subject 36
|
||||
and 52, and recording 2 for subject 13.
|
||||
path : None | str
|
||||
Location of where to look for the PhysioNet data storing location.
|
||||
If None, the environment variable or config parameter
|
||||
``PHYSIONET_SLEEP_PATH`` is used. If it doesn't exist, the "~/mne_data"
|
||||
directory is used. If the Polysomnography dataset is not found under
|
||||
the given path, the data will be automatically downloaded to the
|
||||
specified folder.
|
||||
force_update : bool
|
||||
Force update of the dataset even if a local copy exists.
|
||||
base_url : str
|
||||
The URL root.
|
||||
on_missing : 'raise' | 'warn' | 'ignore'
|
||||
What to do if one or several recordings are not available. Valid keys
|
||||
are 'raise' | 'warn' | 'ignore'. Default is 'error'. If on_missing
|
||||
is 'warn' it will proceed but warn, if 'ignore' it will proceed
|
||||
silently.
|
||||
%(verbose)s
|
||||
|
||||
Returns
|
||||
-------
|
||||
paths : list
|
||||
List of local data paths of the given type.
|
||||
|
||||
See Also
|
||||
--------
|
||||
mne.datasets.sleep_physionet.temazepam.fetch_data
|
||||
|
||||
Notes
|
||||
-----
|
||||
For example, one could do:
|
||||
|
||||
>>> from mne.datasets import sleep_physionet
|
||||
>>> sleep_physionet.age.fetch_data(subjects=[0]) # doctest: +SKIP
|
||||
|
||||
This would download data for subject 0 if it isn't there already.
|
||||
|
||||
References
|
||||
----------
|
||||
.. footbibliography::
|
||||
""" # noqa: E501
|
||||
t0 = time.time()
|
||||
records = np.loadtxt(
|
||||
AGE_SLEEP_RECORDS,
|
||||
skiprows=1,
|
||||
delimiter=",",
|
||||
usecols=(0, 1, 2, 6, 7),
|
||||
dtype={
|
||||
"names": ("subject", "record", "type", "sha", "fname"),
|
||||
"formats": ("<i2", "i1", "<S9", "S40", "<S22"),
|
||||
},
|
||||
)
|
||||
psg_records = records[np.where(records["type"] == b"PSG")]
|
||||
hyp_records = records[np.where(records["type"] == b"Hypnogram")]
|
||||
|
||||
path = data_path(path=path)
|
||||
params = [path, force_update, base_url]
|
||||
|
||||
_check_subjects(subjects, 83, missing=[39, 68, 69, 78, 79], on_missing=on_missing)
|
||||
|
||||
# Check for missing recordings
|
||||
if set(subjects) & {36, 52} and 1 in recording:
|
||||
msg = (
|
||||
"Requested recording 1 for subject 36 and/or 52, but it is not "
|
||||
"available in corpus."
|
||||
)
|
||||
_on_missing(on_missing, msg)
|
||||
if 13 in subjects and 2 in recording:
|
||||
msg = (
|
||||
"Requested recording 2 for subject 13, but it is not available "
|
||||
"in corpus."
|
||||
)
|
||||
_on_missing(on_missing, msg)
|
||||
|
||||
fnames = []
|
||||
sz = 0
|
||||
for subject in subjects:
|
||||
for idx in np.where(psg_records["subject"] == subject)[0]:
|
||||
if psg_records["record"][idx] in recording:
|
||||
psg_fname, pdl = _fetch_one(
|
||||
psg_records["fname"][idx].decode(),
|
||||
psg_records["sha"][idx].decode(),
|
||||
*params,
|
||||
)
|
||||
hyp_fname, hdl = _fetch_one(
|
||||
hyp_records["fname"][idx].decode(),
|
||||
hyp_records["sha"][idx].decode(),
|
||||
*params,
|
||||
)
|
||||
fnames.append([psg_fname, hyp_fname])
|
||||
if pdl:
|
||||
sz += os.path.getsize(psg_fname)
|
||||
if hdl:
|
||||
sz += os.path.getsize(hyp_fname)
|
||||
if sz > 0:
|
||||
_log_time_size(t0, sz)
|
||||
return fnames
|
||||
307
mne/datasets/sleep_physionet/age_records.csv
Normal file
307
mne/datasets/sleep_physionet/age_records.csv
Normal file
@@ -0,0 +1,307 @@
|
||||
subject,night,record type,age,sex,lights off,sha,fname
|
||||
0,1,PSG,33,female,00:38:00,adabd3b01fc7bb75c523a974f38ee3ae4e57b40f,SC4001E0-PSG.edf
|
||||
0,1,Hypnogram,33,female,00:38:00,21c998eadc8b1e3ea6727d3585186b8f76e7e70b,SC4001EC-Hypnogram.edf
|
||||
0,2,PSG,33,female,21:57:00,c6b6d7a8605cc7e7602b6028ee77f6fbf5f7581d,SC4002E0-PSG.edf
|
||||
0,2,Hypnogram,33,female,21:57:00,386230188a3552b1fc90bba0fb7476ceaca174b6,SC4002EC-Hypnogram.edf
|
||||
1,1,PSG,33,female,22:44:00,4d17451f7847355bcab17584de05e7e1df58c660,SC4011E0-PSG.edf
|
||||
1,1,Hypnogram,33,female,22:44:00,d582a3cbe2db481a362af890bc5a2f5ca7c878dc,SC4011EH-Hypnogram.edf
|
||||
1,2,PSG,33,female,22:15:00,a47d525f5147904b6890231e2ad338359c7ab94c,SC4012E0-PSG.edf
|
||||
1,2,Hypnogram,33,female,22:15:00,fa99f60d7f54617cdd1128aff4f21c4daed763c7,SC4012EC-Hypnogram.edf
|
||||
2,1,PSG,26,female,22:50:00,8b135afa7fb93bb5f1998fda50355944777c245e,SC4021E0-PSG.edf
|
||||
2,1,Hypnogram,26,female,22:50:00,91043cfe46695088b17b6a02937b25efd674c3fb,SC4021EH-Hypnogram.edf
|
||||
2,2,PSG,26,female,22:57:00,d739e142b3b328c71b4752149901805dcd6d7e19,SC4022E0-PSG.edf
|
||||
2,2,Hypnogram,26,female,22:57:00,0c46a03699dd00e8f92a7edff99ebc4642cb3d48,SC4022EJ-Hypnogram.edf
|
||||
3,1,PSG,26,female,00:02:00,85e58dc1e3303537dade8c5827ab58328239c384,SC4031E0-PSG.edf
|
||||
3,1,Hypnogram,26,female,00:02:00,6363d8b0fdc48cf396c9abf054bb4a9696d38bdb,SC4031EC-Hypnogram.edf
|
||||
3,2,PSG,26,female,00:24:00,43963d300642b3aa840e8c468f321b8162601772,SC4032E0-PSG.edf
|
||||
3,2,Hypnogram,26,female,00:24:00,7925514bc8d2ef3f1103130f08f7b3afd2136b88,SC4032EP-Hypnogram.edf
|
||||
4,1,PSG,34,female,23:12:00,04d2b88d25f2ae4a65ba44cd9145bd12800a0e20,SC4041E0-PSG.edf
|
||||
4,1,Hypnogram,34,female,23:12:00,f148821669bd3588187b3b430bd79adf569f86d1,SC4041EC-Hypnogram.edf
|
||||
4,2,PSG,34,female,23:35:00,76253d964d7797540ffd791e6e136023ed67a485,SC4042E0-PSG.edf
|
||||
4,2,Hypnogram,34,female,23:35:00,9873df429f971f8a4b720a454f6c0472b8a25ebb,SC4042EC-Hypnogram.edf
|
||||
5,1,PSG,28,female,01:22:00,ea073451b65ce8a6f1a02a8cc2b89d1a162ca0ae,SC4051E0-PSG.edf
|
||||
5,1,Hypnogram,28,female,01:22:00,4159ef8a3e119d6dcc1bede806f6fbc017b27a0f,SC4051EC-Hypnogram.edf
|
||||
5,2,PSG,28,female,00:35:00,5a2efbd21be9b745fd534394eb2503caca7dc53f,SC4052E0-PSG.edf
|
||||
5,2,Hypnogram,28,female,00:35:00,0e96482d44762df4da65dc4fdb970b342264d22a,SC4052EC-Hypnogram.edf
|
||||
6,1,PSG,31,female,00:16:00,1736736e585807c14f1ae8bc87a94cae222c5170,SC4061E0-PSG.edf
|
||||
6,1,Hypnogram,31,female,00:16:00,4bf99622c67c281b25ceccd35e7050328a2946e8,SC4061EC-Hypnogram.edf
|
||||
6,2,PSG,31,female,22:44:00,763c7ac059f1771a0165e5cb351b176afb1cfe15,SC4062E0-PSG.edf
|
||||
6,2,Hypnogram,31,female,22:44:00,14f07411cd04d3b4b522d37c129334955287ff5f,SC4062EC-Hypnogram.edf
|
||||
7,1,PSG,30,female,00:36:00,1374b34f6139b6ff7e865d8243eef39ba334ef50,SC4071E0-PSG.edf
|
||||
7,1,Hypnogram,30,female,00:36:00,608024fd19a140ad233a4680e07c2495a74b69c2,SC4071EC-Hypnogram.edf
|
||||
7,2,PSG,30,female,00:41:00,1c570644243d79396df612fa2b9bc027b24430e4,SC4072E0-PSG.edf
|
||||
7,2,Hypnogram,30,female,00:41:00,a8da6c20b9b48189f05ab537886b59dd141374d2,SC4072EH-Hypnogram.edf
|
||||
8,1,PSG,25,female,23:35:00,0e1cc2c4e1da14ab94515e3e7e75e8ad30ec99cb,SC4081E0-PSG.edf
|
||||
8,1,Hypnogram,25,female,23:35:00,9ec663ffa5c17afcaca59d7829d77b9165102237,SC4081EC-Hypnogram.edf
|
||||
8,2,PSG,25,female,23:37:00,d57d4aa7cbc5045f611a3a3e342b501e086ea426,SC4082E0-PSG.edf
|
||||
8,2,Hypnogram,25,female,23:37:00,d43c785dba43063d7baa332671c6bac9c832b5b7,SC4082EP-Hypnogram.edf
|
||||
9,1,PSG,25,female,23:02:00,b3502e0bd54683e973182c791aa962b804e79633,SC4091E0-PSG.edf
|
||||
9,1,Hypnogram,25,female,23:02:00,7aa63b408c769a4a983a908b6ba41d87dd743c6e,SC4091EC-Hypnogram.edf
|
||||
9,2,PSG,25,female,23:01:00,246e35852119b33d197db2f7bcfb1b46a5270a03,SC4092E0-PSG.edf
|
||||
9,2,Hypnogram,25,female,23:01:00,9d85766a83231b1c6076cb293367ccc354c57eeb,SC4092EC-Hypnogram.edf
|
||||
10,1,PSG,26,male,22:59:00,3ae168ff2c9c0c56f51205fdb10f05a4c6b2064e,SC4101E0-PSG.edf
|
||||
10,1,Hypnogram,26,male,22:59:00,60d9c3913881e11b06ad99e9870bd1ca4d93c952,SC4101EC-Hypnogram.edf
|
||||
10,2,PSG,26,male,23:07:00,86f307190961eaab0214fdc0213f8fe05812c7a5,SC4102E0-PSG.edf
|
||||
10,2,Hypnogram,26,male,23:07:00,8072e2d52bc6c19b45fbd921550e5243bc5a1de7,SC4102EC-Hypnogram.edf
|
||||
11,1,PSG,26,male,23:00:00,e490956b4dce01c46ba88a2b847f091bb54ea16e,SC4111E0-PSG.edf
|
||||
11,1,Hypnogram,26,male,23:00:00,12db1920e2f6083c8ab1f2c24fe35dfa03715e4a,SC4111EC-Hypnogram.edf
|
||||
11,2,PSG,26,male,01:14:00,ca24dc464df61144627588b29d35a85fcc7ac984,SC4112E0-PSG.edf
|
||||
11,2,Hypnogram,26,male,01:14:00,54dbc39015b0a445b51189987a00e08cc27d8f0c,SC4112EC-Hypnogram.edf
|
||||
12,1,PSG,26,male,00:50:00,33c72025a7a215ea5e255f4254cb0f93b1313369,SC4121E0-PSG.edf
|
||||
12,1,Hypnogram,26,male,00:50:00,daa57ece807cb5325c6d1ce059f0e8a8d1c85391,SC4121EC-Hypnogram.edf
|
||||
12,2,PSG,26,male,01:03:00,34f5145ab62dcc5a53ba18735519e5bb2b13841a,SC4122E0-PSG.edf
|
||||
12,2,Hypnogram,26,male,01:03:00,b7af1a32d8ca15e8185e4c94213ffc18ad7f6e8a,SC4122EV-Hypnogram.edf
|
||||
13,1,PSG,27,male,00:14:00,42ff97035aae6dd34ca9437857c48ac6f2ab97df,SC4131E0-PSG.edf
|
||||
13,1,Hypnogram,27,male,00:14:00,5beef85170bdbb5cf2eea24a79f0f5c2c3975c4b,SC4131EC-Hypnogram.edf
|
||||
14,1,PSG,27,male,22:55:00,83493e1c32d441c9e5ee3de6a024bfb5e7ab9f5f,SC4141E0-PSG.edf
|
||||
14,1,Hypnogram,27,male,22:55:00,511d398f22b9b2b304de27c40740a41584ff6af2,SC4141EU-Hypnogram.edf
|
||||
14,2,PSG,27,male,23:22:00,63d13828b7ebe0d2ed7f491d2b5520e928b9b55d,SC4142E0-PSG.edf
|
||||
14,2,Hypnogram,27,male,23:22:00,6f123e6fdc90a01b83e694d9744a6d27f3c87b25,SC4142EU-Hypnogram.edf
|
||||
15,1,PSG,31,male,23:56:00,5a92d49699d4de369d66d9462e91b0dcb3312649,SC4151E0-PSG.edf
|
||||
15,1,Hypnogram,31,male,23:56:00,37dcbd339c95322d028b3a5466812697041cc373,SC4151EC-Hypnogram.edf
|
||||
15,2,PSG,31,male,23:38:00,778626489bc4fe2c9137d2d361876d97dce97e5e,SC4152E0-PSG.edf
|
||||
15,2,Hypnogram,31,male,23:38:00,294cdc47cd3d165031f7041c17f18dd013d216cb,SC4152EC-Hypnogram.edf
|
||||
16,1,PSG,32,male,22:16:00,e56ff3aa366fe9a04a0fdfdd4cd862e77e8ac807,SC4161E0-PSG.edf
|
||||
16,1,Hypnogram,32,male,22:16:00,56711b1bfed292032491f5cce57494629286a131,SC4161EC-Hypnogram.edf
|
||||
16,2,PSG,32,male,23:16:00,722692f9940f3a1bccb9b4488c4477edf7fb128f,SC4162E0-PSG.edf
|
||||
16,2,Hypnogram,32,male,23:16:00,c85647fb4bc1f382fe46bf9aaf579dc483115885,SC4162EC-Hypnogram.edf
|
||||
17,1,PSG,31,male,23:58:00,f1a65522cb7d6c71ac47742535a12c88e2019dad,SC4171E0-PSG.edf
|
||||
17,1,Hypnogram,31,male,23:58:00,dd257c8d922f08c2c8ca5236c9bf54da887c68e5,SC4171EU-Hypnogram.edf
|
||||
17,2,PSG,31,male,00:37:00,572b81bc24c2c9482e6fc7ba9202a7bf253655e1,SC4172E0-PSG.edf
|
||||
17,2,Hypnogram,31,male,00:37:00,c9a3b590748d7d6c7ad97c62222bd53d8ebaf630,SC4172EC-Hypnogram.edf
|
||||
18,1,PSG,28,male,23:25:00,23674d20572853eb6d988d24378c52123f66500c,SC4181E0-PSG.edf
|
||||
18,1,Hypnogram,28,male,23:25:00,51fc3df2df7d4da654f3e18ed1b233d0c60cfa80,SC4181EC-Hypnogram.edf
|
||||
18,2,PSG,28,male,23:45:00,83e8cbe882ba863da9fd3c11393c95b6fec5b7a5,SC4182E0-PSG.edf
|
||||
18,2,Hypnogram,28,male,23:45:00,43c487955edddb4ee2f60193a097c68c25c5dd4d,SC4182EC-Hypnogram.edf
|
||||
19,1,PSG,28,male,01:50:00,d6da621dbb20dec3494a38c7d2a0363793ac5ebe,SC4191E0-PSG.edf
|
||||
19,1,Hypnogram,28,male,01:50:00,defc7b9368c2d3c4ab4a294757843825a83cdb5d,SC4191EP-Hypnogram.edf
|
||||
19,2,PSG,28,male,00:57:00,941353118732321d0246a1d58d72e903bd2f0d8f,SC4192E0-PSG.edf
|
||||
19,2,Hypnogram,28,male,00:57:00,97b91b3067c5ecde766042fc2cff9e22f8023371,SC4192EV-Hypnogram.edf
|
||||
20,1,PSG,51,female,23:10:00,38a0be6e45ddd9b1f17d09964a32e005dc5a6519,SC4201E0-PSG.edf
|
||||
20,1,Hypnogram,51,female,23:10:00,83822f9970d3959ad2e0613492ae39bd0fae6068,SC4201EC-Hypnogram.edf
|
||||
20,2,PSG,51,female,23:15:00,aa69f5bd47c2ae03c9d38bfe6d0e58408744b885,SC4202E0-PSG.edf
|
||||
20,2,Hypnogram,51,female,23:15:00,5c5c63016b43421a523d1efcb34247e90aa6318b,SC4202EC-Hypnogram.edf
|
||||
21,1,PSG,51,female,23:28:00,c106ad072dbc975a3742f7eff151219870f0c794,SC4211E0-PSG.edf
|
||||
21,1,Hypnogram,51,female,23:28:00,9126937ea8a414d6ae9bc4a4194d841a891fa8a8,SC4211EC-Hypnogram.edf
|
||||
21,2,PSG,51,female,23:59:00,a06ecb3f0a7b2c306f5ae4dbd83685f877cd945b,SC4212E0-PSG.edf
|
||||
21,2,Hypnogram,51,female,23:59:00,a85f178b69a1cda47d11dd1e5394dfdcb58de1d4,SC4212EC-Hypnogram.edf
|
||||
22,1,PSG,56,female,23:47:00,8733ea022d3778259a436507156cf3360ad8be06,SC4221E0-PSG.edf
|
||||
22,1,Hypnogram,56,female,23:47:00,b158eda4f81772095c129be77f8e60ec9d81b884,SC4221EJ-Hypnogram.edf
|
||||
22,2,PSG,56,female,23:14:00,211410fab6381da0dfaef4134d5a05eec935a4ec,SC4222E0-PSG.edf
|
||||
22,2,Hypnogram,56,female,23:14:00,1488fbfbc149499dafa8dafff4f7504053af429f,SC4222EC-Hypnogram.edf
|
||||
23,1,PSG,50,female,00:51:00,d96f1f35b2f77c7de706036c6e4114139e07b307,SC4231E0-PSG.edf
|
||||
23,1,Hypnogram,50,female,00:51:00,9f6df70676d6cddcf069ceb7f408a7989af99ce2,SC4231EJ-Hypnogram.edf
|
||||
23,2,PSG,50,female,00:32:00,6b493fa424c1329ea1c13543d08ba82a9f1e85b6,SC4232E0-PSG.edf
|
||||
23,2,Hypnogram,50,female,00:32:00,d8ca7d694b3c48ab9d983b9cf67e17744c6b50fb,SC4232EV-Hypnogram.edf
|
||||
24,1,PSG,54,female,23:22:00,58719e53fe18d2fc4cb1776ab5d43306beb1325d,SC4241E0-PSG.edf
|
||||
24,1,Hypnogram,54,female,23:22:00,fb1432e303a8f99a2256ce682db95d88772c479f,SC4241EC-Hypnogram.edf
|
||||
24,2,PSG,54,female,22:50:00,5a6277972c5f03572ed99d9ff63fb637945be778,SC4242E0-PSG.edf
|
||||
24,2,Hypnogram,54,female,22:50:00,bbbf097f4cc6560fc20c903fba2c7055e1549f85,SC4242EA-Hypnogram.edf
|
||||
25,1,PSG,56,female,00:32:00,7dbc0289707ff70662d367d65de7bec188484d1b,SC4251E0-PSG.edf
|
||||
25,1,Hypnogram,56,female,00:32:00,e38be8134e4a36eb418ca1f06a1fe02b52d0ebf1,SC4251EP-Hypnogram.edf
|
||||
25,2,PSG,56,female,23:49:00,cb3922910ea03d06c1fc5c8f15b71339dc26bc9d,SC4252E0-PSG.edf
|
||||
25,2,Hypnogram,56,female,23:49:00,4cb7a383736e09125a82ef7e4f17b41130c7ac00,SC4252EU-Hypnogram.edf
|
||||
26,1,PSG,51,female,23:39:00,b81c9bd1875b33713b5eb56b58f1e120841b507f,SC4261F0-PSG.edf
|
||||
26,1,Hypnogram,51,female,23:39:00,501eda59557bb99d530d01bdad3579f1e1158991,SC4261FM-Hypnogram.edf
|
||||
26,2,PSG,51,female,00:20:00,c9f9ad7cd751d5be91396886a2b64a7c1de564ee,SC4262F0-PSG.edf
|
||||
26,2,Hypnogram,51,female,00:20:00,7ccd12803c5fc602ac1929ff3afd914b894b9143,SC4262FC-Hypnogram.edf
|
||||
27,1,PSG,54,female,23:41:00,20994715d34edb26113180ee330ce287dbf57b60,SC4271F0-PSG.edf
|
||||
27,1,Hypnogram,54,female,23:41:00,26c5c7f3a5c350d3505af2857835ce81252c5990,SC4271FC-Hypnogram.edf
|
||||
27,2,PSG,54,female,22:58:00,9e79eb465e34b7eb6fe27ae3ce35d28d6693d44b,SC4272F0-PSG.edf
|
||||
27,2,Hypnogram,54,female,22:58:00,956fe4b45d29a8999faf280a6168e332afab6abc,SC4272FM-Hypnogram.edf
|
||||
28,1,PSG,56,female,23:55:00,51811913d7854f95c319076e670d988687ca667c,SC4281G0-PSG.edf
|
||||
28,1,Hypnogram,56,female,23:55:00,d188150831e912081dbeda2695231177200c39f9,SC4281GC-Hypnogram.edf
|
||||
28,2,PSG,56,female,00:13:00,e9f080a766a9b7a247f228e44e9c4ec67e571c95,SC4282G0-PSG.edf
|
||||
28,2,Hypnogram,56,female,00:13:00,12d777787dd1975eef9015329fd774b2bfa1d53a,SC4282GC-Hypnogram.edf
|
||||
29,1,PSG,51,female,22:38:00,f81c7574a5e5829e006d0b705bf5208a3349c9c7,SC4291G0-PSG.edf
|
||||
29,1,Hypnogram,51,female,22:38:00,577c1345f6d070d975db5016048722f78b1b414e,SC4291GA-Hypnogram.edf
|
||||
29,2,PSG,51,female,23:04:00,7416f44a3b149b4ca1fc3e53d546a093a7333bb5,SC4292G0-PSG.edf
|
||||
29,2,Hypnogram,51,female,23:04:00,6e111a15160a31609761f742315df800b1311b3b,SC4292GC-Hypnogram.edf
|
||||
30,1,PSG,50,male,00:09:00,7818e5a02afa89e913111d91ecd651aa3e786e5d,SC4301E0-PSG.edf
|
||||
30,1,Hypnogram,50,male,00:09:00,d49df84bfea28bb241c09b922cd2dc64f57c5ae5,SC4301EC-Hypnogram.edf
|
||||
30,2,PSG,50,male,00:20:00,d52859ba6a7ded3364b0d8ef2b722e1d3edda060,SC4302E0-PSG.edf
|
||||
30,2,Hypnogram,50,male,00:20:00,b3d6f687831ee32f6df1da59f2d568c13f9c09d0,SC4302EV-Hypnogram.edf
|
||||
31,1,PSG,54,male,23:44:00,b62f5104bddf452f4700c85997e51bec17f0243b,SC4311E0-PSG.edf
|
||||
31,1,Hypnogram,54,male,23:44:00,812c34844e834b97949019741fa7f835d973725d,SC4311EC-Hypnogram.edf
|
||||
31,2,PSG,54,male,23:14:00,b0a9b4922665734773abbaba06e7aab32010b862,SC4312E0-PSG.edf
|
||||
31,2,Hypnogram,54,male,23:14:00,fca1935a8974eac27803e3125cea177995deca11,SC4312EM-Hypnogram.edf
|
||||
32,1,PSG,57,male,00:48:00,335381ae310e9f1f053c37763eeee74d7d873471,SC4321E0-PSG.edf
|
||||
32,1,Hypnogram,57,male,00:48:00,67ba7d3b97354deb31db095e748ea3a4014fae2c,SC4321EC-Hypnogram.edf
|
||||
32,2,PSG,57,male,00:15:00,c9fdcfcce7e603b3289b7417891987fd67f6d921,SC4322E0-PSG.edf
|
||||
32,2,Hypnogram,57,male,00:15:00,40cf9a6397a52c7deda693ca596e928cc2b9f4e9,SC4322EC-Hypnogram.edf
|
||||
33,1,PSG,60,male,22:58:00,f37cb4df27286e38c604cae943169ff29b1473fc,SC4331F0-PSG.edf
|
||||
33,1,Hypnogram,60,male,22:58:00,ca943e2b73c6404f929c372ebd817b7b3b71b4dd,SC4331FV-Hypnogram.edf
|
||||
33,2,PSG,60,male,22:55:00,5bce6ea9b2d6c9bfb41065e92bf9cc05a11b5b75,SC4332F0-PSG.edf
|
||||
33,2,Hypnogram,60,male,22:55:00,e4595b0313d5320b0bffefa43260485e19977e3c,SC4332FC-Hypnogram.edf
|
||||
34,1,PSG,54,male,23:03:00,17de25c8f023fe632aa403a6d9525c1cde8eaef5,SC4341F0-PSG.edf
|
||||
34,1,Hypnogram,54,male,23:03:00,81ba3c0d8320c9ee306f678b4bc9e6e266165886,SC4341FA-Hypnogram.edf
|
||||
34,2,PSG,54,male,22:30:00,b659037447a1871f4ba72bbe496cfbe507330530,SC4342F0-PSG.edf
|
||||
34,2,Hypnogram,54,male,22:30:00,e8e74c0905e89a59022ce0814ca9a050748ec9ae,SC4342FA-Hypnogram.edf
|
||||
35,1,PSG,57,male,00:02:00,631900bef36d359a0f5807a7e1b202f80b0427ac,SC4351F0-PSG.edf
|
||||
35,1,Hypnogram,57,male,00:02:00,a15cdf3973b77198d8276dc505dbb35cb39a9b4a,SC4351FA-Hypnogram.edf
|
||||
35,2,PSG,57,male,23:30:00,325423a85890dcc921253bde7c7027d66f14033e,SC4352F0-PSG.edf
|
||||
35,2,Hypnogram,57,male,23:30:00,1e0583b2a58432c964506ff44752d597753658c9,SC4352FV-Hypnogram.edf
|
||||
36,2,PSG,51,male,23:59:00,30b90aaf965938d569ea362f66e2afa0c08c7017,SC4362F0-PSG.edf
|
||||
36,2,Hypnogram,51,male,23:59:00,fb870d50ce3f4d961d8b061a83d21e5467e4ae6c,SC4362FC-Hypnogram.edf
|
||||
37,1,PSG,52,male,23:03:00,0dc56fce13b6317f197d0b17c04f5be4af1c964f,SC4371F0-PSG.edf
|
||||
37,1,Hypnogram,52,male,23:03:00,c19b6cbfdf3a33169ce9b4a5dc94f93b696a21ba,SC4371FA-Hypnogram.edf
|
||||
37,2,PSG,52,male,23:05:00,c024c491dd836ed0169300e7171c276fd14b1c44,SC4372F0-PSG.edf
|
||||
37,2,Hypnogram,52,male,23:05:00,97b2915a8a343efc7b785998c0532beaea2fbe91,SC4372FC-Hypnogram.edf
|
||||
38,1,PSG,51,male,23:12:00,6098d2b501b82ca0ddc8893547c6990e204e8ba6,SC4381F0-PSG.edf
|
||||
38,1,Hypnogram,51,male,23:12:00,fdbf653a4a675843c97d0a76ef5e4cebf5d2dbcb,SC4381FC-Hypnogram.edf
|
||||
38,2,PSG,51,male,23:47:00,40ce0168d5f546fcd445996ab614f43823a7c2b1,SC4382F0-PSG.edf
|
||||
38,2,Hypnogram,51,male,23:47:00,796f8507254c2d8d345171c077dbd855e112eb47,SC4382FW-Hypnogram.edf
|
||||
40,1,PSG,67,female,23:30:00,28fd8ad1aee307847e2eb579763ebca18e56f540,SC4401E0-PSG.edf
|
||||
40,1,Hypnogram,67,female,23:30:00,65b5671a89871351ee3da7ea800aad276a445b2a,SC4401EC-Hypnogram.edf
|
||||
40,2,PSG,67,female,23:55:00,3d4bafa57933cfb20c342e8cc54c15916a621454,SC4402E0-PSG.edf
|
||||
40,2,Hypnogram,67,female,23:55:00,037efea0fc8a6dfa8f85fa1f2fa6fd9a19f2c830,SC4402EW-Hypnogram.edf
|
||||
41,1,PSG,66,female,23:28:00,30a533b67fdb2adac6a4e83088a07fe1bbaddb6c,SC4411E0-PSG.edf
|
||||
41,1,Hypnogram,66,female,23:28:00,5df1bf20d4f29b95a2bdde853b2a157dd9530a8a,SC4411EJ-Hypnogram.edf
|
||||
41,2,PSG,66,female,23:30:00,bc8e6ea829f14da5396a4b250394c1b72d6631c3,SC4412E0-PSG.edf
|
||||
41,2,Hypnogram,66,female,23:30:00,f46b1dcfe4f4e3c9d4d4c8516dab9759f9c1224e,SC4412EM-Hypnogram.edf
|
||||
42,1,PSG,69,female,01:30:00,e8a5d9e0f160ae7bd0b35d75d77b4c872daa30f8,SC4421E0-PSG.edf
|
||||
42,1,Hypnogram,69,female,01:30:00,d2e34f9bcaac7af23da4448f742ac6ea3c895ed9,SC4421EA-Hypnogram.edf
|
||||
42,2,PSG,69,female,00:22:00,80f246adffb92a3785f91368a77b0250aa040462,SC4422E0-PSG.edf
|
||||
42,2,Hypnogram,69,female,00:22:00,709251cc7ae6556544c153caf9dac7f82bba113b,SC4422EA-Hypnogram.edf
|
||||
43,1,PSG,73,female,01:30:00,194ae942cf80764e81b4cdabeed9e5a57916aab3,SC4431E0-PSG.edf
|
||||
43,1,Hypnogram,73,female,01:30:00,497ad7e671edab6e7adc9d35a6aa45b7fd9a706b,SC4431EM-Hypnogram.edf
|
||||
43,2,PSG,73,female,00:47:00,c45a66d27ea03bf448903fe30f17838e9a0fa0de,SC4432E0-PSG.edf
|
||||
43,2,Hypnogram,73,female,00:47:00,10fe276e215f9406c0ddedaa48651cf480892476,SC4432EM-Hypnogram.edf
|
||||
44,1,PSG,74,female,00:18:00,e3a09d832cb79b0095d7a311ef1b6ed7c569b79d,SC4441E0-PSG.edf
|
||||
44,1,Hypnogram,74,female,00:18:00,68d4e44ad54069701972df66d8a81b4ca434bf2f,SC4441EC-Hypnogram.edf
|
||||
44,2,PSG,74,female,23:55:00,fe51d45e9f3e64a61fa8a5e5274b2e4951a9de43,SC4442E0-PSG.edf
|
||||
44,2,Hypnogram,74,female,23:55:00,efc2b86bb796b0143f61667402612dfbb85cbb78,SC4442EV-Hypnogram.edf
|
||||
45,1,PSG,66,female,00:26:00,315db0f9d91988ddc2b198f89cc22f96190eff71,SC4451F0-PSG.edf
|
||||
45,1,Hypnogram,66,female,00:26:00,bc1f755c3367e378091c44481948a72fc7a928e5,SC4451FY-Hypnogram.edf
|
||||
45,2,PSG,66,female,00:34:00,a06350e1c85b61c30c3d7d5dc640121b416fe30d,SC4452F0-PSG.edf
|
||||
45,2,Hypnogram,66,female,00:34:00,0286d52cdf898ed8e3b17bb26b9c50ef512daf4d,SC4452FW-Hypnogram.edf
|
||||
46,1,PSG,66,female,00:30:00,e4295014c6d4474d8f7f7792c2ea088eb9e43e9f,SC4461F0-PSG.edf
|
||||
46,1,Hypnogram,66,female,00:30:00,8980e770e58e5704bd36124f6b6bd8d5e3506e12,SC4461FA-Hypnogram.edf
|
||||
46,2,PSG,66,female,00:38:00,53b69cb41339bc69144eaa5a5a42c2937f237fc9,SC4462F0-PSG.edf
|
||||
46,2,Hypnogram,66,female,00:38:00,0c6d3974e140c1e62ed2cadaed395781575af042,SC4462FJ-Hypnogram.edf
|
||||
47,1,PSG,73,female,22:36:00,05d71b55de4c86791195391b1cec8b35e447922d,SC4471F0-PSG.edf
|
||||
47,1,Hypnogram,73,female,22:36:00,ee235454dbfe947432f3f813c9a6384f6e42d36a,SC4471FA-Hypnogram.edf
|
||||
47,2,PSG,73,female,22:25:00,7a12c0d6f3005998472b128e06dd645a8619dae7,SC4472F0-PSG.edf
|
||||
47,2,Hypnogram,73,female,22:25:00,d234d5d6c396bf7ef0a2106a59ee8204429aa3c5,SC4472FA-Hypnogram.edf
|
||||
48,1,PSG,67,female,23:04:00,c15f6a0e1802dcf74ecec41745677a4932375faf,SC4481F0-PSG.edf
|
||||
48,1,Hypnogram,67,female,23:04:00,50fce6396aceaf35d9d7e16175053a3b78f214d0,SC4481FV-Hypnogram.edf
|
||||
48,2,PSG,67,female,23:57:00,34d71530fd1da925ba20b4c48a07f7b18153e0c7,SC4482F0-PSG.edf
|
||||
48,2,Hypnogram,67,female,23:57:00,e3c48563e63eed27b071d4a7b37c45a0f9dc7eef,SC4482FJ-Hypnogram.edf
|
||||
49,1,PSG,67,female,23:26:00,23ea1f5f299c6cd99d434f014d7490621dbbc854,SC4491G0-PSG.edf
|
||||
49,1,Hypnogram,67,female,23:26:00,36c6c8112524c7bc9553db37601b38984946209b,SC4491GJ-Hypnogram.edf
|
||||
49,2,PSG,67,female,00:13:00,02c975bfc0773928095239b80d00ac5a7ea5880f,SC4492G0-PSG.edf
|
||||
49,2,Hypnogram,67,female,00:13:00,3673eaad8396ef0ec36cb4299541c30653b72e1f,SC4492GJ-Hypnogram.edf
|
||||
50,1,PSG,71,male,22:07:00,1c31fc02412029bc7369979b8c9f5956420748f5,SC4501E0-PSG.edf
|
||||
50,1,Hypnogram,71,male,22:07:00,eb2621c1670a42eb38dfa86a9bc3326818365f3d,SC4501EW-Hypnogram.edf
|
||||
50,2,PSG,71,male,23:40:00,ff9eae25afa73115e2b184a68e3a72a39efd37e6,SC4502E0-PSG.edf
|
||||
50,2,Hypnogram,71,male,23:40:00,7605a1893701925ea0fdd047926bbd6c7c043875,SC4502EM-Hypnogram.edf
|
||||
51,1,PSG,70,male,23:10:00,e12eb259c2894d45b8d0b2f0e75810c2de02237d,SC4511E0-PSG.edf
|
||||
51,1,Hypnogram,70,male,23:10:00,e549275e9182b9e36ade5abb721098e235ecb164,SC4511EJ-Hypnogram.edf
|
||||
51,2,PSG,70,male,00:03:00,53c5d982139d248736f6dd7ff3f97f635647eacd,SC4512E0-PSG.edf
|
||||
51,2,Hypnogram,70,male,00:03:00,e22966c263f6ae7444704881f5249f6fb5dee0c1,SC4512EW-Hypnogram.edf
|
||||
52,2,PSG,69,male,23:53:00,af70ffdbd3012615923f6a4901e7c0dd3a0fd8ca,SC4522E0-PSG.edf
|
||||
52,2,Hypnogram,69,male,23:53:00,57af3eaed541229dcb2478c6050f0582e020f878,SC4522EM-Hypnogram.edf
|
||||
53,1,PSG,67,male,23:49:00,71222ac5b7784ed1d3a79ee3e9036431d6eba9bd,SC4531E0-PSG.edf
|
||||
53,1,Hypnogram,67,male,23:49:00,934dbfeb29f4f4db4b61e36fb8ddab4ddbf4ff94,SC4531EM-Hypnogram.edf
|
||||
53,2,PSG,67,male,23:53:00,2d472fb64da5d05a546f780da876b90ad26208f9,SC4532E0-PSG.edf
|
||||
53,2,Hypnogram,67,male,23:53:00,708b43e7d43a6f5719f48c11bd6a81b037aabfc4,SC4532EV-Hypnogram.edf
|
||||
54,1,PSG,73,male,23:00:00,4d3ec2f85149bb10fed1013831c3aa1f58049229,SC4541F0-PSG.edf
|
||||
54,1,Hypnogram,73,male,23:00:00,a301385e6fbde02c83f2545f17cdf75d594d37ce,SC4541FA-Hypnogram.edf
|
||||
54,2,PSG,73,male,23:30:00,2909f5b0d3fdb89e19d42b406798e9cbb4615bb6,SC4542F0-PSG.edf
|
||||
54,2,Hypnogram,73,male,23:30:00,9548ed641fb961fa46706339891a9453b731369f,SC4542FW-Hypnogram.edf
|
||||
55,1,PSG,71,male,22:40:00,0bf97e463cbcefb7df48bca712f29dcc74223330,SC4551F0-PSG.edf
|
||||
55,1,Hypnogram,71,male,22:40:00,e50b44e6b049baaeb528c31563642b2a2b933834,SC4551FC-Hypnogram.edf
|
||||
55,2,PSG,71,male,22:29:00,dfa0adaae50110bdd0077483c31d57956020fcb9,SC4552F0-PSG.edf
|
||||
55,2,Hypnogram,71,male,22:29:00,7380403f8d72fa4c30013cd026cc1dad23ac2b3e,SC4552FW-Hypnogram.edf
|
||||
56,1,PSG,72,male,23:14:00,1a9baf1b072ca9d2784a404292169ff3177ea83f,SC4561F0-PSG.edf
|
||||
56,1,Hypnogram,72,male,23:14:00,b31a2dfe652508df46f6afe03ab904c333f7b818,SC4561FJ-Hypnogram.edf
|
||||
56,2,PSG,72,male,23:22:00,4c7081edf572cadee51d30174cd65aa6c658f5a9,SC4562F0-PSG.edf
|
||||
56,2,Hypnogram,72,male,23:22:00,676ab92dbc6532f67d672f80337c71f817fd3a6d,SC4562FJ-Hypnogram.edf
|
||||
57,1,PSG,66,male,23:02:00,e67f3bd381ddfb96d584f6c6d6f6762087d6553d,SC4571F0-PSG.edf
|
||||
57,1,Hypnogram,66,male,23:02:00,08ee39eb94d819968512297ca883f9bca046de9c,SC4571FV-Hypnogram.edf
|
||||
57,2,PSG,66,male,23:51:00,deb2aef7a6a4b502c819345a7151ffc2529d4ba7,SC4572F0-PSG.edf
|
||||
57,2,Hypnogram,66,male,23:51:00,7a38cbe581167dfec27a15935e6d386b228616fa,SC4572FC-Hypnogram.edf
|
||||
58,1,PSG,67,male,22:36:00,16a1edbd6a089386fd7de72aef802182d0a2959d,SC4581G0-PSG.edf
|
||||
58,1,Hypnogram,67,male,22:36:00,bfc729575cfdf5f409be2de47dad4e00d43195bf,SC4581GM-Hypnogram.edf
|
||||
58,2,PSG,67,male,23:04:00,9da93f4c2459dd4fe2e5ee6a171904d4f604cd6e,SC4582G0-PSG.edf
|
||||
58,2,Hypnogram,67,male,23:04:00,acbade13cfae4fc5fbda2d0766feea83d114aa23,SC4582GP-Hypnogram.edf
|
||||
59,1,PSG,67,male,23:25:00,017793b040df8a860df0e43e3e0a496e2cb3f9c1,SC4591G0-PSG.edf
|
||||
59,1,Hypnogram,67,male,23:25:00,f3bb949a7f82acb7fd3d8f35e92efee1402a383f,SC4591GY-Hypnogram.edf
|
||||
59,2,PSG,67,male,00:14:00,1e284bddd7952862327c83092db21805e6ab6c38,SC4592G0-PSG.edf
|
||||
59,2,Hypnogram,67,male,00:14:00,58d1678e9ec9f49c9c6a15031dee26d802026851,SC4592GY-Hypnogram.edf
|
||||
60,1,PSG,89,female,21:35:00,ece6d6ce09fac6fc521cf3f1b536f1ea2a8a1778,SC4601E0-PSG.edf
|
||||
60,1,Hypnogram,89,female,21:35:00,8f77b05fe58f43cdfdcdba7cc3d27abcac7d37f2,SC4601EC-Hypnogram.edf
|
||||
60,2,PSG,89,female,23:00:00,0e50df304ced29651267f43689ce49e063f808d6,SC4602E0-PSG.edf
|
||||
60,2,Hypnogram,89,female,23:00:00,1c52de92668fe4c89cd5e270e17017ef47880991,SC4602EJ-Hypnogram.edf
|
||||
61,1,PSG,101,female,00:20:00,2cc6e418c0b7af472aa34d2bbd5ece85bdb6a879,SC4611E0-PSG.edf
|
||||
61,1,Hypnogram,101,female,00:20:00,f5715ab48f24221c28c1d5c45508c8bb58c912ec,SC4611EG-Hypnogram.edf
|
||||
61,2,PSG,101,female,01:00:00,6593e1af07101fa4c5bce8984296858be17e7d4f,SC4612E0-PSG.edf
|
||||
61,2,Hypnogram,101,female,01:00:00,cedb61bbe7a273b12f45579963d5a84f2ab21811,SC4612EA-Hypnogram.edf
|
||||
62,1,PSG,95,female,21:00:00,31cd2cae56977c6b872311f2a6e60827748b973d,SC4621E0-PSG.edf
|
||||
62,1,Hypnogram,95,female,21:00:00,7acc5296b33ca4eee8d6577064c8c651ee96e527,SC4621EV-Hypnogram.edf
|
||||
62,2,PSG,95,female,21:00:00,7a7e226d47dccd959305e3f633686335c8e66557,SC4622E0-PSG.edf
|
||||
62,2,Hypnogram,95,female,21:00:00,9957c9c9e0c705aac0f7125f411b2531a722601c,SC4622EJ-Hypnogram.edf
|
||||
63,1,PSG,91,female,00:15:00,6dfb32aa4c94968a52d61b90a38573d178669bfb,SC4631E0-PSG.edf
|
||||
63,1,Hypnogram,91,female,00:15:00,48e28f93fc71ffc539776196f9d9d1365415e0b4,SC4631EM-Hypnogram.edf
|
||||
63,2,PSG,91,female,23:39:00,3baa8081b30cc3dfece9d550289dfc94812530d5,SC4632E0-PSG.edf
|
||||
63,2,Hypnogram,91,female,23:39:00,cd2765ebdabc66cb4ac2320d02e3b7ab0340ede4,SC4632EA-Hypnogram.edf
|
||||
64,1,PSG,85,female,22:30:00,0e5d109a929490cbecf59573577a97df07a05cd0,SC4641E0-PSG.edf
|
||||
64,1,Hypnogram,85,female,22:30:00,7b896dc5b34d71381d8462001dc3e05b145cf48c,SC4641EP-Hypnogram.edf
|
||||
64,2,PSG,85,female,22:17:00,03169b7ee9de83b2e17e9bd0d6274965e9518b37,SC4642E0-PSG.edf
|
||||
64,2,Hypnogram,85,female,22:17:00,d8a870d26e468a643eaebe3275e5e2912690c0d8,SC4642EP-Hypnogram.edf
|
||||
65,1,PSG,88,female,23:10:00,f2134a2ad001bc146f3e2d9d76cb7f00f03bbe52,SC4651E0-PSG.edf
|
||||
65,1,Hypnogram,88,female,23:10:00,fad4311c7e11a9aa9a73a8e48d6fa966db61e71d,SC4651EP-Hypnogram.edf
|
||||
65,2,PSG,88,female,23:00:00,aa66553cb0132634d7d11ffe7fab80aa5119b3d7,SC4652E0-PSG.edf
|
||||
65,2,Hypnogram,88,female,23:00:00,6ed9c4f66c03e56f86730ddd8986f3600c040d4a,SC4652EG-Hypnogram.edf
|
||||
66,1,PSG,88,female,21:52:00,c6057505d2acf7b08371e266cf0fca1bfeb1e4e1,SC4661E0-PSG.edf
|
||||
66,1,Hypnogram,88,female,21:52:00,06474e72126d2a00c1968e70730e1deac060f94e,SC4661EJ-Hypnogram.edf
|
||||
66,2,PSG,88,female,21:56:00,24d278194360dc78ebd0cfe940fb4d5f7f93ccbc,SC4662E0-PSG.edf
|
||||
66,2,Hypnogram,88,female,21:56:00,07ca0fbfb6030289a089f84e50d7bbfd043f31ad,SC4662EJ-Hypnogram.edf
|
||||
67,1,PSG,87,female,22:49:00,4357aa9fedf0b53896d41e5dccd7b525f7212177,SC4671G0-PSG.edf
|
||||
67,1,Hypnogram,87,female,22:49:00,459889157743c434933194446af5168cb145dfcb,SC4671GJ-Hypnogram.edf
|
||||
67,2,PSG,87,female,23:52:00,fd86b31a5c22176e1887e2fac460edce42bd2fdf,SC4672G0-PSG.edf
|
||||
67,2,Hypnogram,87,female,23:52:00,dedb182b8c063cefabf1763eb19cd26d0608017f,SC4672GV-Hypnogram.edf
|
||||
70,1,PSG,89,male,21:40:00,3f60b5ad5e1092e90c38f2072b3c041bd7313550,SC4701E0-PSG.edf
|
||||
70,1,Hypnogram,89,male,21:40:00,196a388f60ee4aecfa982f89e2db03ff91e906e7,SC4701EC-Hypnogram.edf
|
||||
70,2,PSG,89,male,21:39:00,a6853fee26b1541f85be7ddc3f42f06ccfe2fcfc,SC4702E0-PSG.edf
|
||||
70,2,Hypnogram,89,male,21:39:00,464f7382ec11703b5bc6512930fdfbb1ab6d030a,SC4702EA-Hypnogram.edf
|
||||
71,1,PSG,88,male,21:15:00,e97d691bfecf770ca4e47289b846886c16ef19fb,SC4711E0-PSG.edf
|
||||
71,1,Hypnogram,88,male,21:15:00,81ec5d0288f36c4368e5f06f21980f99774bf533,SC4711EC-Hypnogram.edf
|
||||
71,2,PSG,88,male,23:18:00,9b99be6cb45af22bdbead7ea01f1375631c9b365,SC4712E0-PSG.edf
|
||||
71,2,Hypnogram,88,male,23:18:00,66b121441a45ae19852b7002fd78c2caf236631a,SC4712EA-Hypnogram.edf
|
||||
72,1,PSG,88,male,23:04:00,5c9caa01cc1f8065f87195c9f2dc2aeebf83c03d,SC4721E0-PSG.edf
|
||||
72,1,Hypnogram,88,male,23:04:00,efe62b1e8bac1ea08dbf12374ca6812a6f271d5e,SC4721EC-Hypnogram.edf
|
||||
72,2,PSG,88,male,23:09:00,a473f32a6075e9ed830a8e9a246129e05959e8b7,SC4722E0-PSG.edf
|
||||
72,2,Hypnogram,88,male,23:09:00,efb2358de27da4219f64f7bfb37912dc9efb0281,SC4722EM-Hypnogram.edf
|
||||
73,1,PSG,97,male,22:30:00,b03e4a2df4d086778f3426ed7b6c5bf800cbfe92,SC4731E0-PSG.edf
|
||||
73,1,Hypnogram,97,male,22:30:00,eb3dc65d7184d676a6678a70b18730d11a414588,SC4731EM-Hypnogram.edf
|
||||
73,2,PSG,97,male,22:00:00,574ff5c0634137f7d5c51eb5f7626b451f1f9b9d,SC4732E0-PSG.edf
|
||||
73,2,Hypnogram,97,male,22:00:00,77a523ca9ef4698885b681bf4e27d28dc5c58424,SC4732EJ-Hypnogram.edf
|
||||
74,1,PSG,92,male,23:14:00,e6ff7462f4ce401e9aff9b3d9c93f0710bc37678,SC4741E0-PSG.edf
|
||||
74,1,Hypnogram,92,male,23:14:00,bda4d1ab190f4160ec7a3f4420e30d718f02369e,SC4741EA-Hypnogram.edf
|
||||
74,2,PSG,92,male,23:06:00,2b09f78a2f276061c8758a55585fae7355b38111,SC4742E0-PSG.edf
|
||||
74,2,Hypnogram,92,male,23:06:00,d4bb4266859c2f92ae8ba96111d59d8ab467f6a0,SC4742EC-Hypnogram.edf
|
||||
75,1,PSG,96,male,22:58:00,17c356a283b026e507331209512453573bcfebe5,SC4751E0-PSG.edf
|
||||
75,1,Hypnogram,96,male,22:58:00,d35737e86979127ea01b95dcecea018dd2e44f45,SC4751EC-Hypnogram.edf
|
||||
75,2,PSG,96,male,23:00:00,b650a49d6e3bb81971e4689c720ee079404857e6,SC4752E0-PSG.edf
|
||||
75,2,Hypnogram,96,male,23:00:00,3d1c86d8d7ecb6ff79ee12cb950690e929394161,SC4752EM-Hypnogram.edf
|
||||
76,1,PSG,90,male,23:28:00,8bde3f0d5ab6a592f229dfd7886341b3f800bdb3,SC4761E0-PSG.edf
|
||||
76,1,Hypnogram,90,male,23:28:00,3dbf15f28a293ac89dcf458d844a8c6443aaf1e6,SC4761EP-Hypnogram.edf
|
||||
76,2,PSG,90,male,01:29:00,7bdc8eacf1a6502c8f007b08556b7e8b52180d44,SC4762E0-PSG.edf
|
||||
76,2,Hypnogram,90,male,01:29:00,f6ae10f082a10ead671bfd5fdc50f62c42b9f10d,SC4762EG-Hypnogram.edf
|
||||
77,1,PSG,85,male,23:23:00,ac8c2be9175cb02e00cccb5d5df2acfaf05971cc,SC4771G0-PSG.edf
|
||||
77,1,Hypnogram,85,male,23:23:00,09e80b973502d89368d7823ad4aec7417b735f6e,SC4771GC-Hypnogram.edf
|
||||
77,2,PSG,85,male,00:10:00,eea8671791936358037e5d096491865069989a85,SC4772G0-PSG.edf
|
||||
77,2,Hypnogram,85,male,00:10:00,25a3b8859091a70ca0cff9ebb777879aa156689e,SC4772GC-Hypnogram.edf
|
||||
80,1,PSG,54,female,23:05:00,0ce00a144dd9bc1b0e20cd30e6501a3852e4dbef,SC4801G0-PSG.edf
|
||||
80,1,Hypnogram,54,female,23:05:00,f82d2b8e45723f2a69f8c30286cc68486b0792a6,SC4801GC-Hypnogram.edf
|
||||
80,2,PSG,54,female,23:18:00,8959ada929c07945757bd6c9ef0267e7c9427a66,SC4802G0-PSG.edf
|
||||
80,2,Hypnogram,54,female,23:18:00,41ff2d1118425f5828342c07aa58b9d346755b1a,SC4802GV-Hypnogram.edf
|
||||
81,1,PSG,57,female,22:00:00,dcae3307af54ccf5349945e2fa493464de0a5da2,SC4811G0-PSG.edf
|
||||
81,1,Hypnogram,57,female,22:00:00,2406ce37b86fc3c7492a3ebe89ae58d15686b33d,SC4811GG-Hypnogram.edf
|
||||
81,2,PSG,57,female,21:56:00,fd93757cf6bcf45854fca960a067612352e05547,SC4812G0-PSG.edf
|
||||
81,2,Hypnogram,57,female,21:56:00,244b3bbb4987db0a9cef85950d14899ab9a3aec4,SC4812GV-Hypnogram.edf
|
||||
82,1,PSG,56,female,23:59:00,9008c6ffc917fb90a3d399e768fe3c563a144a2f,SC4821G0-PSG.edf
|
||||
82,1,Hypnogram,56,female,23:59:00,59534244c603cd5c3c27db26ae2f014983ec6c9b,SC4821GC-Hypnogram.edf
|
||||
82,2,PSG,56,female,00:05:00,84f9a60f6b0e7ac33388d8f6492096bcfa60bc18,SC4822G0-PSG.edf
|
||||
82,2,Hypnogram,56,female,00:05:00,8d14c371bc290658469729addee4461866bb67e2,SC4822GC-Hypnogram.edf
|
||||
|
119
mne/datasets/sleep_physionet/temazepam.py
Normal file
119
mne/datasets/sleep_physionet/temazepam.py
Normal file
@@ -0,0 +1,119 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
import os
|
||||
import time
|
||||
|
||||
import numpy as np
|
||||
|
||||
from ...utils import verbose
|
||||
from ..utils import _log_time_size
|
||||
from ._utils import TEMAZEPAM_SLEEP_RECORDS, _check_subjects, _data_path, _fetch_one
|
||||
|
||||
data_path = _data_path # expose _data_path(..) as data_path(..)
|
||||
|
||||
BASE_URL = "https://physionet.org/physiobank/database/sleep-edfx/sleep-telemetry/" # noqa: E501
|
||||
|
||||
|
||||
@verbose
|
||||
def fetch_data(
|
||||
subjects, path=None, force_update=False, base_url=BASE_URL, *, verbose=None
|
||||
):
|
||||
"""Get paths to local copies of PhysioNet Polysomnography dataset files.
|
||||
|
||||
This will fetch data from the publicly available subjects from PhysioNet's
|
||||
study of Temazepam effects on sleep :footcite:`KempEtAl2000`. This
|
||||
corresponds to a set of 22 subjects. Subjects had mild difficulty falling
|
||||
asleep but were otherwise healthy.
|
||||
|
||||
See more details in the `physionet website
|
||||
<https://physionet.org/physiobank/database/sleep-edfx/>`_
|
||||
:footcite:`GoldbergerEtAl2000`.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
subjects : list of int
|
||||
The subjects to use. Can be in the range of 0-21 (inclusive).
|
||||
path : None | str
|
||||
Location of where to look for the PhysioNet data storing location.
|
||||
If None, the environment variable or config parameter
|
||||
``PHYSIONET_SLEEP_PATH`` is used. If it doesn't exist, the "~/mne_data"
|
||||
directory is used. If the Polysomnography dataset is not found under
|
||||
the given path, the data will be automatically downloaded to the
|
||||
specified folder.
|
||||
force_update : bool
|
||||
Force update of the dataset even if a local copy exists.
|
||||
base_url : str
|
||||
The base URL to download from.
|
||||
%(verbose)s
|
||||
|
||||
Returns
|
||||
-------
|
||||
paths : list
|
||||
List of local data paths of the given type.
|
||||
|
||||
See Also
|
||||
--------
|
||||
mne.datasets.sleep_physionet.age.fetch_data
|
||||
|
||||
Notes
|
||||
-----
|
||||
For example, one could do:
|
||||
|
||||
>>> from mne.datasets import sleep_physionet
|
||||
>>> sleep_physionet.temazepam.fetch_data(subjects=[1]) # doctest: +SKIP
|
||||
|
||||
This would download data for subject 0 if it isn't there already.
|
||||
|
||||
References
|
||||
----------
|
||||
.. footbibliography::
|
||||
"""
|
||||
t0 = time.time()
|
||||
records = np.loadtxt(
|
||||
TEMAZEPAM_SLEEP_RECORDS,
|
||||
skiprows=1,
|
||||
delimiter=",",
|
||||
usecols=(0, 3, 6, 7, 8, 9),
|
||||
dtype={
|
||||
"names": (
|
||||
"subject",
|
||||
"record",
|
||||
"hyp sha",
|
||||
"psg sha",
|
||||
"hyp fname",
|
||||
"psg fname",
|
||||
),
|
||||
"formats": ("<i2", "<S15", "S40", "S40", "<S22", "<S16"),
|
||||
},
|
||||
)
|
||||
|
||||
_check_subjects(subjects, 22)
|
||||
|
||||
path = data_path(path=path)
|
||||
params = [path, force_update, base_url]
|
||||
|
||||
fnames = []
|
||||
sz = 0
|
||||
for subject in subjects: # all the subjects are present at this point
|
||||
for idx in np.where(records["subject"] == subject)[0]:
|
||||
if records["record"][idx] == b"Placebo":
|
||||
psg_fname, pdl = _fetch_one(
|
||||
records["psg fname"][idx].decode(),
|
||||
records["psg sha"][idx].decode(),
|
||||
*params,
|
||||
)
|
||||
hyp_fname, hdl = _fetch_one(
|
||||
records["hyp fname"][idx].decode(),
|
||||
records["hyp sha"][idx].decode(),
|
||||
*params,
|
||||
)
|
||||
fnames.append([psg_fname, hyp_fname])
|
||||
if pdl:
|
||||
sz += os.path.getsize(psg_fname)
|
||||
if hdl:
|
||||
sz += os.path.getsize(hyp_fname)
|
||||
if sz > 0:
|
||||
_log_time_size(t0, sz)
|
||||
return fnames
|
||||
45
mne/datasets/sleep_physionet/temazepam_records.csv
Normal file
45
mne/datasets/sleep_physionet/temazepam_records.csv
Normal file
@@ -0,0 +1,45 @@
|
||||
subject,age,sex,drug,lights off,night nr,sha_Hypnogram,sha_PSG,fname_Hypnogram,fname_PSG,subject_orig
|
||||
0,60,male,Placebo,23:01:00,1,ff28e5e01296cefed49ae0c27cfb3ebc42e710bf,b9d11484126ebff1884034396d6a20c62c0ef48d,ST7011JP-Hypnogram.edf,ST7011J0-PSG.edf,1
|
||||
0,60,male,Temazepam,23:48:00,2,7a98a0ebba9e5e8fc4aac9ab82849385570d7789,b97c67d2ec40721349fd6faea32ea7155a11940a,ST7012JP-Hypnogram.edf,ST7012J0-PSG.edf,1
|
||||
1,35,female,Temazepam,00:00:00,1,635b07240047ade50649ff0f72ccde792f464f09,552e579d96e6c4ae083c7e1422e11b945ebcdabd,ST7021JM-Hypnogram.edf,ST7021J0-PSG.edf,2
|
||||
1,35,female,Placebo,23:27:00,2,228c608743abcc28f8c4946e8394ecf8e6ada89c,ebabfa224599201d9baf91311f78f6410971810f,ST7022JM-Hypnogram.edf,ST7022J0-PSG.edf,2
|
||||
2,18,female,Placebo,23:53:00,1,422655bae4525d121bd45fead048207be9b34c4b,41f8e344b9872d93c8c2f2da283252231584b08f,ST7041JO-Hypnogram.edf,ST7041J0-PSG.edf,4
|
||||
2,18,female,Temazepam,22:37:00,2,eff297358a0c9d175109ba692ac3f9f4cd2c08ed,229ee3bb4d060332c219c3dc1153732ab5499d57,ST7042JO-Hypnogram.edf,ST7042J0-PSG.edf,4
|
||||
3,32,female,Temazepam,23:34:00,1,d7696bd1b891dd85e96e20ea727dcebe49ab6dfd,17b186214e8944667571f52098564e377b32d695,ST7051JA-Hypnogram.edf,ST7051J0-PSG.edf,5
|
||||
3,32,female,Placebo,23:23:00,2,64f2718c004e64ab598979da139b90452febc9bf,489fcb38c07688192d9c0eae5455d95241028ad8,ST7052JA-Hypnogram.edf,ST7052J0-PSG.edf,5
|
||||
4,35,female,Placebo,23:28:00,1,fd9214d026453fce71efa2975ea732e1c1458f69,9fb2b4ed47a6d4b2f0b60a354123e491e8738b19,ST7061JR-Hypnogram.edf,ST7061J0-PSG.edf,6
|
||||
4,35,female,Temazepam,23:26:00,2,c2a4abe15f08f230b734a328494ab0d2ae9dc786,afc5599194648da5568dafa1a811818e77df4842,ST7062JR-Hypnogram.edf,ST7062J0-PSG.edf,6
|
||||
5,51,female,Placebo,00:02:00,1,bc08c797bb7aaf92de1c869d46c6dd4590939996,010a65ad86b79d19c372a421f0e7c975e56278c8,ST7071JA-Hypnogram.edf,ST7071J0-PSG.edf,7
|
||||
5,51,female,Temazepam,23:24:00,2,1a7813b7a2389c0346e3844835590b9cb2f40f56,15c5aa5591e35d60ba25044cdd4b3d748d3c0cfc,ST7072JA-Hypnogram.edf,ST7072J0-PSG.edf,7
|
||||
6,66,female,Temazepam,23:53:00,1,8259b52c62203b85268d23b3a2d87605fdcfa2a6,cb66a0493d90d0d1204936e3e7c944ed536265e3,ST7081JW-Hypnogram.edf,ST7081J0-PSG.edf,8
|
||||
6,66,female,Placebo,23:20:00,2,bc33c3aba61c0fa937ef56d4ce7b1468c80663b5,b1cb29c7a7321b7e628d04a477338c4f62f0c093,ST7082JW-Hypnogram.edf,ST7082J0-PSG.edf,8
|
||||
7,47,male,Temazepam,23:42:00,1,af845641a8118d004bcfa6b597f23517e3a752e9,b046dd63d92339914eca0489d8a4c566b69e7723,ST7091JE-Hypnogram.edf,ST7091J0-PSG.edf,9
|
||||
7,47,male,Placebo,00:30:00,2,ec89bb908ff70e123ffa94bc2c11bb1ce54bcb6a,2986f4d64f5118c5e356a2abe6bf86521ffde339,ST7092JE-Hypnogram.edf,ST7092J0-PSG.edf,9
|
||||
8,20,female,Placebo,23:21:00,1,5919542c566d882fbf947c66f4858ad17199103a,5662b560f095b8397303cced87e43d407a0d18f7,ST7101JE-Hypnogram.edf,ST7101J0-PSG.edf,10
|
||||
8,20,female,Temazepam,23:28:00,2,1f05e92c9ca076350f981d0ec75ad720606bacbc,f697a140f18d1005107fcbb7c81d85a5e8cb6ec6,ST7102JE-Hypnogram.edf,ST7102J0-PSG.edf,10
|
||||
9,21,female,Temazepam,23:38:00,1,5964553fe07cbca302526b2153a2507f7d02fab8,e2bf9db482f230a56372603d23fb12f5c56062f7,ST7111JE-Hypnogram.edf,ST7111J0-PSG.edf,11
|
||||
9,21,female,Placebo,23:52:00,2,e4d8406eaca361d2c5d9953b3c67ed1098dd5925,d3c7907b9b1e4f087f31bd655548b8673b6ec735,ST7112JE-Hypnogram.edf,ST7112J0-PSG.edf,11
|
||||
10,21,male,Placebo,23:46:00,1,a991ed3d8be6d55ee563545077f3d280466a4989,6e90bac48e48f71e5572944a364009eab6ea818d,ST7121JE-Hypnogram.edf,ST7121J0-PSG.edf,12
|
||||
10,21,male,Temazepam,23:56:00,2,b6c2c21e3cf17b371b31af78c64f28aa5811e36f,ae7426c464296ec0a839ccaa9763e3f2c57f41f1,ST7122JE-Hypnogram.edf,ST7122J0-PSG.edf,12
|
||||
11,22,male,Temazepam,00:38:00,1,91ee1bd29b156b33e03cb8c324a8fac15ec06674,d0d6c83b76f627b067e0daac3c181e3666f8ab08,ST7131JR-Hypnogram.edf,ST7131J0-PSG.edf,13
|
||||
11,22,male,Placebo,00:31:00,2,028a5c4ed911d67a17b45f12966b32c46949d374,54a50dcc40e3d6677b80c629b2f908339d9a7c3e,ST7132JR-Hypnogram.edf,ST7132J0-PSG.edf,13
|
||||
12,20,male,Placebo,00:40:00,1,203e78e02a92a9f85f07790398f64c66f248e5cc,6bf8feeabc2259d15f1f535abda90caacc8d4a86,ST7141JE-Hypnogram.edf,ST7141J0-PSG.edf,14
|
||||
12,20,male,Temazepam,00:53:00,2,1f7cc3a1923dd6a3504c82d76f820555ad0b6a1b,b42eb28089bbdcbf3244dead53fd01d5f5ac3ddf,ST7142JE-Hypnogram.edf,ST7142J0-PSG.edf,14
|
||||
13,66,female,Placebo,23:42:00,1,cfcb0089e22244bc5047f61e72a39735cbdc36cf,c0df1253b6509c4b4ed9e1283f26cf206a8c725c,ST7151JA-Hypnogram.edf,ST7151J0-PSG.edf,15
|
||||
13,66,female,Temazepam,23:33:00,2,27e9b4527eea33ded9072db3c6626f94a966da58,faefa07a1ca180861d6f26d5f35285c009dca21e,ST7152JA-Hypnogram.edf,ST7152J0-PSG.edf,15
|
||||
14,79,female,Temazepam,23:18:00,1,5a1ef1d375b01f83264e84db4af58acded68f15e,8a4f1c44a17b5d665cc30f1141d003043274ac2b,ST7161JM-Hypnogram.edf,ST7161J0-PSG.edf,16
|
||||
14,79,female,Placebo,23:21:00,2,18b3d7eb9685ec8131fc0a8f81ba6205122595dc,66925c8fa9f6da18f8590dcf2a6174cfe46e912d,ST7162JM-Hypnogram.edf,ST7162J0-PSG.edf,16
|
||||
15,48,female,Placebo,23:40:00,1,13c371fc4384751cc4bdd3044c6a0813ea12816e,67c47cb92de8806c60303a4baa87ca6cf52a2245,ST7171JA-Hypnogram.edf,ST7171J0-PSG.edf,17
|
||||
15,48,female,Temazepam,23:48:00,2,8de0f3f59dd27d07f5f6a74216814ced08f104b5,a46118a5ca9cfaa62ca11c6a8b079e82877305ef,ST7172JA-Hypnogram.edf,ST7172J0-PSG.edf,17
|
||||
16,53,female,Temazepam,23:24:00,1,483aa0b448393d61043c98c204c93d4c60abb6bd,501f2f9d9ebe15e6dfc86fda6e90f9a54a39660a,ST7181JR-Hypnogram.edf,ST7181J0-PSG.edf,18
|
||||
16,53,female,Placebo,23:38:00,2,50efc607882659f8229db773703f5b973b471ed4,0eab40d3687a2cf708e48137eab26c0c43b75773,ST7182JR-Hypnogram.edf,ST7182J0-PSG.edf,18
|
||||
17,28,female,Temazepam,23:44:00,1,e7fcb89cf0f1484ab114bf40dcf2bf4cd413696b,b1b10cd45a7c0f91286c6fc3f755e59af483bac1,ST7191JR-Hypnogram.edf,ST7191J0-PSG.edf,19
|
||||
17,28,female,Placebo,23:22:00,2,def09a7d469984005b0c8414b7995ae8e269fd15,e80de913aa41b987a43d94cf8f0106d61e4e883b,ST7192JR-Hypnogram.edf,ST7192J0-PSG.edf,19
|
||||
18,24,male,Placebo,23:47:00,1,17a0e8aebb885a960a74343bace57d2ab0b6296a,454233ae9e6a948848030c5f4d9e60dfcb0facde,ST7201JO-Hypnogram.edf,ST7201J0-PSG.edf,20
|
||||
18,24,male,Temazepam,00:01:00,2,ed26efdb6b2d9e815f2a725970262cb9c15c7b98,1e97e392968415da67432842c952344b6d3cdc8c,ST7202JO-Hypnogram.edf,ST7202J0-PSG.edf,20
|
||||
19,34,female,Temazepam,23:10:00,1,b8756397056f623674c3b03db808b2c8c64b0a0a,c6582cfa8fcf6542a688fa8842011a93d86f2c60,ST7211JJ-Hypnogram.edf,ST7211J0-PSG.edf,21
|
||||
19,34,female,Placebo,23:44:00,2,e25e47adf0c0f09df542ef061272ed9569fb80ea,389f3920b39b4b9ad4fba6f91198299b7c6f6676,ST7212JJ-Hypnogram.edf,ST7212J0-PSG.edf,21
|
||||
20,56,male,Placebo,23:22:00,1,7656827835362b7b44b296bad83ff6001e14f489,58315bec82d381dec56bf96924a94014462bb608,ST7221JA-Hypnogram.edf,ST7221J0-PSG.edf,22
|
||||
20,56,male,Temazepam,23:44:00,2,da840db60086e43a2429fb1322ede5e5976b3cda,4961a08b87416246b8b8186190eca0e96da6a50d,ST7222JA-Hypnogram.edf,ST7222J0-PSG.edf,22
|
||||
21,48,female,Placebo,23:27:00,1,bbaac4f2c2f330f70583eb179d855fcf42b4fbff,7a850ce4bc6bd14ea072f3a45b002f8015cf2f14,ST7241JO-Hypnogram.edf,ST7241J0-PSG.edf,24
|
||||
21,48,female,Temazepam,23:36:00,2,f70b3dfce2c14f01221a66a4acb522df1affffdb,5c8bd182bfc9609929094769718b2835fe1099ad,ST7242JO-Hypnogram.edf,ST7242J0-PSG.edf,24
|
||||
|
7
mne/datasets/somato/__init__.py
Normal file
7
mne/datasets/somato/__init__.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
"""Somatosensory dataset."""
|
||||
|
||||
from .somato import data_path, get_version
|
||||
32
mne/datasets/somato/somato.py
Normal file
32
mne/datasets/somato/somato.py
Normal file
@@ -0,0 +1,32 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from ...utils import verbose
|
||||
from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc
|
||||
|
||||
|
||||
@verbose
|
||||
def data_path(
|
||||
path=None, force_update=False, update_path=True, download=True, *, verbose=None
|
||||
): # noqa: D103
|
||||
return _download_mne_dataset(
|
||||
name="somato",
|
||||
processor="untar",
|
||||
path=path,
|
||||
force_update=force_update,
|
||||
update_path=update_path,
|
||||
download=download,
|
||||
)
|
||||
|
||||
|
||||
data_path.__doc__ = _data_path_doc.format(
|
||||
name="somato", conf="MNE_DATASETS_SOMATO_PATH"
|
||||
)
|
||||
|
||||
|
||||
def get_version(): # noqa: D103
|
||||
return _get_version("somato")
|
||||
|
||||
|
||||
get_version.__doc__ = _version_doc.format(name="somato")
|
||||
7
mne/datasets/spm_face/__init__.py
Normal file
7
mne/datasets/spm_face/__init__.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
"""SPM face dataset."""
|
||||
|
||||
from .spm_data import data_path, has_spm_data, get_version, requires_spm_data
|
||||
53
mne/datasets/spm_face/spm_data.py
Normal file
53
mne/datasets/spm_face/spm_data.py
Normal file
@@ -0,0 +1,53 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from functools import partial
|
||||
|
||||
from ...utils import get_config, verbose
|
||||
from ..utils import (
|
||||
_data_path_doc,
|
||||
_download_mne_dataset,
|
||||
_get_version,
|
||||
_version_doc,
|
||||
has_dataset,
|
||||
)
|
||||
|
||||
has_spm_data = partial(has_dataset, name="spm")
|
||||
|
||||
|
||||
@verbose
|
||||
def data_path(
|
||||
path=None, force_update=False, update_path=True, download=True, *, verbose=None
|
||||
): # noqa: D103
|
||||
return _download_mne_dataset(
|
||||
name="spm",
|
||||
processor="untar",
|
||||
path=path,
|
||||
force_update=force_update,
|
||||
update_path=update_path,
|
||||
download=download,
|
||||
)
|
||||
|
||||
|
||||
data_path.__doc__ = _data_path_doc.format(name="spm", conf="MNE_DATASETS_SPM_DATA_PATH")
|
||||
|
||||
|
||||
def get_version(): # noqa: D103
|
||||
return _get_version("spm")
|
||||
|
||||
|
||||
get_version.__doc__ = _version_doc.format(name="spm")
|
||||
|
||||
|
||||
def _skip_spm_data():
|
||||
skip_testing = get_config("MNE_SKIP_TESTING_DATASET_TESTS", "false") == "true"
|
||||
skip = skip_testing or not has_spm_data()
|
||||
return skip
|
||||
|
||||
|
||||
def requires_spm_data(func):
|
||||
"""Skip testing data test."""
|
||||
import pytest
|
||||
|
||||
return pytest.mark.skipif(_skip_spm_data(), reason="Requires spm dataset")(func)
|
||||
7
mne/datasets/ssvep/__init__.py
Normal file
7
mne/datasets/ssvep/__init__.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
"""SSVEP dataset."""
|
||||
|
||||
from .ssvep import data_path, get_version
|
||||
30
mne/datasets/ssvep/ssvep.py
Normal file
30
mne/datasets/ssvep/ssvep.py
Normal file
@@ -0,0 +1,30 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from ...utils import verbose
|
||||
from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc
|
||||
|
||||
|
||||
@verbose
|
||||
def data_path(
|
||||
path=None, force_update=False, update_path=True, download=True, *, verbose=None
|
||||
): # noqa: D103
|
||||
return _download_mne_dataset(
|
||||
name="ssvep",
|
||||
processor="unzip",
|
||||
path=path,
|
||||
force_update=force_update,
|
||||
update_path=update_path,
|
||||
download=download,
|
||||
)
|
||||
|
||||
|
||||
data_path.__doc__ = _data_path_doc.format(name="ssvep", conf="MNE_DATASETS_SSVEP_PATH")
|
||||
|
||||
|
||||
def get_version(): # noqa: D103
|
||||
return _get_version("ssvep")
|
||||
|
||||
|
||||
get_version.__doc__ = _version_doc.format(name="ssvep")
|
||||
13
mne/datasets/testing/__init__.py
Normal file
13
mne/datasets/testing/__init__.py
Normal file
@@ -0,0 +1,13 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
"""MNE testing dataset."""
|
||||
|
||||
from ._testing import (
|
||||
data_path,
|
||||
requires_testing_data,
|
||||
get_version,
|
||||
_pytest_param,
|
||||
_pytest_mark,
|
||||
)
|
||||
77
mne/datasets/testing/_testing.py
Normal file
77
mne/datasets/testing/_testing.py
Normal file
@@ -0,0 +1,77 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from functools import partial
|
||||
|
||||
from ...utils import get_config, verbose
|
||||
from ..utils import (
|
||||
_data_path_doc,
|
||||
_download_mne_dataset,
|
||||
_get_version,
|
||||
_version_doc,
|
||||
has_dataset,
|
||||
)
|
||||
|
||||
has_testing_data = partial(has_dataset, name="testing")
|
||||
|
||||
|
||||
@verbose
|
||||
def data_path(
|
||||
path=None, force_update=False, update_path=True, download=True, *, verbose=None
|
||||
): # noqa: D103
|
||||
# Make sure we don't do something stupid
|
||||
if download and get_config("MNE_SKIP_TESTING_DATASET_TESTS", "false") == "true":
|
||||
raise RuntimeError("Cannot download data if skipping is forced")
|
||||
|
||||
return _download_mne_dataset(
|
||||
name="testing",
|
||||
processor="untar",
|
||||
path=path,
|
||||
force_update=force_update,
|
||||
update_path=update_path,
|
||||
download=download,
|
||||
)
|
||||
|
||||
|
||||
data_path.__doc__ = _data_path_doc.format(
|
||||
name="testing", conf="MNE_DATASETS_TESTING_PATH"
|
||||
)
|
||||
|
||||
|
||||
def get_version(): # noqa: D103
|
||||
return _get_version("testing")
|
||||
|
||||
|
||||
get_version.__doc__ = _version_doc.format(name="testing")
|
||||
|
||||
|
||||
# Allow forcing of testing dataset skip (for Debian tests) using:
|
||||
# `make test-no-testing-data`
|
||||
def _skip_testing_data():
|
||||
skip_testing = get_config("MNE_SKIP_TESTING_DATASET_TESTS", "false") == "true"
|
||||
skip = skip_testing or not has_testing_data()
|
||||
return skip
|
||||
|
||||
|
||||
def requires_testing_data(func):
|
||||
"""Skip testing data test."""
|
||||
return _pytest_mark()(func)
|
||||
|
||||
|
||||
def _pytest_param(*args, **kwargs):
|
||||
if len(args) == 0:
|
||||
args = ("testing_data",)
|
||||
import pytest
|
||||
|
||||
# turn anything that uses testing data into an auto-skipper by
|
||||
# setting params=[testing._pytest_param()], or by parametrizing functions
|
||||
# with testing._pytest_param(whatever)
|
||||
kwargs["marks"] = kwargs.get("marks", list()) + [_pytest_mark()]
|
||||
return pytest.param(*args, **kwargs)
|
||||
|
||||
|
||||
def _pytest_mark():
|
||||
import pytest
|
||||
|
||||
return pytest.mark.skipif(_skip_testing_data(), reason="Requires testing dataset")
|
||||
7
mne/datasets/ucl_opm_auditory/__init__.py
Normal file
7
mne/datasets/ucl_opm_auditory/__init__.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
"""fNIRS motor dataset."""
|
||||
|
||||
from .ucl_opm_auditory import data_path, get_version
|
||||
36
mne/datasets/ucl_opm_auditory/ucl_opm_auditory.py
Normal file
36
mne/datasets/ucl_opm_auditory/ucl_opm_auditory.py
Normal file
@@ -0,0 +1,36 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from ...utils import verbose
|
||||
from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc
|
||||
|
||||
_NAME = "ucl_opm_auditory"
|
||||
_PROCESSOR = "unzip"
|
||||
|
||||
|
||||
@verbose
|
||||
def data_path(
|
||||
path=None, force_update=False, update_path=True, download=True, *, verbose=None
|
||||
): # noqa: D103
|
||||
return _download_mne_dataset(
|
||||
name=_NAME,
|
||||
processor=_PROCESSOR,
|
||||
path=path,
|
||||
force_update=force_update,
|
||||
update_path=update_path,
|
||||
download=download,
|
||||
)
|
||||
|
||||
|
||||
data_path.__doc__ = _data_path_doc.format(
|
||||
name=_NAME,
|
||||
conf=f"MNE_DATASETS_{_NAME.upper()}_PATH",
|
||||
)
|
||||
|
||||
|
||||
def get_version(): # noqa: D103
|
||||
return _get_version(_NAME)
|
||||
|
||||
|
||||
get_version.__doc__ = _version_doc.format(name=_NAME)
|
||||
827
mne/datasets/utils.py
Normal file
827
mne/datasets/utils.py
Normal file
@@ -0,0 +1,827 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
import importlib
|
||||
import inspect
|
||||
import logging
|
||||
import os
|
||||
import os.path as op
|
||||
import sys
|
||||
import tempfile
|
||||
import time
|
||||
import zipfile
|
||||
from collections import OrderedDict
|
||||
from pathlib import Path
|
||||
from typing import cast
|
||||
|
||||
import numpy as np
|
||||
|
||||
from ..label import Label, read_labels_from_annot, write_labels_to_annot
|
||||
from ..utils import (
|
||||
_pl,
|
||||
_safe_input,
|
||||
_validate_type,
|
||||
get_config,
|
||||
get_subjects_dir,
|
||||
logger,
|
||||
set_config,
|
||||
verbose,
|
||||
)
|
||||
from ..utils.docs import _docformat, docdict
|
||||
from .config import MNE_DATASETS, _hcp_mmp_license_text
|
||||
|
||||
_data_path_doc = """Get path to local copy of {name} dataset.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
path : None | str
|
||||
Location of where to look for the {name} dataset.
|
||||
If None, the environment variable or config parameter
|
||||
``{conf}`` is used. If it doesn't exist, the
|
||||
"~/mne_data" directory is used. If the {name} dataset
|
||||
is not found under the given path, the data
|
||||
will be automatically downloaded to the specified folder.
|
||||
force_update : bool
|
||||
Force update of the {name} dataset even if a local copy exists.
|
||||
Default is False.
|
||||
update_path : bool | None
|
||||
If True (default), set the ``{conf}`` in mne-python
|
||||
config to the given path. If None, the user is prompted.
|
||||
download : bool
|
||||
If False and the {name} dataset has not been downloaded yet,
|
||||
it will not be downloaded and the path will be returned as
|
||||
'' (empty string). This is mostly used for debugging purposes
|
||||
and can be safely ignored by most users.
|
||||
%(verbose)s
|
||||
|
||||
Returns
|
||||
-------
|
||||
path : instance of Path
|
||||
Path to {name} dataset directory.
|
||||
"""
|
||||
_data_path_doc_accept = _data_path_doc.split("%(verbose)s")
|
||||
_data_path_doc_accept[-1] = "%(verbose)s" + _data_path_doc_accept[-1]
|
||||
_data_path_doc_accept.insert(1, " %(accept)s")
|
||||
_data_path_doc_accept = "".join(_data_path_doc_accept)
|
||||
_data_path_doc = _docformat(_data_path_doc, docdict)
|
||||
_data_path_doc_accept = _docformat(_data_path_doc_accept, docdict)
|
||||
|
||||
_version_doc = """Get version of the local {name} dataset.
|
||||
|
||||
Returns
|
||||
-------
|
||||
version : str | None
|
||||
Version of the {name} local dataset, or None if the dataset
|
||||
does not exist locally.
|
||||
"""
|
||||
|
||||
|
||||
def _dataset_version(path, name):
|
||||
"""Get the version of the dataset."""
|
||||
ver_fname = op.join(path, "version.txt")
|
||||
if op.exists(ver_fname):
|
||||
with open(ver_fname) as fid:
|
||||
version = fid.readline().strip() # version is on first line
|
||||
else:
|
||||
logger.debug(f"Version file missing: {ver_fname}")
|
||||
# Sample dataset versioning was introduced after 0.3
|
||||
# SPM dataset was introduced with 0.7
|
||||
versions = dict(sample="0.7", spm="0.3")
|
||||
version = versions.get(name, "0.0")
|
||||
return version
|
||||
|
||||
|
||||
def _get_path(path, key, name):
|
||||
"""Get a dataset path."""
|
||||
# 1. Input
|
||||
_validate_type(path, ("path-like", None), path)
|
||||
if path is not None:
|
||||
return Path(path).expanduser()
|
||||
# 2. get_config(key) — unless key is None or "" (special get_config values)
|
||||
# 3. get_config('MNE_DATA')
|
||||
path = get_config(key or "MNE_DATA", get_config("MNE_DATA"))
|
||||
if path is not None:
|
||||
path = Path(path).expanduser()
|
||||
if not path.exists():
|
||||
msg = (
|
||||
f"Download location {path} as specified by MNE_DATA does "
|
||||
f"not exist. Either create this directory manually and try "
|
||||
f"again, or set MNE_DATA to an existing directory."
|
||||
)
|
||||
raise FileNotFoundError(msg)
|
||||
return path
|
||||
# 4. ~/mne_data (but use a fake home during testing so we don't
|
||||
# unnecessarily create ~/mne_data)
|
||||
logger.info(f"Using default location ~/mne_data for {name}...")
|
||||
path = Path(os.getenv("_MNE_FAKE_HOME_DIR", "~")).expanduser() / "mne_data"
|
||||
if not path.is_dir():
|
||||
logger.info(f"Creating {path}")
|
||||
try:
|
||||
path.mkdir()
|
||||
except OSError:
|
||||
raise OSError(
|
||||
"User does not have write permissions "
|
||||
f"at '{path}', try giving the path as an "
|
||||
"argument to data_path() where user has "
|
||||
"write permissions, for ex:data_path"
|
||||
"('/home/xyz/me2/')"
|
||||
)
|
||||
return path
|
||||
|
||||
|
||||
def _do_path_update(path, update_path, key, name):
|
||||
"""Update path."""
|
||||
path = op.abspath(path)
|
||||
identical = get_config(key, "", use_env=False) == path
|
||||
if not identical:
|
||||
if update_path is None:
|
||||
update_path = True
|
||||
if "--update-dataset-path" in sys.argv:
|
||||
answer = "y"
|
||||
else:
|
||||
msg = (
|
||||
f"Do you want to set the path:\n {path}\nas the default {name} "
|
||||
"dataset path in the mne-python config [y]/n? "
|
||||
)
|
||||
answer = _safe_input(msg, alt="pass update_path=True")
|
||||
if answer.lower() == "n":
|
||||
update_path = False
|
||||
|
||||
if update_path:
|
||||
set_config(key, str(path), set_env=False)
|
||||
return path
|
||||
|
||||
|
||||
# This is meant to be semi-public: let packages like mne-bids use it to make
|
||||
# sure they don't accidentally set download=True in their tests, too
|
||||
_MODULES_TO_ENSURE_DOWNLOAD_IS_FALSE_IN_TESTS = ("mne",)
|
||||
|
||||
|
||||
def _check_in_testing_and_raise(name, download):
|
||||
"""Check if we're in an MNE test and raise an error if download!=False."""
|
||||
root_dirs = [
|
||||
importlib.import_module(ns)
|
||||
for ns in _MODULES_TO_ENSURE_DOWNLOAD_IS_FALSE_IN_TESTS
|
||||
]
|
||||
root_dirs = [str(Path(ns.__file__).parent) for ns in root_dirs]
|
||||
check = False
|
||||
func = None
|
||||
frame = inspect.currentframe()
|
||||
try:
|
||||
# First, traverse out of the data_path() call
|
||||
while frame:
|
||||
if frame.f_code.co_name in ("data_path", "load_data"):
|
||||
func = frame.f_code.co_name
|
||||
frame = frame.f_back.f_back # out of verbose decorator
|
||||
break
|
||||
frame = frame.f_back
|
||||
# Next, see what the caller was
|
||||
while frame:
|
||||
fname = frame.f_code.co_filename
|
||||
if fname is not None:
|
||||
fname = Path(fname)
|
||||
# in mne namespace, and
|
||||
# (can't use is_relative_to here until 3.9)
|
||||
if any(str(fname).startswith(rd) for rd in root_dirs) and (
|
||||
# in tests/*.py
|
||||
fname.parent.stem == "tests"
|
||||
or
|
||||
# or in a conftest.py
|
||||
fname.stem == "conftest.py"
|
||||
):
|
||||
check = True
|
||||
break
|
||||
frame = frame.f_back
|
||||
finally:
|
||||
del frame
|
||||
if check and download is not False:
|
||||
raise RuntimeError(
|
||||
f"Do not download dataset {repr(name)} in tests, pass "
|
||||
f"{func}(download=False) to prevent accidental downloads"
|
||||
)
|
||||
|
||||
|
||||
def _download_mne_dataset(
|
||||
name, processor, path, force_update, update_path, download, accept=False
|
||||
) -> Path:
|
||||
"""Aux function for downloading internal MNE datasets."""
|
||||
import pooch
|
||||
|
||||
from mne.datasets._fetch import fetch_dataset
|
||||
|
||||
_check_in_testing_and_raise(name, download)
|
||||
|
||||
# import pooch library for handling the dataset downloading
|
||||
dataset_params = MNE_DATASETS[name]
|
||||
dataset_params["dataset_name"] = name
|
||||
config_key = MNE_DATASETS[name]["config_key"]
|
||||
folder_name = MNE_DATASETS[name]["folder_name"]
|
||||
|
||||
# get download path for specific dataset
|
||||
path = _get_path(path=path, key=config_key, name=name)
|
||||
|
||||
# instantiate processor that unzips file
|
||||
if processor == "nested_untar":
|
||||
processor_ = pooch.Untar(extract_dir=op.join(path, folder_name))
|
||||
elif processor == "nested_unzip":
|
||||
processor_ = pooch.Unzip(extract_dir=op.join(path, folder_name))
|
||||
else:
|
||||
processor_ = processor
|
||||
|
||||
# handle case of multiple sub-datasets with different urls
|
||||
if name == "visual_92_categories":
|
||||
dataset_params = []
|
||||
for name in ["visual_92_categories_1", "visual_92_categories_2"]:
|
||||
this_dataset = MNE_DATASETS[name]
|
||||
this_dataset["dataset_name"] = name
|
||||
dataset_params.append(this_dataset)
|
||||
|
||||
return cast(
|
||||
Path,
|
||||
fetch_dataset(
|
||||
dataset_params=dataset_params,
|
||||
processor=processor_,
|
||||
path=path,
|
||||
force_update=force_update,
|
||||
update_path=update_path,
|
||||
download=download,
|
||||
accept=accept,
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
def _get_version(name):
|
||||
"""Get a dataset version."""
|
||||
from mne.datasets._fetch import fetch_dataset
|
||||
|
||||
if not has_dataset(name):
|
||||
return None
|
||||
dataset_params = MNE_DATASETS[name]
|
||||
dataset_params["dataset_name"] = name
|
||||
config_key = MNE_DATASETS[name]["config_key"]
|
||||
|
||||
# get download path for specific dataset
|
||||
path = _get_path(path=None, key=config_key, name=name)
|
||||
|
||||
return fetch_dataset(dataset_params, path=path, return_version=True)[1]
|
||||
|
||||
|
||||
def has_dataset(name):
|
||||
"""Check for presence of a dataset.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
name : str | dict
|
||||
The dataset to check. Strings refer to one of the supported datasets
|
||||
listed :ref:`here <datasets>`. A :class:`dict` can be used to check for
|
||||
user-defined datasets (see the Notes section of :func:`fetch_dataset`),
|
||||
and must contain keys ``dataset_name``, ``archive_name``, ``url``,
|
||||
``folder_name``, ``hash``.
|
||||
|
||||
Returns
|
||||
-------
|
||||
has : bool
|
||||
True if the dataset is present.
|
||||
"""
|
||||
from mne.datasets._fetch import fetch_dataset
|
||||
|
||||
if isinstance(name, dict):
|
||||
dataset_name = name["dataset_name"]
|
||||
dataset_params = name
|
||||
else:
|
||||
dataset_name = "spm" if name == "spm_face" else name
|
||||
dataset_params = MNE_DATASETS[dataset_name]
|
||||
dataset_params["dataset_name"] = dataset_name
|
||||
|
||||
config_key = dataset_params["config_key"]
|
||||
|
||||
# get download path for specific dataset
|
||||
path = _get_path(path=None, key=config_key, name=dataset_name)
|
||||
|
||||
dp = fetch_dataset(dataset_params, path=path, download=False, check_version=False)
|
||||
if dataset_name.startswith("bst_"):
|
||||
check = dataset_name
|
||||
else:
|
||||
check = MNE_DATASETS[dataset_name]["folder_name"]
|
||||
return str(dp).endswith(check)
|
||||
|
||||
|
||||
@verbose
|
||||
def _download_all_example_data(verbose=True):
|
||||
"""Download all datasets used in examples and tutorials."""
|
||||
# This function is designed primarily to be used by CircleCI, to:
|
||||
#
|
||||
# 1. Streamline data downloading
|
||||
# 2. Make CircleCI fail early (rather than later) if some necessary data
|
||||
# cannot be retrieved.
|
||||
# 3. Avoid download statuses and timing biases in rendered examples.
|
||||
#
|
||||
# verbose=True by default so we get nice status messages.
|
||||
# Consider adding datasets from here to CircleCI for PR-auto-build
|
||||
paths = dict()
|
||||
for kind in (
|
||||
"sample testing misc spm_face somato hf_sef multimodal "
|
||||
"fnirs_motor opm mtrf fieldtrip_cmc kiloword phantom_kit phantom_4dbti "
|
||||
"refmeg_noise ssvep epilepsy_ecog ucl_opm_auditory eyelink "
|
||||
"erp_core brainstorm.bst_raw brainstorm.bst_auditory "
|
||||
"brainstorm.bst_resting brainstorm.bst_phantom_ctf "
|
||||
"brainstorm.bst_phantom_elekta phantom_kernel"
|
||||
).split():
|
||||
mod = importlib.import_module(f"mne.datasets.{kind}")
|
||||
data_path_func = getattr(mod, "data_path")
|
||||
kwargs = dict()
|
||||
if "accept" in inspect.getfullargspec(data_path_func).args:
|
||||
kwargs["accept"] = True
|
||||
paths[kind] = data_path_func(**kwargs)
|
||||
logger.info(f"[done {kind}]")
|
||||
|
||||
# Now for the exceptions:
|
||||
from . import (
|
||||
eegbci,
|
||||
fetch_fsaverage,
|
||||
fetch_hcp_mmp_parcellation,
|
||||
fetch_infant_template,
|
||||
fetch_phantom,
|
||||
limo,
|
||||
sleep_physionet,
|
||||
)
|
||||
|
||||
eegbci.load_data(subjects=1, runs=[6, 10, 14], update_path=True)
|
||||
eegbci.load_data(subjects=range(1, 5), runs=[3], update_path=True)
|
||||
logger.info("[done eegbci]")
|
||||
|
||||
sleep_physionet.age.fetch_data(subjects=[0, 1], recording=[1])
|
||||
logger.info("[done sleep_physionet]")
|
||||
|
||||
# If the user has SUBJECTS_DIR, respect it, if not, set it to the EEG one
|
||||
# (probably on CircleCI, or otherwise advanced user)
|
||||
fetch_fsaverage(subjects_dir=None)
|
||||
logger.info("[done fsaverage]")
|
||||
|
||||
# Now also update the sample dataset path, if not already SUBJECTS_DIR
|
||||
# (some tutorials make use of these files)
|
||||
fetch_fsaverage(subjects_dir=paths["sample"] / "subjects")
|
||||
|
||||
fetch_infant_template("6mo")
|
||||
logger.info("[done infant_template]")
|
||||
|
||||
fetch_hcp_mmp_parcellation(subjects_dir=paths["sample"] / "subjects", accept=True)
|
||||
logger.info("[done hcp_mmp_parcellation]")
|
||||
|
||||
fetch_phantom("otaniemi", subjects_dir=paths["brainstorm.bst_phantom_elekta"])
|
||||
logger.info("[done phantom]")
|
||||
|
||||
limo.load_data(subject=1, update_path=True)
|
||||
logger.info("[done limo]")
|
||||
|
||||
|
||||
@verbose
|
||||
def fetch_aparc_sub_parcellation(subjects_dir=None, verbose=None):
|
||||
"""Fetch the modified subdivided aparc parcellation.
|
||||
|
||||
This will download and install the subdivided aparc parcellation
|
||||
:footcite:'KhanEtAl2018' files for
|
||||
FreeSurfer's fsaverage to the specified directory.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
subjects_dir : path-like | None
|
||||
The subjects directory to use. The file will be placed in
|
||||
``subjects_dir + '/fsaverage/label'``.
|
||||
%(verbose)s
|
||||
|
||||
References
|
||||
----------
|
||||
.. footbibliography::
|
||||
"""
|
||||
import pooch
|
||||
|
||||
subjects_dir = get_subjects_dir(subjects_dir, raise_error=True)
|
||||
destination = subjects_dir / "fsaverage" / "label"
|
||||
urls = dict(lh="https://osf.io/p92yb/download", rh="https://osf.io/4kxny/download")
|
||||
hashes = dict(
|
||||
lh="9e4d8d6b90242b7e4b0145353436ef77", rh="dd6464db8e7762d969fc1d8087cd211b"
|
||||
)
|
||||
downloader = pooch.HTTPDownloader(**_downloader_params())
|
||||
for hemi in ("lh", "rh"):
|
||||
fname = f"{hemi}.aparc_sub.annot"
|
||||
fpath = destination / fname
|
||||
if not fpath.is_file():
|
||||
pooch.retrieve(
|
||||
url=urls[hemi],
|
||||
known_hash=f"md5:{hashes[hemi]}",
|
||||
path=destination,
|
||||
downloader=downloader,
|
||||
fname=fname,
|
||||
)
|
||||
|
||||
|
||||
@verbose
|
||||
def fetch_hcp_mmp_parcellation(
|
||||
subjects_dir=None, combine=True, *, accept=False, verbose=None
|
||||
):
|
||||
"""Fetch the HCP-MMP parcellation.
|
||||
|
||||
This will download and install the HCP-MMP parcellation
|
||||
:footcite:`GlasserEtAl2016` files for FreeSurfer's fsaverage
|
||||
:footcite:`Mills2016` to the specified directory.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
subjects_dir : path-like | None
|
||||
The subjects directory to use. The file will be placed in
|
||||
``subjects_dir + '/fsaverage/label'``.
|
||||
combine : bool
|
||||
If True, also produce the combined/reduced set of 23 labels per
|
||||
hemisphere as ``HCPMMP1_combined.annot``
|
||||
:footcite:`GlasserEtAl2016supp`.
|
||||
%(accept)s
|
||||
%(verbose)s
|
||||
|
||||
Notes
|
||||
-----
|
||||
Use of this parcellation is subject to terms of use on the
|
||||
`HCP-MMP webpage <https://balsa.wustl.edu/WN56>`_.
|
||||
|
||||
References
|
||||
----------
|
||||
.. footbibliography::
|
||||
"""
|
||||
import pooch
|
||||
|
||||
subjects_dir = get_subjects_dir(subjects_dir, raise_error=True)
|
||||
destination = subjects_dir / "fsaverage" / "label"
|
||||
fnames = [destination / f"{hemi}.HCPMMP1.annot" for hemi in ("lh", "rh")]
|
||||
urls = dict(
|
||||
lh="https://ndownloader.figshare.com/files/5528816",
|
||||
rh="https://ndownloader.figshare.com/files/5528819",
|
||||
)
|
||||
hashes = dict(
|
||||
lh="46a102b59b2fb1bb4bd62d51bf02e975", rh="75e96b331940227bbcb07c1c791c2463"
|
||||
)
|
||||
if not all(fname.exists() for fname in fnames):
|
||||
if accept or "--accept-hcpmmp-license" in sys.argv:
|
||||
answer = "y"
|
||||
else:
|
||||
answer = _safe_input(f"{_hcp_mmp_license_text}\nAgree (y/[n])? ")
|
||||
if answer.lower() != "y":
|
||||
raise RuntimeError("You must agree to the license to use this dataset")
|
||||
downloader = pooch.HTTPDownloader(**_downloader_params())
|
||||
for hemi, fpath in zip(("lh", "rh"), fnames):
|
||||
if not op.isfile(fpath):
|
||||
fname = fpath.name
|
||||
pooch.retrieve(
|
||||
url=urls[hemi],
|
||||
known_hash=f"md5:{hashes[hemi]}",
|
||||
path=destination,
|
||||
downloader=downloader,
|
||||
fname=fname,
|
||||
)
|
||||
|
||||
if combine:
|
||||
fnames = [
|
||||
op.join(destination, f"{hemi}.HCPMMP1_combined.annot")
|
||||
for hemi in ("lh", "rh")
|
||||
]
|
||||
if all(op.isfile(fname) for fname in fnames):
|
||||
return
|
||||
# otherwise, let's make them
|
||||
logger.info("Creating combined labels")
|
||||
groups = OrderedDict(
|
||||
[
|
||||
("Primary Visual Cortex (V1)", ("V1",)),
|
||||
("Early Visual Cortex", ("V2", "V3", "V4")),
|
||||
(
|
||||
"Dorsal Stream Visual Cortex",
|
||||
("V3A", "V3B", "V6", "V6A", "V7", "IPS1"),
|
||||
),
|
||||
(
|
||||
"Ventral Stream Visual Cortex",
|
||||
("V8", "VVC", "PIT", "FFC", "VMV1", "VMV2", "VMV3"),
|
||||
),
|
||||
(
|
||||
"MT+ Complex and Neighboring Visual Areas",
|
||||
("V3CD", "LO1", "LO2", "LO3", "V4t", "FST", "MT", "MST", "PH"),
|
||||
),
|
||||
("Somatosensory and Motor Cortex", ("4", "3a", "3b", "1", "2")),
|
||||
(
|
||||
"Paracentral Lobular and Mid Cingulate Cortex",
|
||||
(
|
||||
"24dd",
|
||||
"24dv",
|
||||
"6mp",
|
||||
"6ma",
|
||||
"SCEF",
|
||||
"5m",
|
||||
"5L",
|
||||
"5mv",
|
||||
),
|
||||
),
|
||||
("Premotor Cortex", ("55b", "6d", "6a", "FEF", "6v", "6r", "PEF")),
|
||||
(
|
||||
"Posterior Opercular Cortex",
|
||||
("43", "FOP1", "OP4", "OP1", "OP2-3", "PFcm"),
|
||||
),
|
||||
("Early Auditory Cortex", ("A1", "LBelt", "MBelt", "PBelt", "RI")),
|
||||
(
|
||||
"Auditory Association Cortex",
|
||||
(
|
||||
"A4",
|
||||
"A5",
|
||||
"STSdp",
|
||||
"STSda",
|
||||
"STSvp",
|
||||
"STSva",
|
||||
"STGa",
|
||||
"TA2",
|
||||
),
|
||||
),
|
||||
(
|
||||
"Insular and Frontal Opercular Cortex",
|
||||
(
|
||||
"52",
|
||||
"PI",
|
||||
"Ig",
|
||||
"PoI1",
|
||||
"PoI2",
|
||||
"FOP2",
|
||||
"FOP3",
|
||||
"MI",
|
||||
"AVI",
|
||||
"AAIC",
|
||||
"Pir",
|
||||
"FOP4",
|
||||
"FOP5",
|
||||
),
|
||||
),
|
||||
(
|
||||
"Medial Temporal Cortex",
|
||||
(
|
||||
"H",
|
||||
"PreS",
|
||||
"EC",
|
||||
"PeEc",
|
||||
"PHA1",
|
||||
"PHA2",
|
||||
"PHA3",
|
||||
),
|
||||
),
|
||||
(
|
||||
"Lateral Temporal Cortex",
|
||||
(
|
||||
"PHT",
|
||||
"TE1p",
|
||||
"TE1m",
|
||||
"TE1a",
|
||||
"TE2p",
|
||||
"TE2a",
|
||||
"TGv",
|
||||
"TGd",
|
||||
"TF",
|
||||
),
|
||||
),
|
||||
(
|
||||
"Temporo-Parieto-Occipital Junction",
|
||||
(
|
||||
"TPOJ1",
|
||||
"TPOJ2",
|
||||
"TPOJ3",
|
||||
"STV",
|
||||
"PSL",
|
||||
),
|
||||
),
|
||||
(
|
||||
"Superior Parietal Cortex",
|
||||
(
|
||||
"LIPv",
|
||||
"LIPd",
|
||||
"VIP",
|
||||
"AIP",
|
||||
"MIP",
|
||||
"7PC",
|
||||
"7AL",
|
||||
"7Am",
|
||||
"7PL",
|
||||
"7Pm",
|
||||
),
|
||||
),
|
||||
(
|
||||
"Inferior Parietal Cortex",
|
||||
(
|
||||
"PGp",
|
||||
"PGs",
|
||||
"PGi",
|
||||
"PFm",
|
||||
"PF",
|
||||
"PFt",
|
||||
"PFop",
|
||||
"IP0",
|
||||
"IP1",
|
||||
"IP2",
|
||||
),
|
||||
),
|
||||
(
|
||||
"Posterior Cingulate Cortex",
|
||||
(
|
||||
"DVT",
|
||||
"ProS",
|
||||
"POS1",
|
||||
"POS2",
|
||||
"RSC",
|
||||
"v23ab",
|
||||
"d23ab",
|
||||
"31pv",
|
||||
"31pd",
|
||||
"31a",
|
||||
"23d",
|
||||
"23c",
|
||||
"PCV",
|
||||
"7m",
|
||||
),
|
||||
),
|
||||
(
|
||||
"Anterior Cingulate and Medial Prefrontal Cortex",
|
||||
(
|
||||
"33pr",
|
||||
"p24pr",
|
||||
"a24pr",
|
||||
"p24",
|
||||
"a24",
|
||||
"p32pr",
|
||||
"a32pr",
|
||||
"d32",
|
||||
"p32",
|
||||
"s32",
|
||||
"8BM",
|
||||
"9m",
|
||||
"10v",
|
||||
"10r",
|
||||
"25",
|
||||
),
|
||||
),
|
||||
(
|
||||
"Orbital and Polar Frontal Cortex",
|
||||
(
|
||||
"47s",
|
||||
"47m",
|
||||
"a47r",
|
||||
"11l",
|
||||
"13l",
|
||||
"a10p",
|
||||
"p10p",
|
||||
"10pp",
|
||||
"10d",
|
||||
"OFC",
|
||||
"pOFC",
|
||||
),
|
||||
),
|
||||
(
|
||||
"Inferior Frontal Cortex",
|
||||
(
|
||||
"44",
|
||||
"45",
|
||||
"IFJp",
|
||||
"IFJa",
|
||||
"IFSp",
|
||||
"IFSa",
|
||||
"47l",
|
||||
"p47r",
|
||||
),
|
||||
),
|
||||
(
|
||||
"DorsoLateral Prefrontal Cortex",
|
||||
(
|
||||
"8C",
|
||||
"8Av",
|
||||
"i6-8",
|
||||
"s6-8",
|
||||
"SFL",
|
||||
"8BL",
|
||||
"9p",
|
||||
"9a",
|
||||
"8Ad",
|
||||
"p9-46v",
|
||||
"a9-46v",
|
||||
"46",
|
||||
"9-46d",
|
||||
),
|
||||
),
|
||||
("???", ("???",)),
|
||||
]
|
||||
)
|
||||
assert len(groups) == 23
|
||||
labels_out = list()
|
||||
|
||||
for hemi in ("lh", "rh"):
|
||||
labels = read_labels_from_annot(
|
||||
"fsaverage", "HCPMMP1", hemi=hemi, subjects_dir=subjects_dir, sort=False
|
||||
)
|
||||
label_names = [
|
||||
"???" if label.name.startswith("???") else label.name.split("_")[1]
|
||||
for label in labels
|
||||
]
|
||||
used = np.zeros(len(labels), bool)
|
||||
for key, want in groups.items():
|
||||
assert "\t" not in key
|
||||
these_labels = [
|
||||
li
|
||||
for li, label_name in enumerate(label_names)
|
||||
if label_name in want
|
||||
]
|
||||
assert not used[these_labels].any()
|
||||
assert len(these_labels) == len(want)
|
||||
used[these_labels] = True
|
||||
these_labels = [labels[li] for li in these_labels]
|
||||
# take a weighted average to get the color
|
||||
# (here color == task activation)
|
||||
w = np.array([len(label.vertices) for label in these_labels])
|
||||
w = w / float(w.sum())
|
||||
color = np.dot(w, [label.color for label in these_labels])
|
||||
these_labels = sum(
|
||||
these_labels, Label([], subject="fsaverage", hemi=hemi)
|
||||
)
|
||||
these_labels.name = key
|
||||
these_labels.color = color
|
||||
labels_out.append(these_labels)
|
||||
assert used.all()
|
||||
assert len(labels_out) == 46
|
||||
for hemi, side in (("lh", "left"), ("rh", "right")):
|
||||
table_name = f"./{side}.fsaverage164.label.gii"
|
||||
write_labels_to_annot(
|
||||
labels_out,
|
||||
"fsaverage",
|
||||
"HCPMMP1_combined",
|
||||
hemi=hemi,
|
||||
subjects_dir=subjects_dir,
|
||||
sort=False,
|
||||
table_name=table_name,
|
||||
)
|
||||
|
||||
|
||||
def _manifest_check_download(manifest_path, destination, url, hash_):
|
||||
import pooch
|
||||
|
||||
with open(manifest_path) as fid:
|
||||
names = [name.strip() for name in fid.readlines()]
|
||||
need = list()
|
||||
for name in names:
|
||||
if not (destination / name).is_file():
|
||||
need.append(name)
|
||||
logger.info(
|
||||
"%d file%s missing from %s in %s",
|
||||
len(need),
|
||||
_pl(need),
|
||||
manifest_path.name,
|
||||
destination,
|
||||
)
|
||||
if len(need) > 0:
|
||||
downloader = pooch.HTTPDownloader(**_downloader_params())
|
||||
with tempfile.TemporaryDirectory() as path:
|
||||
logger.info("Downloading missing files remotely")
|
||||
|
||||
path = Path(path)
|
||||
fname_path = path / "temp.zip"
|
||||
pooch.retrieve(
|
||||
url=url,
|
||||
known_hash=f"md5:{hash_}",
|
||||
path=path,
|
||||
downloader=downloader,
|
||||
fname=fname_path.name,
|
||||
)
|
||||
|
||||
logger.info(f"Extracting missing file{_pl(need)}")
|
||||
with zipfile.ZipFile(fname_path, "r") as ff:
|
||||
members = set(f for f in ff.namelist() if not f.endswith("/"))
|
||||
missing = sorted(members.symmetric_difference(set(names)))
|
||||
if len(missing):
|
||||
raise RuntimeError(
|
||||
"Zip file did not have correct names:\n{'\n'.join(missing)}"
|
||||
)
|
||||
for name in need:
|
||||
ff.extract(name, path=destination)
|
||||
logger.info(f"Successfully extracted {len(need)} file{_pl(need)}")
|
||||
|
||||
|
||||
def _log_time_size(t0, sz):
|
||||
t = time.time() - t0
|
||||
fmt = "%Ss"
|
||||
if t > 60:
|
||||
fmt = f"%Mm{fmt}"
|
||||
if t > 3600:
|
||||
fmt = f"%Hh{fmt}"
|
||||
sz = sz / 1048576 # 1024 ** 2
|
||||
t = time.strftime(fmt, time.gmtime(t))
|
||||
logger.info(f"Download complete in {t} ({sz:.1f} MB)")
|
||||
|
||||
|
||||
def _downloader_params(*, auth=None, token=None):
|
||||
params = dict(timeout=15)
|
||||
params["progressbar"] = (
|
||||
logger.level <= logging.INFO and get_config("MNE_TQDM", "tqdm.auto") != "off"
|
||||
)
|
||||
if auth is not None:
|
||||
params["auth"] = auth
|
||||
if token is not None:
|
||||
params["headers"] = {"Authorization": f"token {token}"}
|
||||
return params
|
||||
7
mne/datasets/visual_92_categories/__init__.py
Normal file
7
mne/datasets/visual_92_categories/__init__.py
Normal file
@@ -0,0 +1,7 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
"""MNE visual_92_categories dataset."""
|
||||
|
||||
from .visual_92_categories import data_path, get_version
|
||||
67
mne/datasets/visual_92_categories/visual_92_categories.py
Normal file
67
mne/datasets/visual_92_categories/visual_92_categories.py
Normal file
@@ -0,0 +1,67 @@
|
||||
# Authors: The MNE-Python contributors.
|
||||
# License: BSD-3-Clause
|
||||
# Copyright the MNE-Python contributors.
|
||||
|
||||
from ...utils import verbose
|
||||
from ..utils import _data_path_doc, _download_mne_dataset, _get_version, _version_doc
|
||||
|
||||
|
||||
@verbose
|
||||
def data_path(
|
||||
path=None, force_update=False, update_path=True, download=True, *, verbose=None
|
||||
):
|
||||
"""
|
||||
Get path to local copy of visual_92_categories dataset.
|
||||
|
||||
.. note:: The dataset contains four fif-files, the trigger files and the T1
|
||||
mri image. This dataset is rather big in size (more than 5 GB).
|
||||
|
||||
Parameters
|
||||
----------
|
||||
path : None | str
|
||||
Location of where to look for the visual_92_categories data storing
|
||||
location. If None, the environment variable or config parameter
|
||||
MNE_DATASETS_VISUAL_92_CATEGORIES_PATH is used. If it doesn't exist,
|
||||
the "mne-python/examples" directory is used. If the
|
||||
visual_92_categories dataset is not found under the given path (e.g.,
|
||||
as "mne-python/examples/MNE-visual_92_categories-data"), the data
|
||||
will be automatically downloaded to the specified folder.
|
||||
force_update : bool
|
||||
Force update of the dataset even if a local copy exists.
|
||||
update_path : bool | None
|
||||
If True, set the MNE_DATASETS_VISUAL_92_CATEGORIES_PATH in mne-python
|
||||
config to the given path. If None, the user is prompted.
|
||||
%(verbose)s
|
||||
|
||||
Returns
|
||||
-------
|
||||
path : instance of Path
|
||||
Local path to the given data file.
|
||||
|
||||
Notes
|
||||
-----
|
||||
The visual_92_categories dataset is documented in the following publication
|
||||
Radoslaw M. Cichy, Dimitrios Pantazis, Aude Oliva (2014) Resolving
|
||||
human object recognition in space and time. doi: 10.1038/NN.3635
|
||||
"""
|
||||
return _download_mne_dataset(
|
||||
name="visual_92_categories",
|
||||
processor="untar",
|
||||
path=path,
|
||||
force_update=force_update,
|
||||
update_path=update_path,
|
||||
download=download,
|
||||
)
|
||||
|
||||
|
||||
data_path.__doc__ = _data_path_doc.format(
|
||||
name="visual_92_categories", conf="MNE_DATASETS_VISUAL_92_CATEGORIES_PATH"
|
||||
)
|
||||
|
||||
|
||||
def get_version():
|
||||
"""Get dataset version."""
|
||||
return _get_version("visual_92_categories")
|
||||
|
||||
|
||||
get_version.__doc__ = _version_doc.format(name="visual_92_categories")
|
||||
Reference in New Issue
Block a user