diff --git a/.github/workflows/validate_datasets.yml b/.github/workflows/validate_datasets.yml index 85a841f1e..e30282842 100644 --- a/.github/workflows/validate_datasets.yml +++ b/.github/workflows/validate_datasets.yml @@ -95,7 +95,7 @@ jobs: fi - name: Skip legacy validation for post-legacy datasets - run: for DS in mrs_* dwi_deriv pheno004; do touch $DS/.SKIP_VALIDATION; done + run: for DS in mrs_* dwi_deriv pheno004 fmaps; do touch $DS/.SKIP_VALIDATION; done if: matrix.bids-validator == 'legacy' - name: Skip stable validation for datasets with unreleased validator features @@ -107,7 +107,7 @@ jobs: - name: Skip main validation for datasets with unreleased spec features # Replace ${EMPTY} with dataset patterns, when this is needed # Reset to "for DS in ${EMPTY}; ..." after a spec release - run: for DS in dwi_deriv pheno004; do touch $DS/.SKIP_VALIDATION; done + run: for DS in dwi_deriv pheno004 fmaps; do touch $DS/.SKIP_VALIDATION; done if: matrix.bids-validator != 'dev' - name: Set BIDS_SCHEMA variable for dev version @@ -116,7 +116,7 @@ jobs: # Update this URL to the schema.json from PRs to the spec, when needed. # If this variable is unset, dev will generally track the latest development # release of https://jsr.io/@bids/schema - run: echo BIDS_SCHEMA=https://bids-specification.readthedocs.io/en/latest/schema.json >> $GITHUB_ENV + run: echo BIDS_SCHEMA=https://bids-specification--2116.org.readthedocs.build/en/2116/schema.json >> $GITHUB_ENV - name: Validate all BIDS datasets using bids-validator run: | diff --git a/README.md b/README.md index 34a0ce31a..3c5e9dbe3 100644 --- a/README.md +++ b/README.md @@ -287,6 +287,7 @@ DO NOT EDIT DIRECTLY. | [ds116](https://github.com/bids-standard/bids-examples/tree/master/ds116) | multiple tasks, multiple runs | anat, func | T1w, bold, events, inplaneT2 | [link](https://openneuro.org/datasets/ds000116/versions/00003) | n/a | | [ds210](https://github.com/bids-standard/bids-examples/tree/master/ds210) | multiple tasks, multiple runs | func | bold, physio | [link](https://openneuro.org/datasets/ds000210/versions/00002) | n/a | | [eeg_rest_fmri](https://github.com/bids-standard/bids-examples/tree/master/eeg_rest_fmri) | Resting state with simultaneous fMRI. BrainVision data format (.eeg, .vhdr, .vmrk) | anat, dwi, eeg, func | T1w, bold, dwi, eeg | n/a | [@cpernet](https://github.com/cpernet) | +| [fmap](https://github.com/bids-standard/bids-examples/tree/master/fmap) | A synthetic fieldmap-only dataset | fmap, func | epi | n/a | [@effigies](https://github.com/effigies) | | [genetics_ukbb](https://github.com/bids-standard/bids-examples/tree/master/genetics_ukbb) | multiple tasks, T1w, DTI, BOLD, genetic info | anat, dwi, func | FLAIR, T1w, bold, dwi, events, info | n/a | [@cpernet](https://github.com/cpernet) | | [ieeg_visual_multimodal](https://github.com/bids-standard/bids-examples/tree/master/ieeg_visual_multimodal) | n/a | anat, fmap, func, ieeg | T1w, bold, channels, coordsystem, electrodes, epi, events, ieeg, sbref | n/a | [@irisgroen](https://github.com/irisgroen) | | [synthetic](https://github.com/bids-standard/bids-examples/tree/master/synthetic) | A synthetic dataset | anat, beh, func | T1w, beh, bold, events, physio, scans, sessions, stim | n/a | [@effigies](https://github.com/effigies) | diff --git a/dataset_listing.tsv b/dataset_listing.tsv index 52cf73cb2..c700913de 100644 --- a/dataset_listing.tsv +++ b/dataset_listing.tsv @@ -33,6 +33,7 @@ ds116 multiple tasks, multiple runs [link](https://openneuro.org/datasets/ds0001 ds210 multiple tasks, multiple runs [link](https://openneuro.org/datasets/ds000210/versions/00002) func bold, physio hcp_example_bids [link](https://bit.ly/2H0Z6Qt) [@robertoostenveld](https://github.com/robertoostenveld) anat, fmap T1w, T2w, magnitude1, magnitude2, phasediff synthetic A synthetic dataset [@effigies](https://github.com/effigies) anat, beh, func T1w, beh, bold, events, physio, scans, sessions, stim +fmap A synthetic fieldmap-only dataset [@effigies](https://github.com/effigies) fmap, func epi ds000001-fmriprep Common derivatives example [link](https://openneuro.org/datasets/ds000001/versions/1.0.0) [@effigies](https://github.com/effigies) n/a n/a ds004332 Anat dataset with task entity [link](https://openneuro.org/datasets/ds004332/versions/1.0.2) [@Remi-Gau](https://github.com/Remi-Gau) anat FLAIR, T1w, T2starw, T2w asl001 T1w, asl (GE, PCASL, 3D_SPIRAL), m0scan within timeseries [link](https://osf.io/yru2q/) [@patsycle](https://github.com/patsycle) anat, perf T1w, asl, aslcontext, asllabeling diff --git a/fmaps/README.md b/fmaps/README.md new file mode 100644 index 000000000..833ef909f --- /dev/null +++ b/fmaps/README.md @@ -0,0 +1,8 @@ +# EPI fieldmap metadata test + +The total readout time is necessary to translate between deflections +in the magnetic field and displacements induced by susceptibility artifacts. + +There are several ways to calculate the total readout time, given a BIDS +dataset, and this example exists to demonstrate them. +In particular this dataset SHOULD NOT emit `TOTAL_READOUT_TIME_MUST_DEFINE` errors. diff --git a/fmaps/dataset_description.json b/fmaps/dataset_description.json new file mode 100644 index 000000000..7f7540ff6 --- /dev/null +++ b/fmaps/dataset_description.json @@ -0,0 +1,4 @@ +{ + "BIDSVersion": "1.10.0", + "Name": "EPI fieldmap metadata test" +} diff --git a/fmaps/sub-01/fmap/sub-01_acq-EES_dir-AP_epi.json b/fmaps/sub-01/fmap/sub-01_acq-EES_dir-AP_epi.json new file mode 100644 index 000000000..20b07d033 --- /dev/null +++ b/fmaps/sub-01/fmap/sub-01_acq-EES_dir-AP_epi.json @@ -0,0 +1,4 @@ +{ + "PhaseEncodingDirection": "j", + "EffectiveEchoSpacing": 0.00059 +} diff --git a/fmaps/sub-01/fmap/sub-01_acq-EES_dir-AP_epi.nii b/fmaps/sub-01/fmap/sub-01_acq-EES_dir-AP_epi.nii new file mode 100644 index 000000000..e69de29bb diff --git a/fmaps/sub-01/fmap/sub-01_acq-ES_dir-AP_epi.json b/fmaps/sub-01/fmap/sub-01_acq-ES_dir-AP_epi.json new file mode 100644 index 000000000..95bb5e633 --- /dev/null +++ b/fmaps/sub-01/fmap/sub-01_acq-ES_dir-AP_epi.json @@ -0,0 +1,5 @@ +{ + "PhaseEncodingDirection": "j", + "EchoSpacing": 0.00059, + "ParallelReductionFactorInPlane": 2 +} diff --git a/fmaps/sub-01/fmap/sub-01_acq-ES_dir-AP_epi.nii b/fmaps/sub-01/fmap/sub-01_acq-ES_dir-AP_epi.nii new file mode 100644 index 000000000..e69de29bb diff --git a/fmaps/sub-01/fmap/sub-01_acq-Freq_dir-AP_epi.json b/fmaps/sub-01/fmap/sub-01_acq-Freq_dir-AP_epi.json new file mode 100644 index 000000000..d890cace0 --- /dev/null +++ b/fmaps/sub-01/fmap/sub-01_acq-Freq_dir-AP_epi.json @@ -0,0 +1,6 @@ +{ + "PhaseEncodingDirection": "j", + "WaterFatShift": 9.227266, + "EPIFactor": 35, + "ImagingFrequency": 127.7325 +} diff --git a/fmaps/sub-01/fmap/sub-01_acq-Freq_dir-AP_epi.nii b/fmaps/sub-01/fmap/sub-01_acq-Freq_dir-AP_epi.nii new file mode 100644 index 000000000..e69de29bb diff --git a/fmaps/sub-01/fmap/sub-01_acq-Strength_dir-AP_epi.json b/fmaps/sub-01/fmap/sub-01_acq-Strength_dir-AP_epi.json new file mode 100644 index 000000000..60bc03cfb --- /dev/null +++ b/fmaps/sub-01/fmap/sub-01_acq-Strength_dir-AP_epi.json @@ -0,0 +1,6 @@ +{ + "PhaseEncodingDirection": "j", + "WaterFatShift": 9.227266, + "EPIFactor": 35, + "MagneticFieldStrength": 3 +} diff --git a/fmaps/sub-01/fmap/sub-01_acq-Strength_dir-AP_epi.nii b/fmaps/sub-01/fmap/sub-01_acq-Strength_dir-AP_epi.nii new file mode 100644 index 000000000..e69de29bb diff --git a/fmaps/sub-01/fmap/sub-01_acq-TRT_dir-AP_epi.json b/fmaps/sub-01/fmap/sub-01_acq-TRT_dir-AP_epi.json new file mode 100644 index 000000000..e807b6794 --- /dev/null +++ b/fmaps/sub-01/fmap/sub-01_acq-TRT_dir-AP_epi.json @@ -0,0 +1,4 @@ +{ + "PhaseEncodingDirection": "j", + "TotalReadoutTime": 0.05 +} diff --git a/fmaps/sub-01/fmap/sub-01_acq-TRT_dir-AP_epi.nii b/fmaps/sub-01/fmap/sub-01_acq-TRT_dir-AP_epi.nii new file mode 100644 index 000000000..e69de29bb diff --git a/fmaps/sub-01/func/sub-01_task-rest_bold.json b/fmaps/sub-01/func/sub-01_task-rest_bold.json new file mode 100644 index 000000000..1cc79e105 --- /dev/null +++ b/fmaps/sub-01/func/sub-01_task-rest_bold.json @@ -0,0 +1,6 @@ +{ + "TaskName": "rest", + "PhaseEncodingDirection": "j", + "TotalReadoutTime": 0.05, + "RepetitionTime": 2 +} diff --git a/fmaps/sub-01/func/sub-01_task-rest_bold.nii b/fmaps/sub-01/func/sub-01_task-rest_bold.nii new file mode 100644 index 000000000..e69de29bb