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

Incorrect Slice/Vol Order After Site Updated Philips Software (Ingenia version 11.1) #809

Open
ghost opened this issue Mar 29, 2024 · 30 comments

Comments

@ghost
Copy link

ghost commented Mar 29, 2024

Ever since our site updated our Philips 3T Ingenia to version 11.1, dcm2niix has been unable to accurately convert functional scans. Each volume contains one slice location across 40 different TRs instead of 40 slices comprising the whole brain at a single TR (e.g., in the image below, scrolling through the axial slices does not change location of the slice, just the time). I have noticed this with fMRI and DTI data sets where, in the latter, the bvec files are also not ordered appropriately.

The DICOM data are sent in "enhanced" format from the scanner to dcm4chee and then to my workstation. From looking at prior issues on github, I've confirmed the manufacture information is present and there are not excessive missing dicom fields.

This issue is occurring with dcm2niix version v1.0.20240202 on linux (have not tested other versions or OS).

Has anyone else experienced this? I'm sure this is a philips problem and not a dcm2niix problem, but I'm curious to know if someone can figure out the issue and potentially provide a work around option or an update to accommodate the atypical dicom format used by philips.

image

@neurolabusc
Copy link
Collaborator

Can you share a sample dataset with my institutional email. dcm2niix validation uses many Philips enhanced DICOM validation datasets including dcm_qa_enh dcm_qa_philips_dwi and dcm_qa_philips.

I do not have much experience with dcm4che settings and versions, but I have been contacted by many users who have issues with its legal but unexpected renaming, documented here. I would make two suggestions:

  • Do images direct from the scanner without dcm4che improves things?
  • Does the development branch (v1.0.20240202) resolve your issue? I would not be surprised if dcm4che is the root cause for issue 795.

@ghost
Copy link
Author

ghost commented Mar 29, 2024

Hi Chris,

Thanks for getting back to me so quickly and offering to take a look at this. I acquired a DTI and fMRI series with a phantom this morning and transferred the dicoms to a flash drive directly from the scanner console (again in enhanced format). Running dcm2niix on these dicoms produced the same error as above. I just sent the dicoms to your institutional email (re: Philips Dicom Issue).

Thanks again for looking into this!

Travis

@neurolabusc
Copy link
Collaborator

@wtmccuddy thanks for the exemplar. Can you re-acquire the fMRI and DTI dataset with just a few volumes (e.g. for DTI one b=0 and six directions, for fMRI 7 timepoints). It is hard for a human to parse enhanced DICOMs for huge datasets where dcmdump generates 66mb of ASCII text. Ideally also make the number of slices in a volume a different small prime number. It would also be nice to have a brief description of what was expected, e.g. the fMRI series should have "the fmri dataset was acquired with 64x64 voxels in-plane, 5 slices and 7 timepoints".

@ghost
Copy link
Author

ghost commented Mar 29, 2024

@neurolabusc that's a good point. I was looking at the output of dcmdump (which i just learned about) and wondering how people parse through so much data. I will reacquire and send you a more manageable dataset with the relevant descriptives (hopefully before I leave today).

In my scavenging earlier, I did find a difference in the diffusion gradient ordinations when comparing DTI scans from pre and post scanner software update (see below; the first line is pre-update and second is post update):

1178c1094
(0018,9089) FD -0.77486002445220947-0.37935000658035278\0.50564998388290405 # 24, 3
(0018,9089) FD -0.37935000658035278\-0.77486002445220947\0.50564998388290405 #  24, 3 

It appears the x and y gradients have switched places. This would explain the bvec file issues with dcm2niix (if my understanding is correct). Maybe this is also the root of the issue altogether? If so, do you know if this can be changed at the scanner?

@neurolabusc
Copy link
Collaborator

@wtmccuddy I do think you should contact the Philips Clinical Scientist associated with your center. Either my interpetation of DICOM is wrong (possible) or the DimensionIndexSequence (0020,9222) is not specified correctly for your datasets.

The sample fMRI dataset you provided should have 40 slices and 120 timepoints. Looking at the variance DimensionIndexValues (0020,9157) the first item is Stack ID (no variance), the second is In-Stack Position Number (1..40) and the final item is the Temporal Position Index (1..120):

