[Mrtrix-discussion] AFD per fixel

Robert Smith robert.smith at florey.edu.au
Thu Jun 26 21:51:20 PDT 2014


Luis (and all),


We've been chipping away at extracting useful fixel measures using a number
of methods for some years now. However it's important to realise that just
because a parameter has been extracted using a crossing-fibre model, does
not mean that it has a useful biological interpretation; see for instance this
thread
<http://www.nitrc.org/pipermail/mrtrix-discussion/2014-May/000994.html>.

For the sake of this argument, I'll make use of this terminology
<https://github.com/jdtournier/mrtrix3/wiki/Dixels-and-Fixels>; it's
important to discriminate between the *fixel-wise* AFD (which is the
integral of the corresponding FOD lobe, and corresponds to an MR-visible
fibre volume) and *dixel-wise* (which is just the amplitude of the FOD
along a particular direction; although this ideally corresponds to a fibre
volume per unit solid angle, this isn't the case in practise due to severe
SH truncation).

I should also qualify (again) that the afdconnectivity command was actually
written as a 'hack' for colleagues who did not have the necessary image
data to perform EPI distortion correction and therefore could not make use
of ACT and SIFT. Just want to make sure people do not mistakenly interpret
that afdconnectivity is our 'recommended' method for performing DWI
studies... the 'real' AFD tools are still under development.


a&b) I'll try to explain this a bit differently... The best way to think
about the operation of afdconnectivity is that it uses streamlines data to
generate a *fixel mask*. That is, each streamline traverses some subset of
voxels; within each voxel, the streamline tangent is mapped to the most
appropriate *fixel* within that voxel, and these fixels are added to the
mask. The total fibre 'volume' for the pathway of interest is taken as the
sum of fixel-wise densities within this mask; this is then divided by the
mean streamline length to get something more akin to a cross-sectional area.
I suspect you may be mistaking the context in which the "AFD sum" is
reported. By what I have described above, each fixel in the image may
contribute *only once* to the fixel mask, and hence to the reported
connectivity value. Where the 'sum' is used is with the -afd option in the
afdconnectivity command; note however that this is just an option for
outputting an image for visualisation, and bears no influence on the actual
computation. There is a possibility that depending on the streamlines you
have passed, more than one fixel within a single voxel may be added to the
fixel mask; in this case, the most meaningful thing to do for the sake of
that output image is to take the *sum* of the *fixel-wise* volumes within a
voxel as the image intensity.
Importantly, the fibre density of a particular fixel is added to the fixel
mask *only once*, i.e. a fixel with one traversing streamline contributes
its density to the final result just as much as a fixel with many
streamlines traversing it. This therefore removes the confound of
streamlines reconstruction density as you mentioned, but introduces new
problems: bad behaviour in voxels with partial volume and with streamline
outliers.

c) This one relies on a bit of an understanding of TWI. I suspect here that
the -stat_vox option is not doing what you think it is doing.
When the -contrast fod_amp option is used in tckmap, what happens is the
following. At each point along the streamline, the FOD amplitude along the
streamline tangent is computed (i.e. *dixel-wise*; as you correctly
identified, no FOD segmentation to obtain fixel-wise estimates is
performed). The -stat_tck option then determines how these values along the
length of the streamline are combined to produce a *single scalar measure*
for that particular streamline. The -stat_vox option then controls how the
image intensity for a particular voxel is determined based on the scalar
measures associated with the particular subset of streamlines that traverse
that voxel.
Therefore this is noticeably different to what I think is your
misinterpretation, which is getting an independent FOD amplitude in each
voxel traversed by each streamline, and then somehow combining the values
from within each voxel (i.e. sum / mean). If this were this case, the
tractography step would be more or less redundant; you could just compute a
voxel intensity value based on the properties of the fixels within that
voxel, no streamlines required.
Coming back to my first point, just because this mechanism is making use of
crossing-fibre information, doesn't mean that it is immediately 'superior'
to methods that do not. For instance, let's say that you take the mean FOD
amplitude along each streamline (-stat_tck mean), and the mean value per
voxel (-stat_vox mean). The image intensity in each voxel can then be
interpreted as the
voxel-mean-of-mean-fibre-volume-per-unit-solid-angle-along-connecting-pathway-weighted-by-streamlines-density.
Try saying that five times fast...

