Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Inconsistent echo-1 naming for multi-echo fmri #381

Closed
jrdalenberg opened this issue Mar 11, 2020 · 5 comments
Closed

Inconsistent echo-1 naming for multi-echo fmri #381

jrdalenberg opened this issue Mar 11, 2020 · 5 comments

Comments

@jrdalenberg
Copy link

Version info: dcm2niix version v1.0.20190902 (JP2:OpenJPEG) (JP-LS:CharLS) Clang8.1.0 (64-bit MacOS)
Sequence: Latest CMRR sequence for a Siemens Prisma, https://www.cmrr.umn.edu/multiband/
Protocol: Multiband (MB=4), multi-echo (3 echos)

We run the same protocol multiple times across multiple subjects. For about 10-20% of the scans, the echo-1 output file is not properly named as _e1 while _e2 and _e3 are always correct. The field "EchoNumber": 1 is also missing in the json file when this happens. This seems to happen randomly within and across subjects.

Expected:

[name]_e1.nii
[name]_e1.json
[name]_e2.nii
[name]_e3.json
[name]_e3.nii
[name]_e3.json

Found:

[name].nii
[name].json
[name]_e2.nii
[name]_e3.json
[name]_e3.nii
[name]_e3.json
@neurolabusc
Copy link
Collaborator

Can you confirm the behavior is now consistent if you upgrade to the development branch. I am hoping to close one remaining issue specific to Philips images before releasing a new stable release, so this is a good time to test the development branch as is the release candidate for the next stable release.

On MacOS and Linux you can build the developmental branch with these commands:

git clone --branch development https://github.com/rordenlab/dcm2niix.git
cd dcm2niix/console
make
./dcm2niix

Windows users should be able to get a compiled version from AppVeyor.

@jrdalenberg
Copy link
Author

jrdalenberg commented Mar 11, 2020

Version: v1.0.20200229 Clang11.0.0 (64-bit MacOS)

> ~/dcm2niix/console/dcm2niix ./
...
UINT16->INT16 Future release will change default. github.com/rordenlab/dcm2niix/issues/338
Convert 5 DICOM as ./__MBME_dir-PA_20200206100603_7_e3 (64x64x48x5)
Convert 5 DICOM as ./__MBME_dir-PA_20200206100603_7_e1 (64x64x48x5)
UINT16->INT16 Future release will change default. github.com/rordenlab/dcm2niix/issues/338
Convert 5 DICOM as ./__MBME_dir-PA_20200206100603_7_e2 (64x64x48x5)
Convert 540 DICOM as ./__rest1MBME_20200206100603_6 (64x64x48x540)
UINT16->INT16 Future release will change default. github.com/rordenlab/dcm2niix/issues/338
Convert 540 DICOM as ./__rest1MBME_20200206100603_6_e3 (64x64x48x540)
Convert 540 DICOM as ./__rest1MBME_20200206100603_6_e2 (64x64x48x540)

