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

SliceTiming for GE Diffusion #635

Closed
mr-jaemin opened this issue Sep 19, 2022 · 6 comments
Closed

SliceTiming for GE Diffusion #635

mr-jaemin opened this issue Sep 19, 2022 · 6 comments

Comments

@mr-jaemin
Copy link
Collaborator

mr-jaemin commented Sep 19, 2022

Although GE EPI diffusion "epi2" does not store slice timing information in DICOM header, the slice timing information can be calculated using this method/code used in fMRI;

The provided C source code slicetime.cpp demonstrates one method. Here, the DICOM header is read to determine the multi-band factor , number of slices per volume , sampling rate , sequential or interleaved order , ascending or descending order , software release (versions prior to 27.0 R3 used different mulit-band slice order) and group delay .

The diffusion EPI "epi2" is a special case of this approach:

  • Interleaved=true
  • is27r3=false (i.e. if #slices/MB is an even integer, add extra MB excitation so that #slices/MB = odd)
  • group delay=0

Exception:
Three configurations (Premier, UHP, 7T) uses diffusion gradient cycling for thermal management. There are different cycling modes in product PSD:

  • All-TR (default): one diffusion volume collected over all-TR
    -- CV12 (0019,10B3) UserData12 = 1
  • 2-TR: one diffusion volume collected over 2-TR
    -- CV12 (0019,10B3) UserData12 = 2
  • 3-TR: one diffusion volume collected over 3-TR
    -- CV12 (0019,10B3) UserData12 = 3
  • Special OFF: one diffusion volume collected over 1-TR
    -- For 4 popular multi-site studies: ABCD, ADNI3-Adv, HCP-lifespan, UK BioBank
    -- CV15 (0019,10B6) UserData15 = 0.72

I would propose the following approach to generate SliceTiming for GE Diffusion:

if `(0008,1090)` ManufacturersModelName == Premier or UHP or 7T
   if CV15 `(0019,10B6)` == 0.72
     Cycling Special OFF
   else if CV12 `(0019,10B3)` == 2
     Cycling 2TR
   else if CV12 `(0019,10B3)` == 3
     Cycling 2TR
   else
      Cycling ALL-TR
else
     Cycling OFF

To accommodate for/support the following scenarios:

  • If user manually turns off the diffusion gradient cycling (for Premier, UHP, 7T) by changing research CV (or custom PSD), DICOM header doesn't store this information.
  • Also, user-custom PSD may use CV12 for other purpose beside controlling cycling mode.
    I would propose the (undocumented) program option(--diffCyclingModeGE) to specify/override cycling mode

I will submit a pull requests for your review.

@neurolabusc
Copy link
Collaborator

Thanks for your PR

@mr-jaemin
Copy link
Collaborator Author

v1.0.20220915+

@mharms
Copy link
Collaborator

mharms commented Nov 2, 2022

@mr-jaemin: Just wanted to mention that this PR is reporting values for the NumberOfDiffusionT2GE parameter for the "Calibration" scans, and that plus the NumberOfDiffusionDirectionGE variable for the research/ABCD/mprage_promo sequence (under DV26). So, the fields queried for those two variables are apparently not unique to the diffusion sequence (and presumably have a different interpretation in those other sequences).

@mharms mharms reopened this Nov 2, 2022
@mr-jaemin
Copy link
Collaborator Author

mr-jaemin commented Nov 2, 2022

@mharms Thanks for catching and reporting this issue. You are right: the NumberOfDiffusionT2GE is from UserData23 (0019,10DF) and the NumberOfDiffusionDirectionGE is from UserData24 (0019,10E0). The UserData have application specific interpretation. So, I will submit PR to limit them to GE diffusion only.

@mr-jaemin
Copy link
Collaborator Author

mr-jaemin commented Nov 2, 2022

@mharms Could you please try the fix, now in the development branch?

@mharms
Copy link
Collaborator

mharms commented Nov 2, 2022

The minor issue that I raised here has been resolved (on the particular data I was testing) with #645.

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

3 participants