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

GE Direct field mapping deltaTE (or TE1/TE2) #617

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

GE Direct field mapping deltaTE (or TE1/TE2) #617

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

Comments

@mr-jaemin
Copy link
Collaborator

What do you think about adding the delta TE or (TE1, TE2) from GE direct field mapping DICOM to BID JSON?

The delta TE = 1e6 / (2 x pi x VelocityEncodeScale)

where VelocityEncodeScale can be found from DICOM

Example value from dcm_qa_fmap/GE_6_CV_Neuro:
(0019,10e2) DS [-69.077667] # 10, 1 VelocityEncodeScale

Delta TE = 2304 us (TE1 = 4608 us, TE2=6912 us)

I confirmed the TE1/TE2/VelocityEncodeScale on the console as well as the above formula from the code. Any suggestion to save the delta TE or TE2 information in the BIDS sidecar JSON file?

GE_6_CV_Neuro_HH_Adv_fieldmaphz.json

{
	"Modality": "MR",
	"MagneticFieldStrength": 3,
	"ImagingFrequency": 127.738,
	"Manufacturer": "GE",
	"ManufacturersModelName": "SIGNA Architect",
	"InstitutionName": "Bay6 NOT FOR DIAGNOSTIC USE",
	"DeviceSerialNumber": "0000000LXBAY6NET",
	"StationName": "GEHCBAY6",
	"BodyPartExamined": "BRAIN",
	"PatientPosition": "HFS",
	"SoftwareVersions": "27\\LX\\MR Software release:DV27.0_R01_1850.a",
	"MRAcquisitionType": "2D",
	"SeriesDescription": "B0map",
	"ProtocolName": "CV_Neuro_HH_Adv",
	"ScanningSequence": "RM",
	"SequenceVariant": "NONE",
	"ScanOptions": "VB_GEMS",
	"ImageType": ["ORIGINAL", "PRIMARY", "OTHER", "REAL", "FIELDMAPHZ"],
	"RawImage": false,
	"SeriesNumber": 6,
	"AcquisitionNumber": 1,
	"Units": "Hz",
	"SliceThickness": 5,
	"SpacingBetweenSlices": 9,
	"SAR": 0.0122642,
	"EchoTime": 0.004608,
	"RepetitionTime": 0.2,
	"FlipAngle": 20,
	"CoilString": "48HAP",
	"PercentPhaseFOV": 100,
	"PercentSampling": 100,
	"AcquisitionMatrixPE": 128,
	"ReconMatrixPE": 128,
	"ParallelReductionFactorInPlane": 2,
	"EffectiveEchoSpacing": 0.00114293,
	"TotalReadoutTime": 0.145152,
	"PixelBandwidth": 488.281,
	"PhaseEncodingAxis": "j",
	"ImageOrientationPatientDICOM": [
		1,
		-0,
		0,
		-0,
		1,
		0	],
	"InPlanePhaseEncodingDirectionDICOM": "COL",
	"ConversionSoftware": "dcm2niix",
	"ConversionSoftwareVersion": "v1.0.20211006"
> }
@mr-jaemin
Copy link
Collaborator Author

The delta TE is controlled by the User CV implicitly:

  • If Scan Modes: 1=Patient Scanning (CV2 for 2D or CV30 for 3D), B0 Field Mapping Range is set based on Fat/Water Chemical Shift (i.e. 220 Hz for 3T). In this mode, the UI "B0 Field Mapping Range" (CV4 for 2D) will be displayed but will NOT be utilized.
  • If Scan Modes: 0=Service Mode, the B0 Field Mapping Range is set by the UI "B0 Field Mapping Range" (CV4 for 2D or CV33 for 3D)
  • DICOM private tags store these CV values (CV2, CV2, CV30, CV33):

2D (B0map or B0rf)
Screen Shot 2022-07-19 at 4 57 56 PM
Screen Shot 2022-07-19 at 3 36 43 PM
Screen Shot 2022-07-19 at 5 00 45 PM

3D (3db0map)
Screen Shot 2022-07-19 at 5 04 35 PM
Screen Shot 2022-07-19 at 4 43 44 PM
Screen Shot 2022-07-19 at 5 00 11 PM

@neurolabusc
Copy link
Collaborator

@mr-jaemin I think the BIDS fields are would be EchoTime1 and EchoTime2, right?

@mr-jaemin
Copy link
Collaborator Author

Sounds good! EchoTime1 and EchoTime2 to both magnitude and fieldmap JSON files? Please let me know if you want me to do pull request or you could take care of this.

@neurolabusc
Copy link
Collaborator

@mr-jaemin GE scanners generate a direct field mapping. So the only required BIDS field for the FIELDMAPHZ image type is Units which dcm2niix correctly populates (as Hz). The EchoTime1 and EchoTime2 are only required for a phase difference map.

So it looks like adding these values is optional. My sense is that they would only obfuscate the raw magnitude, phase, raw and imaginary images, as each of those only has a single echo time associated with the image. It seems like it might be helpful (but not required) to include EchoTime1 and EchoTime2 in the derived FIELDMAPHZ image as it is the derived from two images with different echo times.

I suggest you submit a pull request, I am recovering from shoulder surgery so typing is laborious for me.

@mr-jaemin
Copy link
Collaborator Author

Agreed that it may be confusing to add EchoTime1 and EchoTime2 to the magnitude images of the first echo (i.e single echo). I would add the EchoTime1 and EchoTime2 to the FIELDMAPHZ JSON file only since they would be a useful information, especially for unwrapping.

I would submit a pull request. Hope you recover soon.

neurolabusc added a commit that referenced this issue Jul 20, 2022
Thank @mr-jaemin  this will close GE Direct field mapping (TE1/TE2) (#617)
@neurolabusc
Copy link
Collaborator

Fixed in development branch

yarikoptic added a commit to neurodebian/dcm2niix that referenced this issue Apr 29, 2024
* tag 'v1.0.20220720': (65 commits)
  GE Direct field mapping (TE1/TE2) (rordenlab#617)
  GE Direct field mapping (TE1/TE2) (rordenlab#617)
  Issue 618 (rordenlab#618)
  Update notes
  Siemens XA30 ASL parameters and ImageTypeText 0021,1175
  Reset PET values for classic DICOMs (rordenlab#616)
  PostLabelDelay for XA30, FrameDuration is only for 4D datasets (rordenlab#616)
  shims are signed (rordenlab#608)
  AcquisitionVoxelSize before any interpolation or resampling within reconstruction or image processing
  Add AcquisitionVoxelSize tag for Siemens ASL (rordenlab#608)
  Store GE ShimSetting as array (rordenlab#608)
  GE sequence details (rordenlab#608)
  Philips slice timing notes
  Verbose scan options (issue 606)
  Change scanOptions
  scan options is long string, fix bvec rejection (rordenlab#606)
  Ignore non-spatial physio data (rordenlab#606)
  Flipping Y also flips sign of determinant
  Better Siemens XA support (rordenlab#606)
  Report DwellTime for Siemens XA (rordenlab#240)
  ...
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