Phantom dataset - overview of sequences, between-site consistency #6

Open
opened 2025-05-12 12:53:55 +00:00 by msz · 3 comments
Member

While investigating the generalizability of BIDS conversion, I looked at DICOM groupings (dicom series found) produced by Heudiconv for each dataset, and how they would map onto a BIDS dataset. Based on DICOMs alone (protocol names, series descriptions), I believe that the following describes the intended content of a BIDS dataset:

  • anat
    • T1w
    • T2w
  • func
    • task-rest
    • task-restvida
    • task-restvidn
  • fmap
    • (3 pairs of AP/PA, matching functional images above)
  • dwi
    • b1200 + reference
    • multi shell + reference

For completeness, here is a table of SeriesDescriptions from each site (almost identical to ProtocolName, but sometimes more detail). Note that the issue is not intended to compare the exact names (these can be easily managed with separate heuristics or additional conditional statements) but to track and discuss presence or absence of given acquisitions.

Click to show / hide the table
Aachen Frankfurt Heidelberg Mannheim
AAHScout Q01_anat_acq-scout_T1w t1_mpr_12CH_sag_p2_iso_FOV256_ND_REF Q01_anat_acq-scout_T1w
AAHScout_MPR_sag Q01_anat_acq-scout_T1w_MPR_sag T2_TSE_384_p2_tra_statt_FLAIR Q01_anat_acq-scout_T1w_MPR_sag
AAHScout_MPR_cor Q01_anat_acq-scout_T1w_MPR_cor Localizer Q01_anat_acq-scout_T1w_MPR_cor
AAHScout_MPR_tra Q01_anat_acq-scout_T1w_MPR_tra AAHScout Q01_anat_acq-scout_T1w_MPR_tra
Q01_anat_T1w_sag_0p8mm Q01_anat_acq-0p8mm_T1w AAHScout_MPR_sag Q01_anat_acq-0p8mm_T1w
Q01_anat_T2w_space_sag_0p8mm Q01_anat_acq-0p8mm_T2w AAHScout_MPR_cor Q01_anat_acq-0p8mm_T2w
Q01_func_task-rest Q01_func_task-rest_acq-2mm AAHScout_MPR_tra Q01_func_task-rest_acq-2mm
Q01_fmap_se_ap Q01_fmap_dir-ap_acq-2mm_run-1_epi Localizer_aligned Q01_fmap_dir-ap_acq-2mm_run-1_epi
Q01_fmap_se_pa Q01_fmap_dir-pa_acq-2mm_run-1_epi SpinEchoFieldMap_AP Q01_fmap_dir-pa_acq-2mm_run-1_epi
Q01_dwi_b1200dir64 Q01_func_task-restvidn_acq-2mm SpinEchoFieldMap_AP Q01_func_task-restvidn_acq-2mm
Q01_dwi_b1200dir64_ADC Q01_fmap_dir-ap_acq-2mm_run-2_epi SpinEchoFieldMap_PA Q01_fmap_dir-ap_acq-2mm_run-2_epi
Q01_dwi_b0ref Q01_fmap_dir-pa_acq-2mm_run-2_epi SpinEchoFieldMap_PA Q01_fmap_dir-pa_acq-2mm_run-2_epi
Q01_dwi_mshell Q01_func_task-restvida_acq-2mm gre_field_mapping Q01_func_task-restvida_acq-2mm
Q01_dwi_mshell_ADC Q01_fmap_dir-ap_acq-2mm_run-3_epi mprage_sag_0p8mm Q01_fmap_dir-ap_acq-2mm_run-3_epi
Q01_dwi_mshell_ref Q01_fmap_dir-pa_acq-2mm_run-3_epi rfMRI_2mm_iso_SMS3_REST_AP_SBRef Q01_fmap_dir-pa_acq-2mm_run-3_epi
PhoenixZIPReport Q01_dwi_acq-1p5b1200 rfMRI_2mm_iso_SMS3_REST_AP Q01_dwi_acq-1p5b1200
Q01_dwi_acq-1p5b1200_ADC diff_standard_1p5mm_SMS4_AP_SBRef Q01_dwi_acq-1p5b1200_ADC
Q01_dwi_acq-1p5b0ref diff_standard_1p5mm_SMS4_AP Q01_dwi_acq-1p5b0ref
Q01_dwi_acq-mshell-1p5b2500 diff_refscan_1p5mm_SMS4_PA_SBRef Q01_dwi_acq-mshell-1p5b2500
Q01_dwi_acq-mshell-1p5b2500_ADC diff_refscan_1p5mm_SMS4_PA Q01_dwi_acq-mshell-1p5b2500_ADC
Q01_dwi_acq-mshell-1p5refb0ref diff_advanced_1p5mm_SMS4_AP_SBRef Q01_dwi_acq-mshell-1p5refb0ref
PhoenixZIPReport diff_advanced_1p5mm_SMS4_AP PhoenixZIPReport

