From acc3b9a7156b0c5858d69e45c734706ecee7b84d Mon Sep 17 00:00:00 2001 From: Taylor Salo Date: Tue, 13 Apr 2021 15:24:44 -0400 Subject: [PATCH 01/66] [SCHEMA] Add metadata term files (#762) * Draft a handful of metadata term files. * Add example with specific possible values. * Match the validator schemas better. * Fix formatting. * Fix formatting again! * Draft semi-functional rendering functions. * Use unit abbreviations. * Add more fields. * Get macro working. * Add terms from first table. * Add AnatomicalLandmarkCoordinateSystem. * fMRI task information table. * More terms. * More terms. * More terms. * EchoTime and FlipAngle * Add tables. * More tables. * More terms. * More terms. * More terms. * Fix spacing. * Clean things up. * More terms. * More terms! * More terms. * Some iEEG terms. * More iEEG terms. * Add ASL labeling terms. * Next batch. * More terms. * More terms. * More terms. * Fix mistakes. * Last terms. * Reference yamls. * Fix mistakes. * Change format of coordinate system files. * Use degree in associated files. * Some of the missing terms. * A few more terms. * Fix typos. * More terms. * More terms. * More terms. * More terms. * More terms. * More terms. * Last terms. * Fix link. * Fix internal links. * Fix links for real. * Derivative terms. * Fix up code link. * Use backslashes for continued strings. * Replace $ref with file contents. Also support plural datatype strings and all manner of newlines in descriptions. * Fix genetics. * Describe the structure of metadata YAML files. * Make metadatatype function recursive. * Improve search function. * Start adding PET fields. * Add some fields. * More terms. * More terms. * More terms. * Fix mistakes. * More terms. * Replace InstitutionDepartmentName with existing InstitutionalDepartmentName. * More terms. * More terms. * More terms. * More terms. * More terms. * More terms. * More terms. * Last terms. * Add unit format for strings. Unused for now but could be useful later. * Add dataset_relative and participant_relative string formats. * Update READMEs. * Fix formats in README. * Support table-specific metadata description extensions. * Employ description extensions with IntendedFor. * Remove explicit defaults from YAML files. * Replace Minimum with minimum. * Replace inclusiveMaximum with maximum. * Replace implicit links with explicit ones. * Rename key_name to name. * Rename "Unit" to "Units" --- src/02-common-principles.md | 10 + src/03-modality-agnostic-files.md | 28 ++- .../01-magnetic-resonance-imaging-data.md | 225 ++++++++++++++++++ .../02-magnetoencephalography.md | 126 +++++++++- .../03-electroencephalography.md | 88 +++++++ .../04-intracranial-electroencephalography.md | 91 +++++++ .../05-task-events.md | 16 ++ ...logical-and-other-continuous-recordings.md | 8 + .../08-genetic-descriptor.md | 19 ++ .../09-positron-emission-tomography.md | 117 +++++++++ src/05-derivatives/02-common-data-types.md | 14 ++ src/05-derivatives/03-imaging.md | 27 +++ src/schema/README.md | 168 ++++++++++++- src/schema/metadata/Acknowledgements.yaml | 6 + src/schema/metadata/AcquisitionDuration.yaml | 9 + src/schema/metadata/AcquisitionMode.yaml | 5 + src/schema/metadata/AcquisitionVoxelSize.yaml | 16 ++ src/schema/metadata/Anaesthesia.yaml | 5 + src/schema/metadata/AnalyticalApproach.yaml | 14 ++ .../AnatomicalLandmarkCoordinateSystem.yaml | 14 ++ ...alLandmarkCoordinateSystemDescription.yaml | 7 + .../AnatomicalLandmarkCoordinateUnits.yaml | 11 + .../AnatomicalLandmarkCoordinates.yaml | 18 ++ .../metadata/ArterialSpinLabelingType.yaml | 9 + src/schema/metadata/AssociatedEmptyRoom.yaml | 15 ++ src/schema/metadata/Atlas.yaml | 5 + .../metadata/AttenuationCorrection.yaml | 5 + .../AttenuationCorrectionMethodReference.yaml | 5 + src/schema/metadata/Authors.yaml | 7 + src/schema/metadata/BIDSVersion.yaml | 5 + .../metadata/BackgroundSuppression.yaml | 5 + .../BackgroundSuppressionNumberPulses.yaml | 8 + .../BackgroundSuppressionPulseTime.yaml | 13 + src/schema/metadata/BloodDensity.yaml | 6 + src/schema/metadata/BodyPart.yaml | 6 + src/schema/metadata/BolusCutOffDelayTime.yaml | 20 ++ src/schema/metadata/BolusCutOffFlag.yaml | 6 + src/schema/metadata/BolusCutOffTechnique.yaml | 6 + src/schema/metadata/BrainLocation.yaml | 12 + src/schema/metadata/CASLType.yaml | 9 + src/schema/metadata/CapManufacturer.yaml | 5 + .../metadata/CapManufacturersModelName.yaml | 6 + src/schema/metadata/CellType.yaml | 7 + src/schema/metadata/Code.yaml | 10 + src/schema/metadata/CogAtlasID.yaml | 8 + src/schema/metadata/CogPOID.yaml | 7 + .../metadata/CoilCombinationMethod.yaml | 9 + src/schema/metadata/Columns.yaml | 7 + .../metadata/ContinuousHeadLocalization.yaml | 6 + .../metadata/ContrastBolusIngredient.yaml | 14 ++ src/schema/metadata/DCOffsetCorrection.yaml | 7 + src/schema/metadata/DatasetDOI.yaml | 10 + src/schema/metadata/DatasetType.yaml | 10 + .../metadata/DecayCorrectionFactor.yaml | 7 + src/schema/metadata/DelayAfterTrigger.yaml | 10 + src/schema/metadata/DelayTime.yaml | 13 + src/schema/metadata/Density.yaml | 9 + src/schema/metadata/Description.yaml | 5 + src/schema/metadata/DeviceSerialNumber.yaml | 8 + src/schema/metadata/DewarPosition.yaml | 7 + src/schema/metadata/DigitizedHeadPoints.yaml | 6 + .../DigitizedHeadPointsCoordinateSystem.yaml | 14 ++ ...HeadPointsCoordinateSystemDescription.yaml | 7 + .../DigitizedHeadPointsCoordinateUnits.yaml | 11 + src/schema/metadata/DigitizedLandmarks.yaml | 6 + src/schema/metadata/DispersionConstant.yaml | 7 + src/schema/metadata/DispersionCorrected.yaml | 6 + src/schema/metadata/DwellTime.yaml | 15 ++ src/schema/metadata/ECGChannelCount.yaml | 6 + src/schema/metadata/ECOGChannelCount.yaml | 6 + src/schema/metadata/EEGChannelCount.yaml | 6 + src/schema/metadata/EEGCoordinateSystem.yaml | 20 ++ .../EEGCoordinateSystemDescription.yaml | 11 + src/schema/metadata/EEGCoordinateUnits.yaml | 11 + src/schema/metadata/EEGGround.yaml | 6 + src/schema/metadata/EEGPlacementScheme.yaml | 7 + src/schema/metadata/EEGReference.yaml | 10 + src/schema/metadata/EMGChannelCount.yaml | 6 + src/schema/metadata/EOGChannelCount.yaml | 6 + src/schema/metadata/EchoTime.yaml | 26 ++ src/schema/metadata/EchoTime1.yaml | 7 + src/schema/metadata/EchoTime2.yaml | 7 + src/schema/metadata/EffectiveEchoSpacing.yaml | 17 ++ .../metadata/ElectricalStimulation.yaml | 7 + .../ElectricalStimulationParameters.yaml | 7 + .../metadata/ElectrodeManufacturer.yaml | 8 + .../ElectrodeManufacturersModelName.yaml | 6 + src/schema/metadata/EpochLength.yaml | 8 + src/schema/metadata/EthicsApprovals.yaml | 8 + .../metadata/FiducialsCoordinateSystem.yaml | 15 ++ .../FiducialsCoordinateSystemDescription.yaml | 7 + .../metadata/FiducialsCoordinateUnits.yaml | 12 + src/schema/metadata/FiducialsCoordinates.yaml | 16 ++ src/schema/metadata/FiducialsDescription.yaml | 8 + src/schema/metadata/FlipAngle.yaml | 29 +++ src/schema/metadata/FrameDuration.yaml | 9 + src/schema/metadata/FrameTimesStart.yaml | 8 + src/schema/metadata/Funding.yaml | 7 + src/schema/metadata/GeneratedBy.yaml | 28 +++ src/schema/metadata/GeneticLevel.yaml | 11 + src/schema/metadata/Genetics.Database.yaml | 7 + src/schema/metadata/Genetics.Dataset.yaml | 7 + src/schema/metadata/Genetics.Descriptors.yaml | 12 + src/schema/metadata/Genetics.yaml | 12 + src/schema/metadata/GradientSetType.yaml | 8 + src/schema/metadata/HEDVersion.yaml | 6 + src/schema/metadata/Haematocrit.yaml | 6 + .../HardcopyDeviceSoftwareVersion.yaml | 7 + src/schema/metadata/HardwareFilters.yaml | 14 ++ src/schema/metadata/HeadCircumference.yaml | 7 + .../metadata/HeadCoilCoordinateSystem.yaml | 14 ++ .../HeadCoilCoordinateSystemDescription.yaml | 7 + .../metadata/HeadCoilCoordinateUnits.yaml | 11 + src/schema/metadata/HeadCoilCoordinates.yaml | 21 ++ src/schema/metadata/HeadCoilFrequency.yaml | 14 ++ src/schema/metadata/HowToAcknowledge.yaml | 8 + src/schema/metadata/ImageDecayCorrected.yaml | 5 + .../metadata/ImageDecayCorrectionTime.yaml | 7 + .../metadata/InfusionRadioactivity.yaml | 8 + src/schema/metadata/InfusionSpeed.yaml | 5 + src/schema/metadata/InfusionSpeedUnits.yaml | 6 + src/schema/metadata/InfusionStart.yaml | 7 + src/schema/metadata/InjectedMass.yaml | 12 + .../metadata/InjectedMassPerWeight.yaml | 5 + .../metadata/InjectedMassPerWeightUnits.yaml | 7 + src/schema/metadata/InjectedMassUnits.yaml | 12 + .../metadata/InjectedRadioactivity.yaml | 8 + .../metadata/InjectedRadioactivityUnits.yaml | 6 + src/schema/metadata/InjectedVolume.yaml | 6 + src/schema/metadata/InjectionEnd.yaml | 7 + src/schema/metadata/InjectionStart.yaml | 9 + src/schema/metadata/InstitutionAddress.yaml | 7 + src/schema/metadata/InstitutionName.yaml | 7 + .../metadata/InstitutionalDepartmentName.yaml | 7 + src/schema/metadata/Instructions.yaml | 7 + src/schema/metadata/IntendedFor.yaml | 15 ++ src/schema/metadata/InversionTime.yaml | 11 + src/schema/metadata/LabelingDistance.yaml | 11 + src/schema/metadata/LabelingDuration.yaml | 24 ++ src/schema/metadata/LabelingEfficiency.yaml | 7 + .../metadata/LabelingLocationDescription.yaml | 11 + src/schema/metadata/LabelingOrientation.yaml | 10 + .../metadata/LabelingPulseAverageB1.yaml | 8 + .../LabelingPulseAverageGradient.yaml | 7 + .../metadata/LabelingPulseDuration.yaml | 7 + .../metadata/LabelingPulseFlipAngle.yaml | 10 + .../metadata/LabelingPulseInterval.yaml | 7 + .../LabelingPulseMaximumGradient.yaml | 8 + .../metadata/LabelingSlabThickness.yaml | 9 + src/schema/metadata/Levels.yaml | 8 + src/schema/metadata/License.yaml | 9 + src/schema/metadata/LongName.yaml | 5 + src/schema/metadata/LookLocker.yaml | 5 + src/schema/metadata/M0Estimate.yaml | 8 + src/schema/metadata/M0Type.yaml | 15 ++ src/schema/metadata/MEGChannelCount.yaml | 6 + src/schema/metadata/MEGCoordinateSystem.yaml | 13 + .../MEGCoordinateSystemDescription.yaml | 7 + src/schema/metadata/MEGCoordinateUnits.yaml | 11 + src/schema/metadata/MEGREFChannelCount.yaml | 8 + src/schema/metadata/MRAcquisitionType.yaml | 10 + .../metadata/MRTransmitCoilSequence.yaml | 6 + src/schema/metadata/MTNumberOfPulses.yaml | 5 + src/schema/metadata/MTOffsetFrequency.yaml | 7 + src/schema/metadata/MTPulseBandwidth.yaml | 6 + src/schema/metadata/MTPulseDuration.yaml | 6 + src/schema/metadata/MTPulseShape.yaml | 17 ++ src/schema/metadata/MTState.yaml | 6 + .../metadata/MagneticFieldStrength.yaml | 6 + src/schema/metadata/Manual.yaml | 6 + src/schema/metadata/Manufacturer.yaml | 6 + .../metadata/ManufacturersModelName.yaml | 7 + src/schema/metadata/MatrixCoilMode.yaml | 9 + src/schema/metadata/MaxMovement.yaml | 7 + src/schema/metadata/MetaboliteAvail.yaml | 7 + src/schema/metadata/MetaboliteMethod.yaml | 5 + .../MetaboliteRecoveryCorrectionApplied.yaml | 8 + src/schema/metadata/MiscChannelCount.yaml | 6 + src/schema/metadata/MixingTime.yaml | 10 + src/schema/metadata/ModeOfAdministration.yaml | 6 + src/schema/metadata/MolarActivity.yaml | 6 + .../metadata/MolarActivityMeasTime.yaml | 7 + src/schema/metadata/MolarActivityUnits.yaml | 6 + .../metadata/MultibandAccelerationFactor.yaml | 5 + src/schema/metadata/MultipartID.yaml | 6 + src/schema/metadata/Name.yaml | 5 + src/schema/metadata/NegativeContrast.yaml | 10 + .../metadata/NonlinearGradientCorrection.yaml | 6 + .../NumberOfVolumesDiscardedByScanner.yaml | 15 ++ .../NumberOfVolumesDiscardedByUser.yaml | 12 + src/schema/metadata/NumberShots.yaml | 18 ++ src/schema/metadata/OperatingSystem.yaml | 6 + src/schema/metadata/PASLType.yaml | 6 + src/schema/metadata/PCASLType.yaml | 9 + .../ParallelAcquisitionTechnique.yaml | 6 + .../ParallelReductionFactorInPlane.yaml | 8 + src/schema/metadata/PartialFourier.yaml | 6 + .../metadata/PartialFourierDirection.yaml | 6 + .../metadata/PharmaceuticalDoseAmount.yaml | 9 + .../metadata/PharmaceuticalDoseRegimen.yaml | 7 + .../metadata/PharmaceuticalDoseTime.yaml | 17 ++ .../metadata/PharmaceuticalDoseUnits.yaml | 7 + src/schema/metadata/PharmaceuticalName.yaml | 5 + .../metadata/PhaseEncodingDirection.yaml | 12 + src/schema/metadata/PlasmaAvail.yaml | 5 + src/schema/metadata/PlasmaFreeFraction.yaml | 9 + .../metadata/PlasmaFreeFractionMethod.yaml | 5 + src/schema/metadata/PostLabelingDelay.yaml | 24 ++ src/schema/metadata/PowerLineFrequency.yaml | 11 + src/schema/metadata/PromptRate.yaml | 7 + src/schema/metadata/PulseSequenceDetails.yaml | 9 + src/schema/metadata/PulseSequenceType.yaml | 7 + src/schema/metadata/Purity.yaml | 7 + src/schema/metadata/RandomRate.yaml | 7 + src/schema/metadata/RawSources.yaml | 9 + .../metadata/ReceiveCoilActiveElements.yaml | 8 + src/schema/metadata/ReceiveCoilName.yaml | 9 + src/schema/metadata/ReconFilterSize.yaml | 11 + src/schema/metadata/ReconFilterType.yaml | 9 + .../ReconMethodImplementationVersion.yaml | 5 + src/schema/metadata/ReconMethodName.yaml | 5 + .../metadata/ReconMethodParameterLabels.yaml | 7 + .../metadata/ReconMethodParameterUnits.yaml | 8 + .../metadata/ReconMethodParameterValues.yaml | 7 + src/schema/metadata/RecordingDuration.yaml | 6 + src/schema/metadata/RecordingType.yaml | 11 + src/schema/metadata/ReferencesAndLinks.yaml | 9 + src/schema/metadata/RepetitionTime.yaml | 19 ++ .../metadata/RepetitionTimeExcitation.yaml | 23 ++ .../metadata/RepetitionTimePreparation.yaml | 20 ++ src/schema/metadata/Resolution.yaml | 9 + src/schema/metadata/SEEGChannelCount.yaml | 6 + src/schema/metadata/SampleOrigin.yaml | 16 ++ src/schema/metadata/SamplingFrequency.yaml | 7 + src/schema/metadata/ScaleFactor.yaml | 7 + src/schema/metadata/ScanDate.yaml | 8 + src/schema/metadata/ScanOptions.yaml | 10 + src/schema/metadata/ScanStart.yaml | 6 + src/schema/metadata/ScanningSequence.yaml | 10 + src/schema/metadata/ScatterFraction.yaml | 7 + src/schema/metadata/SequenceName.yaml | 6 + src/schema/metadata/SequenceVariant.yaml | 10 + src/schema/metadata/SinglesRate.yaml | 7 + src/schema/metadata/SkullStripped.yaml | 5 + .../metadata/SliceEncodingDirection.yaml | 23 ++ src/schema/metadata/SliceTiming.yaml | 22 ++ src/schema/metadata/SoftwareFilters.yaml | 17 ++ src/schema/metadata/SoftwareName.yaml | 5 + src/schema/metadata/SoftwareRRID.yaml | 8 + src/schema/metadata/SoftwareVersion.yaml | 5 + src/schema/metadata/SoftwareVersions.yaml | 7 + src/schema/metadata/SourceDatasets.yaml | 20 ++ src/schema/metadata/Sources.yaml | 15 ++ .../metadata/SpecificRadioactivity.yaml | 10 + .../SpecificRadioactivityMeasTime.yaml | 7 + .../metadata/SpecificRadioactivityUnits.yaml | 11 + .../metadata/SpoilingGradientDuration.yaml | 8 + .../metadata/SpoilingGradientMoment.yaml | 7 + .../metadata/SpoilingRFPhaseIncrement.yaml | 8 + src/schema/metadata/SpoilingState.yaml | 6 + src/schema/metadata/SpoilingType.yaml | 10 + src/schema/metadata/StartTime.yaml | 7 + src/schema/metadata/StationName.yaml | 7 + src/schema/metadata/StimulusPresentation.yaml | 23 ++ .../metadata/SubjectArtefactDescription.yaml | 8 + src/schema/metadata/TaskDescription.yaml | 5 + src/schema/metadata/TaskName.yaml | 12 + src/schema/metadata/TermURL.yaml | 6 + src/schema/metadata/TimeZero.yaml | 8 + src/schema/metadata/TissueOrigin.yaml | 14 ++ src/schema/metadata/TotalAcquiredPairs.yaml | 7 + src/schema/metadata/TotalReadoutTime.yaml | 13 + .../metadata/TracerMolecularWeight.yaml | 5 + .../metadata/TracerMolecularWeightUnits.yaml | 6 + src/schema/metadata/TracerName.yaml | 5 + src/schema/metadata/TracerRadLex.yaml | 5 + src/schema/metadata/TracerRadionuclide.yaml | 5 + src/schema/metadata/TracerSNOMED.yaml | 6 + src/schema/metadata/TriggerChannelCount.yaml | 6 + src/schema/metadata/TubingLength.yaml | 6 + src/schema/metadata/TubingType.yaml | 6 + src/schema/metadata/Type.yaml | 12 + src/schema/metadata/Units.yaml | 8 + src/schema/metadata/VascularCrushing.yaml | 6 + src/schema/metadata/VascularCrushingVENC.yaml | 15 ++ src/schema/metadata/VolumeTiming.yaml | 15 ++ src/schema/metadata/WholeBloodAvail.yaml | 7 + src/schema/metadata/WithdrawalRate.yaml | 7 + src/schema/metadata/_CoordUnits.yaml | 7 + src/schema/metadata/_EEGCoordSys.yaml | 5 + src/schema/metadata/_GeneticLevelEnum.yaml | 9 + src/schema/metadata/_LandmarkCoordinates.yaml | 8 + src/schema/metadata/_MEGCoordSys.yaml | 9 + .../metadata/_StandardTemplateCoordSys.yaml | 25 ++ .../_StandardTemplateDeprecatedCoordSys.yaml | 17 ++ src/schema/metadata/_iEEGCoordSys.yaml | 6 + src/schema/metadata/_template.yaml | 5 + .../iEEGCoordinateProcessingDescription.yaml | 6 + .../iEEGCoordinateProcessingReference.yaml | 6 + src/schema/metadata/iEEGCoordinateSystem.yaml | 18 ++ .../iEEGCoordinateSystemDescription.yaml | 7 + src/schema/metadata/iEEGCoordinateUnits.yaml | 12 + src/schema/metadata/iEEGElectrodeGroups.yaml | 8 + src/schema/metadata/iEEGGround.yaml | 6 + src/schema/metadata/iEEGPlacementScheme.yaml | 9 + src/schema/metadata/iEEGReference.yaml | 13 + tools/mkdocs_macros_bidsschema/main.py | 8 +- tools/schemacode/macros.py | 25 ++ tools/schemacode/schema.py | 182 +++++++++++++- 309 files changed, 3811 insertions(+), 22 deletions(-) create mode 100644 src/schema/metadata/Acknowledgements.yaml create mode 100644 src/schema/metadata/AcquisitionDuration.yaml create mode 100644 src/schema/metadata/AcquisitionMode.yaml create mode 100644 src/schema/metadata/AcquisitionVoxelSize.yaml create mode 100644 src/schema/metadata/Anaesthesia.yaml create mode 100644 src/schema/metadata/AnalyticalApproach.yaml create mode 100644 src/schema/metadata/AnatomicalLandmarkCoordinateSystem.yaml create mode 100644 src/schema/metadata/AnatomicalLandmarkCoordinateSystemDescription.yaml create mode 100644 src/schema/metadata/AnatomicalLandmarkCoordinateUnits.yaml create mode 100644 src/schema/metadata/AnatomicalLandmarkCoordinates.yaml create mode 100644 src/schema/metadata/ArterialSpinLabelingType.yaml create mode 100644 src/schema/metadata/AssociatedEmptyRoom.yaml create mode 100644 src/schema/metadata/Atlas.yaml create mode 100644 src/schema/metadata/AttenuationCorrection.yaml create mode 100644 src/schema/metadata/AttenuationCorrectionMethodReference.yaml create mode 100644 src/schema/metadata/Authors.yaml create mode 100644 src/schema/metadata/BIDSVersion.yaml create mode 100644 src/schema/metadata/BackgroundSuppression.yaml create mode 100644 src/schema/metadata/BackgroundSuppressionNumberPulses.yaml create mode 100644 src/schema/metadata/BackgroundSuppressionPulseTime.yaml create mode 100644 src/schema/metadata/BloodDensity.yaml create mode 100644 src/schema/metadata/BodyPart.yaml create mode 100644 src/schema/metadata/BolusCutOffDelayTime.yaml create mode 100644 src/schema/metadata/BolusCutOffFlag.yaml create mode 100644 src/schema/metadata/BolusCutOffTechnique.yaml create mode 100644 src/schema/metadata/BrainLocation.yaml create mode 100644 src/schema/metadata/CASLType.yaml create mode 100644 src/schema/metadata/CapManufacturer.yaml create mode 100644 src/schema/metadata/CapManufacturersModelName.yaml create mode 100644 src/schema/metadata/CellType.yaml create mode 100644 src/schema/metadata/Code.yaml create mode 100644 src/schema/metadata/CogAtlasID.yaml create mode 100644 src/schema/metadata/CogPOID.yaml create mode 100644 src/schema/metadata/CoilCombinationMethod.yaml create mode 100644 src/schema/metadata/Columns.yaml create mode 100644 src/schema/metadata/ContinuousHeadLocalization.yaml create mode 100644 src/schema/metadata/ContrastBolusIngredient.yaml create mode 100644 src/schema/metadata/DCOffsetCorrection.yaml create mode 100644 src/schema/metadata/DatasetDOI.yaml create mode 100644 src/schema/metadata/DatasetType.yaml create mode 100644 src/schema/metadata/DecayCorrectionFactor.yaml create mode 100644 src/schema/metadata/DelayAfterTrigger.yaml create mode 100644 src/schema/metadata/DelayTime.yaml create mode 100644 src/schema/metadata/Density.yaml create mode 100644 src/schema/metadata/Description.yaml create mode 100644 src/schema/metadata/DeviceSerialNumber.yaml create mode 100644 src/schema/metadata/DewarPosition.yaml create mode 100644 src/schema/metadata/DigitizedHeadPoints.yaml create mode 100644 src/schema/metadata/DigitizedHeadPointsCoordinateSystem.yaml create mode 100644 src/schema/metadata/DigitizedHeadPointsCoordinateSystemDescription.yaml create mode 100644 src/schema/metadata/DigitizedHeadPointsCoordinateUnits.yaml create mode 100644 src/schema/metadata/DigitizedLandmarks.yaml create mode 100644 src/schema/metadata/DispersionConstant.yaml create mode 100644 src/schema/metadata/DispersionCorrected.yaml create mode 100644 src/schema/metadata/DwellTime.yaml create mode 100644 src/schema/metadata/ECGChannelCount.yaml create mode 100644 src/schema/metadata/ECOGChannelCount.yaml create mode 100644 src/schema/metadata/EEGChannelCount.yaml create mode 100644 src/schema/metadata/EEGCoordinateSystem.yaml create mode 100644 src/schema/metadata/EEGCoordinateSystemDescription.yaml create mode 100644 src/schema/metadata/EEGCoordinateUnits.yaml create mode 100644 src/schema/metadata/EEGGround.yaml create mode 100644 src/schema/metadata/EEGPlacementScheme.yaml create mode 100644 src/schema/metadata/EEGReference.yaml create mode 100644 src/schema/metadata/EMGChannelCount.yaml create mode 100644 src/schema/metadata/EOGChannelCount.yaml create mode 100644 src/schema/metadata/EchoTime.yaml create mode 100644 src/schema/metadata/EchoTime1.yaml create mode 100644 src/schema/metadata/EchoTime2.yaml create mode 100644 src/schema/metadata/EffectiveEchoSpacing.yaml create mode 100644 src/schema/metadata/ElectricalStimulation.yaml create mode 100644 src/schema/metadata/ElectricalStimulationParameters.yaml create mode 100644 src/schema/metadata/ElectrodeManufacturer.yaml create mode 100644 src/schema/metadata/ElectrodeManufacturersModelName.yaml create mode 100644 src/schema/metadata/EpochLength.yaml create mode 100644 src/schema/metadata/EthicsApprovals.yaml create mode 100644 src/schema/metadata/FiducialsCoordinateSystem.yaml create mode 100644 src/schema/metadata/FiducialsCoordinateSystemDescription.yaml create mode 100644 src/schema/metadata/FiducialsCoordinateUnits.yaml create mode 100644 src/schema/metadata/FiducialsCoordinates.yaml create mode 100644 src/schema/metadata/FiducialsDescription.yaml create mode 100644 src/schema/metadata/FlipAngle.yaml create mode 100644 src/schema/metadata/FrameDuration.yaml create mode 100644 src/schema/metadata/FrameTimesStart.yaml create mode 100644 src/schema/metadata/Funding.yaml create mode 100644 src/schema/metadata/GeneratedBy.yaml create mode 100644 src/schema/metadata/GeneticLevel.yaml create mode 100644 src/schema/metadata/Genetics.Database.yaml create mode 100644 src/schema/metadata/Genetics.Dataset.yaml create mode 100644 src/schema/metadata/Genetics.Descriptors.yaml create mode 100644 src/schema/metadata/Genetics.yaml create mode 100644 src/schema/metadata/GradientSetType.yaml create mode 100644 src/schema/metadata/HEDVersion.yaml create mode 100644 src/schema/metadata/Haematocrit.yaml create mode 100644 src/schema/metadata/HardcopyDeviceSoftwareVersion.yaml create mode 100644 src/schema/metadata/HardwareFilters.yaml create mode 100644 src/schema/metadata/HeadCircumference.yaml create mode 100644 src/schema/metadata/HeadCoilCoordinateSystem.yaml create mode 100644 src/schema/metadata/HeadCoilCoordinateSystemDescription.yaml create mode 100644 src/schema/metadata/HeadCoilCoordinateUnits.yaml create mode 100644 src/schema/metadata/HeadCoilCoordinates.yaml create mode 100644 src/schema/metadata/HeadCoilFrequency.yaml create mode 100644 src/schema/metadata/HowToAcknowledge.yaml create mode 100644 src/schema/metadata/ImageDecayCorrected.yaml create mode 100644 src/schema/metadata/ImageDecayCorrectionTime.yaml create mode 100644 src/schema/metadata/InfusionRadioactivity.yaml create mode 100644 src/schema/metadata/InfusionSpeed.yaml create mode 100644 src/schema/metadata/InfusionSpeedUnits.yaml create mode 100644 src/schema/metadata/InfusionStart.yaml create mode 100644 src/schema/metadata/InjectedMass.yaml create mode 100644 src/schema/metadata/InjectedMassPerWeight.yaml create mode 100644 src/schema/metadata/InjectedMassPerWeightUnits.yaml create mode 100644 src/schema/metadata/InjectedMassUnits.yaml create mode 100644 src/schema/metadata/InjectedRadioactivity.yaml create mode 100644 src/schema/metadata/InjectedRadioactivityUnits.yaml create mode 100644 src/schema/metadata/InjectedVolume.yaml create mode 100644 src/schema/metadata/InjectionEnd.yaml create mode 100644 src/schema/metadata/InjectionStart.yaml create mode 100644 src/schema/metadata/InstitutionAddress.yaml create mode 100644 src/schema/metadata/InstitutionName.yaml create mode 100644 src/schema/metadata/InstitutionalDepartmentName.yaml create mode 100644 src/schema/metadata/Instructions.yaml create mode 100644 src/schema/metadata/IntendedFor.yaml create mode 100644 src/schema/metadata/InversionTime.yaml create mode 100644 src/schema/metadata/LabelingDistance.yaml create mode 100644 src/schema/metadata/LabelingDuration.yaml create mode 100644 src/schema/metadata/LabelingEfficiency.yaml create mode 100644 src/schema/metadata/LabelingLocationDescription.yaml create mode 100644 src/schema/metadata/LabelingOrientation.yaml create mode 100644 src/schema/metadata/LabelingPulseAverageB1.yaml create mode 100644 src/schema/metadata/LabelingPulseAverageGradient.yaml create mode 100644 src/schema/metadata/LabelingPulseDuration.yaml create mode 100644 src/schema/metadata/LabelingPulseFlipAngle.yaml create mode 100644 src/schema/metadata/LabelingPulseInterval.yaml create mode 100644 src/schema/metadata/LabelingPulseMaximumGradient.yaml create mode 100644 src/schema/metadata/LabelingSlabThickness.yaml create mode 100644 src/schema/metadata/Levels.yaml create mode 100644 src/schema/metadata/License.yaml create mode 100644 src/schema/metadata/LongName.yaml create mode 100644 src/schema/metadata/LookLocker.yaml create mode 100644 src/schema/metadata/M0Estimate.yaml create mode 100644 src/schema/metadata/M0Type.yaml create mode 100644 src/schema/metadata/MEGChannelCount.yaml create mode 100644 src/schema/metadata/MEGCoordinateSystem.yaml create mode 100644 src/schema/metadata/MEGCoordinateSystemDescription.yaml create mode 100644 src/schema/metadata/MEGCoordinateUnits.yaml create mode 100644 src/schema/metadata/MEGREFChannelCount.yaml create mode 100644 src/schema/metadata/MRAcquisitionType.yaml create mode 100644 src/schema/metadata/MRTransmitCoilSequence.yaml create mode 100644 src/schema/metadata/MTNumberOfPulses.yaml create mode 100644 src/schema/metadata/MTOffsetFrequency.yaml create mode 100644 src/schema/metadata/MTPulseBandwidth.yaml create mode 100644 src/schema/metadata/MTPulseDuration.yaml create mode 100644 src/schema/metadata/MTPulseShape.yaml create mode 100644 src/schema/metadata/MTState.yaml create mode 100644 src/schema/metadata/MagneticFieldStrength.yaml create mode 100644 src/schema/metadata/Manual.yaml create mode 100644 src/schema/metadata/Manufacturer.yaml create mode 100644 src/schema/metadata/ManufacturersModelName.yaml create mode 100644 src/schema/metadata/MatrixCoilMode.yaml create mode 100644 src/schema/metadata/MaxMovement.yaml create mode 100644 src/schema/metadata/MetaboliteAvail.yaml create mode 100644 src/schema/metadata/MetaboliteMethod.yaml create mode 100644 src/schema/metadata/MetaboliteRecoveryCorrectionApplied.yaml create mode 100644 src/schema/metadata/MiscChannelCount.yaml create mode 100644 src/schema/metadata/MixingTime.yaml create mode 100644 src/schema/metadata/ModeOfAdministration.yaml create mode 100644 src/schema/metadata/MolarActivity.yaml create mode 100644 src/schema/metadata/MolarActivityMeasTime.yaml create mode 100644 src/schema/metadata/MolarActivityUnits.yaml create mode 100644 src/schema/metadata/MultibandAccelerationFactor.yaml create mode 100644 src/schema/metadata/MultipartID.yaml create mode 100644 src/schema/metadata/Name.yaml create mode 100644 src/schema/metadata/NegativeContrast.yaml create mode 100644 src/schema/metadata/NonlinearGradientCorrection.yaml create mode 100644 src/schema/metadata/NumberOfVolumesDiscardedByScanner.yaml create mode 100644 src/schema/metadata/NumberOfVolumesDiscardedByUser.yaml create mode 100644 src/schema/metadata/NumberShots.yaml create mode 100644 src/schema/metadata/OperatingSystem.yaml create mode 100644 src/schema/metadata/PASLType.yaml create mode 100644 src/schema/metadata/PCASLType.yaml create mode 100644 src/schema/metadata/ParallelAcquisitionTechnique.yaml create mode 100644 src/schema/metadata/ParallelReductionFactorInPlane.yaml create mode 100644 src/schema/metadata/PartialFourier.yaml create mode 100644 src/schema/metadata/PartialFourierDirection.yaml create mode 100644 src/schema/metadata/PharmaceuticalDoseAmount.yaml create mode 100644 src/schema/metadata/PharmaceuticalDoseRegimen.yaml create mode 100644 src/schema/metadata/PharmaceuticalDoseTime.yaml create mode 100644 src/schema/metadata/PharmaceuticalDoseUnits.yaml create mode 100644 src/schema/metadata/PharmaceuticalName.yaml create mode 100644 src/schema/metadata/PhaseEncodingDirection.yaml create mode 100644 src/schema/metadata/PlasmaAvail.yaml create mode 100644 src/schema/metadata/PlasmaFreeFraction.yaml create mode 100644 src/schema/metadata/PlasmaFreeFractionMethod.yaml create mode 100644 src/schema/metadata/PostLabelingDelay.yaml create mode 100644 src/schema/metadata/PowerLineFrequency.yaml create mode 100644 src/schema/metadata/PromptRate.yaml create mode 100644 src/schema/metadata/PulseSequenceDetails.yaml create mode 100644 src/schema/metadata/PulseSequenceType.yaml create mode 100644 src/schema/metadata/Purity.yaml create mode 100644 src/schema/metadata/RandomRate.yaml create mode 100644 src/schema/metadata/RawSources.yaml create mode 100644 src/schema/metadata/ReceiveCoilActiveElements.yaml create mode 100644 src/schema/metadata/ReceiveCoilName.yaml create mode 100644 src/schema/metadata/ReconFilterSize.yaml create mode 100644 src/schema/metadata/ReconFilterType.yaml create mode 100644 src/schema/metadata/ReconMethodImplementationVersion.yaml create mode 100644 src/schema/metadata/ReconMethodName.yaml create mode 100644 src/schema/metadata/ReconMethodParameterLabels.yaml create mode 100644 src/schema/metadata/ReconMethodParameterUnits.yaml create mode 100644 src/schema/metadata/ReconMethodParameterValues.yaml create mode 100644 src/schema/metadata/RecordingDuration.yaml create mode 100644 src/schema/metadata/RecordingType.yaml create mode 100644 src/schema/metadata/ReferencesAndLinks.yaml create mode 100644 src/schema/metadata/RepetitionTime.yaml create mode 100644 src/schema/metadata/RepetitionTimeExcitation.yaml create mode 100644 src/schema/metadata/RepetitionTimePreparation.yaml create mode 100644 src/schema/metadata/Resolution.yaml create mode 100644 src/schema/metadata/SEEGChannelCount.yaml create mode 100644 src/schema/metadata/SampleOrigin.yaml create mode 100644 src/schema/metadata/SamplingFrequency.yaml create mode 100644 src/schema/metadata/ScaleFactor.yaml create mode 100644 src/schema/metadata/ScanDate.yaml create mode 100644 src/schema/metadata/ScanOptions.yaml create mode 100644 src/schema/metadata/ScanStart.yaml create mode 100644 src/schema/metadata/ScanningSequence.yaml create mode 100644 src/schema/metadata/ScatterFraction.yaml create mode 100644 src/schema/metadata/SequenceName.yaml create mode 100644 src/schema/metadata/SequenceVariant.yaml create mode 100644 src/schema/metadata/SinglesRate.yaml create mode 100644 src/schema/metadata/SkullStripped.yaml create mode 100644 src/schema/metadata/SliceEncodingDirection.yaml create mode 100644 src/schema/metadata/SliceTiming.yaml create mode 100644 src/schema/metadata/SoftwareFilters.yaml create mode 100644 src/schema/metadata/SoftwareName.yaml create mode 100644 src/schema/metadata/SoftwareRRID.yaml create mode 100644 src/schema/metadata/SoftwareVersion.yaml create mode 100644 src/schema/metadata/SoftwareVersions.yaml create mode 100644 src/schema/metadata/SourceDatasets.yaml create mode 100644 src/schema/metadata/Sources.yaml create mode 100644 src/schema/metadata/SpecificRadioactivity.yaml create mode 100644 src/schema/metadata/SpecificRadioactivityMeasTime.yaml create mode 100644 src/schema/metadata/SpecificRadioactivityUnits.yaml create mode 100644 src/schema/metadata/SpoilingGradientDuration.yaml create mode 100644 src/schema/metadata/SpoilingGradientMoment.yaml create mode 100644 src/schema/metadata/SpoilingRFPhaseIncrement.yaml create mode 100644 src/schema/metadata/SpoilingState.yaml create mode 100644 src/schema/metadata/SpoilingType.yaml create mode 100644 src/schema/metadata/StartTime.yaml create mode 100644 src/schema/metadata/StationName.yaml create mode 100644 src/schema/metadata/StimulusPresentation.yaml create mode 100644 src/schema/metadata/SubjectArtefactDescription.yaml create mode 100644 src/schema/metadata/TaskDescription.yaml create mode 100644 src/schema/metadata/TaskName.yaml create mode 100644 src/schema/metadata/TermURL.yaml create mode 100644 src/schema/metadata/TimeZero.yaml create mode 100644 src/schema/metadata/TissueOrigin.yaml create mode 100644 src/schema/metadata/TotalAcquiredPairs.yaml create mode 100644 src/schema/metadata/TotalReadoutTime.yaml create mode 100644 src/schema/metadata/TracerMolecularWeight.yaml create mode 100644 src/schema/metadata/TracerMolecularWeightUnits.yaml create mode 100644 src/schema/metadata/TracerName.yaml create mode 100644 src/schema/metadata/TracerRadLex.yaml create mode 100644 src/schema/metadata/TracerRadionuclide.yaml create mode 100644 src/schema/metadata/TracerSNOMED.yaml create mode 100644 src/schema/metadata/TriggerChannelCount.yaml create mode 100644 src/schema/metadata/TubingLength.yaml create mode 100644 src/schema/metadata/TubingType.yaml create mode 100644 src/schema/metadata/Type.yaml create mode 100644 src/schema/metadata/Units.yaml create mode 100644 src/schema/metadata/VascularCrushing.yaml create mode 100644 src/schema/metadata/VascularCrushingVENC.yaml create mode 100644 src/schema/metadata/VolumeTiming.yaml create mode 100644 src/schema/metadata/WholeBloodAvail.yaml create mode 100644 src/schema/metadata/WithdrawalRate.yaml create mode 100644 src/schema/metadata/_CoordUnits.yaml create mode 100644 src/schema/metadata/_EEGCoordSys.yaml create mode 100644 src/schema/metadata/_GeneticLevelEnum.yaml create mode 100644 src/schema/metadata/_LandmarkCoordinates.yaml create mode 100644 src/schema/metadata/_MEGCoordSys.yaml create mode 100644 src/schema/metadata/_StandardTemplateCoordSys.yaml create mode 100644 src/schema/metadata/_StandardTemplateDeprecatedCoordSys.yaml create mode 100644 src/schema/metadata/_iEEGCoordSys.yaml create mode 100644 src/schema/metadata/_template.yaml create mode 100644 src/schema/metadata/iEEGCoordinateProcessingDescription.yaml create mode 100644 src/schema/metadata/iEEGCoordinateProcessingReference.yaml create mode 100644 src/schema/metadata/iEEGCoordinateSystem.yaml create mode 100644 src/schema/metadata/iEEGCoordinateSystemDescription.yaml create mode 100644 src/schema/metadata/iEEGCoordinateUnits.yaml create mode 100644 src/schema/metadata/iEEGElectrodeGroups.yaml create mode 100644 src/schema/metadata/iEEGGround.yaml create mode 100644 src/schema/metadata/iEEGPlacementScheme.yaml create mode 100644 src/schema/metadata/iEEGReference.yaml diff --git a/src/02-common-principles.md b/src/02-common-principles.md index 1b80867bc1..fd13459c3a 100644 --- a/src/02-common-principles.md +++ b/src/02-common-principles.md @@ -508,6 +508,16 @@ Note that if a field name included in the data dictionary matches a column name then that field MUST contain a description of the corresponding column, using an object containing the following fields: +{{ MACROS___make_metadata_table( + { + "LongName": "OPTIONAL", + "Description": "RECOMMENDED", + "Levels": "RECOMMENDED", + "Units": "RECOMMENDED", + "TermURL": "RECOMMENDED", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ------------ | --------------------- | ------------------------- | --------------------------------------------------------------------------------------------------------------- | | LongName | OPTIONAL | [string][] | Long (unabbreviated) name of the column. | diff --git a/src/03-modality-agnostic-files.md b/src/03-modality-agnostic-files.md index df377468cd..931213bf2a 100644 --- a/src/03-modality-agnostic-files.md +++ b/src/03-modality-agnostic-files.md @@ -14,6 +14,23 @@ Templates: The file `dataset_description.json` is a JSON file describing the dataset. Every dataset MUST include this file with the following fields: +{{ MACROS___make_metadata_table( + { + "Name": "REQUIRED", + "BIDSVersion": "REQUIRED", + "HEDVersion": "RECOMMENDED", + "DatasetType": "RECOMMENDED", + "License": "RECOMMENDED", + "Authors": "OPTIONAL", + "Acknowledgements": "OPTIONAL", + "HowToAcknowledge": "OPTIONAL", + "Funding": "OPTIONAL", + "EthicsApprovals": "OPTIONAL", + "ReferencesAndLinks": "OPTIONAL", + "DatasetDOI": "OPTIONAL", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | |--------------------|-----------------------|--------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | Name | REQUIRED | [string][] | Name of the dataset. | @@ -69,6 +86,13 @@ In addition to the keys for raw BIDS datasets, derived BIDS datasets include the following REQUIRED and RECOMMENDED `dataset_description.json` keys: +{{ MACROS___make_metadata_table( + { + "GeneratedBy": "REQUIRED", + "SourceDatasets": "RECOMMENDED", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | |----------------|-----------------------|--------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | GeneratedBy | REQUIRED | [array][] of [objects][] | Used to specify provenance of the derived dataset. See table below for contents of each object. | @@ -339,7 +363,7 @@ The purpose of this file is to describe timing and other properties of each imaging acquisition sequence (each *run* file) within one session. Each neural recording *file* SHOULD be described by exactly one row. -Some recordings consist of multiple parts, that span several files, +Some recordings consist of multiple parts, that span several files, for example through `echo-`, `part-`, or `split-` entities. Such recordings MUST be documented with one row per file. @@ -347,7 +371,7 @@ Relative paths to files should be used under a compulsory `filename` header. If acquisition time is included it should be listed under the `acq_time` header. Acquisition time refers to when the first data point in each run was acquired. -Furthermore, if this header is provided, the acquisition times of all files that +Furthermore, if this header is provided, the acquisition times of all files that belong to a recording MUST be identical. Datetime should be expressed as described in [Units](./02-common-principles.md#units). diff --git a/src/04-modality-specific-files/01-magnetic-resonance-imaging-data.md b/src/04-modality-specific-files/01-magnetic-resonance-imaging-data.md index 3eb1f3eb75..aea34a64db 100644 --- a/src/04-modality-specific-files/01-magnetic-resonance-imaging-data.md +++ b/src/04-modality-specific-files/01-magnetic-resonance-imaging-data.md @@ -10,6 +10,24 @@ by Ben Inglis: ### Scanner Hardware +{{ MACROS___make_metadata_table( + { + "Manufacturer": "RECOMMENDED", + "ManufacturersModelName": "RECOMMENDED", + "DeviceSerialNumber": "RECOMMENDED", + "StationName": "RECOMMENDED", + "SoftwareVersions": "RECOMMENDED", + "HardcopyDeviceSoftwareVersion": "DEPRECATED", + "MagneticFieldStrength": "RECOMMENDED, but REQUIRED for Arterial Spin Labeling", + "ReceiveCoilName": "RECOMMENDED", + "ReceiveCoilActiveElements": "RECOMMENDED", + "GradientSetType": "RECOMMENDED", + "MRTransmitCoilSequence": "RECOMMENDED", + "MatrixCoilMode": "RECOMMENDED", + "CoilCombinationMethod": "RECOMMENDED", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ----------------------------- | ---------------------------------------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Manufacturer | RECOMMENDED | [string][] | Manufacturer of the equipment that produced the composite instances. Corresponds to DICOM Tag 0008, 0070 `Manufacturer` | @@ -43,6 +61,30 @@ that a given scan was collected with the intended coil elements selected ### Sequence Specifics +{{ MACROS___make_metadata_table( + { + "PulseSequenceType": "RECOMMENDED", + "ScanningSequence": "RECOMMENDED", + "SequenceVariant": "RECOMMENDED", + "ScanOptions": "RECOMMENDED", + "SequenceName": "RECOMMENDED", + "PulseSequenceDetails": "RECOMMENDED", + "NonlinearGradientCorrection": "RECOMMENDED, but REQUIRED if [PET](./09-positron-emission-tomography.md) data are present", + "MRAcquisitionType": "RECOMMENDED, but REQUIRED for Arterial Spin Labeling", + "MTState": "RECOMMENDED", + "MTOffsetFrequency": "RECOMMENDED if the MTstate is `True`.", + "MTPulseBandwidth": "RECOMMENDED if the MTstate is `True`.", + "MTNumberOfPulses": "RECOMMENDED if the MTstate is `True`.", + "MTPulseShape": "RECOMMENDED if the MTstate is `True`.", + "MTPulseDuration": "RECOMMENDED if the MTstate is `True`.", + "SpoilingState": "RECOMMENDED", + "SpoilingType": "RECOMMENDED if the SpoilingState is `True`.", + "SpoilingRFPhaseIncrement": 'RECOMMENDED if the SpoilingType is `"RF"` or `"COMBINED"`.', + "SpoilingGradientMoment": 'RECOMMENDED if the SpoilingType is `"GRADIENT"` or `"COMBINED"`.', + "SpoilingGradientDuration": 'RECOMMENDED if the SpoilingType is `"GRADIENT"` or `"COMBINED"`.', + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | --------------------------- | ----------------------------------------------------------------------------------------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | PulseSequenceType | RECOMMENDED | [string][] | A general description of the pulse sequence used for the scan (for example, `"MPRAGE"`, `"Gradient Echo EPI"`, `"Spin Echo EPI"`, `"Multiband gradient echo EPI"`). | @@ -67,6 +109,20 @@ that a given scan was collected with the intended coil elements selected ### In-Plane Spatial Encoding +{{ MACROS___make_metadata_table( + { + "NumberShots": "RECOMMENDED", + "ParallelReductionFactorInPlane": "RECOMMENDED", + "ParallelAcquisitionTechnique": "RECOMMENDED", + "PartialFourier": "RECOMMENDED", + "PartialFourierDirection": "RECOMMENDED", + "PhaseEncodingDirection": "RECOMMENDED", + "EffectiveEchoSpacing": "RECOMMENDED", + "TotalReadoutTime": "RECOMMENDED", + "MixingTime": "RECOMMENDED", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ------------------------------ | --------------------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | NumberShots | RECOMMENDED | [number][] or [array][] of [numbers][] | The number of RF excitations needed to reconstruct a slice or volume (may be referred to as partition). Please mind that this is not the same as Echo Train Length which denotes the number of k-space lines collected after excitation in a multi-echo readout. The data type array is applicable for specifying this parameter before and after the k-space center is sampled. Please see [`NumberShots` metadata field](../99-appendices/11-qmri.md#numbershots-metadata-field) in the qMRI appendix for corresponding calculations. | @@ -92,6 +148,16 @@ and the center of the last "effective" echo, sometimes called the "FSL definitio ### Timing Parameters +{{ MACROS___make_metadata_table( + { + "EchoTime": "RECOMMENDED, but REQUIRED if corresponding fieldmap data is present, or the data comes from a multi echo sequence or Arterial Spin Labeling", + "InversionTime": "RECOMMENDED", + "SliceTiming": "RECOMMENDED, but REQUIRED for sparse sequences that do not have the `DelayTime` field set, and Arterial Spin Labeling with `MRAcquisitionType` set on `2D`.", + "SliceEncodingDirection": "RECOMMENDED", + "DwellTime": "RECOMMENDED", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | EchoTime | RECOMMENDED, but REQUIRED if corresponding fieldmap data is present, or the data comes from a multi echo sequence or Arterial Spin Labeling | [number][] or [array][] of [numbers][] | The echo time (TE) for the acquisition, specified in seconds. Corresponds to DICOM Tag 0018, 0081 Echo Time (please note that the DICOM term is in milliseconds not seconds). The data type number may apply to files from any MRI modality concerned with a single value for this field, or to the files in a [file collection](../99-appendices/10-file-collections.md) where the value of this field is iterated using the [echo entity](../99-appendices/09-entities.md#echo). The data type array provides a value for each volume in a 4D dataset and should only be used when the volume timing is critical for interpretation of the data, such as in [ASL](#arterial-spin-labeling-perfusion-data) or variable echo time fMRI sequences. | @@ -102,6 +168,13 @@ and the center of the last "effective" echo, sometimes called the "FSL definitio ### RF & Contrast +{{ MACROS___make_metadata_table( + { + "FlipAngle": "RECOMMENDED, but REQUIRED if `LookLocker` is set `true`", + "NegativeContrast": "OPTIONAL", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ---------------- | ------------------------------------------------------- | -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | FlipAngle | RECOMMENDED, but REQUIRED if `LookLocker` is set `true` | [number][] or [array][] of [numbers][] | Flip angle (FA) for the acquisition, specified in degrees. Corresponds to: DICOM Tag 0018, 1314 `Flip Angle`. The data type number may apply to files from any MRI modality concerned with a single value for this field, or to the files in a [file collection](../99-appendices/10-file-collections.md) where the value of this field is iterated using the [flip entity](../99-appendices/09-entities.md#flip). The data type array provides a value for each volume in a 4D dataset and should only be used when the volume timing is critical for interpretation of the data, such as in [ASL](#arterial-spin-labeling-perfusion-data) or variable flip angle fMRI sequences. | @@ -109,6 +182,12 @@ and the center of the last "effective" echo, sometimes called the "FSL definitio ### Slice Acceleration +{{ MACROS___make_metadata_table( + { + "MultibandAccelerationFactor": "RECOMMENDED", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | --------------------------- | --------------------- | ------------- | ------------------------------------------------- | | MultibandAccelerationFactor | RECOMMENDED | [number][] | The multiband factor, for multiband acquisitions. | @@ -117,12 +196,26 @@ and the center of the last "effective" echo, sometimes called the "FSL definitio Useful for multimodal co-registration with MEG, (S)EEG, TMS, and so on. +{{ MACROS___make_metadata_table( + { + "AnatomicalLandmarkCoordinates": "RECOMMENDED", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ----------------------------- | --------------------- | ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | AnatomicalLandmarkCoordinates | RECOMMENDED | [object][] of [arrays][] | Key:value pairs of any number of additional anatomical landmarks and their coordinates in voxel units (where first voxel has index 0,0,0) relative to the associated anatomical MRI (for example, `{"AC": [127,119,149], "PC": [128,93,141], "IH": [131,114,206]}`, or `{"NAS": [127,213,139], "LPA": [52,113,96], "RPA": [202,113,91]}`). Each array MUST contain three numeric values corresponding to x, y, and z axis of the coordinate system in that exact order. | ### Institution information +{{ MACROS___make_metadata_table( + { + "InstitutionName": "RECOMMENDED", + "InstitutionAddress": "RECOMMENDED", + "InstitutionalDepartmentName": "RECOMMENDED", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | --------------------------- | --------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | InstitutionName | RECOMMENDED | [string][] | The name of the institution in charge of the equipment that produced the composite instances. Corresponds to DICOM Tag 0008, 0080 `InstitutionName`. | @@ -197,6 +290,14 @@ JSON file. See [Common metadata fields](#common-metadata-fields) for a list of terms and their definitions. There are also some OPTIONAL JSON fields specific to anatomical scans: +{{ MACROS___make_metadata_table( + { + "ContrastBolusIngredient": "OPTIONAL", + "RepetitionTimeExcitation": "OPTIONAL", + "RepetitionTimePreparation": "OPTIONAL", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ------------------------- | --------------------- | -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ContrastBolusIngredient | OPTIONAL | [string][] | Active ingredient of agent. Values MUST be one of: `"IODINE"`, `"GADOLINIUM"`, `"CARBON DIOXIDE"`, `"BARIUM"`, `"XENON"` Corresponds to DICOM Tag 0018,1048. | @@ -394,6 +495,14 @@ JSON file. ### Required fields +{{ MACROS___make_metadata_table( + { + "RepetitionTime": "REQUIRED", + "VolumeTiming": "REQUIRED", + "TaskName": "REQUIRED", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | -------------- | --------------------- | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | RepetitionTime | REQUIRED | [number][] | The time in seconds between the beginning of an acquisition of one volume and the beginning of acquisition of the volume following it (TR). When used in the context of functional acquisitions this parameter best corresponds to [DICOM Tag 0020,0110](http://dicomlookup.com/lookup.asp?sw=Tnumber&q=(0020,0110)): the "time delta between images in a dynamic of functional set of images" but may also be found in [DICOM Tag 0018, 0080](http://dicomlookup.com/lookup.asp?sw=Tnumber&q=(0018,0080)): "the period of time in msec between the beginning of a pulse sequence and the beginning of the succeeding (essentially identical) pulse sequence". This definition includes time between scans (when no data has been acquired) in case of sparse acquisition schemes. This value MUST be consistent with the '`pixdim[4]`' field (after accounting for units stored in '`xyzt_units`' field) in the NIfTI header. This field is mutually exclusive with `VolumeTiming`. | @@ -409,6 +518,16 @@ combined image rather than an image from each coil. #### Timing Parameters +{{ MACROS___make_metadata_table( + { + "NumberOfVolumesDiscardedByScanner": "RECOMMENDED", + "NumberOfVolumesDiscardedByUser": "RECOMMENDED", + "DelayTime": "RECOMMENDED", + "AcquisitionDuration": 'RECOMMENDED, but REQUIRED for sequences that are described with the `VolumeTiming` field and that do not have the `SliceTiming` field set to allow for accurate calculation of "acquisition time"', + "DelayAfterTrigger": "RECOMMENDED", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | NumberOfVolumesDiscardedByScanner | RECOMMENDED | [integer][] | Number of volumes ("dummy scans") discarded by the scanner (as opposed to those discarded by the user post hoc) before saving the imaging file. For example, a sequence that automatically discards the first 4 volumes before saving would have this field as 4. A sequence that doesn't discard dummy scans would have this set to 0. Please note that the onsets recorded in the \_event.tsv file should always refer to the beginning of the acquisition of the first volume in the corresponding imaging file - independent of the value of `NumberOfVolumesDiscardedByScanner` field. | @@ -438,6 +557,15 @@ sparse sequences. #### fMRI task information +{{ MACROS___make_metadata_table( + { + "Instructions": "RECOMMENDED", + "TaskDescription": "RECOMMENDED", + "CogAtlasID": "RECOMMENDED", + "CogPOID": "RECOMMENDED", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | --------------- | --------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Instructions | RECOMMENDED | [string][] | Text of the instructions given to participants before the scan. This is especially important in context of resting state fMRI and distinguishing between eyes open and eyes closed paradigms. | @@ -581,6 +709,12 @@ not be able to be directly concatenated. BIDS permits defining arbitrary groupings of these multipart scans with the following metadata: +{{ MACROS___make_metadata_table( + { + "MultipartID": "REQUIRED", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ------------ | --------------------- | ------------- | ------------------------------------------------------------------------------------ | | MultipartID | REQUIRED | [string][] | A unique (per participant) label tagging DWI runs that are part of a multipart scan. | @@ -720,6 +854,27 @@ See [Appendix XII - ASL](../99-appendices/12-arterial-spin-labeling.md#summary-i #### Common metadata fields applicable to both (P)CASL and PASL +{{ MACROS___make_metadata_table( + { + "ArterialSpinLabelingType": "REQUIRED", + "PostLabelingDelay": "REQUIRED", + "BackgroundSuppression": "REQUIRED", + "M0Type": "REQUIRED", + "TotalAcquiredPairs": "REQUIRED", + "VascularCrushing": "RECOMMENDED", + "AcquisitionVoxelSize": "RECOMMENDED", + "M0Estimate": "OPTIONAL, but REQUIRED when `M0Type` is defined as `Estimate`", + "BackgroundSuppressionNumberPulses": "OPTIONAL, RECOMMENDED if `BackgroundSuppression` is `true`", + "BackgroundSuppressionPulseTime": "OPTIONAL, RECOMMENDED if `BackgroundSuppression` is `true`", + "VascularCrushingVENC": "OPTIONAL, RECOMMENDED if `VascularCrushing` is `true`", + "LabelingOrientation": "RECOMMENDED", + "LabelingDistance": "RECOMMENDED", + "LabelingLocationDescription": "RECOMMENDED", + "LookLocker": "OPTIONAL", + "LabelingEfficiency": "OPTIONAL", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | --------------------------------- | ------------------------------------------------------------- | -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ArterialSpinLabelingType | REQUIRED | [string][] | `"CASL"`, `"PCASL"`, `"PASL"`. | @@ -743,6 +898,20 @@ See [Appendix XII - ASL](../99-appendices/12-arterial-spin-labeling.md#summary-i These fields can only be used when `ArterialSpinLabelingType` is `"CASL"` or `"PCASL"`. See [Appendix XII - ASL](../99-appendices/12-arterial-spin-labeling.md#pcasl-sequence) for more information on the (P)CASL sequence and the Labeling Pulse fields. +{{ MACROS___make_metadata_table( + { + "LabelingDuration": "REQUIRED", + "PCASLType": 'RECOMMENDED if `ArterialSpinLabelingType` is `"PCASL"`', + "CASLType": 'RECOMMENDED if `ArterialSpinLabelingType` is `"CASL"`', + "LabelingPulseAverageGradient": "RECOMMENDED", + "LabelingPulseMaximumGradient": "RECOMMENDED", + "LabelingPulseAverageB1": "RECOMMENDED", + "LabelingPulseDuration": "RECOMMENDED", + "LabelingPulseFlipAngle": "RECOMMENDED", + "LabelingPulseInterval": "RECOMMENDED", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ---------------------------- | ------------------------------------------------------ | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | LabelingDuration | REQUIRED | [number][] or [array][] of [numbers][] | Total duration of the labeling pulse train, in seconds, corresponding to the temporal width of the labeling bolus for `"PCASL"` or `"CASL"`. In case all control-label volumes (or deltam or CBF) have the same `LabelingDuration`, a scalar must be specified. In case the control-label volumes (or deltam or cbf) have a different `LabelingDuration`, an array of numbers must be specified, for which any `m0scan` in the timeseries has a `LabelingDuration` of zero. In case an array of numbers is provided, its length should be equal to the number of volumes specified in `*_aslcontext.tsv`. Corresponds to DICOM Tag 0018,9258 `ASL Pulse Train Duration`. | @@ -759,6 +928,16 @@ These fields can only be used when `ArterialSpinLabelingType` is `"CASL"` or `"P These fields can only be used when `ArterialSpinLabelingType` is `PASL`. See [Appendix XII - ASL](../99-appendices/12-arterial-spin-labeling.md#pasl-sequence) for more information on the PASL sequence and the BolusCutOff fields. +{{ MACROS___make_metadata_table( + { + "BolusCutOffFlag": "REQUIRED", + "PASLType": "RECOMMENDED", + "LabelingSlabThickness": "RECOMMENDED", + "BolusCutOffDelayTime": "OPTIONAL, REQUIRED if `BolusCutOffFlag` is `true`", + "BolusCutOffTechnique": "OPTIONAL, REQUIRED if `BolusCutOffFlag` is `true`", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | --------------------- | ------------------------------------------------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | BolusCutOffFlag | REQUIRED | [boolean][] | Boolean indicating if a bolus cut-off technique is used. Corresponds to DICOM Tag 0018,925C `ASL Bolus Cut-off Flag`. | @@ -771,6 +950,16 @@ These fields can only be used when `ArterialSpinLabelingType` is `PASL`. See [Ap Some common metadata fields are REQUIRED for the `*_m0scan.json`: `EchoTime`, `RepetitionTimePreparation`, and `FlipAngle` in case `LookLocker` is `true`. +{{ MACROS___make_metadata_table( + { + "IntendedFor": ( + "REQUIRED", + "This is used to refer to the ASL time series for which the `*_m0scan.nii[.gz]` is intended." + ), + "AcquisitionVoxelSize": "RECOMMENDED", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | -------------------- | --------------------- | -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | IntendedFor | REQUIRED | [string][] or [array][] of [strings][] | One or more filenames with paths relative to the subject subfolder, with forward slashes, referring to ASL time series for which the `*_m0scan.nii[.gz]` is intended. | @@ -841,6 +1030,13 @@ the OPTIONAL `_magnitude2` image to the longer echo time. Required fields: +{{ MACROS___make_metadata_table( + { + "EchoTime1": "REQUIRED", + "EchoTime2": "REQUIRED", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ------------ | --------------------- | ------------- | ----------------------------------------------------------- | | EchoTime1 | REQUIRED | [number][] | The time (in seconds) when the first (shorter) echo occurs. | @@ -869,6 +1065,12 @@ second echos are available. Required fields: +{{ MACROS___make_metadata_table( + { + "EchoTime": "REQUIRED", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ------------ | --------------------- | ------------- | --------------------------------------------------------------------------------- | | EchoTime | REQUIRED | [number][] | The time (in seconds) when the echo corresponding to this phase map was acquired. | @@ -890,6 +1092,12 @@ In some cases (for example GE), the scanner software will directly reconstruct a Required fields: +{{ MACROS___make_metadata_table( + { + "Units": "REQUIRED", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ------------ | --------------------- | ------------- | ---------------------------------------------------------------------------------------- | | Units | REQUIRED | [string][] | Units of the fieldmap: Hertz (`"Hz"`), Radians per second (`"rad/s"`), or Tesla (`"T"`). | @@ -926,6 +1134,13 @@ the REQUIRED `PhaseEncodingDirection` metadata field Required fields: +{{ MACROS___make_metadata_table( + { + "PhaseEncodingDirection": "REQUIRED", + "TotalReadoutTime": "REQUIRED", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ---------------------- | --------------------- | ------------- | ---------------------------------------------------------------------------- | | PhaseEncodingDirection | REQUIRED | [string][] | See [in-plane spatial encoding](#in-plane-spatial-encoding) table of fields. | @@ -962,6 +1177,16 @@ This linking between fieldmaps and their targetted data MAY be encoded with the Fieldmap data MAY be linked to the specific scan(s) it was acquired for by filling the `IntendedFor` field in the corresponding JSON file. +{{ MACROS___make_metadata_table( + { + "IntendedFor": ( + "RECOMMENDED", + "This field is OPTIONAL, and in case the fieldmaps do not correspond " + "to any particular scans, it does not have to be filled.", + ), + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ------------ | --------------------- | ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | IntendedFor | RECOMMENDED | [string][] or [array][] of [string][] | Contains one or more filenames with paths relative to the participant subfolder. The path needs to use forward slashes instead of backward slashes. This field is OPTIONAL, and in case the fieldmaps do not correspond to any particular scans, it does not have to be filled. | diff --git a/src/04-modality-specific-files/02-magnetoencephalography.md b/src/04-modality-specific-files/02-magnetoencephalography.md index 6c6fe6ea8c..b554d11b25 100644 --- a/src/04-modality-specific-files/02-magnetoencephalography.md +++ b/src/04-modality-specific-files/02-magnetoencephalography.md @@ -40,10 +40,10 @@ limit. For example Neuromag/Elekta/Megin, which can produce several files for a single recording. Both `some_file.fif` and `some_file-1.fif` would belong to a single recording. -In BIDS, the [`split`](../99-appendices/09-entities.md#split) entity is RECOMMENDED to deal -with split files. +In BIDS, the [`split`](../99-appendices/09-entities.md#split) entity is RECOMMENDED to deal +with split files. If there are multiple parts of a recording and the optional `scans.tsv` is provided, -remember to list all files separately in `scans.tsv` and that the entries for the +remember to list all files separately in `scans.tsv` and that the entries for the `acq_time` column in `scans.tsv` MUST all be identical, as described in [Scans file](../03-modality-agnostic-files.md#scans-file). @@ -80,6 +80,12 @@ systems (see [coordinates section](#coordinate-system-json-_coordsystemjson) bel Generic fields MUST be present: +{{ MACROS___make_metadata_table( + { + "TaskName": "REQUIRED", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ------------ | --------------------- | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | TaskName | REQUIRED | [string][] | Name of the task. No two tasks should have the same name. The task label included in the file name is derived from this TaskName field by removing all non-alphanumeric (`[a-zA-Z0-9]`) characters. For example `TaskName` `"faces n-back"` will correspond to task label `facesnback`. A RECOMMENDED convention is to name resting state task using labels beginning with `rest`. | @@ -88,6 +94,21 @@ SHOULD be present: For consistency between studies and institutions, we encourage users to extract the values of these fields from the actual raw data. Whenever possible, please avoid using ad-hoc wording. +{{ MACROS___make_metadata_table( + { + "InstitutionName": "RECOMMENDED", + "InstitutionAddress": "RECOMMENDED", + "Manufacturer": "RECOMMENDED", + "ManufacturersModelName": "RECOMMENDED", + "SoftwareVersions": "RECOMMENDED", + "TaskDescription": "RECOMMENDED", + "Instructions": "RECOMMENDED", + "CogAtlasID": "RECOMMENDED", + "CogPOID": "RECOMMENDED", + "DeviceSerialNumber": "RECOMMENDED", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ---------------------- | --------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | InstitutionName | RECOMMENDED | [string][] | The name of the institution in charge of the equipment that produced the composite instances. | @@ -103,6 +124,17 @@ Whenever possible, please avoid using ad-hoc wording. Specific MEG fields MUST be present: +{{ MACROS___make_metadata_table( + { + "SamplingFrequency": "REQUIRED", + "PowerLineFrequency": "REQUIRED", + "DewarPosition": "REQUIRED", + "SoftwareFilters": "REQUIRED", + "DigitizedLandmarks": "REQUIRED", + "DigitizedHeadPoints": "REQUIRED", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ------------------- | --------------------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | SamplingFrequency | REQUIRED | [number][] | Sampling frequency (in Hz) of all the data in the recording, regardless of their type (for example, 2400). | @@ -114,6 +146,30 @@ Specific MEG fields MUST be present: SHOULD be present: +{{ MACROS___make_metadata_table( + { + "MEGChannelCount": "RECOMMENDED", + "MEGREFChannelCount": "RECOMMENDED", + "EEGChannelCount": "RECOMMENDED", + "ECOGChannelCount": "RECOMMENDED", + "SEEGChannelCount": "RECOMMENDED", + "EOGChannelCount": "RECOMMENDED", + "ECGChannelCount": "RECOMMENDED", + "EMGChannelCount": "RECOMMENDED", + "MiscChannelCount": "RECOMMENDED", + "TriggerChannelCount": "RECOMMENDED", + "RecordingDuration": "RECOMMENDED", + "RecordingType": "RECOMMENDED", + "EpochLength": "RECOMMENDED", + "ContinuousHeadLocalization": "RECOMMENDED", + "HeadCoilFrequency": "RECOMMENDED", + "MaxMovement": "RECOMMENDED", + "SubjectArtefactDescription": "RECOMMENDED", + "AssociatedEmptyRoom": "RECOMMENDED", + "HardwareFilters": "RECOMMENDED", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | -------------------------- | --------------------- | -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | MEGChannelCount | RECOMMENDED | [integer][] | Number of MEG channels (for example, 275). | @@ -140,6 +196,15 @@ Specific EEG fields (if recorded with MEG, see [Recording EEG simultaneously with MEG](#recording-eeg-simultaneously-with-meg) SHOULD be present: +{{ MACROS___make_metadata_table( + { + "EEGPlacementScheme": "OPTIONAL", + "CapManufacturer": "OPTIONAL", + "CapManufacturersModelName": "OPTIONAL", + "EEGReference": "OPTIONAL", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ------------------------- | --------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | EEGPlacementScheme | OPTIONAL | [string][] | Placement scheme of EEG electrodes. Either the name of a standardised placement system (for example, `"10-20"`) or a list of standardised electrode names (for example, `"["Cz", "Pz"]"`). | @@ -284,6 +349,17 @@ EEG, head localization coils, and anatomical landmarks. MEG and EEG sensors: +{{ MACROS___make_metadata_table( + { + "MEGCoordinateSystem": "REQUIRED", + "MEGCoordinateUnits": "REQUIRED", + "MEGCoordinateSystemDescription": "OPTIONAL, but REQUIRED if `MEGCoordinateSystem` is `Other`", + "EEGCoordinateSystem": "OPTIONAL", + "EEGCoordinateUnits": "OPTIONAL", + "EEGCoordinateSystemDescription": "OPTIONAL, but REQUIRED if `EEGCoordinateSystem` is `Other`", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ------------------------------ | ---------------------------------------------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | MEGCoordinateSystem | REQUIRED | [string][] | Defines the coordinate system for the MEG sensors. See [Appendix VIII](../99-appendices/08-coordinate-systems.md) for a list of restricted keywords for coordinate systems. If `"Other"`, provide definition of the coordinate system in `MEGCoordinateSystemDescription`. | @@ -295,6 +371,15 @@ MEG and EEG sensors: Head localization coils: +{{ MACROS___make_metadata_table( + { + "HeadCoilCoordinates": "OPTIONAL", + "HeadCoilCoordinateSystem": "OPTIONAL", + "HeadCoilCoordinateUnits": "OPTIONAL", + "HeadCoilCoordinateSystemDescription": "OPTIONAL, but REQUIRED if `HeadCoilCoordinateSystem` is `Other`", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ----------------------------------- | --------------------------------------------------------------- | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | HeadCoilCoordinates | OPTIONAL | [object][] of [arrays][] | Key:value pairs describing head localization coil labels and their coordinates, interpreted following the `HeadCoilCoordinateSystem` (for example, `{"NAS": [12.7,21.3,13.9], "LPA": [5.2,11.3,9.6], "RPA": [20.2,11.3,9.1]}`). Note that coils are not always placed at locations that have a known anatomical name (for example, for Elekta, Yokogawa systems); in that case generic labels can be used (for example, `{"coil1": [12.2,21.3,12.3], "coil2": [6.7,12.3,8.6], "coil3": [21.9,11.0,8.1]}`). Each array MUST contain three numeric values corresponding to x, y, and z axis of the coordinate system in that exact order. | @@ -304,6 +389,15 @@ Head localization coils: Digitized head points: +{{ MACROS___make_metadata_table( + { + "DigitizedHeadPoints": "OPTIONAL", + "DigitizedHeadPointsCoordinateSystem": "OPTIONAL", + "DigitizedHeadPointsCoordinateUnits": "OPTIONAL", + "DigitizedHeadPointsCoordinateSystemDescription": "OPTIONAL, but REQUIRED if `DigitizedHeadPointsCoordinateSystem` is `Other`", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ---------------------------------------------- | ---------------------------------------------------------------------------- | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | DigitizedHeadPoints | OPTIONAL | [string][] | Relative path to the file containing the locations of digitized head points collected during the session (for example, `"sub-01_headshape.pos"`). RECOMMENDED for all MEG systems, especially for CTF and BTi/4D. For Elekta/Neuromag the head points will be stored in the fif file. | @@ -313,12 +407,32 @@ Digitized head points: Anatomical MRI: +{{ MACROS___make_metadata_table( + { + "IntendedFor": ( + "OPTIONAL", + "This is used to identify the structural MRI(s), " + "possibly of different types if a list is specified, " + "to be used with the MEG recording.", + ) + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ------------ | --------------------- | -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | IntendedFor | OPTIONAL | [string][] or [array][] of [strings][] | Path or list of path relative to the subject subfolder pointing to the structural MRI, possibly of different types if a list is specified, to be used with the MEG recording. The path(s) need(s) to use forward slashes instead of backward slashes (for example, `"ses-/anat/sub-01_T1w.nii.gz"`). | Anatomical landmarks: +{{ MACROS___make_metadata_table( + { + "AnatomicalLandmarkCoordinates": "OPTIONAL", + "AnatomicalLandmarkCoordinateSystem": "OPTIONAL", + "AnatomicalLandmarkCoordinateUnits": "OPTIONAL", + "AnatomicalLandmarkCoordinateSystemDescription": "OPTIONAL, but REQUIRED if `AnatomicalLandmarkCoordinateSystem` is `Other`", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | --------------------------------------------- | ------------------------------------------------------------------------- | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | AnatomicalLandmarkCoordinates | OPTIONAL | [object][] of [arrays][] | Key:value pairs of the labels and 3-D digitized locations of anatomical landmarks, interpreted following the `AnatomicalLandmarkCoordinateSystem` (for example, `{"NAS": [12.7,21.3,13.9], "LPA": [5.2,11.3,9.6], "RPA": [20.2,11.3,9.1]}`. Each array MUST contain three numeric values corresponding to x, y, and z axis of the coordinate system in that exact order. | @@ -344,6 +458,12 @@ session-specific labels for example, "NAS-session1": `[127,213,139]`,"NAS-sessio Fiducials information: +{{ MACROS___make_metadata_table( + { + "FiducialsDescription": "OPTIONAL", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | -------------------- | --------------------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | FiducialsDescription | OPTIONAL | [string][] | A freeform text field documenting the anatomical landmarks that were used and how the head localization coils were placed relative to these. This field can describe, for instance, whether the true anatomical locations of the left and right pre-auricular points were used and digitized, or rather whether they were defined as the intersection between the tragus and the helix (the entry of the ear canal), or any other anatomical description of selected points in the vicinity of the ears. | diff --git a/src/04-modality-specific-files/03-electroencephalography.md b/src/04-modality-specific-files/03-electroencephalography.md index 72f07794fc..d148ad7ed4 100644 --- a/src/04-modality-specific-files/03-electroencephalography.md +++ b/src/04-modality-specific-files/03-electroencephalography.md @@ -86,6 +86,12 @@ be specified. Generic fields MUST be present: +{{ MACROS___make_metadata_table( + { + "TaskName": "REQUIRED", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ------------ | --------------------- | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | TaskName | REQUIRED | [string][] | Name of the task. No two tasks should have the same name. The task label included in the file name is derived from this TaskName field by removing all non-alphanumeric (`[a-zA-Z0-9]`) characters. For example `TaskName` `"faces n-back"` will correspond to task label `facesnback`. A RECOMMENDED convention is to name resting state task using labels beginning with `rest`. | @@ -94,6 +100,21 @@ SHOULD be present: For consistency between studies and institutions, we encourage users to extract the values of these fields from the actual raw data. Whenever possible, please avoid using ad hoc wording. +{{ MACROS___make_metadata_table( + { + "InstitutionName": "RECOMMENDED", + "InstitutionAddress": "RECOMMENDED", + "Manufacturer": "RECOMMENDED", + "ManufacturersModelName": "RECOMMENDED", + "SoftwareVersions": "RECOMMENDED", + "TaskDescription": "RECOMMENDED", + "Instructions": "RECOMMENDED", + "CogAtlasID": "RECOMMENDED", + "CogPOID": "RECOMMENDED", + "DeviceSerialNumber": "RECOMMENDED", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ---------------------- | --------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | InstitutionName | RECOMMENDED | [string][] | The name of the institution in charge of the equipment that produced the composite instances. | @@ -109,6 +130,15 @@ Whenever possible, please avoid using ad hoc wording. Specific EEG fields MUST be present: +{{ MACROS___make_metadata_table( + { + "EEGReference": "REQUIRED", + "SamplingFrequency": "REQUIRED", + "PowerLineFrequency": "REQUIRED", + "SoftwareFilters": "REQUIRED", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ------------------ | --------------------- | ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | EEGReference | REQUIRED | [string][] | General description of the reference scheme used and (when applicable) of location of the reference electrode in the raw recordings (for example, `"left mastoid"`, `"Cz"`, `"CMS"`). If different channels have a different reference, this field should have a general description and the channel specific reference should be defined in the `channels.tsv` file. | @@ -118,6 +148,27 @@ Specific EEG fields MUST be present: SHOULD be present: +{{ MACROS___make_metadata_table( + { + "CapManufacturer": "RECOMMENDED", + "CapManufacturersModelName": "RECOMMENDED", + "EEGChannelCount": "RECOMMENDED", + "ECGChannelCount": "RECOMMENDED", + "EMGChannelCount": "RECOMMENDED", + "EOGChannelCount": "RECOMMENDED", + "MiscChannelCount": "RECOMMENDED", + "TriggerChannelCount": "RECOMMENDED", + "RecordingDuration": "RECOMMENDED", + "RecordingType": "RECOMMENDED", + "EpochLength": "RECOMMENDED", + "EEGGround": "RECOMMENDED", + "HeadCircumference": "RECOMMENDED", + "EEGPlacementScheme": "RECOMMENDED", + "HardwareFilters": "RECOMMENDED", + "SubjectArtefactDescription": "RECOMMENDED", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | -------------------------- | --------------------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | CapManufacturer | RECOMMENDED | [string][] | Name of the cap manufacturer (for example, `"EasyCap"`). | @@ -354,12 +405,30 @@ head. General fields: +{{ MACROS___make_metadata_table( + { + "IntendedFor": ( + "OPTIONAL", + "This identifies the MRI or CT scan associated with the electrodes, " + "landmarks, and fiducials.", + ) + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ------------ | --------------------- | ------------- | -------------------------------------------------------------------------------- | | IntendedFor | OPTIONAL | [string][] | Relative path to associate the electrodes, landmarks and fiducials to an MRI/CT. | Fields relating to the EEG electrode positions: +{{ MACROS___make_metadata_table( + { + "EEGCoordinateSystem": "REQUIRED", + "EEGCoordinateUnits": "REQUIRED", + "EEGCoordinateSystemDescription": 'RECOMMENDED, but REQUIRED if `EEGCoordinateSystem` is `"Other"`', + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ------------------------------ | --------------------------------------------------------------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | EEGCoordinateSystem | REQUIRED | [string][] | Defines the coordinate system for the EEG sensors. See [Appendix VIII](../99-appendices/08-coordinate-systems.md) for a list of restricted keywords for coordinate systems. If `"Other"`, provide definition of the coordinate system in `EEGCoordinateSystemDescription`. | @@ -368,6 +437,16 @@ Fields relating to the EEG electrode positions: Fields relating to the position of fiducials measured during an EEG session/run: +{{ MACROS___make_metadata_table( + { + "FiducialsDescription": "OPTIONAL", + "FiducialsCoordinates": "RECOMMENDED", + "FiducialsCoordinateSystem": "RECOMMENDED", + "FiducialsCoordinateUnits": "RECOMMENDED", + "FiducialsCoordinateSystemDescription": 'RECOMMENDED, but REQUIRED if `FiducialsCoordinateSystem` is `"Other"`', + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ------------------------------------ | --------------------------------------------------------------------- | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | FiducialsDescription | OPTIONAL | [string][] | Free-form text description of how the fiducials such as vitamin-E capsules were placed relative to anatomical landmarks, and how the position of the fiducials were measured (for example, both with Polhemus and with T1w MRI). | @@ -378,6 +457,15 @@ Fields relating to the position of fiducials measured during an EEG session/run: Fields relating to the position of anatomical landmark measured during an EEG session/run: +{{ MACROS___make_metadata_table( + { + "AnatomicalLandmarkCoordinates": "RECOMMENDED", + "AnatomicalLandmarkCoordinateSystem": "RECOMMENDED", + "AnatomicalLandmarkCoordinateUnits": "RECOMMENDED", + "AnatomicalLandmarkCoordinateSystemDescription": 'RECOMMENDED, but REQUIRED if `AnatomicalLandmarkCoordinateSystem` is `"Other"`', + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | --------------------------------------------- | ------------------------------------------------------------------------------ | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | AnatomicalLandmarkCoordinates | RECOMMENDED | [object][] of [arrays][] | Key:value pairs of the labels and 3-D digitized position of anatomical landmarks, interpreted following the `AnatomicalLandmarkCoordinateSystem` (for example, `{"NAS": [12.7,21.3,13.9], "LPA": [5.2,11.3,9.6], "RPA": [20.2,11.3,9.1]}`). Each array MUST contain three numeric values corresponding to x, y, and z axis of the coordinate system in that exact order. | diff --git a/src/04-modality-specific-files/04-intracranial-electroencephalography.md b/src/04-modality-specific-files/04-intracranial-electroencephalography.md index d1822c9b36..d8ce2d4902 100644 --- a/src/04-modality-specific-files/04-intracranial-electroencephalography.md +++ b/src/04-modality-specific-files/04-intracranial-electroencephalography.md @@ -92,6 +92,12 @@ please avoid using ad hoc wording. Generic fields MUST be present: +{{ MACROS___make_metadata_table( + { + "TaskName": "REQUIRED", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ------------ | --------------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | TaskName | REQUIRED | [string][] | Name of the task. No two tasks should have the same name. The task label included in the file name is derived from this TaskName field by removing all non-alphanumeric (`[a-zA-Z0-9]`) characters. For example, `TaskName` `"faces n-back"` will correspond to task label `facesnback`. A RECOMMENDED convention is to name resting state task using labels beginning with `rest`. | @@ -102,6 +108,21 @@ SHOULD be present: For consistency between studies and institutions, we encourage users to extract the values of these fields from the actual raw data. Whenever possible, please avoid using ad hoc wording. +{{ MACROS___make_metadata_table( + { + "InstitutionName": "RECOMMENDED", + "InstitutionAddress": "RECOMMENDED", + "Manufacturer": "RECOMMENDED", + "ManufacturersModelName": "RECOMMENDED", + "SoftwareVersions": "RECOMMENDED", + "TaskDescription": "RECOMMENDED", + "Instructions": "RECOMMENDED", + "CogAtlasID": "RECOMMENDED", + "CogPOID": "RECOMMENDED", + "DeviceSerialNumber": "RECOMMENDED", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ---------------------- | --------------------- | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | InstitutionName | RECOMMENDED | [string][] | The name of the institution in charge of the equipment that produced the composite instances. | @@ -117,6 +138,15 @@ Whenever possible, please avoid using ad hoc wording. Specific iEEG fields MUST be present: +{{ MACROS___make_metadata_table( + { + "iEEGReference": "REQUIRED", + "SamplingFrequency": "REQUIRED", + "PowerLineFrequency": "REQUIRED", + "SoftwareFilters": "REQUIRED", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ------------------ | --------------------- | ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | iEEGReference | REQUIRED | [string][] | General description of the reference scheme used and (when applicable) of location of the reference electrode in the raw recordings (for example, `"left mastoid"`, `"bipolar"`, `"T01"` for electrode with name T01, `"intracranial electrode on top of a grid, not included with data"`, `"upside down electrode"`). If different channels have a different reference, this field should have a general description and the channel specific reference should be defined in the channels.tsv file. | @@ -126,6 +156,30 @@ Specific iEEG fields MUST be present: Specific iEEG fields SHOULD be present: +{{ MACROS___make_metadata_table( + { + "DCOffsetCorrection": "RECOMMENDED", + "HardwareFilters": "RECOMMENDED", + "ElectrodeManufacturer": "RECOMMENDED", + "ElectrodeManufacturersModelName": "RECOMMENDED", + "ECOGChannelCount": "RECOMMENDED", + "SEEGChannelCount": "RECOMMENDED", + "EEGChannelCount": "RECOMMENDED", + "EOGChannelCount": "RECOMMENDED", + "ECGChannelCount": "RECOMMENDED", + "EMGChannelCount": "RECOMMENDED", + "MiscChannelCount": "RECOMMENDED", + "TriggerChannelCount": "RECOMMENDED", + "RecordingDuration": "RECOMMENDED", + "RecordingType": "RECOMMENDED", + "EpochLength": "RECOMMENDED", + "iEEGGround": "RECOMMENDED", + "iEEGPlacementScheme": "RECOMMENDED", + "iEEGElectrodeGroups": "RECOMMENDED", + "SubjectArtefactDescription": "RECOMMENDED", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ------------------------------- | --------------------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | DCOffsetCorrection | RECOMMENDED | [string][] | A description of the method (if any) used to correct for a DC offset. If the method used was subtracting the mean value for each channel, use "mean". | @@ -150,6 +204,13 @@ Specific iEEG fields SHOULD be present: Specific iEEG fields MAY be present: +{{ MACROS___make_metadata_table( + { + "ElectricalStimulation": "OPTIONAL", + "ElectricalStimulationParameters": "OPTIONAL", + } +) }} + | **Key name** | **Requirement level** | **Data type** | **Description** | | ------------------------------- | --------------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ElectricalStimulation | OPTIONAL | [boolean][] | Boolean field to specify if electrical stimulation was done during the recording (options are "true" or "false"). Parameters for event-like stimulation should be specified in the events.tsv file (see example below). | @@ -362,12 +423,42 @@ also be specified. General fields: +{{ MACROS___make_metadata_table( + { + "IntendedFor": ( + "OPTIONAL", + "If only a surface reconstruction is available, this should point to " + "the surface reconstruction file. " + "Note that this file should have the same coordinate system " + "specified in `iEEGCoordinateSystem`. " + "For example, **T1**: `'sub-