mne_bids.BIDSPath¶
-
class
mne_bids.
BIDSPath
(subject=None, session=None, task=None, acquisition=None, run=None, processing=None, recording=None, space=None, split=None, root=None, suffix=None, extension=None, datatype=None, check=True)[source]¶ A BIDS path object.
BIDS filename prefixes have one or more pieces of metadata in them. They must follow a particular order, which is followed by this function. This will generate the prefix for a BIDS filename that can be used with many subsequent files, or you may also give a suffix that will then complete the file name.
BIDSPath allows dynamic updating of its entities in place, and operates similar to
pathlib.Path
. In addition, it can query multiple paths with matching BIDS entities via thematch
method.Note that not all parameters are applicable to each suffix of data. For example, electrode location TSV files do not need a “task” field.
- Parameters
- subject
str
|None
The subject ID. Corresponds to “sub”.
- session
str
|None
The session for a item. Corresponds to “ses”.
- task
str
|None
The task for a item. Corresponds to “task”.
- acquisition: str | None
The acquisition parameters for the item. Corresponds to “acq”.
- run
int
|None
The run number for this item. Corresponds to “run”.
- processing
str
|None
The processing label for this item. Corresponds to “proc”.
- recording
str
|None
The recording name for this item. Corresponds to “rec”.
- space
str
|None
The coordinate space for an anatomical or sensor position files (e.g.,
*_electrodes.tsv
,*_markers.mrk
). Corresponds to “space”. Note that valid values forspace
must come from a list of BIDS keywords as described in the BIDS specification.- split
int
|None
The split of the continuous recording file for
.fif
data. Corresponds to “split”.- suffix
str
|None
The filename suffix. This is the entity after the last
_
before the extension. E.g.,'channels'
. The following filename suffix’s are accepted: ‘meg’, ‘markers’, ‘eeg’, ‘ieeg’, ‘T1w’, ‘participants’, ‘scans’, ‘electrodes’, ‘coordsystem’, ‘channels’, ‘events’, ‘headshape’, ‘digitizer’, ‘beh’, ‘physio’, ‘stim’- extension
str
|None
The extension of the filename. E.g.,
'.json'
.- datatype
str
The “data type” of folder being created at the end of the folder hierarchy. E.g.,
'anat'
,'func'
,'eeg'
,'meg'
,'ieeg'
, etc.- root
str
|pathlib.Path
|None
The root for the filename to be created. E.g., a path to the folder in which you wish to create a file with this name.
- checkbool
If
True
, enforces BIDS conformity. Defaults toTrue
.
- subject
Notes
BIDS entities are generally separated with a
"_"
character, while entity key/value pairs are separated with a"-"
character. There are checks performed to make sure that there are no'-'
,'_'
, or'/'
characters contained in any entity keys or values.To represent a filename such as
dataset_description.json
, one can setcheck=False
, and passsuffix='dataset_description'
andextension='.json'
.BIDSPath
can also be used to represent file and folder names of data types that are not yet supported through MNE-BIDS, but are recognized by BIDS. For example, one can setdatatype
todwi
orfunc
and passcheck=False
to represent diffusion-weighted imaging and functional MRI paths.Examples
>>> bids_path = BIDSPath(subject='test', session='two', task='mytask', suffix='ieeg', extension='.edf') >>> print(bids_path.basename) sub-test_ses-two_task-mytask_ieeg.edf >>> bids_path BIDSPath(root: None, basename: sub-test_ses-two_task-mytask_ieeg.edf) >>> # copy and update multiple entities at once >>> new_bids_path = bids_path.copy().update(subject='test2', session='one') >>> print(new_bids_path.basename) sub-test2_ses-one_task-mytask_ieeg.edf >>> # printing the BIDSPath will show relative path when >>> # root is not set >>> print(new_bids_path) sub-test2/ses-one/ieeg/sub-test2_ses-one_task-mytask_ieeg.edf >>> new_bids_path.update(suffix='channels', extension='.tsv') >>> # setting suffix without an identifiable datatype will >>> # result in a wildcard at the datatype directory level >>> print(new_bids_path) sub-test2/ses-one/*/sub-test2_ses-one_task-mytask_channels.tsv >>> # set a root for the BIDS dataset >>> new_bids_path.update(root='/bids_dataset') >>> print(new_bids_path.root) /bids_dataset >>> print(new_bids_path.basename) sub-test2_ses-one_task-mytask_ieeg.edf >>> print(new_bids_path) /bids_dataset/sub-test2/ses-one/ieeg/sub-test2_ses-one_task-mytask_ieeg.edf >>> print(new_bids_path.directory) /bids_dataset/sub-test2/ses-one/ieeg/
- Attributes
entities
dict
Return dictionary of the BIDS entities.
- datatype
str
|None
The data type, i.e., one of
'meg'
,'eeg'
,'ieeg'
,'anat'
.basename
str
Path basename.
- root
pathlib.Path
The root of the BIDS path.
directory
pathlib.Path
Get the BIDS parent directory.
fpath
pathlib.Path
Full filepath for this BIDS file.
- checkbool
Whether to enforce BIDS conformity.
Methods
copy
()Copy the instance.
Find the corresponding empty-room file of an MEG recording.
match
([check])Get a list of all matching paths in the root directory.
mkdir
([exist_ok])Create the directory structure of the BIDS path.
update
(*[, check])Update inplace BIDS entity key/value pairs in object.
-
property
basename
¶ Path basename.
-
copy
()[source]¶ Copy the instance.
- Returns
- bidspath
mne_bids.BIDSPath
The copied bidspath.
- bidspath
-
property
directory
¶ Get the BIDS parent directory.
If
subject
,session
anddatatype
are set, then they will be used to construct the directory location. For example, ifsubject='01'
,session='02'
anddatatype='ieeg'
, then the directory would be:<root>/sub-01/ses-02/ieeg
- Returns
- data_path
pathlib.Path
The path of the BIDS directory.
- data_path
-
property
entities
¶ Return dictionary of the BIDS entities.
-
find_empty_room
()[source]¶ Find the corresponding empty-room file of an MEG recording.
This will only work if the
.root
attribute of themne_bids.BIDSPath
instance has been set.
-
property
fpath
¶ Full filepath for this BIDS file.
Getting the file path consists of the entities passed in and will get the relative (or full if
root
is passed) path.- Returns
- bids_fpath
pathlib.Path
Either the relative, or full path to the dataset.
- bids_fpath
-
match
(check=False)[source]¶ Get a list of all matching paths in the root directory.
Performs a recursive search, starting in
.root
(if set), based onBIDSPath.entities
object. Ignores.json
files.- Parameters
- checkbool
If
True
, only returns paths that conform to BIDS. IfFalse
(default), the.check
attribute of the returnedmne_bids.BIDSPath
object will be set toTrue
for paths that do conform to BIDS, and toFalse
for those that don’t.
- Returns
- bids_paths
list
ofmne_bids.BIDSPath
The matching paths.
- bids_paths
-
property
meg_calibration_fpath
¶ Find the matching Elekta/Neuromag/MEGIN fine-calibration file.
This requires that at least
root
andsubject
are set, and thatdatatype
is either'meg'
orNone
.- Returns
- path
pathlib.Path
|None
The path of the fine-calibration file, or
None
if it couldn’t be found.
- path
-
property
meg_crosstalk_fpath
¶ Find the matching Elekta/Neuromag/MEGIN crosstalk file.
This requires that at least
root
andsubject
are set, and thatdatatype
is either'meg'
orNone
.- Returns
- path
pathlib.Path
|None
The path of the crosstalk file, or
None
if it couldn’t be found.
- path
-
mkdir
(exist_ok=True)[source]¶ Create the directory structure of the BIDS path.
- Parameters
- exist_okbool
If
False
, raise an exception if the directory already exists. Otherwise, do nothing (default).
- Returns
- self
mne_bids.BIDSPath
The BIDSPath object.
- self
-
update
(*, check=None, **kwargs)[source]¶ Update inplace BIDS entity key/value pairs in object.
run
andsplit
are auto-parsed to have two numbers when passed in. For example, ifrun=1
, then it will becomerun='01'
.Also performs error checks on various entities to adhere to the BIDS specification. Specifically: -
datatype
should be one of:anat
,eeg
,ieeg
,meg
-extension
should be one of the accepted file extensions in the file path:.con
,.sqd
,.fif
,.pdf
,.ds
,.vhdr
,.edf
,.bdf
,.set
,.edf
,.set
,.mef
,.nwb
-suffix
should be one of the acceptable file suffixes in:meg
,markers
,eeg
,ieeg
,T1w
,participants
,scans
,electrodes
,channels
,coordsystem
,events
,headshape
,digitizer
,beh
,physio
,stim
- Depending on the modality of the data (EEG, MEG, iEEG),space
should be a valid string according to Appendix VIII in the BIDS specification.- Parameters
- check
None
| bool If a boolean, controls whether to enforce BIDS conformity. This will set the
.check
attribute accordingly. IfNone
, rely on the existing.check
attribute instead, which is set uponmne_bids.BIDSPath
instantiation. Defaults toNone
.- **kwargs
dict
It can contain updates for valid BIDS path entities: ‘subject’, ‘session’, ‘task’, ‘acquisition’, ‘processing’, ‘run’, ‘recording’, ‘space’, ‘suffix’ or updates for ‘root’ or ‘datatype’.
- check
- Returns
- bidspath
mne_bids.BIDSPath
The updated instance of BIDSPath.
- bidspath
Examples
If one creates a bids basename using
mne_bids.BIDSPath()
:>>> bids_path = BIDSPath(subject='test', session='two', task='mytask', suffix='channels', extension='.tsv') >>> print(bids_path.basename) sub-test_ses-two_task-mytask_channels.tsv >>> # Then, one can update this `BIDSPath` object in place >>> bids_path.update(acquisition='test', suffix='ieeg', extension='.vhdr', task=None) >>> print(bids_path.basename) sub-test_ses-two_acq-test_ieeg.vhdr