Note: diff_* names for Heidelberg extracted with dicom-dump; all others taken from heudiconv's dicominfo.tsv.

Below is an overview of how each phantom dataset maps onto the BIDS scheme above -- mostly in terms of things that a BIDS validator would flag as inconsistent subject / missing acquisition warnings. I did not compare the acquisition parameters.

Aachen

https://hub.trr379.de/q01/phantom-mri-dicom-aachen

Only one fMRI run (rest), and only one field map pair.

Frankfurt

https://hub.trr379.de/q02/phantom-mri-dicom-frankfurt

Matches the scheme above.

Heidelberg

https://hub.trr379.de/q01/phantom-mri-dicom-heidelberg

  • The anatomical (T1w, T2w) images are separate (different DICOM study ID, different subject ID) from the other acquisitions.
  • There are two pairs of AP/PA field maps, and one gradient-echo field map.
  • There is one fMRI run, and it is accompanied by a reference image (marked SBRef in SeriesDescription) not present in other datasets.
  • For diffusion images, there are two sets of three DICOM series ("standard" and "advanced"); however, each set contains AP_SBref and PA_SBRef (intended as field map?); I am not sure if that matches the other sites.

Mannheim

https://hub.trr379.de/q01/phantom-mri-dicom-mannheim

Matches the scheme above.

