From 9746713481f4d22df4bf447146a6d225ceb3f5f2 Mon Sep 17 00:00:00 2001 From: timonmerk Date: Sun, 20 Feb 2022 13:36:15 +0100 Subject: [PATCH 1/9] add test for montage coord_frame --- mne_bids/tests/data/ieeg_bids/README | 6 +++ .../data/ieeg_bids/dataset_description.json | 8 ++++ .../tests/data/ieeg_bids/participants.json | 24 ++++++++++++ .../tests/data/ieeg_bids/participants.tsv | 2 + ...space-MNI152NLin2009bAsym_coordsystem.json | 5 +++ ...1_space-MNI152NLin2009bAsym_electrodes.tsv | 11 ++++++ ...es-01_task-audiovisual_run-01_channels.tsv | 11 ++++++ ...01_ses-01_task-audiovisual_run-01_ieeg.eeg | Bin 0 -> 40000 bytes ...1_ses-01_task-audiovisual_run-01_ieeg.json | 18 +++++++++ ...1_ses-01_task-audiovisual_run-01_ieeg.vhdr | 35 ++++++++++++++++++ ...1_ses-01_task-audiovisual_run-01_ieeg.vmrk | 13 +++++++ .../sub-01/ses-01/sub-01_ses-01_scans.tsv | 2 + mne_bids/tests/test_ieeg_mnt_read.py | 11 ++++++ 13 files changed, 146 insertions(+) create mode 100644 mne_bids/tests/data/ieeg_bids/README create mode 100644 mne_bids/tests/data/ieeg_bids/dataset_description.json create mode 100644 mne_bids/tests/data/ieeg_bids/participants.json create mode 100644 mne_bids/tests/data/ieeg_bids/participants.tsv create mode 100644 mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_space-MNI152NLin2009bAsym_coordsystem.json create mode 100644 mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_space-MNI152NLin2009bAsym_electrodes.tsv create mode 100644 mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_channels.tsv create mode 100644 mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.eeg create mode 100644 mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.json create mode 100644 mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.vhdr create mode 100644 mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.vmrk create mode 100644 mne_bids/tests/data/ieeg_bids/sub-01/ses-01/sub-01_ses-01_scans.tsv create mode 100644 mne_bids/tests/test_ieeg_mnt_read.py diff --git a/mne_bids/tests/data/ieeg_bids/README b/mne_bids/tests/data/ieeg_bids/README new file mode 100644 index 000000000..2e275e44f --- /dev/null +++ b/mne_bids/tests/data/ieeg_bids/README @@ -0,0 +1,6 @@ +References +---------- +Appelhoff, S., Sanderson, M., Brooks, T., Vliet, M., Quentin, R., Holdgraf, C., Chaumon, M., Mikulan, E., Tavabi, K., Höchenberger, R., Welke, D., Brunner, C., Rockhill, A., Larson, E., Gramfort, A. and Jas, M. (2019). MNE-BIDS: Organizing electrophysiological data into the BIDS format and facilitating their analysis. Journal of Open Source Software 4: (1896). https://doi.org/10.21105/joss.01896 + +Holdgraf, C., Appelhoff, S., Bickel, S., Bouchard, K., D'Ambrosio, S., David, O., … Hermes, D. (2019). iEEG-BIDS, extending the Brain Imaging Data Structure specification to human intracranial electrophysiology. Scientific Data, 6, 102. https://doi.org/10.1038/s41597-019-0105-7 + diff --git a/mne_bids/tests/data/ieeg_bids/dataset_description.json b/mne_bids/tests/data/ieeg_bids/dataset_description.json new file mode 100644 index 000000000..fc0939c71 --- /dev/null +++ b/mne_bids/tests/data/ieeg_bids/dataset_description.json @@ -0,0 +1,8 @@ +{ + "Name": " ", + "BIDSVersion": "1.6.0", + "DatasetType": "raw", + "Authors": [ + "[Unspecified]" + ] +} diff --git a/mne_bids/tests/data/ieeg_bids/participants.json b/mne_bids/tests/data/ieeg_bids/participants.json new file mode 100644 index 000000000..de061dfc2 --- /dev/null +++ b/mne_bids/tests/data/ieeg_bids/participants.json @@ -0,0 +1,24 @@ +{ + "participant_id": { + "Description": "Unique participant identifier" + }, + "age": { + "Description": "Age of the participant at time of testing", + "Units": "years" + }, + "sex": { + "Description": "Biological sex of the participant", + "Levels": { + "F": "female", + "M": "male" + } + }, + "hand": { + "Description": "Handedness of the participant", + "Levels": { + "R": "right", + "L": "left", + "A": "ambidextrous" + } + } +} diff --git a/mne_bids/tests/data/ieeg_bids/participants.tsv b/mne_bids/tests/data/ieeg_bids/participants.tsv new file mode 100644 index 000000000..9af3285e4 --- /dev/null +++ b/mne_bids/tests/data/ieeg_bids/participants.tsv @@ -0,0 +1,2 @@ +participant_id age sex hand +sub-01 n/a n/a n/a diff --git a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_space-MNI152NLin2009bAsym_coordsystem.json b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_space-MNI152NLin2009bAsym_coordsystem.json new file mode 100644 index 000000000..09f8b98e7 --- /dev/null +++ b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_space-MNI152NLin2009bAsym_coordsystem.json @@ -0,0 +1,5 @@ +{ + "iEEGCoordinateSystem": "MNI152NLin2009bAsym", + "iEEGCoordinateSystemDescription": "mni", + "iEEGCoordinateUnits": "mm" +} diff --git a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_space-MNI152NLin2009bAsym_electrodes.tsv b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_space-MNI152NLin2009bAsym_electrodes.tsv new file mode 100644 index 000000000..086775e6f --- /dev/null +++ b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_space-MNI152NLin2009bAsym_electrodes.tsv @@ -0,0 +1,11 @@ +name x y z type +ECOG_0 22.5 -38.5 83.0 ECOG +ECOG_1 28.0 -29.0 81.5 ECOG +ECOG_2 32.0 -19.5 78.0 ECOG +ECOG_3 37.0 -10.5 73.5 ECOG +ECOG_4 40.5 -2.0 69.5 ECOG +ECOG_5 42.5 6.5 63.0 ECOG +ECOG_6 45.5 13.5 55.5 ECOG +ECOG_7 48.0 22.5 48.5 ECOG +ECOG_8 45.5 13.5 55.5 ECOG +ECOG_9 48.0 22.5 48.5 ECOG diff --git a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_channels.tsv b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_channels.tsv new file mode 100644 index 000000000..8921125f0 --- /dev/null +++ b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_channels.tsv @@ -0,0 +1,11 @@ +name type units low_cutoff high_cutoff description sampling_frequency status status_description +ECOG_0 ECOG µV 0.0 500.0 Electrocorticography 1000.0 good n/a +ECOG_1 ECOG µV 0.0 500.0 Electrocorticography 1000.0 good n/a +ECOG_2 ECOG µV 0.0 500.0 Electrocorticography 1000.0 good n/a +ECOG_3 ECOG µV 0.0 500.0 Electrocorticography 1000.0 good n/a +ECOG_4 ECOG µV 0.0 500.0 Electrocorticography 1000.0 good n/a +ECOG_5 ECOG µV 0.0 500.0 Electrocorticography 1000.0 good n/a +ECOG_6 ECOG µV 0.0 500.0 Electrocorticography 1000.0 good n/a +ECOG_7 ECOG µV 0.0 500.0 Electrocorticography 1000.0 good n/a +ECOG_8 ECOG µV 0.0 500.0 Electrocorticography 1000.0 good n/a +ECOG_9 ECOG µV 0.0 500.0 Electrocorticography 1000.0 good n/a diff --git a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.eeg b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.eeg new file mode 100644 index 0000000000000000000000000000000000000000..6cb39f251ee0ad53154446cd54ffed95e770f2bd GIT binary patch literal 40000 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 W;Z}zAC+Fd>Wi}!YOho!PE&hLA&QcNp literal 0 HcmV?d00001 diff --git a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.json b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.json new file mode 100644 index 000000000..db231bfc2 --- /dev/null +++ b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.json @@ -0,0 +1,18 @@ +{ + "TaskName": "audiovisual", + "Manufacturer": "BrainProducts", + "PowerLineFrequency": "n/a", + "SamplingFrequency": 1000.0, + "SoftwareFilters": "n/a", + "RecordingDuration": 0.999, + "RecordingType": "continuous", + "iEEGReference": "n/a", + "ECOGChannelCount": 10, + "SEEGChannelCount": 0, + "EEGChannelCount": 0, + "EOGChannelCount": 0, + "ECGChannelCount": 0, + "EMGChannelCount": 0, + "MiscChannelCount": 0, + "TriggerChannelCount": 0 +} diff --git a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.vhdr b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.vhdr new file mode 100644 index 000000000..701f069c1 --- /dev/null +++ b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.vhdr @@ -0,0 +1,35 @@ +Brain Vision Data Exchange Header File Version 1.0 +; Written using pybv 0.6.0 + +[Common Infos] +Codepage=UTF-8 +DataFile=sub-01_ses-01_task-audiovisual_run-01_ieeg.eeg +MarkerFile=sub-01_ses-01_task-audiovisual_run-01_ieeg.vmrk +DataFormat=BINARY +; Data orientation: MULTIPLEXED=ch1,pt1, ch2,pt1 ... +DataOrientation=MULTIPLEXED +NumberOfChannels=10 +; Sampling interval in microseconds +SamplingInterval=1000.0 + +[Binary Infos] +BinaryFormat=IEEE_FLOAT_32 + +[Channel Infos] +; Each entry: Ch=,, +; ,, Future extensions.. +; Fields are delimited by commas, some fields might be omitted (empty). +; Commas in channel names are coded as "\1". +Ch1=ECOG_0,,0.1,µV +Ch2=ECOG_1,,0.1,µV +Ch3=ECOG_2,,0.1,µV +Ch4=ECOG_3,,0.1,µV +Ch5=ECOG_4,,0.1,µV +Ch6=ECOG_5,,0.1,µV +Ch7=ECOG_6,,0.1,µV +Ch8=ECOG_7,,0.1,µV +Ch9=ECOG_8,,0.1,µV +Ch10=ECOG_9,,0.1,µV + +[Comment] + diff --git a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.vmrk b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.vmrk new file mode 100644 index 000000000..40c1fb0ee --- /dev/null +++ b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.vmrk @@ -0,0 +1,13 @@ +Brain Vision Data Exchange Marker File, Version 1.0 +;Exported using pybv 0.6.0 + +[Common Infos] +Codepage=UTF-8 +DataFile=sub-01_ses-01_task-audiovisual_run-01_ieeg.eeg + +[Marker Infos] +; Each entry: Mk=,,, +; , +; +; Fields are delimited by commas, some fields might be omitted (empty). +; Commas in type or description text are coded as "\1". diff --git a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/sub-01_ses-01_scans.tsv b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/sub-01_ses-01_scans.tsv new file mode 100644 index 000000000..756deab1c --- /dev/null +++ b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/sub-01_ses-01_scans.tsv @@ -0,0 +1,2 @@ +filename acq_time +ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.vhdr n/a diff --git a/mne_bids/tests/test_ieeg_mnt_read.py b/mne_bids/tests/test_ieeg_mnt_read.py new file mode 100644 index 000000000..33d27bec5 --- /dev/null +++ b/mne_bids/tests/test_ieeg_mnt_read.py @@ -0,0 +1,11 @@ +import os +import mne_bids + +def test_read_ieeg_bids_data(): + + bids_path = mne_bids.BIDSPath(subject='01', session='01', + task='audiovisual', run='01', root=os.path.join("data", "ieeg_bids")) + + raw_read = mne_bids.read_raw_bids(bids_path) + + assert raw_read.get_montage().get_positions()["coord_frame"] == "MNI152NLin2009bAsym" From 6e4be6e1427815f9905332e4048c3f883539d56f Mon Sep 17 00:00:00 2001 From: Jonathan Vanhoecke <72917013+JonathanVHoecke@users.noreply.github.com> Date: Mon, 21 Feb 2022 10:57:12 +0100 Subject: [PATCH 2/9] dummy data for ECOG localization --- ...1_space-MNI152NLin2009bAsym_electrodes.tsv | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_space-MNI152NLin2009bAsym_electrodes.tsv b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_space-MNI152NLin2009bAsym_electrodes.tsv index 086775e6f..ea03043f6 100644 --- a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_space-MNI152NLin2009bAsym_electrodes.tsv +++ b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_space-MNI152NLin2009bAsym_electrodes.tsv @@ -1,11 +1,11 @@ name x y z type -ECOG_0 22.5 -38.5 83.0 ECOG -ECOG_1 28.0 -29.0 81.5 ECOG -ECOG_2 32.0 -19.5 78.0 ECOG -ECOG_3 37.0 -10.5 73.5 ECOG -ECOG_4 40.5 -2.0 69.5 ECOG -ECOG_5 42.5 6.5 63.0 ECOG -ECOG_6 45.5 13.5 55.5 ECOG -ECOG_7 48.0 22.5 48.5 ECOG -ECOG_8 45.5 13.5 55.5 ECOG -ECOG_9 48.0 22.5 48.5 ECOG +ECOG_0 23.5 -35.5 85.0 ECOG +ECOG_1 31.0 -32.0 79.5 ECOG +ECOG_2 29.0 -21.5 69.0 ECOG +ECOG_3 35.0 -16.5 73.5 ECOG +ECOG_4 38.5 -9.0 59.5 ECOG +ECOG_5 32.5 8.5 61.0 ECOG +ECOG_6 51.5 16.5 49.5 ECOG +ECOG_7 43.0 29.5 42.5 ECOG +ECOG_8 42.5 18.5 56.5 ECOG +ECOG_9 39.0 32.5 52.5 ECOG From 431792c349cf3794d9772a854c2ff35e9fc2d258 Mon Sep 17 00:00:00 2001 From: timonmerk Date: Sun, 20 Feb 2022 13:36:15 +0100 Subject: [PATCH 3/9] add test for montage coord_frame --- mne_bids/tests/data/ieeg_bids/README | 6 +++ .../data/ieeg_bids/dataset_description.json | 8 ++++ .../tests/data/ieeg_bids/participants.json | 24 ++++++++++++ .../tests/data/ieeg_bids/participants.tsv | 2 + ...space-MNI152NLin2009bAsym_coordsystem.json | 5 +++ ...1_space-MNI152NLin2009bAsym_electrodes.tsv | 11 ++++++ ...es-01_task-audiovisual_run-01_channels.tsv | 11 ++++++ ...01_ses-01_task-audiovisual_run-01_ieeg.eeg | Bin 0 -> 40000 bytes ...1_ses-01_task-audiovisual_run-01_ieeg.json | 18 +++++++++ ...1_ses-01_task-audiovisual_run-01_ieeg.vhdr | 35 ++++++++++++++++++ ...1_ses-01_task-audiovisual_run-01_ieeg.vmrk | 13 +++++++ .../sub-01/ses-01/sub-01_ses-01_scans.tsv | 2 + mne_bids/tests/test_ieeg_mnt_read.py | 11 ++++++ 13 files changed, 146 insertions(+) create mode 100644 mne_bids/tests/data/ieeg_bids/README create mode 100644 mne_bids/tests/data/ieeg_bids/dataset_description.json create mode 100644 mne_bids/tests/data/ieeg_bids/participants.json create mode 100644 mne_bids/tests/data/ieeg_bids/participants.tsv create mode 100644 mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_space-MNI152NLin2009bAsym_coordsystem.json create mode 100644 mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_space-MNI152NLin2009bAsym_electrodes.tsv create mode 100644 mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_channels.tsv create mode 100644 mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.eeg create mode 100644 mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.json create mode 100644 mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.vhdr create mode 100644 mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.vmrk create mode 100644 mne_bids/tests/data/ieeg_bids/sub-01/ses-01/sub-01_ses-01_scans.tsv create mode 100644 mne_bids/tests/test_ieeg_mnt_read.py diff --git a/mne_bids/tests/data/ieeg_bids/README b/mne_bids/tests/data/ieeg_bids/README new file mode 100644 index 000000000..2e275e44f --- /dev/null +++ b/mne_bids/tests/data/ieeg_bids/README @@ -0,0 +1,6 @@ +References +---------- +Appelhoff, S., Sanderson, M., Brooks, T., Vliet, M., Quentin, R., Holdgraf, C., Chaumon, M., Mikulan, E., Tavabi, K., Höchenberger, R., Welke, D., Brunner, C., Rockhill, A., Larson, E., Gramfort, A. and Jas, M. (2019). MNE-BIDS: Organizing electrophysiological data into the BIDS format and facilitating their analysis. Journal of Open Source Software 4: (1896). https://doi.org/10.21105/joss.01896 + +Holdgraf, C., Appelhoff, S., Bickel, S., Bouchard, K., D'Ambrosio, S., David, O., … Hermes, D. (2019). iEEG-BIDS, extending the Brain Imaging Data Structure specification to human intracranial electrophysiology. Scientific Data, 6, 102. https://doi.org/10.1038/s41597-019-0105-7 + diff --git a/mne_bids/tests/data/ieeg_bids/dataset_description.json b/mne_bids/tests/data/ieeg_bids/dataset_description.json new file mode 100644 index 000000000..fc0939c71 --- /dev/null +++ b/mne_bids/tests/data/ieeg_bids/dataset_description.json @@ -0,0 +1,8 @@ +{ + "Name": " ", + "BIDSVersion": "1.6.0", + "DatasetType": "raw", + "Authors": [ + "[Unspecified]" + ] +} diff --git a/mne_bids/tests/data/ieeg_bids/participants.json b/mne_bids/tests/data/ieeg_bids/participants.json new file mode 100644 index 000000000..de061dfc2 --- /dev/null +++ b/mne_bids/tests/data/ieeg_bids/participants.json @@ -0,0 +1,24 @@ +{ + "participant_id": { + "Description": "Unique participant identifier" + }, + "age": { + "Description": "Age of the participant at time of testing", + "Units": "years" + }, + "sex": { + "Description": "Biological sex of the participant", + "Levels": { + "F": "female", + "M": "male" + } + }, + "hand": { + "Description": "Handedness of the participant", + "Levels": { + "R": "right", + "L": "left", + "A": "ambidextrous" + } + } +} diff --git a/mne_bids/tests/data/ieeg_bids/participants.tsv b/mne_bids/tests/data/ieeg_bids/participants.tsv new file mode 100644 index 000000000..9af3285e4 --- /dev/null +++ b/mne_bids/tests/data/ieeg_bids/participants.tsv @@ -0,0 +1,2 @@ +participant_id age sex hand +sub-01 n/a n/a n/a diff --git a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_space-MNI152NLin2009bAsym_coordsystem.json b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_space-MNI152NLin2009bAsym_coordsystem.json new file mode 100644 index 000000000..09f8b98e7 --- /dev/null +++ b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_space-MNI152NLin2009bAsym_coordsystem.json @@ -0,0 +1,5 @@ +{ + "iEEGCoordinateSystem": "MNI152NLin2009bAsym", + "iEEGCoordinateSystemDescription": "mni", + "iEEGCoordinateUnits": "mm" +} diff --git a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_space-MNI152NLin2009bAsym_electrodes.tsv b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_space-MNI152NLin2009bAsym_electrodes.tsv new file mode 100644 index 000000000..086775e6f --- /dev/null +++ b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_space-MNI152NLin2009bAsym_electrodes.tsv @@ -0,0 +1,11 @@ +name x y z type +ECOG_0 22.5 -38.5 83.0 ECOG +ECOG_1 28.0 -29.0 81.5 ECOG +ECOG_2 32.0 -19.5 78.0 ECOG +ECOG_3 37.0 -10.5 73.5 ECOG +ECOG_4 40.5 -2.0 69.5 ECOG +ECOG_5 42.5 6.5 63.0 ECOG +ECOG_6 45.5 13.5 55.5 ECOG +ECOG_7 48.0 22.5 48.5 ECOG +ECOG_8 45.5 13.5 55.5 ECOG +ECOG_9 48.0 22.5 48.5 ECOG diff --git a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_channels.tsv b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_channels.tsv new file mode 100644 index 000000000..8921125f0 --- /dev/null +++ b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_channels.tsv @@ -0,0 +1,11 @@ +name type units low_cutoff high_cutoff description sampling_frequency status status_description +ECOG_0 ECOG µV 0.0 500.0 Electrocorticography 1000.0 good n/a +ECOG_1 ECOG µV 0.0 500.0 Electrocorticography 1000.0 good n/a +ECOG_2 ECOG µV 0.0 500.0 Electrocorticography 1000.0 good n/a +ECOG_3 ECOG µV 0.0 500.0 Electrocorticography 1000.0 good n/a +ECOG_4 ECOG µV 0.0 500.0 Electrocorticography 1000.0 good n/a +ECOG_5 ECOG µV 0.0 500.0 Electrocorticography 1000.0 good n/a +ECOG_6 ECOG µV 0.0 500.0 Electrocorticography 1000.0 good n/a +ECOG_7 ECOG µV 0.0 500.0 Electrocorticography 1000.0 good n/a +ECOG_8 ECOG µV 0.0 500.0 Electrocorticography 1000.0 good n/a +ECOG_9 ECOG µV 0.0 500.0 Electrocorticography 1000.0 good n/a diff --git a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.eeg b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.eeg new file mode 100644 index 0000000000000000000000000000000000000000..6cb39f251ee0ad53154446cd54ffed95e770f2bd GIT binary patch literal 40000 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 W;Z}zAC+Fd>Wi}!YOho!PE&hLA&QcNp literal 0 HcmV?d00001 diff --git a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.json b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.json new file mode 100644 index 000000000..db231bfc2 --- /dev/null +++ b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.json @@ -0,0 +1,18 @@ +{ + "TaskName": "audiovisual", + "Manufacturer": "BrainProducts", + "PowerLineFrequency": "n/a", + "SamplingFrequency": 1000.0, + "SoftwareFilters": "n/a", + "RecordingDuration": 0.999, + "RecordingType": "continuous", + "iEEGReference": "n/a", + "ECOGChannelCount": 10, + "SEEGChannelCount": 0, + "EEGChannelCount": 0, + "EOGChannelCount": 0, + "ECGChannelCount": 0, + "EMGChannelCount": 0, + "MiscChannelCount": 0, + "TriggerChannelCount": 0 +} diff --git a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.vhdr b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.vhdr new file mode 100644 index 000000000..701f069c1 --- /dev/null +++ b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.vhdr @@ -0,0 +1,35 @@ +Brain Vision Data Exchange Header File Version 1.0 +; Written using pybv 0.6.0 + +[Common Infos] +Codepage=UTF-8 +DataFile=sub-01_ses-01_task-audiovisual_run-01_ieeg.eeg +MarkerFile=sub-01_ses-01_task-audiovisual_run-01_ieeg.vmrk +DataFormat=BINARY +; Data orientation: MULTIPLEXED=ch1,pt1, ch2,pt1 ... +DataOrientation=MULTIPLEXED +NumberOfChannels=10 +; Sampling interval in microseconds +SamplingInterval=1000.0 + +[Binary Infos] +BinaryFormat=IEEE_FLOAT_32 + +[Channel Infos] +; Each entry: Ch=,, +; ,, Future extensions.. +; Fields are delimited by commas, some fields might be omitted (empty). +; Commas in channel names are coded as "\1". +Ch1=ECOG_0,,0.1,µV +Ch2=ECOG_1,,0.1,µV +Ch3=ECOG_2,,0.1,µV +Ch4=ECOG_3,,0.1,µV +Ch5=ECOG_4,,0.1,µV +Ch6=ECOG_5,,0.1,µV +Ch7=ECOG_6,,0.1,µV +Ch8=ECOG_7,,0.1,µV +Ch9=ECOG_8,,0.1,µV +Ch10=ECOG_9,,0.1,µV + +[Comment] + diff --git a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.vmrk b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.vmrk new file mode 100644 index 000000000..40c1fb0ee --- /dev/null +++ b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.vmrk @@ -0,0 +1,13 @@ +Brain Vision Data Exchange Marker File, Version 1.0 +;Exported using pybv 0.6.0 + +[Common Infos] +Codepage=UTF-8 +DataFile=sub-01_ses-01_task-audiovisual_run-01_ieeg.eeg + +[Marker Infos] +; Each entry: Mk=,,, +; , +; +; Fields are delimited by commas, some fields might be omitted (empty). +; Commas in type or description text are coded as "\1". diff --git a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/sub-01_ses-01_scans.tsv b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/sub-01_ses-01_scans.tsv new file mode 100644 index 000000000..756deab1c --- /dev/null +++ b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/sub-01_ses-01_scans.tsv @@ -0,0 +1,2 @@ +filename acq_time +ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.vhdr n/a diff --git a/mne_bids/tests/test_ieeg_mnt_read.py b/mne_bids/tests/test_ieeg_mnt_read.py new file mode 100644 index 000000000..33d27bec5 --- /dev/null +++ b/mne_bids/tests/test_ieeg_mnt_read.py @@ -0,0 +1,11 @@ +import os +import mne_bids + +def test_read_ieeg_bids_data(): + + bids_path = mne_bids.BIDSPath(subject='01', session='01', + task='audiovisual', run='01', root=os.path.join("data", "ieeg_bids")) + + raw_read = mne_bids.read_raw_bids(bids_path) + + assert raw_read.get_montage().get_positions()["coord_frame"] == "MNI152NLin2009bAsym" From 1986d0b0da9daa808f8ebec829ba1cd6adda37d5 Mon Sep 17 00:00:00 2001 From: Alexandre Gramfort Date: Mon, 28 Feb 2022 23:00:32 +0100 Subject: [PATCH 4/9] simplify testing --- mne_bids/tests/test_ieeg_mnt_read.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/mne_bids/tests/test_ieeg_mnt_read.py b/mne_bids/tests/test_ieeg_mnt_read.py index 33d27bec5..830a32b49 100644 --- a/mne_bids/tests/test_ieeg_mnt_read.py +++ b/mne_bids/tests/test_ieeg_mnt_read.py @@ -1,11 +1,23 @@ -import os +from pathlib import Path import mne_bids + def test_read_ieeg_bids_data(): - bids_path = mne_bids.BIDSPath(subject='01', session='01', - task='audiovisual', run='01', root=os.path.join("data", "ieeg_bids")) + bids_path = mne_bids.BIDSPath( + subject="01", + session="01", + task="audiovisual", + run="01", + root=Path(__file__).parent / "data" / "ieeg_bids", + ) raw_read = mne_bids.read_raw_bids(bids_path) - assert raw_read.get_montage().get_positions()["coord_frame"] == "MNI152NLin2009bAsym" + assert ( + raw_read.get_montage().get_positions()["coord_frame"] == "MNI152NLin2009bAsym" + ) + + +if __name__ == '__main__': + test_read_ieeg_bids_data() From c4aac22158db045437e5ac6637e6e0964b2e09c4 Mon Sep 17 00:00:00 2001 From: timonmerk <38216460+timonmerk@users.noreply.github.com> Date: Mon, 15 Aug 2022 09:18:37 +0200 Subject: [PATCH 5/9] Apply suggestions from code review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit review test file changes Co-authored-by: Richard Höchenberger --- mne_bids/tests/test_ieeg_mnt_read.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/mne_bids/tests/test_ieeg_mnt_read.py b/mne_bids/tests/test_ieeg_mnt_read.py index 830a32b49..c8d575950 100644 --- a/mne_bids/tests/test_ieeg_mnt_read.py +++ b/mne_bids/tests/test_ieeg_mnt_read.py @@ -2,8 +2,8 @@ import mne_bids -def test_read_ieeg_bids_data(): - +def test_read_ieeg_coord_frame(): +"""Ensure that the iEEG coordinate frame is read correctly.""" bids_path = mne_bids.BIDSPath( subject="01", session="01", @@ -11,12 +11,10 @@ def test_read_ieeg_bids_data(): run="01", root=Path(__file__).parent / "data" / "ieeg_bids", ) - raw_read = mne_bids.read_raw_bids(bids_path) - assert ( - raw_read.get_montage().get_positions()["coord_frame"] == "MNI152NLin2009bAsym" - ) + coord_frame = raw_read.get_montage().get_positions()["coord_frame"] + assert coord_frame == "MNI152NLin2009bAsym" if __name__ == '__main__': From 8edcbd7053b62f66367050e949ef9a33d97427cc Mon Sep 17 00:00:00 2001 From: timonmerk Date: Mon, 15 Aug 2022 09:28:35 +0200 Subject: [PATCH 6/9] add test for ieeg bids data montage coord frame --- mne_bids/tests/test_ieeg_mnt_read.py | 21 --------------------- mne_bids/tests/test_read.py | 14 ++++++++++++++ 2 files changed, 14 insertions(+), 21 deletions(-) delete mode 100644 mne_bids/tests/test_ieeg_mnt_read.py diff --git a/mne_bids/tests/test_ieeg_mnt_read.py b/mne_bids/tests/test_ieeg_mnt_read.py deleted file mode 100644 index c8d575950..000000000 --- a/mne_bids/tests/test_ieeg_mnt_read.py +++ /dev/null @@ -1,21 +0,0 @@ -from pathlib import Path -import mne_bids - - -def test_read_ieeg_coord_frame(): -"""Ensure that the iEEG coordinate frame is read correctly.""" - bids_path = mne_bids.BIDSPath( - subject="01", - session="01", - task="audiovisual", - run="01", - root=Path(__file__).parent / "data" / "ieeg_bids", - ) - raw_read = mne_bids.read_raw_bids(bids_path) - - coord_frame = raw_read.get_montage().get_positions()["coord_frame"] - assert coord_frame == "MNI152NLin2009bAsym" - - -if __name__ == '__main__': - test_read_ieeg_bids_data() diff --git a/mne_bids/tests/test_read.py b/mne_bids/tests/test_read.py index 0907da8b3..dd7fb15e0 100644 --- a/mne_bids/tests/test_read.py +++ b/mne_bids/tests/test_read.py @@ -1242,3 +1242,17 @@ def test_file_not_found(tmp_path): bp.extension = None with pytest.raises(FileNotFoundError, match='File does not exist'): read_raw_bids(bids_path=bp) + +def test_read_ieeg_coord_frame(): + """Ensure that the iEEG coordinate frame is read correctly.""" + bids_path = mne_bids.BIDSPath( + subject="01", + session="01", + task="audiovisual", + run="01", + root=Path(__file__).parent / "data" / "ieeg_bids", + ) + raw_read = mne_bids.read_raw_bids(bids_path) + + coord_frame = raw_read.get_montage().get_positions()["coord_frame"] + assert coord_frame == "MNI152NLin2009bAsym" From e9b80d00c81338ab342f1446b48f9a6ca96109a7 Mon Sep 17 00:00:00 2001 From: timonmerk Date: Mon, 15 Aug 2022 09:33:52 +0200 Subject: [PATCH 7/9] fix import --- mne_bids/tests/test_read.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mne_bids/tests/test_read.py b/mne_bids/tests/test_read.py index dd7fb15e0..271d9c2a8 100644 --- a/mne_bids/tests/test_read.py +++ b/mne_bids/tests/test_read.py @@ -1245,14 +1245,14 @@ def test_file_not_found(tmp_path): def test_read_ieeg_coord_frame(): """Ensure that the iEEG coordinate frame is read correctly.""" - bids_path = mne_bids.BIDSPath( + bids_path = BIDSPath( subject="01", session="01", task="audiovisual", run="01", root=Path(__file__).parent / "data" / "ieeg_bids", ) - raw_read = mne_bids.read_raw_bids(bids_path) + raw_read = read_raw_bids(bids_path) coord_frame = raw_read.get_montage().get_positions()["coord_frame"] assert coord_frame == "MNI152NLin2009bAsym" From abc200954d1905f29d7899ab356304564a308d47 Mon Sep 17 00:00:00 2001 From: Stefan Appelhoff Date: Tue, 25 Oct 2022 13:09:16 +0200 Subject: [PATCH 8/9] Update mne_bids/tests/test_read.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Richard Höchenberger --- mne_bids/tests/test_read.py | 1 + 1 file changed, 1 insertion(+) diff --git a/mne_bids/tests/test_read.py b/mne_bids/tests/test_read.py index 271d9c2a8..6b65074b2 100644 --- a/mne_bids/tests/test_read.py +++ b/mne_bids/tests/test_read.py @@ -1243,6 +1243,7 @@ def test_file_not_found(tmp_path): with pytest.raises(FileNotFoundError, match='File does not exist'): read_raw_bids(bids_path=bp) + def test_read_ieeg_coord_frame(): """Ensure that the iEEG coordinate frame is read correctly.""" bids_path = BIDSPath( From 1362c1813413e75b5cefaff2dbea4bc58e0a7b3f Mon Sep 17 00:00:00 2001 From: timonmerk <38216460+timonmerk@users.noreply.github.com> Date: Fri, 28 Apr 2023 13:45:54 +0200 Subject: [PATCH 9/9] Revert "dummy data for ECOG localization" --- mne_bids/tests/data/ieeg_bids/README | 6 --- .../data/ieeg_bids/dataset_description.json | 8 ---- .../tests/data/ieeg_bids/participants.json | 24 ------------ .../tests/data/ieeg_bids/participants.tsv | 2 - ...space-MNI152NLin2009bAsym_coordsystem.json | 5 --- ...1_space-MNI152NLin2009bAsym_electrodes.tsv | 11 ------ ...es-01_task-audiovisual_run-01_channels.tsv | 11 ------ ...01_ses-01_task-audiovisual_run-01_ieeg.eeg | Bin 40000 -> 0 bytes ...1_ses-01_task-audiovisual_run-01_ieeg.json | 18 --------- ...1_ses-01_task-audiovisual_run-01_ieeg.vhdr | 35 ------------------ ...1_ses-01_task-audiovisual_run-01_ieeg.vmrk | 13 ------- .../sub-01/ses-01/sub-01_ses-01_scans.tsv | 2 - mne_bids/tests/test_ieeg_mnt_read.py | 11 ------ 13 files changed, 146 deletions(-) delete mode 100644 mne_bids/tests/data/ieeg_bids/README delete mode 100644 mne_bids/tests/data/ieeg_bids/dataset_description.json delete mode 100644 mne_bids/tests/data/ieeg_bids/participants.json delete mode 100644 mne_bids/tests/data/ieeg_bids/participants.tsv delete mode 100644 mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_space-MNI152NLin2009bAsym_coordsystem.json delete mode 100644 mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_space-MNI152NLin2009bAsym_electrodes.tsv delete mode 100644 mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_channels.tsv delete mode 100644 mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.eeg delete mode 100644 mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.json delete mode 100644 mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.vhdr delete mode 100644 mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.vmrk delete mode 100644 mne_bids/tests/data/ieeg_bids/sub-01/ses-01/sub-01_ses-01_scans.tsv delete mode 100644 mne_bids/tests/test_ieeg_mnt_read.py diff --git a/mne_bids/tests/data/ieeg_bids/README b/mne_bids/tests/data/ieeg_bids/README deleted file mode 100644 index 2e275e44f..000000000 --- a/mne_bids/tests/data/ieeg_bids/README +++ /dev/null @@ -1,6 +0,0 @@ -References ----------- -Appelhoff, S., Sanderson, M., Brooks, T., Vliet, M., Quentin, R., Holdgraf, C., Chaumon, M., Mikulan, E., Tavabi, K., Höchenberger, R., Welke, D., Brunner, C., Rockhill, A., Larson, E., Gramfort, A. and Jas, M. (2019). MNE-BIDS: Organizing electrophysiological data into the BIDS format and facilitating their analysis. Journal of Open Source Software 4: (1896). https://doi.org/10.21105/joss.01896 - -Holdgraf, C., Appelhoff, S., Bickel, S., Bouchard, K., D'Ambrosio, S., David, O., … Hermes, D. (2019). iEEG-BIDS, extending the Brain Imaging Data Structure specification to human intracranial electrophysiology. Scientific Data, 6, 102. https://doi.org/10.1038/s41597-019-0105-7 - diff --git a/mne_bids/tests/data/ieeg_bids/dataset_description.json b/mne_bids/tests/data/ieeg_bids/dataset_description.json deleted file mode 100644 index fc0939c71..000000000 --- a/mne_bids/tests/data/ieeg_bids/dataset_description.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "Name": " ", - "BIDSVersion": "1.6.0", - "DatasetType": "raw", - "Authors": [ - "[Unspecified]" - ] -} diff --git a/mne_bids/tests/data/ieeg_bids/participants.json b/mne_bids/tests/data/ieeg_bids/participants.json deleted file mode 100644 index de061dfc2..000000000 --- a/mne_bids/tests/data/ieeg_bids/participants.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "participant_id": { - "Description": "Unique participant identifier" - }, - "age": { - "Description": "Age of the participant at time of testing", - "Units": "years" - }, - "sex": { - "Description": "Biological sex of the participant", - "Levels": { - "F": "female", - "M": "male" - } - }, - "hand": { - "Description": "Handedness of the participant", - "Levels": { - "R": "right", - "L": "left", - "A": "ambidextrous" - } - } -} diff --git a/mne_bids/tests/data/ieeg_bids/participants.tsv b/mne_bids/tests/data/ieeg_bids/participants.tsv deleted file mode 100644 index 9af3285e4..000000000 --- a/mne_bids/tests/data/ieeg_bids/participants.tsv +++ /dev/null @@ -1,2 +0,0 @@ -participant_id age sex hand -sub-01 n/a n/a n/a diff --git a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_space-MNI152NLin2009bAsym_coordsystem.json b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_space-MNI152NLin2009bAsym_coordsystem.json deleted file mode 100644 index 09f8b98e7..000000000 --- a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_space-MNI152NLin2009bAsym_coordsystem.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "iEEGCoordinateSystem": "MNI152NLin2009bAsym", - "iEEGCoordinateSystemDescription": "mni", - "iEEGCoordinateUnits": "mm" -} diff --git a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_space-MNI152NLin2009bAsym_electrodes.tsv b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_space-MNI152NLin2009bAsym_electrodes.tsv deleted file mode 100644 index ea03043f6..000000000 --- a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_space-MNI152NLin2009bAsym_electrodes.tsv +++ /dev/null @@ -1,11 +0,0 @@ -name x y z type -ECOG_0 23.5 -35.5 85.0 ECOG -ECOG_1 31.0 -32.0 79.5 ECOG -ECOG_2 29.0 -21.5 69.0 ECOG -ECOG_3 35.0 -16.5 73.5 ECOG -ECOG_4 38.5 -9.0 59.5 ECOG -ECOG_5 32.5 8.5 61.0 ECOG -ECOG_6 51.5 16.5 49.5 ECOG -ECOG_7 43.0 29.5 42.5 ECOG -ECOG_8 42.5 18.5 56.5 ECOG -ECOG_9 39.0 32.5 52.5 ECOG diff --git a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_channels.tsv b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_channels.tsv deleted file mode 100644 index 8921125f0..000000000 --- a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_channels.tsv +++ /dev/null @@ -1,11 +0,0 @@ -name type units low_cutoff high_cutoff description sampling_frequency status status_description -ECOG_0 ECOG µV 0.0 500.0 Electrocorticography 1000.0 good n/a -ECOG_1 ECOG µV 0.0 500.0 Electrocorticography 1000.0 good n/a -ECOG_2 ECOG µV 0.0 500.0 Electrocorticography 1000.0 good n/a -ECOG_3 ECOG µV 0.0 500.0 Electrocorticography 1000.0 good n/a -ECOG_4 ECOG µV 0.0 500.0 Electrocorticography 1000.0 good n/a -ECOG_5 ECOG µV 0.0 500.0 Electrocorticography 1000.0 good n/a -ECOG_6 ECOG µV 0.0 500.0 Electrocorticography 1000.0 good n/a -ECOG_7 ECOG µV 0.0 500.0 Electrocorticography 1000.0 good n/a -ECOG_8 ECOG µV 0.0 500.0 Electrocorticography 1000.0 good n/a -ECOG_9 ECOG µV 0.0 500.0 Electrocorticography 1000.0 good n/a diff --git a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.eeg b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.eeg deleted file mode 100644 index 6cb39f251ee0ad53154446cd54ffed95e770f2bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40000 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 W;Z}zAC+Fd>Wi}!YOho!PE&hLA&QcNp diff --git a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.json b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.json deleted file mode 100644 index db231bfc2..000000000 --- a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "TaskName": "audiovisual", - "Manufacturer": "BrainProducts", - "PowerLineFrequency": "n/a", - "SamplingFrequency": 1000.0, - "SoftwareFilters": "n/a", - "RecordingDuration": 0.999, - "RecordingType": "continuous", - "iEEGReference": "n/a", - "ECOGChannelCount": 10, - "SEEGChannelCount": 0, - "EEGChannelCount": 0, - "EOGChannelCount": 0, - "ECGChannelCount": 0, - "EMGChannelCount": 0, - "MiscChannelCount": 0, - "TriggerChannelCount": 0 -} diff --git a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.vhdr b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.vhdr deleted file mode 100644 index 701f069c1..000000000 --- a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.vhdr +++ /dev/null @@ -1,35 +0,0 @@ -Brain Vision Data Exchange Header File Version 1.0 -; Written using pybv 0.6.0 - -[Common Infos] -Codepage=UTF-8 -DataFile=sub-01_ses-01_task-audiovisual_run-01_ieeg.eeg -MarkerFile=sub-01_ses-01_task-audiovisual_run-01_ieeg.vmrk -DataFormat=BINARY -; Data orientation: MULTIPLEXED=ch1,pt1, ch2,pt1 ... -DataOrientation=MULTIPLEXED -NumberOfChannels=10 -; Sampling interval in microseconds -SamplingInterval=1000.0 - -[Binary Infos] -BinaryFormat=IEEE_FLOAT_32 - -[Channel Infos] -; Each entry: Ch=,, -; ,, Future extensions.. -; Fields are delimited by commas, some fields might be omitted (empty). -; Commas in channel names are coded as "\1". -Ch1=ECOG_0,,0.1,µV -Ch2=ECOG_1,,0.1,µV -Ch3=ECOG_2,,0.1,µV -Ch4=ECOG_3,,0.1,µV -Ch5=ECOG_4,,0.1,µV -Ch6=ECOG_5,,0.1,µV -Ch7=ECOG_6,,0.1,µV -Ch8=ECOG_7,,0.1,µV -Ch9=ECOG_8,,0.1,µV -Ch10=ECOG_9,,0.1,µV - -[Comment] - diff --git a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.vmrk b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.vmrk deleted file mode 100644 index 40c1fb0ee..000000000 --- a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.vmrk +++ /dev/null @@ -1,13 +0,0 @@ -Brain Vision Data Exchange Marker File, Version 1.0 -;Exported using pybv 0.6.0 - -[Common Infos] -Codepage=UTF-8 -DataFile=sub-01_ses-01_task-audiovisual_run-01_ieeg.eeg - -[Marker Infos] -; Each entry: Mk=,,, -; , -; -; Fields are delimited by commas, some fields might be omitted (empty). -; Commas in type or description text are coded as "\1". diff --git a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/sub-01_ses-01_scans.tsv b/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/sub-01_ses-01_scans.tsv deleted file mode 100644 index 756deab1c..000000000 --- a/mne_bids/tests/data/ieeg_bids/sub-01/ses-01/sub-01_ses-01_scans.tsv +++ /dev/null @@ -1,2 +0,0 @@ -filename acq_time -ieeg/sub-01_ses-01_task-audiovisual_run-01_ieeg.vhdr n/a diff --git a/mne_bids/tests/test_ieeg_mnt_read.py b/mne_bids/tests/test_ieeg_mnt_read.py deleted file mode 100644 index 33d27bec5..000000000 --- a/mne_bids/tests/test_ieeg_mnt_read.py +++ /dev/null @@ -1,11 +0,0 @@ -import os -import mne_bids - -def test_read_ieeg_bids_data(): - - bids_path = mne_bids.BIDSPath(subject='01', session='01', - task='audiovisual', run='01', root=os.path.join("data", "ieeg_bids")) - - raw_read = mne_bids.read_raw_bids(bids_path) - - assert raw_read.get_montage().get_positions()["coord_frame"] == "MNI152NLin2009bAsym"