No, it is not :(

Edit: specific attempt on run 6

> ~/dcm2niix/console/dcm2niix ./6/
Chris Rorden's dcm2niiX version v1.0.20200229  Clang11.0.0 (64-bit MacOS)
Found 1620 DICOM file(s)
Slices not stacked: echo varies (TE 36.1, 60.2; echo 2, 3). Use 'merge 2D slices' option to force stacking
Convert 540 DICOM as ./6/6_rest1MBME_20200206100603_6_e2 (64x64x48x540)
UINT16->INT16 Future release will change default. github.com/rordenlab/dcm2niix/issues/338
Convert 540 DICOM as ./6/6_rest1MBME_20200206100603_6_e3 (64x64x48x540)
Convert 540 DICOM as ./6/6_rest1MBME_20200206100603_6_e1 (64x64x48x540)
Conversion required 10.370607 seconds (3.002684 for core code).

Looks like it sometimes does not work when converting everything from a participant in one go.

@jrdalenberg
Copy link
Author

jrdalenberg commented Mar 11, 2020

I tried converting with and without including several of the scans.

It seems to specifically happen when there is a combination of multiple ME and one or more non-ME fMRI scans in the subject DICOM files.

> ~/dcm2niix/console/dcm2niix ./
Chris Rorden's dcm2niiX version v1.0.20200229  Clang11.0.0 (64-bit MacOS)
Found 2405 DICOM file(s)
Slices not stacked: echo varies (TE 12, 36.1; echo 1, 2). Use 'merge 2D slices' option to force stacking
Convert 260 DICOM as ./__hands1MBME_20200206100603_10 (64x64x48x260)
Convert 260 DICOM as ./__hands1MBME_20200206100603_10_e2 (64x64x48x260)
Convert 260 DICOM as ./__hands1MBME_20200206100603_10_e3 (64x64x48x260)
Convert 540 DICOM as ./__rest1MBME_20200206100603_6_e2 (64x64x48x540)
Convert 540 DICOM as ./__rest1MBME_20200206100603_6_e1 (64x64x48x540)
UINT16->INT16 Future release will change default. github.com/rordenlab/dcm2niix/issues/338
Convert 540 DICOM as ./__rest1MBME_20200206100603_6_e3 (64x64x48x540)
Convert 5 DICOM as ./__MB_dir-PA_20200206100603_9 (114x114x72x5)
Conversion required 19.879055 seconds (6.241951 for core code).

See scan _10 above.

neurolabusc added a commit that referenced this issue Mar 12, 2020
@neurolabusc
Copy link
Collaborator

@jrdalenberg can you test the latest developmental commit (v1.0.20200312) to see if it resolves your issue.

@jrdalenberg
Copy link
Author

@neurolabusc Yes it does! Thanks!

Before:

Chris Rorden's dcm2niiX version v1.0.20190902  (JP2:OpenJPEG) (JP-LS:CharLS) Clang8.1.0 (64-bit MacOS)
Found 1346 DICOM file(s)
Convert 176 DICOM as ./__MPRAGE_20200305102812_5 (240x256x176x1)
Slices not stacked: echo varies (TE 12, 36.1; echo 1, 2). Use 'merge 2D slices' option to force stacking
Convert 260 DICOM as ./__hands2MBME_20200305102812_8 (64x64x48x260)
Convert 260 DICOM as ./__hands2MBME_20200305102812_8_e2 (64x64x48x260)
Convert 260 DICOM as ./__hands2MBME_20200305102812_8_e3 (64x64x48x260)
Convert 370 DICOM as ./__rest2MB_20200305102812_6 (114x114x72x370)
Convert 5 DICOM as ./__MB_dir-PA_20200305102812_7 (114x114x72x5)
Convert 5 DICOM as ./__MBME_dir-PA_20200305102812_9_e3 (64x64x48x5)
Convert 5 DICOM as ./__MBME_dir-PA_20200305102812_9_e1 (64x64x48x5)
Convert 5 DICOM as ./__MBME_dir-PA_20200305102812_9_e2 (64x64x48x5)
Conversion required 30.887490 seconds (6.020803 for core code).

After:

Chris Rorden's dcm2niiX version v1.0.20200312  Clang11.0.0 (64-bit MacOS)
Found 1346 DICOM file(s)
Convert 176 DICOM as ./__MPRAGE_20200305102812_5 (240x256x176x1)
Slices not stacked: echo varies (TE 12, 36.1; echo 1, 2). Use 'merge 2D slices' option to force stacking
Convert 260 DICOM as ./__hands2MBME_20200305102812_8_e1 (64x64x48x260)
UINT16->INT16 Future release will change default. github.com/rordenlab/dcm2niix/issues/338
Convert 260 DICOM as ./__hands2MBME_20200305102812_8_e2 (64x64x48x260)
UINT16->INT16 Future release will change default. github.com/rordenlab/dcm2niix/issues/338
Convert 260 DICOM as ./__hands2MBME_20200305102812_8_e3 (64x64x48x260)
Convert 370 DICOM as ./__rest2MB_20200305102812_6 (114x114x72x370)
Convert 5 DICOM as ./__MB_dir-PA_20200305102812_7 (114x114x72x5)
UINT16->INT16 Future release will change default. github.com/rordenlab/dcm2niix/issues/338
Convert 5 DICOM as ./__MBME_dir-PA_20200305102812_9_e3 (64x64x48x5)
UINT16->INT16 Future release will change default. github.com/rordenlab/dcm2niix/issues/338
Convert 5 DICOM as ./__MBME_dir-PA_20200305102812_9_e1 (64x64x48x5)
UINT16->INT16 Future release will change default. github.com/rordenlab/dcm2niix/issues/338
Convert 5 DICOM as ./__MBME_dir-PA_20200305102812_9_e2 (64x64x48x5)
Conversion required 32.037006 seconds (6.080700 for core code).

yarikoptic added a commit to neurodebian/dcm2niix that referenced this issue May 6, 2020
* tag 'v1.0.20200331': (52 commits)
  Update submodules
  Update dcm_qa submodule.
  UIH 3D sequence quirk
  New release, EstimatedTotalReadoutTime/EstimatedEffectiveEchoSpacing (rordenlab#377)
  Philips TotalReadoutTime (rordenlab#377)
  Cleanup
  Experimental Canon DICOM support (rordenlab#388)
  Experimental solution for issue 384 (rordenlab#384)
  Detect catastrophic anonymization (rordenlab#383)
  Only report "multiple inversion times" if 0018,9079 values differ (e.g. Bangalore data in https://github.com/neurolabusc/dcm_qa_philips)
  Consistent echo naming (rordenlab#381)
  Philips partial Fourier (rordenlab#377)
  Support InversionTImes (0018,9079) tag (rordenlab#380)
  Philips effective echo spacing formula ambiguous (rordenlab#377)
  TR for Philips 3D EPI (rordenlab#369)
  Citation (rordenlab#102)
  GE PET with variable slice intensity (rordenlab#374)
  Estimate Philips EffectiveEchoSpacing (nipreps/sdcflows#5)
  GE slice interpolation (rordenlab#373)
  3D EPI TR (rordenlab#369) 3D phase (rordenlab#371) Enhanced ordering (rordenlab#372 (comment))
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants