[Mrtrix-discussion] empty FA images and streamtrack questions

Donald Tournier d.tournier at brain.org.au
Mon Oct 27 20:49:25 PDT 2008


Hi Kerstin,

I notice you are running on a 64-bit system. Did you compile MRtrix as
a 64-bit executable, or did you stick to the default build setup?
There are subtle bugs that can come out in 64 bit mode that aren't a
problem in 32 bit mode...

Otherwise, if you have a minute, could you insert the following lines
in the file "src/dwi/SH.cpp":

at line 58:
            index_frac2 -= index;
            index_frac1 = 1.0 - index_frac2;

            assert (index >= 0);                             // <---
add this line
            assert (index < num_legendre_coefs);      // <--- add this line

            precomp_p1 = precomp_legendre + index*num_legendre_coefs;
            precomp_p2 = precomp_p1 + num_legendre_coefs;


and at line 70:
          inline float legendre_precomputed (int l, int m)
          {
            assert (l <= lmax_legendre);         // <--- add this line
            return (
                index_frac1 * precomp_p1[index_mpos (l,m)] +
                index_frac2 * precomp_p2[index_mpos (l,m)]


and then recompile in debug mode:
> ./build clean
> ./build -debug

and run in the debugger once again. Recompiling in debug mode will
provide a lot more information for the debugger, and the "bt full"
command should produce a much more detailed report of what's going
on...

Once everything is sorted and you don't want to run in debug mode any
more, you can revert to the default build:
> ./build clean
> ./build

Thanks for helping out!
Cheers,

Donald.


On Tue, Oct 28, 2008 at 10:09 AM, Kerstin Pannek <k.pannek1 at uq.edu.au> wrote:
> Hi Donald
>
> I follow the instructions in the documentation to get the fa. The tensor
> image I get is also empty.
>
> For streamtrack, I use a binary brain mask (generated using FSL bet, then
> eroded by 2 voxels) to terminate tracking. I found that segmentation faults
> occur more often (but not only) when I use the -include option. I guess this
> is simply because a larger number of streamlines has to be generated then,
> increasing chances to see a segfault, and does not actually have anything to
> do with -include itself.
> This is the command I ran:
> $ streamtrack SD_PROB CSD/csd.mif -seed AC-seed.mif -include AC-target.mif
> -number 100 -mask data/mask-ero2.mif AC-targets.tck
>
> This is the output of the debugger:
>
> $ gdb --args streamtrack SD_PROB CSD/csd.mif -seed AC-seed.mif -include
> AC-target.mif -mask data/mask-ero2.mif AC-targets.tckGNU gdb 6.8-debian
>
> Copyright (C) 2008 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later
> <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
> and "show warranty" for details.
> This GDB was configured as "x86_64-linux-gnu"...
> (gdb) run
> Starting program: /data/home/kerstin/bin/mrtrix/bin/streamtrack SD_PROB
> CSD/csd.mif -seed AC-seed.mif -include AC-target.mif -mask
> data/mask-ero2.mif AC-targets.tck
> [Thread debugging using libthread_db enabled]
> [New Thread 0x7f5b155f2780 (LWP 30061)]
>   9096 generated,      537 selected    [ 53%]
> Program received signal SIGSEGV, Segmentation fault.
> [Switching to Thread 0x7f5b155f2780 (LWP 30061)]
> 0x0000000000410404 in MR::DWI::SH::value_precomputed ()
> Current language:  auto; currently asm
> (gdb) bt full
> #0  0x0000000000410404 in MR::DWI::SH::value_precomputed ()
> No locals.
> #1  0x000000000043066b in MR::DWI::Tractography::Tracker::SDProb::next_point
> ()
> No locals.
> #2  0x0000000000423b48 in MR::DWI::Tractography::Tracker::Base::next ()
> No locals.
> #3  0x00000000004094c9 in MyApp::execute ()
> No locals.
> #4  0x00000000004057c0 in main ()
> No locals.
>
>
> Thanks for your help!
> Cheers
> Kerstin
>
>
>
>
>
>
> Donald Tournier wrote:
>>
>> Hi Kerstin,
>>
>> I'm a bit surprised that you're having problem with the tensor
>> analysis. Are you generating the tensor image (i.e. the dt.mif file)
>> first with dwi2tensor, and then feeding that through tensor2FA? Does
>> the tensor image look OK?
>>
>>
>> About your other questions:
>>
>> 1) the -initdirection option format is -initdirection 0,0.5,1 (i.e. a
>> comma-separated list of floating point values, no spaces). The
>> direction is relative to the usual coordinate system (in the
>> documentation: General Information => Overview).
>>
>> 2) Any segmentation fault is A Bad Thing. Could you post the entire
>> command that you actually type? I would also be interested to know
>> whether you use a mask image that allows the tracks to reach the edge
>> of the data set: maybe the program crashes if the track wonders
>> outside the image data set. In any case, there's a bug and it needs to
>> be fixed...
>>
>> If you're feeling particularly adventurous, maybe you can run the
>> tracking within the debugger? That way, if it crashes you would be
>> able to attach the full debugging information when/if it crashes. It's
>> quite simple to do that. If the command you normally run is:
>>
>>
>>>
>>> streamtrack SD_PROB some_image.mif track.tck -some_option etc
>>>
>>
>> then just insert "gdb --args" at the beginning, and then type "run" at
>> the GDB prompt:
>>
>>
>>>
>>> gdb --args streamtrack SD_PROB some_image.mif track.tck -some_option etc
>>>
>>
>> GNU gdb 6.8-debian
>> Copyright (C) 2008 Free Software Foundation, Inc.
>> License GPLv3+: GNU GPL version 3 or later
>> <http://gnu.org/licenses/gpl.html>
>> This is free software: you are free to change and redistribute it.
>> There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
>> and "show warranty" for details.
>> This GDB was configured as "i486-linux-gnu"...
>> (gdb) run
>>
>> If the program crashes it will display something like "SIGSEGV
>> exception occurred" or something. If that happens, then type "bt full"
>> at the prompt, and copy/paste all of the session into an email so I
>> can have a good look at what went wrong.
>>
>> By the way, this is only for debugging. There is a performance penalty
>> for running within the debugger, and it can be significant. I wouldn't
>> recommend doing this routinely...
>>
>> Cheers!
>>
>> Donald.
>>
>>
>>
>> On Fri, Oct 24, 2008 at 4:38 PM, Kerstin Pannek <k.pannek1 at uq.edu.au>
>> wrote:
>>
>>>
>>> Hello again everyone,
>>>
>>> Donald, thank you for fixing find_SH_peaks. Unfortunately I did not quite
>>> get around to really playing with it yet.
>>>
>>> I was just trying to analyze some DTI data that had not been optimized
>>> for
>>> CSD and tractography (b value 1200; slice gap...). When running
>>> tensor2FA, I
>>> get only an empty image. Image conversion from DICOM works, i.e. I get a
>>> non-empty dwi.mif and encoding - just a warning about the slice gap, no
>>> error message. What might be causing this problem?
>>>
>>> Some more question about streamtrack:
>>> 1) When I want to use the option -initdirection <dir>, what format should
>>> <dir> be?
>>> 2) I do get segmentation faults fairly frequently using streamtrack
>>> SD_PROB.
>>> I did get segmentation faults using fslview in the past, making me think
>>> that this was a hardware problem at my end. With the new version of FSL
>>> and
>>> a different video card, the fslview segmentation fault issue has been
>>> resolved, but the streamtrack segmentation fault remains. Any thoughts on
>>> what this problem might be related to? I case it is important, I get some
>>> "failed to converge" messages from csdeconv.
>>>
>>> Thanks for your help.
>>> Kerstin
>>> _______________________________________________
>>> Mrtrix-discussion mailing list
>>> Mrtrix-discussion at www.nitrc.org
>>> http://www.nitrc.org/mailman/listinfo/mrtrix-discussion
>>>
>>>
>>
>>
>>
>>
>
>



-- 
Jacques-Donald Tournier (PhD)
Brain Research Institute, Melbourne, Australia
Tel: +61 (0)3 9496 4078


More information about the Mrtrix-discussion mailing list