d) As Dave has mentioned, afdconnectivity expects an FOD image as input. At
some stage I hope to have many fixel-related commands accept either an FOD
image or a fixel image; that way people can use non-SH-based crossing-fibre
diffusion models in any of these commands.
(As an aside, one of the benefits of using the raw FODs rather than
pre-computed fixels is that the FOD segmentation algorithm captures the
angular 'spread' of each FOD lobe, which assists in assigning streamlines
to the most appropriate fixel)


Hopefully that helps you to wrap your head around some of these concepts.

Rob


--

*Robert Smith, Ph.D*
Research Officer, Imaging Division

The Florey Institute of Neuroscience and Mental Health
Melbourne Brain Centre - Austin Campus
245 Burgundy Street
Heidelberg Vic 3084
Ph: +61 3 9035 7128
Fax: +61 3 9035 7301
www.florey.edu.au


On Fri, Jun 27, 2014 at 10:09 AM, David Raffelt <d.raffelt at brain.org.au>
wrote:

>  Hi Luis,
>
>  One thing I probably should include in the documentation is that the AFD
> in this command is actually computed as the FOD fixel *integral* (as
> explained in Rob's SIFT paper). The afdconnectivity command parses each
> streamline, and identifies which fixels are tangent to the streamline.
> After all fixels have been identified it *sums* the AFD (integral) over
> all fixels, then normalises by mean streamline length.
>
>  To answer your questions:
>
>  a) Yes afdconnectivity will only include fixels that are tangent to your
> streamlines and will ignore fixels from unrelated crossing fibres. There is
> no angular threshold for assigning fixels to the streamline tangent. If a
> streamline passes through a voxel, then the fixel with the closest
> orientation to the streamline tangent will be flagged as belonging to the
> tract.  Assuming you have used the same FOD image for tractography and AFD
> calculations then this should not be an issue.
>
>  b) If the streamlines are neatly aligned then only a single fixel will
> be included. However sometimes with probabilistic tracking they branch off
> in different directions in crossing fibre regions. In this case multiple
> fixels within a single voxel may be flagged as belonging to the
> tract-of-interest. Note we don't just sum the AFD within a voxel, the
> afdconnectivity measure is the sum of AFD from *all* fixels in the tract
> of interest. This is then normalised by mean streamline length to get a
> measure related to fibre *bundle* cross-sectional area.  If we were to
> average the AFD then morphological differences in fibre bundle width will
> not contribute to the connectivity of a bundle.  We normalise by mean
> streamline length since subject differences in fibre bundle *length* are
> unlikely to influence "connectivity".
>
>  c) I'm not entirely sure how the tckmap AFD stuff is implemented. Rob
> can you comment on this one?
>
>  d) afdconnectivity inputs the FOD image, segments the fixels and
> computes the AFD integral for you (you need to input the FOD image, not a
> AFD fixel image). Although I admit inputting a fixel image makes more
> sense, however afdconnectivity was coded before we had the mtrix sparse
> image format. We should probably change this in the future.
>
>  Just a final comment. I coded afdconnectivity as a fairly adhoc method
> of computing tract-of-interest AFD for situations where ACT and SIFT could
> not be used. If you have EPI correction, then a more robust AFD-based
> connectivity measure would be to do whole brain tracking, SIFT, then count
> the streamlines between your regions of interest.
>
>  Cheers,
> Dave
>
>
>
>
>
>
>
> On 27 June 2014 09:04, Luis Concha <lconcha at unam.mx> wrote:
>
>>  I would like to revisit the topic
>> <http://www.nitrc.org/pipermail/mrtrix-discussion/2014-March/000923.html>
>> of tract-specific AFD measurements in light of the new and useful tools
>> available in mrtrix3.
>>
>>  Looking at the documentation of afdconnectivity, the option -afd
>> otuputs a volume containing the AFD estimated for each voxel, given a track
>> file. However, it clearly states that "if the input tracks are tangent to
>> multiple fibres in a voxel(fixels), then the output AFD is the sum of the
>> AFD for each fixel". I am a bit confused by this statement and have a few
>> questions:
>>
>>  a) Imagine a streamline belonging to the corpus callosum passing
>> through the centrum semiovale; I would like to obtain the AFD from the
>> fixels most parallel to the streamline segment, and ignore the
>> other  (presumably perpendicular) fixel. Does afdconnectivity do this? And,
>> if so, how "perpendicular" does the fixel orientation need to be relative
>> to the track segment in order to be included?
>>
>>  b) Now imagine several tracks passing through the same voxel, all of
>> them neatly parallel with the fixel orientation. Why would we want to
>> obtain the sum of AFDs, as opposed to the average AFD in that voxel? The
>> choice to sum seems susceptible by the number of tracks generated and thus
>> passing through the voxel in questionq.
>>
>>  c) From the documentation for tckmap it seems like I can have the mean
>> instead of the sum by way of the -stat_vox mean switch. However, in this
>> command I am not clear if fixels are selected in terms of perpendicularity
>> to the track segment or not (it seems unlikely, as the FODs are not
>> segmented, but rather the average -or sum- of all the AFDs in a given
>> voxel).
>>
>>  d) Finally, I am getting an error when using afdconnectivity:
>>  $ afdconnectivity -afd callosum_afd.nii fixel_afd.msf callosum.tck -info
>> afdconnectivity
>> [INFO]: opening image "fixel_afd.msf"...
>> afdconnectivity: summing apparent fibre density within track...
>> 0%afdconnectivity [INFO]: opening image "fixel_afd.msf"...
>> afdconnectivity [INFO]: opening image "fixel_afd.msf"...
>> afdconnectivity: summing apparent fibre density within track...
>> 2%Segmentation fault (core dumped)
>>
>>  (the same error occurs even if -afd is not used).
>>
>>
>>  I apologize for so many questions in a single post, but they are all
>> related.Thanks in advance.
>>
>>
>>  FYI:
>>  $ afdconnectivity -version
>> == afdconnectivity 6d02b643 ==
>> 64 bit release version, built May 29 2014, using GSL 1.16
>>
>>  ************************************************
>> Image:               "fixel_afd.msf"
>> ************************************************
>>   Format:            MRtrix WIP sparse image data format
>>   Dimensions:        256 x 256 x 54
>>   Voxel size:        1 x 1 x 2
>>   Data type:         unsigned 64 bit integer (little endian)
>>   Data strides:      [ 2 3 1 ]
>>   Intensity scaling: offset = 0, multiplier = 1
>>   Comments:          FSL4.1
>>   Properties:
>>     sparse_data_name: N2MR5Image6Sparse11FixelMetricE
>>     sparse_data_size: 20
>>   Transform:                    1           0           0      -127.7
>>                                -0           1           0      -111.5
>>                                -0           0           1      -49.73
>>                                 0           0           0           1
>>  ***********************************
>>   Tracks file: "callosum.tck"
>>     count:                50
>>     downsample_factor:    3
>>     fod_power:            0.25
>>     init_threshold:       0.1
>>     lmax:                 8
>>
>>
>>  $ uname -a
>> Linux mansfield 3.13.0-24-generic #47-Ubuntu SMP Fri May 2 23:30:00 UTC
>> 2014 x86_64 x86_64 x86_64 GNU/Linux
>>
>>
>>
>>  Dr. Luis Concha
>> Instituto de Neurobiología
>> Laboratorio C-13
>> UNAM, Campus Juriquilla
>> Boulervard Juriquilla 3001
>> Juriquilla, Querétaro.
>> C.P. 76230
>> México
>> Tel (442) 2 38 10 54
>> Fax (442) 2 38 10 46
>> http://personal.inb.unam.mx/lconcha/
>>
>> _______________________________________________
>> Mrtrix-discussion mailing list
>> Mrtrix-discussion at www.nitrc.org
>> http://www.nitrc.org/mailman/listinfo/mrtrix-discussion
>>
>>
>
>
>  --
>  *David Raffelt (PhD)*
> Post Doctoral Fellow
>
>  The Florey Institute of Neuroscience and Mental Health
> Melbourne Brain Centre - Austin Campus
> 245 Burgundy Street
> Heidelberg Vic 3084
> Ph: +61 3 9035 7024
>  www.florey.edu.au
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.nitrc.org/pipermail/mrtrix-discussion/attachments/20140627/0f5f3631/attachment-0001.html>


More information about the Mrtrix-discussion mailing list