-
Notifications
You must be signed in to change notification settings - Fork 229
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
Any willingness to add Siemens ImaRelTablePosition (0019,1014) to json sidecar? #726
Comments
That's the location under VE11 [or equivalently one could use 0051,1012 (TablePositionText) -- e.g., "TP 0"] The XA30 equivalent is either: |
@yarikoptic and @Remi-Gau do you have any opinions on this? It is easy to implement, but I am reluctant to unilaterally add a field that is not in the specification and where the units may be specific to one manufacturer. At the moment dcm2niix populates the JSON with fields described in the BIDS specification as well as other fields unique to dcm2niix. The question I have:
|
[updated on Aug 7, 2024]
GE Private tag So, BIDS |
I guess there is no "universal answer" and I guess we are yet to formalize such a workflow. What about:
|
Thanks for giving this consideration, clearly not simple! |
Closing this. Happy to support if it gets a formal BIDS definition. |
This would also be a highly requested feature for us as well. @imalone has there been some progress with the BIDS spec folks? |
The tag is now getting a formal definition is BIDS: bids-standard/bids-specification#1690 |
Great. Happy to implement with validation datasets for each manufacturer with known solutions. |
Following the discussion in the BIDS specification. We are ready to merge the TablePosition specification. We can therefore start implementing it in dcm2niix. Here are 2 datasets I did in the past where we noted the table movement.
These scans were taken a while back so I inferred the table movement from notes and by inspecting the data. Let me know if that fits your validation dataset requirements or if you need more information. |
@po09i thanks. Since you have posted open links, am I correct that you consent for sharing these as a validation repository with the BSD-2-Clause license similar to dcm2niix? @mr-jaemin would it be possible to get a sample dataset of the same object with different table position? This could be a simple low-resolution EPI sequence of a phantom. |
@drmclem the Phiips dataset provided by @po09i is consistent with 2005,143c storing table position in along the axes of the bore (
|
The documentation I have for tag 2005,143d does refer to the MRStackTablePosLat. The value reported looks very close to the maximum value of a float (~3.4e38). I looked at ~7-8 other Philips acquisition and they all had the same value (~1.7e+38) |
@po09i I have added support for Philips, Siemens VE, Siemens XA and GE to the development branch. Please check to ensure this meets your expectations. |
Hi
As far as I am aware they are the reported bed movements as actually happened (v requested) - the only system we had in the past which could move the bed L-R was the Panorama open system which is no longer produced so no LR requests can be made and I guess this is just a residue of that.
Undocumented private tags can of course change at any time.
M
From: Chris Rorden ***@***.***>
Sent: Thursday, July 25, 2024 10:30 PM
To: rordenlab/dcm2niix ***@***.***>
Cc: Clemence, Matthew ***@***.***>; Mention ***@***.***>
Subject: Re: [rordenlab/dcm2niix] Any willingness to add Siemens ImaRelTablePosition (0019,1014) to json sidecar? (Issue #726)
Caution: This e-mail originated from outside of Philips, be careful for phishing.
@drmclem<https://github.com/drmclem> the Phiips dataset provided by @po09i<https://github.com/po09i> is consistent with 2005,143c storing table position in along the axes of the bore (longitude MRStackTablePosLong). However, the value for 2005,143d is implausible for the latitude MRStackTablePosLat<https://github.com/xiangruili/dicm2nii/blob/b1224c3486eeac475d30ebae4bc53d917c353dfe/dicm_dict.m#L1234> also defined here<https://github.com/malaterre/dicom-private-dicts/blob/1833fe7683b79e4e2648a199f573c9d1057683e8/PMS-R32-dict.txt#L533>. Does Philips have a formal name and definitions for these private tags?
(2005,143c) FL -0.200000003 # 4, 1 Unknown Tag & Data
(2005,143d) FL 1.69999998e+38 # 4, 1 Unknown Tag & Data
-
Reply to this email directly, view it on GitHub<#726 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AIRGAT4RO7XC22PMVLRGKADZOFU6TAVCNFSM6AAAAAA2AS6PC6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENJRGQZDQNRZGE>.
You are receiving this because you were mentioned.Message ID: ***@***.******@***.***>>
…________________________________
The information contained in this message may be confidential and legally protected under applicable law. The message is intended solely for the addressee(s). If you are not the intended recipient, you are hereby notified that any use, forwarding, dissemination, or reproduction of this message is strictly prohibited and may be unlawful. If you are not the intended recipient, please contact the sender by return e-mail and destroy all copies of the original message.
|
@neurolabusc I tested the dev branch. I believe the polarity of the terms are opposite to what the BIDS specification requires (at least for the "z" direction since it's the only data I have). The Siemens dataset gives 20 in the moved position and the Philips dataset gives -60.3 rather than -20 and 60.3 (See #726 (comment)). |
Sure, I will provide GE samples. I was wondering how we validate this information. I am thinking of comparing the table location [in mm] displayed on the system monitor with the DICOM header information.
Does that sound good? |
@mr-jaemin sounds good. |
@neurolabusc just making sure you've seen this comment |
@po09i seen and deferred. Waiting for a sample dataset from GE, then we can try to close this issue comprehensively. |
GE validation datasets collected by Sagar, generously provided by Emory SPARC (SIGNA Premier). Please allow some time for me to digest and summarize the experiment. Will share soon. |
@neurolabusc Any existing repository for TablePosition validation datasets? |
@mr-jaemin I have added Siemens and Philips images from @po09i here dcm_qa_table. I also note that dcm_qa_ge has images with different table positions that the latest version of dcm2niix detects. However, it would be ideal to make sure that we have the polarity correct. For example, for a HFS participant, as the individual's feet move closer to the isocenter (so Z is increased), the isocenter origin of the image moves toward the feet (so Z decreases). Note things reverse for a FFS participant. |
@neurolabusc I have added GE images with different table positions (two landmark locations + three different SI scan volumes) in both FFS and HFS currently here dcm_qa_table and submitted PR to your dcm_qa_table. Also, documented here GEHC_BIDS_TablePosition_validation.pdf for experiment setup, DICOM tags, and results. For GEHC. I observed that
|
For GE, in research mode, Table Delta can be prescribed including fMRI/DTI as shown below. Updated this info GEHC_BIDS_TablePosition_validation.pdf on Aug 8, 2024 |
@mr-jaemin I have merged your request. The final step is to ensure that the polarity of the final (Z) direction of the TablePosition is reported correctly. As @po09i noted, for Philips and GE the current development branch of dcm2niix reports the incorrect polarity. In other words, as a HFS participant is moved further into the bore of the scanner (Z+), the scan origin is moved toward the feet (Z-). If the same logic works for GE, we can apply a universal fix by adjusting line 1679 of nii_dicom_batch.cpp from: if (d.CSA.tablePos[0] > 0.0)
fprintf(fp, "\t\"TablePosition\": [\n\t\t%g,\n\t\t%g,\n\t\t%g\t],\n", d.CSA.tablePos[1], d.CSA.tablePos[2], d.CSA.tablePos[3]); to read if (d.CSA.tablePos[0] > 0.0)
fprintf(fp, "\t\"TablePosition\": [\n\t\t%g,\n\t\t%g,\n\t\t%g\t],\n", d.CSA.tablePos[1], d.CSA.tablePos[2], - d.CSA.tablePos[3]);
// n.b. issue726 Table Position Z-polarity of BIDS opposite of DICOM (as HFS table moves further into bore [Z+], the origin moves toward feet [Z-]) Can you confirm that this is the case for GE as well? |
@neurolabusc No, for GE, the current development branch of dcm2niix (v1.0.20240731) report the correct polarity for both HFS and FFS datasets. The last step for GE would be incorporating the
I am happy to submit the PR for this. |
@neurolabusc Submitted the PR (#850) Please review the PR |
@po09i do you want to test the latest commit to the development branch and the dcm_qa_table validation tests. If this passes your review, please close this issue. Thanks for your work on this. Moving forward, as @dclunie noted we should be responsive if any manufacturer implements the public tag Table Position (0018,9327) instead of private tags. |
I reviewed the datasets and I believe everything is good to go. I noticed that there are negative 0s so I'm pointing it out if that is something you would like to fix. I personally do not mind them. Thanks @neurolabusc and @mr-jaemin for your help.
Agreed |
FYI I can't close the issue since it was @imalone who opened it. |
Amazing, thank you. |
The Siemens private tag 0019,1014 indicates the relative table position (ImaRelTablePosition), and is useful if performing offline gradwarp correction to scans (essentially allowing conversion from patient to scanner coordinates if the table moves after setting landmarks). It is a three element vector, example 0\0-3 (also included in the CSA header).
I realise it's intentional that not all DICOM values are included in dcm2niix's sidecars, but as this one is useful for preprocessing is there an argument for adding it?
The text was updated successfully, but these errors were encountered: