Questions about SIFT2


#1

Hi everyone,

I am trying to run SIFT2 on a tractogram not obtained with MRtrix. This means I had to convert my tractogram to tck file format using tckconvert. The problem is that tckconvert does not write step size information into the tck header and thus SIFT2 is not able to process the data. Is there an elegant way to hack the step size information into the tck header?
UPDATE: I modified the header manually by inserting the line “step_size: 0.2” and adjusting the header size info accordingly, but while being able to do something with it, SIFT2 seems to be producing a lot of nan values.
UPDATE 2: Apparently it was an RAS-LPS issue. Flipping the fibers did the trick. So I guess only the second question below is still open :slight_smile:

My second question is about the SIFT2 output. If I got it correctly, SIFT2 generates an artificial FOD image from the weighted input fibers to explain the given FOD image in the best possible way. Is it possible to output the “unexplained” parts of the FOD image?

Cheers,
Peter


#2

Hi Peter,

The problem is that tckconvert does not write step size information into the tck header and thus SIFT2 is not able to process the data.

With up-to-date code, tcksift2 should be able to handle track files where the step size is undefined (I made some changes in this context not long ago). If this is not the case, quoting the specific error message would be helpful. The issue with processing tractograms in this way is that streamline lengths within each voxel traversed will reflect chordal length rather than arc length - which isn’t the end of the world really, hence why I’ve downgraded it from an error.

Is there an elegant way to hack the step size information into the tck header?

No, only the hex editing you’ve described. This is easier with image data, where you can convert to a .mih/.dat pair and then edit header entries using a text editor; track files however don’t have an analogue of this.

If I got it correctly, SIFT2 generates an artificial FOD image from the weighted input fibers to explain the given FOD image in the best possible way.

Kind of. Fundamentally it operates on fixels; the synthetic FOD outputs are really only for visualisation purposes. Nowadays these aren’t even generated, unless you uncomment this line.

Is it possible to output the “unexplained” parts of the FOD image?

Most likely using the -output_debug option will get you what you’re looking for. Technically there’s actually a few different ways that you could get to this result, but not all of the tools are in the public domain yet.

Rob