While investigating the generalizability of BIDS conversion, I looked at DICOM groupings (dicom series found) produced by Heudiconv for each dataset, and how they would map onto a BIDS dataset. Based on DICOMs alone (protocol names, series descriptions), I believe that the following describes the intended content of a BIDS dataset: - anat - T1w - T2w - func - task-rest - task-restvida - task-restvidn - fmap - (3 pairs of AP/PA, matching functional images above) - dwi - b1200 + reference - multi shell + reference For completeness, here is a table of SeriesDescriptions from each site (almost identical to ProtocolName, but sometimes more detail). Note that the issue is not intended to compare the exact names (these can be easily managed with separate heuristics or additional conditional statements) but to track and discuss presence or absence of given acquisitions. <details> <summary> Click to show / hide the table </summary> | Aachen | Frankfurt | Heidelberg | Mannheim | | --- | --- | --- | --- | | AAHScout | Q01_anat_acq-scout_T1w | t1_mpr_12CH_sag_p2_iso_FOV256_ND_REF | Q01_anat_acq-scout_T1w | | AAHScout_MPR_sag | Q01_anat_acq-scout_T1w_MPR_sag | T2_TSE_384_p2_tra_statt_FLAIR | Q01_anat_acq-scout_T1w_MPR_sag | | AAHScout_MPR_cor | Q01_anat_acq-scout_T1w_MPR_cor | Localizer | Q01_anat_acq-scout_T1w_MPR_cor | | AAHScout_MPR_tra | Q01_anat_acq-scout_T1w_MPR_tra | AAHScout | Q01_anat_acq-scout_T1w_MPR_tra | | Q01_anat_T1w_sag_0p8mm | Q01_anat_acq-0p8mm_T1w | AAHScout_MPR_sag | Q01_anat_acq-0p8mm_T1w | | Q01_anat_T2w_space_sag_0p8mm | Q01_anat_acq-0p8mm_T2w | AAHScout_MPR_cor | Q01_anat_acq-0p8mm_T2w | | Q01_func_task-rest | Q01_func_task-rest_acq-2mm | AAHScout_MPR_tra | Q01_func_task-rest_acq-2mm | | Q01_fmap_se_ap | Q01_fmap_dir-ap_acq-2mm_run-1_epi | Localizer_aligned | Q01_fmap_dir-ap_acq-2mm_run-1_epi | | Q01_fmap_se_pa | Q01_fmap_dir-pa_acq-2mm_run-1_epi | SpinEchoFieldMap_AP | Q01_fmap_dir-pa_acq-2mm_run-1_epi | | Q01_dwi_b1200dir64 | Q01_func_task-restvidn_acq-2mm | SpinEchoFieldMap_AP | Q01_func_task-restvidn_acq-2mm | | Q01_dwi_b1200dir64_ADC | Q01_fmap_dir-ap_acq-2mm_run-2_epi | SpinEchoFieldMap_PA | Q01_fmap_dir-ap_acq-2mm_run-2_epi | | Q01_dwi_b0ref | Q01_fmap_dir-pa_acq-2mm_run-2_epi | SpinEchoFieldMap_PA | Q01_fmap_dir-pa_acq-2mm_run-2_epi | | Q01_dwi_mshell | Q01_func_task-restvida_acq-2mm | gre_field_mapping | Q01_func_task-restvida_acq-2mm | | Q01_dwi_mshell_ADC | Q01_fmap_dir-ap_acq-2mm_run-3_epi | mprage_sag_0p8mm | Q01_fmap_dir-ap_acq-2mm_run-3_epi | | Q01_dwi_mshell_ref | Q01_fmap_dir-pa_acq-2mm_run-3_epi | rfMRI_2mm_iso_SMS3_REST_AP_SBRef | Q01_fmap_dir-pa_acq-2mm_run-3_epi | | PhoenixZIPReport | Q01_dwi_acq-1p5b1200 | rfMRI_2mm_iso_SMS3_REST_AP | Q01_dwi_acq-1p5b1200 | | | Q01_dwi_acq-1p5b1200_ADC | diff_standard_1p5mm_SMS4_AP_SBRef | Q01_dwi_acq-1p5b1200_ADC | | | Q01_dwi_acq-1p5b0ref | diff_standard_1p5mm_SMS4_AP | Q01_dwi_acq-1p5b0ref | | | Q01_dwi_acq-mshell-1p5b2500 | diff_refscan_1p5mm_SMS4_PA_SBRef | Q01_dwi_acq-mshell-1p5b2500 | | | Q01_dwi_acq-mshell-1p5b2500_ADC | diff_refscan_1p5mm_SMS4_PA | Q01_dwi_acq-mshell-1p5b2500_ADC | | | Q01_dwi_acq-mshell-1p5refb0ref | diff_advanced_1p5mm_SMS4_AP_SBRef | Q01_dwi_acq-mshell-1p5refb0ref | | | PhoenixZIPReport | diff_advanced_1p5mm_SMS4_AP | PhoenixZIPReport | Note: `diff_*` names for Heidelberg extracted with dicom-dump; all others taken from heudiconv's dicominfo.tsv. </details> Below is an overview of how each phantom dataset maps onto the BIDS scheme above -- mostly in terms of things that a BIDS validator would flag as inconsistent subject / missing acquisition warnings. I did not compare the acquisition parameters. ## Aachen https://hub.trr379.de/q01/phantom-mri-dicom-aachen Only one fMRI run (rest), and only one field map pair. ## Frankfurt https://hub.trr379.de/q02/phantom-mri-dicom-frankfurt Matches the scheme above. ## Heidelberg https://hub.trr379.de/q01/phantom-mri-dicom-heidelberg - The anatomical (T1w, T2w) images are separate (different DICOM study ID, different subject ID) from the other acquisitions. - There are two pairs of AP/PA field maps, and one gradient-echo field map. - There is one fMRI run, and it is accompanied by a reference image (marked SBRef in SeriesDescription) not present in other datasets. - For diffusion images, there are two sets of three DICOM series ("standard" and "advanced"); however, each set contains AP_SBref and PA_SBRef (intended as field map?); I am not sure if that matches the other sites. ## Mannheim https://hub.trr379.de/q01/phantom-mri-dicom-mannheim Matches the scheme above.
Author
Member

