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

Enable NonlinearGradientCorrection to take values "2D" and "3D" #1160

Open
effigies opened this issue Jul 25, 2022 · 5 comments
Open

Enable NonlinearGradientCorrection to take values "2D" and "3D" #1160

effigies opened this issue Jul 25, 2022 · 5 comments

Comments

@effigies
Copy link
Collaborator

effigies commented Jul 25, 2022

Siemens reports nonlinear gradient correction with DIS2D, DIS3D, and ND (via the syngo MR E11E conformance statement:

  • Inline-processing
    • [...]
    • ND - Not Distortion Corrected
    • DIS2D - Distortion Correction 2D
    • DIS3D - Distortion Correction 3D

BIDS has a simple boolean option:

Key name Requirement Level Data type Description
NonlinearGradientCorrection RECOMMENDED, but REQUIRED if PET data are present boolean Boolean stating if the image saved has been corrected for gradient nonlinearities by the scanner sequence. Must be one of: "true", "false".

For backwards compatibility, I would suggest that we map:

DICOM BIDS
ND false
DIS2D "2D"
DIS3D "3D"

I propose keeping false instead of adding a new string like "None", so that using bool(meta["NonlinearGradientCorrection"]) will continue to work as expected. true needs to remain valid for backwards compatibility, but tools will be unable to identify it as either 2D or 3D.

Any objections in principle? If not I can propose an update to the schema that will permit any of these values.

via rordenlab/dcm2niix#597 (comment)

@CPernet
Copy link
Collaborator

CPernet commented Jul 26, 2022

I don't think this is needed or even recommended because 2D or 3D is what we know Siemens encodes, but we do not know other manufacturers - also other algorithms are possible. The way we trach this so far is in the name with '_rec-xxxx' for instance '_rec-normdist2Dcorr'.

Also, in the name with '_rec-normdistcorr' when in a derivative folder with in the json we add "wasGeneratedBy": "gradient_nonlin_unwarp" (the code we use to compute our own version)

@bpinsard
Copy link

Most of the data I have seen have DIS2D and DIS3D in ImageType (or newer ImageTypeText for XA).
Does anyone know if that means that both corrections are applied sequentially? like slicewise then volumewise.
In that case setting NonlinearGradientCorrection to 2D or 3D could add more confusion.

@CPernet
Copy link
Collaborator

CPernet commented Jul 29, 2024

both corrections cannot be applied sequentially - our scanner does not let people do that -- what happens is your data are corrupted, I guess (for instance, one could use the manual correction on top of Siemens one)

@bpinsard
Copy link

In the Inline card on the console, it is set to 3D correction, but it results in both DIS2D and DIS3D in ImageType, and it is not manual operation.

See https://github.com/courtois-neuromod/anat/tree/main/sub-01/ses-001/anat for all the files with rec-dis2d entity.

I don't think this is specific to our scanner though, I have seen this in other VE-series data, and even with recent XA30 data from another site (Prisma Fit too), the ImageTypeText has the same, maybe misleading, info.

Is it not the case for your Siemens data with 3D correction?

I searched all the QA datasets of dcm2niix, and none seems to feature DIS3D data, only DIS2D.

@CPernet
Copy link
Collaborator

CPernet commented Jul 29, 2024

our Prisma only spits out DIS2D OR DIS3D, now if your ImageType has both in then I do not know what is does -- it actually makes no sense to apply both, the Siemens application person should know, it simply cannot be both (FYI the off-line one we use is https://surfer.nmr.mgh.harvard.edu/fswiki/GradUnwarp and is close to the 2D one, the interpolation is a little different).

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