Mrdegibbs in partial Fourier

Hi experts,

I was wondering how is your experience with mrdegibbs in partial Fourier data.
In original paper https://www.ncbi.nlm.nih.gov/pubmed/26745823 they use partial Fourier 6/8 to demonstrate that degibbs in this type of acquisition produces spurious ringing after correction.
I have also 6/8 partial Fourier data (AP phase encoding direction) and actually mrdegibbs seems to me to work very well. The ringing is removed very well and I do not see any new spurious ringing in AP direction after correction. See mean diffusivity data after denoising, before mrdegibbs:


After mrdegibbs the big ringing at cursor position is effectively removed:

Actually, I do not know what they mean by new ringing after correction with partial Fourier data showed in fig. 6 in the original paper. I see in the figure some hypointensities around ventricles in the partial Fourier data, but they seem to be present also in their original data before correction. I see similar hypointensities around ventricles in my data (see cursor), but they are present also in the data before mrdegibbs, so it is no new ringing.
Before mrdegibbs:

after mrdegibbs:

Could you please comment on?

Secondly, do you think that it is possible to implement mrdegibbs to perform unringing only in the direction with full k-space coverage (in my case LR)?

Thank you in advance,

Antonin

We had the exact same experience – and I also don’t think there was any.evidence in the original paper of the method introducing artefacts that weren’t already there. So I asked Elias Kellner about this a while back, and he also thinks it’s perfectly fine to use. Here are selected parts of his thoughts on the issue (I hope he doesn’t mind me sharing them here…):

The unringer does not introduce or amplify additional artifacts. If there is “true” ringing, it removes it; to the rest, only a slight smoothing is introduced (but it does never “oversmooth”)

So in general, we fully support the statement that it is safe to apply it to any MR image as a black box.

But again, I think that additional smoothing in PF direction is not too strong (as you also observed), and for now, I would suggest to write in the help something like:

Note that this method is designed to work on images acquired with full k-space coverage. Running this method on partial Fourier (‘half-scan’) data will not fully remove the artifact, and you will observe residuals of the original artifact in the partial-fourier direction, but it is safe and worthwhile to apply it also in this case.

I guess it’s about time we updated the help text as suggested… :blush:

2 Likes

Secondly, do you think that it is possible to implement mrdegibbs to perform unringing only in the direction with full k-space coverage (in my case LR)?

If there were sufficient justification to do so, it would certainly be possible: core code for such functionality is already there within the command, it would only require altering the main executing function to permit 1D operation only when the input to the -axes option has one value only. But given it’s generally advocated to run in 2D mode regardless, it might be hard to justify putting the time into it.

1 Like

Hello @jdtournier (CC @LArnoldy)

Any reason the help text for mrdegibbs hasn’t been updated as suggested? (it’s already almost 4 years)
https://mrtrix.readthedocs.io/en/latest/reference/commands/mrdegibbs.html

Should I do it myself? Do you have any guide for developers on how to update the MRtrix documentation?

Best,
Oren

Not really… :grimacing:
Just haven’t got round to it…

Yes please!

Nothing beyond the guidelines for contributing, no. But the process is basically the same as described in these guidelines (see also GitHub’s help page on the process). The changes that need to be made to modify the docs for a specific command are essentially:

  • update the usage() section of the corresponding command .cpp file (in the cmd/ folder) – e.g. this section for mrdegibbs.

  • check it all builds as before and run any relevant tests for that command just to make sure, e.g.:

    ./build
    ./run_tests mrdegibbs
    
  • update the autogenerated online docs to match:

    ./docs/generate_user_docs.sh
    
  • commit your changes to the command cpp and the docs, e.g.:

    git add cmd/mrdegibbs.cpp
    git add docs/reference/commands/mrdegibbs.rst
    git commit -m "mrdegibbs: update documentation for case of partial Fourier"
    
  • push and create your pull request as per the guidelines.

The only thing I would add for changes to the documentation specifically, is to open an issue on the main MRtrix3 repo detailing exactly the changes you’re thinking of making, so that we can discuss, amend, fix typos, etc. as necessary. This is because it’s actually quite difficult for us to make changes to your pull request, and every change we push triggers another round of automated testing (which takes at least 45 minutes) – this makes the whole process pretty painful. Much easier if all changes have been pre-approved via an issue, at which point the pull request ought to be accepted first time around. :crossed_fingers:

Thanks Donald!
It’s a bit more laborious than I thought, but I put it on my to do list and hopefully will get to that soon.

Hey, just a check to confirm if you were able to make this available within mrtrix.
Thanks

Good point, I’ll make a note of that. Just to confirm, we’re only talking about a change to the help page, right? We’re not planning any changes to the code as such…