diff --git a/src/schema/objects/columns.yaml b/src/schema/objects/columns.yaml index a3d23738fa..600ba95fa7 100644 --- a/src/schema/objects/columns.yaml +++ b/src/schema/objects/columns.yaml @@ -52,6 +52,17 @@ color: Hexadecimal. Label color for visualization. type: string unit: hexadecimal +compcor: + name: '[a|t|w|c]_compcor_cor_[0-9a-zA-Z]+' + display_name: CompCor + description: | + CompCor (Behzadi, et al., 2007) calculated with voxels chosen based on: + a: anatomically derived ROIs (white matter and CSF), + t: temporal variance, w: white matter voxels only, c: CSF voxels only +cosine_x: + name: ^cosine_[0-9a-zA-Z]+$ + display_name: Cosine + description: Discrete cosine basis vectors derived_from: name: derived_from display_name: Derived from @@ -88,6 +99,11 @@ duration: - type: string enum: - n/a +dvars: + name: dvars + display_name: DVARS + description: Change in variance (Brett, 2006, Power, et al., 2012) + type: number filename: name: filename display_name: Filename @@ -95,6 +111,12 @@ filename: Relative paths to files. type: string format: participant_relative +framwise_displacement: + name: framewise_displacement + display_name: Framwise Displacement + description: Framewise displacement (Power, et al., 2012) + type: number + unit: mm group__channel: name: group display_name: Channel group @@ -179,6 +201,14 @@ index: description: | The label integer index. type: integer +legendre_x: + name: ^legendre_[0-9a-zA-Z]+$ + display_name: Legendre + description: Legendre polynomial basis vectors +non_steady_state_x: + name: ^non_steady_state_[0-9a-zA-Z]+$ + display_name: Non Steady State + description: Initial non-steady-state volumes. One column per volume. low_cutoff: name: low_cutoff display_name: Low cutoff @@ -204,6 +234,10 @@ mapping: description: | Corresponding integer label in the standard BIDS label lookup. type: integer +melodic: + name: ^melodic_[0-9a-zA-Z]+$ + display_name: FSL MELODIC + description: Columns from the mixing matrix in FSL MELODIC material: name: material display_name: Electrode material @@ -341,6 +375,36 @@ response_time: - type: string enum: - n/a +rmsd: + name: rmsd + display_name: Root Mean Square Derivation + description: Root mean square deviation (Jenkinson, 1999) + type: number + unit: mm +rms: + name: rms + display_name: Root Mean Square + description: Root mean square of translation parameters (Van Dijk, et al., 2012) + type: number + unit: mm +rot_x: + name: rot_x + display_name: X Axis Rotation + description: Rotation parameters + type: number + unit: rad +rot_y: + name: rot_y + display_name: Y Axis Rotation + description: Rotation parameters + type: number + unit: rad +rot_z: + name: rot_z + display_name: Z Axis Rotation + description: Rotation parameters + type: number + unit: rad sample: name: sample display_name: Sample index @@ -470,6 +534,11 @@ status_description: Freeform text description of noise or artifact affecting data quality on the channel. It is meant to explain why the channel was declared bad in the `status` column. type: string +std_dvars: + name: std_dvars + display_name: Standardized DVARS + description: Standardized DVARS (Nichols, 2013) + type: number stim_file: name: stim_file display_name: Stimulus file @@ -508,6 +577,24 @@ time: For example, 5. type: number unit: s +trans_x: + name: trans_x + display_name: X Axis Translation + description: Translation parameters + type: number + unit: mm +trans_y: + name: trans_y + display_name: Y Axis Translation + description: Translation parameters + type: number + unit: mm +trans_z: + name: trans_z + display_name: Z Axis Translation + description: Translation parameters + type: number + unit: mm trial_type: name: trial_type display_name: Trial type diff --git a/src/schema/objects/extensions.yaml b/src/schema/objects/extensions.yaml index 4e7006ed6b..6cd5ca6a5b 100644 --- a/src/schema/objects/extensions.yaml +++ b/src/schema/objects/extensions.yaml @@ -79,6 +79,13 @@ dlabelnii: description: | A CIFTI-2 dense label file. + This extension may only be used in derivative datasets. +dtseriesnii: + value: .dtseries.nii + display_name: Timeseries CIFTI File + description: | + A CIFTI timeseries file. + This extension may only be used in derivative datasets. edf: value: .edf @@ -251,6 +258,13 @@ tif: display_name: Tag Image File Format description: | A [Tag Image File Format](https://en.wikipedia.org/wiki/TIFF) file. +timegii: + value: .time.gii + display_name: Surface timeseries + description: | + Surface timeseries. + + This extension may only be used in derivative datasets. trg: value: .trg display_name: KRISS TRG diff --git a/src/schema/objects/metadata.yaml b/src/schema/objects/metadata.yaml index d1effcc1b4..f012de56e2 100644 --- a/src/schema/objects/metadata.yaml +++ b/src/schema/objects/metadata.yaml @@ -258,6 +258,12 @@ BackgroundSuppressionPulseTime: type: number minimum: 0 unit: s +BandpassFilter: + name: BandpassFilter + display_name: Bandpass Filter + description: | + String describing all relevant parameters of the applied bandpass filter. + type: string BasedOn: name: BasedOn display_name: Based On @@ -1878,6 +1884,12 @@ MetaboliteRecoveryCorrectionApplied: If `true`, the `hplc_recovery_fractions` column MUST be present in the corresponding `*_blood.tsv` file. type: boolean +Method: + name: Method + display_name: Method + description: | + String describing method used to calculate measure. + type: string MiscChannelCount: name: MiscChannelCount display_name: Misc Channel Count @@ -1955,6 +1967,12 @@ NegativeContrast: usage of a contrast agent in conjunction with a T2\* weighted acquisition protocol. type: boolean +Neighborhood: + name: Neighborhood + display_name: Neighborhood + description: | + String describing neighborhood for regional measures. + type: string NonlinearGradientCorrection: name: NonlinearGradientCorrection display_name: Nonlinear Gradient Correction @@ -2997,6 +3015,12 @@ TermURL: URL pointing to a formal definition of this type of data in an ontology available on the web. type: string +Threshold: + name: Threshold + display_name: Threshold + description: | + String describing threshold used for determining graph edges. + type: string TimeZero: name: TimeZero display_name: Time Zero diff --git a/src/schema/objects/suffixes.yaml b/src/schema/objects/suffixes.yaml index d705c9966e..4e5c6c9282 100644 --- a/src/schema/objects/suffixes.yaml +++ b/src/schema/objects/suffixes.yaml @@ -490,6 +490,13 @@ VFA: Depending on the provided metadata fields and the sequence type, data may be eligible for DESPOT1, DESPOT2 and their variants ([Deoni et al. 2005](https://doi.org/10.1002/mrm.20314)). +alff: + value: alff + display_name: Amplitude low frequency fluctuations + description: | + Amplitude low frequency fluctuations. + + This suffix may only be used in derivative datasets. angio: value: angio display_name: Angiogram @@ -545,12 +552,40 @@ channels: display_name: Channels File description: | Channel information. +components: + value: components + display_name: Timeseries + description: | + Components from a decomposition. + + This suffix may only be used in derivative datasets. coordsystem: value: coordsystem display_name: Coordinate System File description: | A JSON document specifying the coordinate system(s) used for the MEG, EEG, head localization coils, and anatomical landmarks. +dcb: + value: dcb + display_name: Binary degree centrality + description: | + Voxel-wise binary degree centrality. + + This suffix may only be used in derivative datasets. +dcw: + value: dcw + display_name: Weighted degree centrality + description: | + Voxel-wise weighted degree centrality. + + This suffix may only be used in derivative datasets. +decomposition: + value: decomposition + display_name: Decomposition + description: | + Metadata from a decomposition. + + This suffix may only be used in derivative datasets. defacemask: value: defacemask display_name: Defacing Mask @@ -569,6 +604,20 @@ dwi: display_name: Diffusion-weighted image description: | Diffusion-weighted imaging contrast (specialized T2 weighting). +ecb: + value: ecb + display_name: Binary eigenvector centrality + description: | + Voxelwise binary eigenvector centrality. + + This suffix may only be used in derivative datasets. +ecw: + value: ecw + display_name: Weighted eigenvector centrality + description: | + Voxelwise weighted eigenvector centrality. + + This suffix may only be used in derivative datasets. eeg: value: eeg display_name: Electroencephalography @@ -591,6 +640,13 @@ events: display_name: Events description: | Event timing information from a behavioral task. +falff: + value: falff + display_name: Fractional amplitude of low frequency fluctuations + description: | + Fractional amplitude of low frequency fluctuations. + + This suffix may only be used in derivative datasets. fieldmap: value: fieldmap display_name: Fieldmap @@ -622,6 +678,20 @@ inplaneT2: In arbitrary units (arbitrary). T2 weighted structural image matched to a functional (task) image. unit: arbitrary +lfcdb: + value: lfcdb + display_name: Binary local functional connectivity density + description: | + Binary local functional connectivity density. + + This suffix may only be used in derivative datasets. +lfcdw: + value: lfcdw + display_name: Weighted local functional connectivity density + description: | + Weighted local functional connectivity density. + + This suffix may only be used in derivative datasets. m0scan: value: m0scan display_name: M0 image @@ -662,6 +732,13 @@ mask: description: | A binary mask that functions as a discrete "label" for a single structure. + This suffix may only be used in derivative datasets. +mean: + value: mean + display_name: Mean image + description: | + Mean across the temporal/4th dimension of the data. + This suffix may only be used in derivative datasets. meg: value: meg @@ -669,6 +746,29 @@ meg: description: | Unprocessed MEG data stored in the native file format of the MEG instrument with which the data was collected. +mixing: + value: mixing + display_name: Mixing Matrix + description: | + A mixing matrix from a decomposition. + + This suffix may only be used in derivative datasets. +motion: + value: motion + display_name: Motion + description: | + A motion file. + + This suffix may only be used in derivative datasets. +outliers: + value: outliers + display_name: Outliers + description: | + An outliers file. + Outlier masks are columns of zeros (0), with ones (1) indicating volumes that have been + identified as outliers by some method. + + This suffix may only be used in derivative datasets. pet: value: pet display_name: Positron Emission Tomography @@ -726,6 +826,14 @@ probseg: description: | A probabilistic segmentation. + This suffix may only be used in derivative datasets. +reho: + value: reho + display_name: Regional homogeneity + description: | + Regional homogeneity image. + Only voxel-wise images are supported with this suffix. + This suffix may only be used in derivative datasets. sbref: value: sbref @@ -761,13 +869,50 @@ sessions: These files MUST include a session_id column and describe each session by one and only one row. Column names in sessions.tsv files MUST be different from group level participant key column names in the participants.tsv file. +sfs: + value: sfs + display_name: Signal fluctuation sensitivity + description: | + Signal fluctuation sensitivity image. + + This suffix may only be used in derivative datasets. +std: + value: std + display_name: Standard deviation + description: | + Standard deviation across the temporal/4th dimension of the data. + + This suffix may only be used in derivative datasets. stim: value: stim display_name: Continuous recording description: | Continuous measures, such as parameters of a film or audio stimulus. +timeseries: + value: timeseries + display_name: Timeseries + description: | + A timeseries file. + Any time series with common timing information may be stored in a timeseries file. + + This suffix may only be used in derivative datasets. +tsnr: + value: tsnr + display_name: Temporal signal-to-noise ratio + description: | + Temporal signal-to-noise ratio. + This is defined as the temporal mean divided by the template standard deviation. + + This suffix may only be used in derivative datasets. uCT: value: uCT display_name: Micro-CT description: | Micro-CT imaging data +vmhc: + value: vmhc + display_name: Voxel mirrored homotopic connectivity + description: | + Voxel mirrored homotopic connectivity. + + This suffix may only be used in derivative datasets. diff --git a/src/schema/rules/datatypes/derivatives/functional_derivatives.yaml b/src/schema/rules/datatypes/derivatives/functional_derivatives.yaml new file mode 100644 index 0000000000..ec4b6b26be --- /dev/null +++ b/src/schema/rules/datatypes/derivatives/functional_derivatives.yaml @@ -0,0 +1,93 @@ +--- +functional_derivatives_maps: + _ref: rules.datatypes.func.func + extensions: + - '.nii' + - '.nii.gz' + - '.gii' + - '.dscalar.nii' + entities: + _ref: rules.datatypes.func.func.entities + space: OPTIONAL + resolution: OPTIONAL + density: OPTIONAL + description: OPTIONAL + suffixes: + - 'mean' + - 'std' + - 'tsnr' + - 'sfs' + - 'alff' + - 'falff' + - 'reho' + - 'dcb' + - 'dcw' + - 'ecb' + - 'ecw' + - 'lfcdb' + - 'lfcdw' + - 'vmhc' + +functional_derivatives_timeseries: + extensions: + - '.tsv' + - '.json' + - '.time.gii' + - '.dtseries.nii' + entities: + _ref: rules.datatypes.func.func.entities + description: OPTIONAL + suffixes: + - timeseries + +functional_derivatives_roi_based_timeseries: + extensions: + - '.nii' + - '.tsv' + - '.json' + entities: + _ref: rules.datatypes.func.func.entities + description: OPTIONAL + atlas: OPTIONAL + suffixes: + - timeseries + +functional_derivatives_motion_timeseries: + extensions: + - '.tsv' + - '.json' + entities: + _ref: rules.datatypes.func.func.entities + description: OPTIONAL + suffixes: + - motion + +functional_derivatives_outliers_timeseries: + extensions: + - '.tsv' + - '.json' + entities: + _ref: rules.datatypes.func.func.entities + description: OPTIONAL + suffixes: + - outliers + +functional_derivatives_spatiotemporal_timeseries: + extensions: + - '.tsv' + - '.nii.gz' + entities: + _ref: rules.datatypes.func.func.entities + description: OPTIONAL + suffixes: + - mixing + - components + +functional_derivatives_spatiotemporal_decomp_timeseries: + extensions: + - '.json' + entities: + _ref: rules.datatypes.func.func.entities + description: OPTIONAL + suffixes: + - decomposition diff --git a/src/schema/rules/sidecars/derivatives/functional_derivatives.yaml b/src/schema/rules/sidecars/derivatives/functional_derivatives.yaml new file mode 100644 index 0000000000..13910240c3 --- /dev/null +++ b/src/schema/rules/sidecars/derivatives/functional_derivatives.yaml @@ -0,0 +1,54 @@ +--- +BandpassFilterOpt: + selectors: + - dataset.DatasetType == "derivative" + - '!(["alff", "falff"].includes(suffix))' + fields: + BandpassFilter: optional +BandpassFilterReq: + selectors: + - dataset.DatasetType == "derivative" + - '["alff", "falff"].includes(suffix)' + fields: + BandpassFilter: required +NeighborhoodOpt: + selectors: + - dataset.DatasetType == "derivative" + - '!(["reho"].includes(suffix))' + fields: + Neighborhood: optional +NeighborhoodReq: + selectors: + - dataset.DatasetType == "derivative" + - '["reho"].includes(suffix)' + fields: + Neighborhood: required +ThresholdOpt: + selectors: + - dataset.DatasetType == "derivative" + - '!(["dcb", "dcw", "ecb", "ecw"].includes(suffix))' + fields: + Threshold: optional + Method: optional +ThresholdReq: + selectors: + - dataset.DatasetType == "derivative" + - '["dcb", "dcw", "ecb", "ecw"].includes(suffix)' + fields: + Threshold: required + Method: required + +TimeseriesMetadata: + selectors: + - dataset.DatasetType == "derivative" + - suffix == "timeseries" + fields: + SamplingFrequency: required + StartTime: optional + +DecompositionMetadata: + selectors: + - dataset.DatasetType == "derivative" + - suffix == "decomposition" + fields: + Method: required diff --git a/src/schema/rules/tabular_data/derivatives/functional_derivatives.yaml b/src/schema/rules/tabular_data/derivatives/functional_derivatives.yaml new file mode 100644 index 0000000000..cf098b95c7 --- /dev/null +++ b/src/schema/rules/tabular_data/derivatives/functional_derivatives.yaml @@ -0,0 +1,44 @@ +--- +MotionRelatedTimeSeries: + selectors: + - dataset.DatasetType == "derivative" + - suffix == 'motion' + columns: + - trans_x: optional + - trans_y: optional + - trans_z: optional + - rot_x: optional + - rot_y: optional + - rot_z: optional + - framewise_displacement: optional + - rmsd: optional + - rms: optional + additional_columns: allowed_if_defined + +TemporalOutlierMasks: + selectors: + - dataset.DatasetType == "derivative" + - suffix == 'outlier' + columns: + - non_steady_state_x: optional + additional_columns: allowed_if_defined + +OtherTimeSeries: + selectors: + - dataset.DatasetType == "derivative" + - suffix == 'outlier' + columns: + - dvars: optional + - std_dvars: optional + - cosine_x: optional + - legendre: optional + additional_columns: allowed_if_defined + +SpatiotemporalDecompositions: + selectors: + - dataset.DatasetType == "derivative" + - '["components", "mixing"].includes(suffix)' + columns: + - compcor: optional + - melodic_x: optional + additional_columns: allowed_if_defined