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

Inferring GE Slice Timing From Protocol Data Block #311

Closed
neurolabusc opened this issue Jul 19, 2019 · 0 comments
Closed

Inferring GE Slice Timing From Protocol Data Block #311

neurolabusc opened this issue Jul 19, 2019 · 0 comments

Comments

@neurolabusc
Copy link
Collaborator

neurolabusc commented Jul 19, 2019

There are three methods to determine slice times for GE EPI data:

  1. TriggerTime (0018,1060)
  2. RTIA Timer (0021,105E)
  3. Private Protocol Data Block (0025,101B)

The methods are described here.

In the past, dcm2niix only attempted the first two methods. The latest commit will attempt the third method if the first two fail (just like dicm2nii). The private data block only reports whether the data was acquired in sequential or interleaved order. We can infer the slice times by knowing the order, repetition time and number of slices. Unfortunately, there does not seem to be a reliable way to determine the acquisition time with GE, so this formula will only be precise for continuous fMRI (with no temporal gap between volumes) and will fail for sparse acquisitions (though we do not apply slice time correction when there are large gaps). When this method is applied, dcm2niix will generate the warning Guessing slice times using ProtocolBlock SliceOrder to warn the user that this is an estimate.

I have added examples to dcm_qa_stc that show this method for sequential and interleaved series, each acquired in inferior-to-superior and superior-to-inferior order. dcm2niix stores GE axial slices to disk in inferior-to-superior order regardless of acquisiton order, and when it flips the slices it transforms the sform, qform and slice timing so they remain in register.

This should resolve issues for many users.

neurolabusc added a commit to neurolabusc/dcm_qa_stc that referenced this issue Jul 19, 2019
neurolabusc added a commit to neurolabusc/dcm_qa_nih that referenced this issue Jul 19, 2019
yarikoptic added a commit to neurodebian/dcm2niix that referenced this issue May 6, 2020
* tag 'v1.0.20190720':
  Update dcm_qa submodule.
  Handle rare VRs (https://www.aliza-dicom-viewer.com/download/datasets)
  New default merge option "-m o" will merge CTs and segment MRIs (https://discourse.slicer.org/t/odd-dicom-import/7576)
  --progress option (rordenlab#314; rordenlab#312)
  Tune verbosity (rordenlab#312)
  GE Slice Timing From Protocol Data Block (rordenlab#311)
  Desparate guess of GE slice times from ProtocolDataBlock (clone dicm2nii, assumes TA close to TR)
  Support interleaved (rordenlab#309)
  Slice times from ucMode (rordenlab#309)
  GE number of slice discrepancy (rordenlab#306)
  Simplify slice timing code, develop stc validation (https://github.com/neurolabusc/dcm_qa_stc)
  hdr.vox_offset is a float not integer (https://www.nitrc.org/forum/message.php?msg_id=27155)
  BIDS tags for PASL fairest sequent
  Read 0019,1029 (rordenlab#296)
  Generate warning rather than error when palette colors are detected (UNFmontreal/Dcm2Bids#54)
  Update tinydir call (rordenlab#298)
  Bruker 4D datasets: correct slice ordering
  Bruker 4D datasets: Fix parametric maps grouping
  Changes up to divest v0.8.1
  Support isotropic scans for NRRD
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

1 participant