Apart from checking overlap of the sequence types (runs), as discussed above, I also checked the number of volumes in the (rs)fMRI runs - as reported from the converted NIfTI files by nib-ls sub-?/func/*nii.gz:

rest restvida restvidn
Aachen 470 1 - -
Frankfurt 311 475 475
Mannheim 20 20 20

It seems none of those match the protocol printout (PDF) shared by @mih which suggests 325 / 490 / 490 (Kontrast - Dynamisch / Messungen).


  1. Stacking with Heudiconv (see .heudiconv/a/info/dicominfo.tsv included in this repository) finds 740 DICOM files belonging to the series (7-Q01_func_task-rest) and reports dim4=740. However, dcm2niix produces a NIfTI file with dim4=470. I don't know why that happens, but I'm inclined to trust dcm2niix. For other sites, the dimensions reported from DICOM stacking match those found in NIfTI. ↩︎

Apart from checking overlap of the sequence types (runs), as discussed above, I also checked the number of volumes in the (rs)fMRI runs - as reported from the converted NIfTI files by `nib-ls sub-?/func/*nii.gz`: | | rest | restvida | restvidn | |---------|---------|---------|---------| | Aachen | 470 [^fn1] | - | - | | Frankfurt | 311 | 475 | 475 | | Mannheim | 20 | 20 | 20 | It seems none of those match the protocol printout (PDF) shared by @mih which suggests 325 / 490 / 490 (Kontrast - Dynamisch / Messungen). [^fn1]: Stacking with Heudiconv (see `.heudiconv/a/info/dicominfo.tsv` included in this repository) finds 740 DICOM files belonging to the series (`7-Q01_func_task-rest`) and reports `dim4=740`. However, dcm2niix produces a NIfTI file with `dim4=470`. I don't know why that happens, but I'm inclined to trust dcm2niix. For other sites, the dimensions reported from DICOM stacking match those found in NIfTI.
Author
Member

Following up on my footnote from the comment above, regarding DICOM file count in Aachen rsfMRI:

Stacking with Heudiconv (see .heudiconv/a/info/dicominfo.tsv included in this repository) finds 740 DICOM files belonging to the series (7-Q01_func_task-rest) and reports dim4=740. However, dcm2niix produces a NIfTI file with dim4=470. I don't know why that happens, but I'm inclined to trust dcm2niix. For other sites, the dimensions reported from DICOM stacking match those found in NIfTI.

Running dcm2niix indicates that some of these DICOMs are classified as duplicates:

Chris Rorden's dcm2niiX version v1.0.20241211  (JP2:OpenJPEG) (JP-LS:CharLS) GCC8.4.0 x86-64 (64-bit Linux)
Found 741 DICOM file(s)
Convert 1 DICOM as /tmp/aaa-dec/Q01_func_task-rest_7_MR_Q01_fmap_se_ap_20250120132533_8 (104x104x72x1)
270 images have identical time, series, acquisition and instance values. DUPLICATES REMOVED.
Warning: Issue870: Slice timing range of first volume: range 0..4347.5, TA= 4347.5, TR=1500 ms)
Warning: Issue870: Slice timing range of 2nd volume: range 14845..16262.5, TA= 1417.5, TR=1500 ms)
Convert 470 DICOM as /tmp/aaa-dec/Q01_func_task-rest_7_MR_Q01_func_task-rest_20250120132533_7 (104x104x72x470)
Conversion required 2.207800 seconds (2.207232 for core code).

Coincidentally, this also shows a warning related to Syngo XA60, which points to dcm2niix issue 870. Note to self: the output above is from the latest dcm2niix release, while the repository contains files created with v1.0.20240202; reading the issue suggests that both version account for this issue, but it would be nice to use the latest.

Following up on my footnote from the comment above, regarding DICOM file count in Aachen rsfMRI: > Stacking with Heudiconv (see .heudiconv/a/info/dicominfo.tsv included in this repository) finds 740 DICOM files belonging to the series (7-Q01_func_task-rest) and reports dim4=740. However, dcm2niix produces a NIfTI file with dim4=470. I don't know why that happens, but I'm inclined to trust dcm2niix. For other sites, the dimensions reported from DICOM stacking match those found in NIfTI. Running `dcm2niix` indicates that some of these DICOMs are classified as duplicates: ``` Chris Rorden's dcm2niiX version v1.0.20241211 (JP2:OpenJPEG) (JP-LS:CharLS) GCC8.4.0 x86-64 (64-bit Linux) Found 741 DICOM file(s) Convert 1 DICOM as /tmp/aaa-dec/Q01_func_task-rest_7_MR_Q01_fmap_se_ap_20250120132533_8 (104x104x72x1) 270 images have identical time, series, acquisition and instance values. DUPLICATES REMOVED. Warning: Issue870: Slice timing range of first volume: range 0..4347.5, TA= 4347.5, TR=1500 ms) Warning: Issue870: Slice timing range of 2nd volume: range 14845..16262.5, TA= 1417.5, TR=1500 ms) Convert 470 DICOM as /tmp/aaa-dec/Q01_func_task-rest_7_MR_Q01_func_task-rest_20250120132533_7 (104x104x72x470) Conversion required 2.207800 seconds (2.207232 for core code). ``` Coincidentally, this also shows a warning related to Syngo XA60, which points to [dcm2niix issue 870](https://github.com/rordenlab/dcm2niix/issues/870). Note to self: the output above is from the latest dcm2niix release, while the repository contains files created with v1.0.20240202; reading the issue suggests that both version account for this issue, but it would be nice to use the latest.
Author
Member

Filling back some information from August:

A re-scan has been provided by Aachen (not published because I don't have repository permissions, and it's 6.4 GB extracted). A conversion is in https://hub.trr379.de/q02/tmp-phantom-bids (separate from this repo because can't formally declare dependency). Here's my observations, initially shared by e-mail:

  1. There are now three (rs)fMRI sessions with the expected number of volumes. In the previous dataset some rsfMRI DICOMs were duplicates -- this is no longer the case. All OK kere.

  2. The T2w is missing.

  3. There are 7104 and 9984 DICOM files for the DWI acquisitions, is that number expected (I know very little about DWI)?

  4. dcm2niix (latest release) prints the following warning for most if not all series, e.g. this one for task-rest (these are warnings (not errors) and I am not able to tell if they are concerning or not):

Warning: 4D Siemens XA images should be exported as enhanced not classic DICOM. Slice times and other properties may be inaccurate.
Convert 325 DICOM as /tmp/hdc/rsfmri_Q01_func_task-rest_acq-2mm_20250527131333_6 (104x104x72x325)

Filling back some information from August: A re-scan has been provided by Aachen (not published because I don't have repository permissions, and it's 6.4 GB extracted). A conversion is in https://hub.trr379.de/q02/tmp-phantom-bids (separate from this repo because can't formally declare dependency). Here's my observations, initially shared by e-mail: 1. There are now three (rs)fMRI sessions with the expected number of volumes. In the previous dataset some rsfMRI DICOMs were duplicates -- this is no longer the case. All OK kere. 2. The T2w is missing. 3. There are 7104 and 9984 DICOM files for the DWI acquisitions, is that number expected (I know very little about DWI)? 4. dcm2niix (latest release) prints the following warning for most if not all series, e.g. this one for task-rest (these are warnings (not errors) and I am not able to tell if they are concerning or not): Warning: 4D Siemens XA images should be exported as enhanced not classic DICOM. Slice times and other properties may be inaccurate. Convert 325 DICOM as /tmp/hdc/rsfmri_Q01_func_task-rest_acq-2mm_20250527131333_6 (104x104x72x325)
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
q02/phantom-mri-bids#6
No description provided.