(0020,9056) SH [1]                                      #   2, 1 StackID
(0020,9057) UL 1                                        #   4, 1 InStackPositionNumber
(0020,9128) UL 1                                        #   4, 1 TemporalPositionIndex
(0020,9157) UL 1\1\1                                    #  12, 3 DimensionIndexValues
...
(0020,9056) SH [1]                                      #   2, 1 StackID
(0020,9057) UL 40                                       #   4, 1 InStackPositionNumber
(0020,9128) UL 120                                      #   4, 1 TemporalPositionIndex
(0020,9157) UL 1\40\120                                 #  12, 3 DimensionIndexValues

However, the DimensionIndexSequence suggests the first item is Temporal Position Index (0020,9128), the second is Stack ID (0020,9056) and the final is In-Stack Position Number (0020,9057)

(0020,9222) SQ (Sequence with undefined length #=3)     # u/l, 1 DimensionIndexSequence
  (fffe,e000) na (Item with undefined length #=4)         # u/l, 1 Item
    (0020,9164) UI [1.3.46.670589.11.71739.5.0.8132.20240329122138181] #  50, 1 DimensionOrganizationUID
    (0020,9165) AT (0020,9128)                              #   4, 1 DimensionIndexPointer
    (0020,9167) AT (0020,9111)                              #   4, 1 FunctionalGroupPointer
    (0020,9421) LO [Temporal Position Index]                #  24, 1 DimensionDescriptionLabel
  (fffe,e00d) na (ItemDelimitationItem)                   #   0, 0 ItemDelimitationItem
  (fffe,e000) na (Item with undefined length #=4)         # u/l, 1 Item
    (0020,9164) UI [1.3.46.670589.11.71739.5.0.8132.20240329122138181] #  50, 1 DimensionOrganizationUID
    (0020,9165) AT (0020,9056)                              #   4, 1 DimensionIndexPointer
    (0020,9167) AT (0020,9111)                              #   4, 1 FunctionalGroupPointer
    (0020,9421) LO [Stack ID]                               #   8, 1 DimensionDescriptionLabel
  (fffe,e00d) na (ItemDelimitationItem)                   #   0, 0 ItemDelimitationItem
  (fffe,e000) na (Item with undefined length #=4)         # u/l, 1 Item
    (0020,9164) UI [1.3.46.670589.11.71739.5.0.8132.20240329122138181] #  50, 1 DimensionOrganizationUID
    (0020,9165) AT (0020,9057)                              #   4, 1 DimensionIndexPointer
    (0020,9167) AT (0020,9111)                              #   4, 1 FunctionalGroupPointer
    (0020,9421) LO [In-Stack Position Number]               #  24, 1 DimensionDescriptionLabel
  (fffe,e00d) na (ItemDelimitationItem)                   #   0, 0 ItemDelimitationItem
(fffe,e0dd) na (SequenceDelimitationItem)               #   0, 0 SequenceDelimitationItem

It is easy to get dcm2niix to convert your data correctly, by changing the '<' to a '>'

if (stackPositionItem < maxVariableItem)

However, it will now fail with every previous enhanced DICOM dataset I have seen, including these from Siemens, Canon and Philips. I also note that the independently developed dicm2nii also fails with your fMRI and DTI image. So if this DICOM is legal, it is extremely unconventional and I would not consider it archival quality.

@neurolabusc
Copy link
Collaborator

@wtmccuddy the DTI data is even more problematic. The DimensionIndexValues (0020,9157) do not distinguish between different directions of b-weighted images. This scan should have 48 slices and 49 volumes (one b=0, 48 b=1000). However, for each b=1000 slice there are 48 images that share the identical DimensionIndexValues. This is especially problematic for Philips, where the order of images stored to disk are often completely jumbled.

        (0020,9056) SH [1]                                      #   2, 1 StackID
        (0020,9057) UL 1                                        #   4, 1 InStackPositionNumber
        (0020,9128) UL 1                                        #   4, 1 TemporalPositionIndex
        (0020,9157) UL 1\1\0\0                                  #  16, 4 DimensionIndexValues
        ...
        (0020,9056) SH [1]                                      #   2, 1 StackID
        (0020,9057) UL 48                                       #   4, 1 InStackPositionNumber
        (0020,9128) UL 1                                        #   4, 1 TemporalPositionIndex
        (0020,9157) UL 1\48\1000\0                              #  16, 4 DimensionIndexValues

The only way I can see to salvage this would be to track the private tag MRImageGradientOrientationNumber (2005,1113) across all slices. Again, I really do not think these are archival quality. Adding support for this edge case would degrade the maintainabilty of dcm2niix, and I would be reluctant to do it without insight from a Philips engineer (in particular, if a diffusion image is acquired with multiple b-zeros or multiple samples of each b-weighted image, is the private tag 2005,1113 repeated across identical values or unique. If it is repeated, I am again at a loss as to how to reconstruct images where all slices from a single volume were acquired sequentially.

@ghost
Copy link
Author

ghost commented Mar 30, 2024

This is very helpful. I just sent our Philips contact an email. Thank you for helping better characterize the problem. I think dcm2niix is a very nifty ;) tool which has helped me streamline a number of imaging tasks. I appreciate you pointing me to the line in the script to make a change that will allow it to continue working for now.

From your experience working with the different MRI vendors, is this an issue you think might be addressed? Or are vendors typically more reluctant to make changes to the DICOM structure like this?

@neurolabusc
Copy link
Collaborator

@wtmccuddy thanks for the new smaller dataset. This clearly shows that 0020,9157 does not distinguish between volumes. The data should have 17 slices and 7 volumes, but only slice number is incremented with all 7 volumes for each slice sharing an identical 0020,9157. It does seem like one could use MRImageGradientOrientationNumber (2005,1413) to sort this, but this exhibits problems with valid Philips enhanced DICOM DTI data like this one. Your issue mirrors problems with Philips enhanced DICOMs reported for issue 546 - the solution there was to use the new private tag 2005,1596 that was added to Philips software (from R5.6) even though your software reports software version (0002,0013) Philips MR 111.0. Maybe @sandeepganji can provide some insight. However, I can not work out a way to seamlessly read your data without unintended consequences for existing Philips datasets.

        (0020,9056) SH [1 ]                                       # 2,1 Stack ID
        (0020,9057) UL 1                                          # 4,1 In-Stack Position Number
        (0020,9128) UL 1                                          # 4,1 Temporal Position Index
        (0020,9157) UL 1\1\0                                      # 12,1-n Dimension Index Values
...
        (0020,9056) SH [1 ]                                       # 2,1 Stack ID
        (0020,9057) UL 17                                         # 4,1 In-Stack Position Number
        (0020,9128) UL 1                                          # 4,1 Temporal Position Index
        (0020,9157) UL 1\17\0                                     # 12,1-n Dimension Index Values

@drmclem
Copy link

drmclem commented Mar 30, 2024

Hi - I would also be interested in looking into this data set or get your philips contact to contact me as well if they are already dealing with it - could you contact me directly on my philips adresss - matthew dot clemence at philips dot com ?

@ghost
Copy link
Author

ghost commented Apr 2, 2024

@drmclem thanks for offering to look into this. I've sent the dataset to your philips address and cc'd our hosptial Philips consultant who was recently made aware of this issue.

@neurolabusc thanks for helping me diagnose the issue and providing the info needed to move forward. Much appreciated!

@neurolabusc
Copy link
Collaborator

@wtmccuddy I am going to close this issue. I acknowledge that dcm2niix has issues with Philips R11.1 data. However, I believe this is because the DICOM images are not truthful. Supporting these images would likely elicit unintended consequences for legitimate data, would be vulnerable to breaking if Philips corrects their images, and would increase the burden of maintaining this codebase. I am happy to meet with the Philips engineers to resolve this and get insights into pro-active solutions. However, this needs up stream support.

@captainnova
Copy link
Collaborator

Hi, I think this ticket probably needs to be reopened, although "support Philips 11" is more of a feature request than a bug report, and I realize @neurolabusc is in the middle of wrapping up the fall release.

We have started receiving DWIs from a Philips 11 scanner in Boston, and dcm2niix is stacking the slices in the wrong order if the DICOM is enhanced. It reminds me of the early days of Siemens XA, i.e. there will be more data like this coming. If @drmclem, @sandeepganji, or anyone else at Philips could advise, I would really appreciate it. It seems like there might be a compatibility problem between Philips 11 and their older DICOM versions that will need to be acknowledged, but I don't have access to Philips 11 myself or the bandwidth to blindly reverse engineer it.

Unenhancing it with dcuncat corrects the stacking, but it adds 7000 to the series number and messes up the "_ADC.nii" image a bit: Normally dcm2niix would kindly shunt the b shell averages ("traces") away from the main output .nii and into a ..._ADC.nii image. In this case (post-dcuncat) it is correctly writing the b = 0 + x, y, z b=1000 volumes to the main.nii, but writing all 5 volumes (ORIGINAL data + the DERIVED b = 1000 average) to the _ADC.nii. I can easily work around that since we never use the _ADC.nii anyway, but the series number change is annoying. dcuncat is completely to blame for that, but it probably has an option to prevent that that I just haven't found yet. But I'd hate to go back to dcuncatting enhanced DICOM; it looks like Philips 11 might have fixed the oververbosity problem.

I can't share the data in hand, but we can probably get the site to scan a phantom if we need it and ask nicely. In the meantime I would be happy to run dcmdump, etc. on the DWIs we've received and report the results.

For this 40 slice x (4 original + 1 derived) volume DWI, using the original enhanced DICOM,
there are 200 copies of (2005, 1596), all with value 0, so the solution for issue 546 won't work here.

@neurolabusc
Copy link
Collaborator

@drmclem, @sandeepganji, I do not have access to Philips 11 hardware, so we will need a shared dataset that exhibits the issue, or someone who does have access will need to make a pull request with a patch.

I do think it is poor form to store DERIVED DWI values like TRACE images into the same series as the ORIGINAL. Other manufacturers store DERIVED images using a different Series number (0020,0011) series instance UID (from 0020,000E) than the raw data. This aids clinicians (who want to look at the derived images) and scientists (who want to discard the derived images so they can generate better derived images using more advanced methods).

@captainnova
Copy link
Collaborator

To be fair, Philips is still not actually labeling the trace volume as DERIVED using (0008, 0008) Image Type. But to be fair, they should.

@captainnova captainnova reopened this Feb 5, 2025
@captainnova
Copy link
Collaborator

Hi, we would like to reopen this, and I have talked to Spencer Waddle at Philips about helping.

Hopefully we can locally scan a phantom with R11, but that is TBD.

@sandeepganji
Copy link

Rob, on MR61 at OPUS we have the following SW releases available on the scanner (R56, R57, R58, R11.1.1.0 and R12.1.0).
Let Spencer know, I can't attached Examcard here, so sent it via email.

@captainnova
Copy link
Collaborator

Thanks, Sandeep. I had no trouble finding volunteers in Opus, so hopefully Spencer and I can get one scanned in the next few days.

@captainnova
Copy link
Collaborator

IM_0033.csv is a table of the b vector, Stack ID, etc. for each frame in an R11 enhanced DTI, in order of appearance. I agree with @neurolabusc 's comment on Mar. 30, 2024 that the way I thought slices were supposed to be indexed in enhanced DICOM is not working here. The Dimension Index Value has only two elements that vary; the 2nd one is the In-Stack Position Number which indexes z, and the 3rd is the b value, which crucially is not unique. (And not an index - that seems to violate https://dicom.innolitics.com/ciods/breast-projection-x-ray-image/breast-projection-x-ray-image-multi-frame-functional-groups/52009229/00209111/00209157 ).

So some non-standard info is needed to break the degeneracy, like the Diffusion Gradient Orientation. I think @neurolabusc mentioned a private tag which could work like an easier to use index for that. @sandeepganji or @drmclem , is there a tag we should be using?

@neurolabusc , the data we acquired does not include multiple b=0 volumes as you requested. I think that is actually impossible with Philips, for the related reason that they require every b vector (with magnitude) to be unique. To approximate multiple b = 0 volumes in ADNI we used a b = 0 + several b = 2 s/mm^2 vectors in a tiny dodecahedron. In hindsight I suppose we should have tried Nex > 1 with R11 to see what would happen, but I'd forgotten how this detail would interact with the problem.

@captainnova
Copy link
Collaborator

Here is an updated version of the same enhanced DICOM with columns added for
(2005, 1113) MRImageGradientOrientationNumber and
(0020, 0013) InstanceNumber:
IM_0033.csv

I tried diffing two subsequent frames and found some other tags that vary, but they do not immediately indicate which volume a frame belongs to:
(0028, 1050): Window Center
(0028, 1051): Window Width
(0008, 0018): SOPInstanceUID (I wonder if dcuncat uses this)
(2001, 1004): Seems to be a weird letter code for each b vector
(2005, 100b): Unknown float

@sandeepganji
Copy link

sandeepganji commented Feb 21, 2025 via email

@neurolabusc
Copy link
Collaborator

@captainnova the latest commit to the development branch (v1.0.20250303) provides a kludge that attempts to accurately sort Philips DICOM DWI data from Philips 11.1 software. While this may work, it does only converts the images to NIfTI and does not attempt to patch the Dimension Index Values (0020,9157) in the source DICOMs. The raw DICOMs are clearly not of archival quality and you will want to work with the manufacturer to mitigate the source errors. The kludge is specific to Philips, but I have limited access to data from this vendor, so the opportunity for unintended consequences remains high. It would be great to work with Philips to work out the first and last software release to exhibit this issue, so the kludge can only be applied to the affected images and avoid impacting valid DICOM images from Philips scanners. Do please test this carefully with your large dataset. Thanks for the concrete examples and diagnosis.

For the record, the affected images I have seen report:
"SoftwareVersions": "11.1.0\11.1.0.0",
My kludge does seem to generate plausible fixels for the sample data I was given:

Image

@JonteP
Copy link

JonteP commented Mar 4, 2025

FWIW we experience the same issue with Philips enhanced DICOM. The tag (0002,0013) is 'Philips MR 57.0'.
Any image that is not a simple 2d sequence comes out corrupted or does not convert at all. An example of a T1w here:

Image

@neurolabusc
Copy link
Collaborator

@JonteP

  1. does the latest commit to the development branch resolve your issue (v1.0.20250303)
git clone --branch development https://github.com/rordenlab/dcm2niix.git
cd dcm2niix/console
make
./dcm2niix /path/to/DICOMs
  1. Does dicm2nii correctly convert your images?

  2. Have you contacted the Philips Clinical Scientist associated with your center? While enhanced DICOM is effectively required by Siemens XA, and beneficial for Canon, I would be reluctant to recommend using enhanced DICOM on Philips MRI scanners. It should be noted that I no longer have direct access to Philips hardware, so I am dependent on samples from users. Perhaps I am influenced by a sampling bias where only users with problematic edge cases contact me. With that caveat, in my experience, the older Philips enhanced DICOMs tend to be bloated with redundant information, and the most recent variations fail to disambiguate the frames.

@captainnova
Copy link
Collaborator

@captainnova the latest commit to the development branch (v1.0.20250303) provides a kludge that attempts to accurately sort Philips DICOM DWI data from Philips 11.1 software.

Thank you @neurolabusc! That's a very pretty pineapple and agrees with non-Philips pineapple scans I've done. I also confirmed that the kludge works with human DWI data from A345. The directional diffusion is a bit clearer and more specific in humans, so it is good to see that it works too. It also resolved the missing .bval/.bvec problem we were having with that site.

Unfortunately, and as expected, the kludge did not help with fMRI. A [64, 64, 48, 200] scan came out with the correct shape, but still in XYTZ order, so the 0th volume is 48 slices from the neck, the 1st volume 48 slightly later instances from the same slice, and so on, eventually making its way to the top of the head in the 199th volume. Apparently dcm2niix initially thought it was a DWI and said so, but by the time it got to the BidsGuess it knew it was an fMRI:
EPB:5$ dcm2niix -o . -b y DICOM | tee dcm2niix20250303.log Chris Rorden's dcm2niiX version v1.0.20250303 (JP2:OpenJPEG) (JP-LS:CharLS) GCC8.5.0 x86-64 (64-bit Linux) Found 1 DICOM file(s) Warning: Guessing temporal order for Philips enhanced DICOM DWI (issue 809). Philips Scaling Values RS:RI:SS = 0.734066:0:0.0044358 (see PMC3998685) Convert 1 DICOM as ./DICOM_Axial_fcMRI_(EYES_OPEN)_20250108135540_401 (64x64x48x200) Conversion required 2.463464 seconds (0.404558 for core code).
"BidsGuess": ["func","_acq-SKGRTFE_run-401_bold"],

@JonteP
Copy link

JonteP commented Mar 6, 2025

@JonteP

1. does the latest commit to the development branch resolve your issue (v1.0.20250303)

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

2. Does [dicm2nii](https://github.com/xiangruili/dicm2nii) correctly convert your images?

3. Have you contacted the Philips Clinical Scientist associated with your center? While enhanced DICOM is effectively required by Siemens XA, and beneficial for Canon, I would be reluctant to recommend using enhanced DICOM on Philips MRI scanners. It should be noted that I no longer have direct access to Philips hardware, so I am dependent on samples from users. Perhaps I am influenced by a sampling bias where only users with problematic edge cases contact me.  With that caveat, in my experience, the older Philips enhanced DICOMs tend to be bloated with redundant information, and the most recent variations fail to disambiguate the frames.

Thanks for your suggestions!

  1. No, the problem remains. What captainnova describes above is similar to what we see with bot fmri and dwi: each volume is the same slice from different time points stacked. The T1 is not converted.
  2. It fails, but differently. dicm2nii almost succeeds with the t1, but stores the middle slices at the top. For fMRI, it treats each slice as a different time frame.
  3. We can decide to export classic DICOM from now on, it is basically up to me to export the data. Unfortunately I am stuck with these enhanced DICOMs for already collected data...

@CGSchwarzMayo
Copy link
Contributor

Hi Chris and Rob et al., I am new to this discussion, but the same issue has just started to bite me as I try to deal with ASL data from the same MR studies in ADNI de-facing and subsequent converting de-faced nii back to dicom using the original DICOM.

The sample fMRI dataset you provided should have 40 slices and 120 timepoints. Looking at the variance DimensionIndexValues (0020,9157) the first item is Stack ID (no variance), the second is In-Stack Position Number (1..40) and the final item is the Temporal Position Index (1..120):
...
However, the DimensionIndexSequence suggests the first item is Temporal Position Index (0020,9128), the second is Stack ID (0020,9056) and the final is In-Stack Position Number (0020,9057)

While this is unconventional and making my life difficult too, I think it stems from an ambiguity in the DICOM standard where Philips is reading it differently than others.
From https://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_c.7.6.17.html I find:

The application that generates the Concatenation or SOP Instances may use the order of Dimension Index Pointers (0020,9165) in the Dimension Index Sequence (0020,9222) to guide the receiving application in determining the order of the presentation of image frames. The first index has the highest ranking, the next index has a lower ranking, etc. Frames with higher values for the dimension with the highest ranking would only be presented after all frames that have values for Dimension Index Pointers (0020,9165) of the lower rankings have been presented.

The language is ambiguous in "the order of Dimension Index Pointers in Dimension Index Sequence". It could mean that we sort by Dimension Index Pointer, rather than use the ordering as-written. Using that interpretation, if we sort by the tag numbers in Dimension Index Pointer, their DICOM becomes self-consistent. Sorting by DimensionIndexPointer, we get first (0020,9056); (0020,9057); (0020,9128), which matches what they've put in DimensionIndexValues. I find the language a little ambiguous enough to support either meaning, honestly, but the "sort by DimensionIndexPointer" interpretation seems to be what Philips did.

Would sorting Dimension Index Sequence by DimensionIndexPointer values break other DICOM? IF (and a big if...) everything else uses tag-number order to begin with, then perhaps this sort step would fix these images without hard-coding an ordering and without breaking others. Maybe?

@neurolabusc
Copy link
Collaborator

@CGSchwarzMayo the issue is not the precedence of the order, the challenge is that Philips does not disambiguate between slices in a series.So different slices are provided identical values.

@CGSchwarzMayo
Copy link
Contributor

CGSchwarzMayo commented Mar 6, 2025

Interesting. It seems like the dMRMI/fMRI series are more broken than the ASLs I'm dealing with. I think at this point I'm just reporting the status with ASL.

For my examples, DimensionIndexValues are
Stack ID (always 1), In-Stack Position Number (varies), Private Label Type (missing)
(0020, 9056), (0020, 9057), (2005, 0029)

While DimensionIndexSequence is
Private Label Type, Stack ID, In-Stack Position Number
(2005, 0029), (0020, 9056), (0020, 9057)

The order differs, but sorting by tag number makes them self-consistent. Do you any opinion or insight from other vendors on which interpretation of the DICOM standard is more common/valid?

(2005, 0029) is missing in these DICOM, but it's impossible for me to know in these ADNI images if I have DICOM as-written or this tag was lost in later anon/transfer steps. If (2005, 0029) was very recently invented then it's very likely LONI removed them during anon. Rob and I could work with LONI to confirm and fix for future uploads, if needed. Edit: I emailed LONI and I will update on what they say about this.

For these images, dcm2niix v1.0.20240327 conflates the dimension ordering, and we get a nii where the first volume is the first half S/I and the second volume is the second half. dcm2niix after dcuncat works fine, as Rob reported for the other series. I have not yet tested whether a293cde fixes them, but I will do this once Rob returns and compiles it later this week.

@CGSchwarzMayo
Copy link
Contributor

Minor update: Rob informed me of an existing build of v1.0.20250303 and these ASL's are still broken in the same way.

Are you able to say whether dcm2niix would have read (2005, 0029) (referenced from DimensionIndexSequence) if it had existed? If it would have read that tag, probably these images would have worked if the tag weren't removed upstream. If not, then we might need to scan a phantom with the ASL and get that to you.

@CGSchwarzMayo
Copy link
Contributor

Actually, a293cde was 3/4 and Rob gave me the build from 3/3, so really, nevermind for now... Sorry.

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

6 participants