[Mrtrix-discussion] empty FA images and streamtrack questions

Kerstin Pannek k.pannek1 at uq.edu.au
Tue Oct 28 15:54:50 PDT 2008


Hi
I inserted the assert statements and other lines. I get the same error 
message as before:

streamtrack: src/dwi/SH.cpp:58: void 
MR::DWI::SH::<unnamed>::calc_index_fractions(float): Assertion `index < 
num_legendre_coefs' failed.
Aborted

Maybe I missed something... Do you think it would help if you sent me 
your complete modified SH.cpp and I rebuild with that?

Would you generally recommend using the 32bit version rather than the 
64bit version? I have a VM on my computer that runs as 32bit (I know 
that sounds weird... Matlab had issues with the 64bit...)

Thanks for your help
Kerstin




Donald Tournier wrote:
> Hi,
>
> Interesting that you cannot build the 32 bit version. I assume one of
> the libraries (presumably GSL) is configured to compile only in 64-bit
> mode, and includes processor-specific instructions. There might be a
> way to get it to compile, but it sounds easier to just compile it in
> 64-bit mode...
>
> In any case, the debugging information you sent is pretty complete
> (thanks!), and it sounds like it might be trivial to fix. I'd just
> like to get one last confirmation that whatever is going on is benign,
> and not symptomatic of something worse. Could you put the assert()
> statements back in, and insert the following lines in
> "src/dwi/SH.cpp", at line 304:
>
>         float value_precomputed (const float *values, const Point& unit_dir)
>         {
>           if (fabs(unit_dir[2]) > 1.0) {   // insert from here
>             VAR (unit_dir[2]);
>             VAR (acos(unit_dir[2]));
>           }     // to here
>           calc_index_fractions (acos(unit_dir[2]));
>
> and recompile? Doesn't matter if it's compiled with the -debug option
> or not, or whether you run it within the debugger. It should print out
> the values that are causing the problem, before failing at one of the
> assert statement.
>
> Let me know what it prints out. If the first value is just greater
> than one due to rounding errors, it's a trivial fix. If it's a lot
> larger than that, something odd is going on...
>
> Thanks again,
>
> Donald.
>
>
> On Tue, Oct 28, 2008 at 4:37 PM, Kerstin Pannek <k.pannek1 at uq.edu.au> wrote:
>   
>> Hi Donald
>>
>> The default build wouldn't work on my system. This is what happens when I
>> try:
>>
>> [CC] lib/math/vector.o
>>
>> ERROR: [CC] lib/math/vector.o
>>
>> g++ -c -Wall -march=i686 -fPIC -fno-strict-aliasing -DGL_GLEXT_PROTOTYPES
>> -O3 -pthread -I/usr/include/glibmm-2.4 -I/usr/lib/glibmm-2.4/include
>> -I/usr/include/sigc++-2.0 -I/usr/lib/sigc++-2.0/include
>> -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -Ilib -Isrc
>> lib/math/vector.cpp -o lib/math/vector.o
>>
>> failed with output:
>>
>> lib/math/vector.cpp:1: error: CPU you selected does not support x86-64
>> instruction set
>>
>>
>> So I installed following the 64bit instructions in the documentation.
>> I inserted the lines in src/dwi/SH.cpp and rebuild, and running streamtrack
>> I now get an error message:
>>
>> streamtrack: src/dwi/SH.cpp:58: void
>> MR::DWI::SH::<unnamed>::calc_index_fractions(float): Assertion `index <
>> num_legendre_coefs' failed.
>> Aborted
>>
>> I removed the lines and recompiled in debug mode. I attached the output of
>> bt full - a lot more information in it now!
>>
>> Cheers
>> Kerstin
>>
>>
>>
>>
>>
>> Donald Tournier wrote:
>>     
>>> 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
>>>>>>
>>>>>>
>>>>>>
>>>>>>             
>>>>>
>>>>>           
>>>>         
>>>
>>>
>>>       
>> #0  0x000000000041c089 in legendre_precomputed (l=0, m=0) at
>> src/dwi/SH.cpp:75
>> No locals.
>> #1  0x000000000041d6b0 in MR::DWI::SH::value_precomputed (
>>    values=0x7fff54ac22c0, unit_dir=@0x7fff54ac23e0) at src/dwi/SH.cpp:314
>>        l = 0
>>        az = -0.926234603
>>        val = 0
>> #2  0x000000000043ae23 in MR::DWI::Tractography::Tracker::SDProb::next_point
>> (
>>    this=0x658ac0) at src/dwi/tractography/tracker/sd_prob.cpp:96
>>        new_dir = {static Invalid = <error reading variable>
>>        val = 0
>>        n = 0
>>        values = 0x7fff54ac22c0
>>        max_val = 0
>> #3  0x0000000000431420 in MR::DWI::Tractography::Tracker::Base::next (
>>    this=0x658ac0) at src/dwi/tractography/tracker/base.cpp:121
>> No locals.
>> #4  0x0000000000412ed2 in MyApp::execute (this=0x7fff54ac2ee0)
>>    at cmd/streamtrack.cpp:230
>>        seed_dir = {static Invalid = <error reading variable>
>>        tck = {<std::_Vector_base<MR::Point,std::allocator<MR::Point> >> = {
>>    _M_impl = {<std::allocator<MR::Point>> =
>> {<__gnu_cxx::new_allocator<MR::Point>> = {<No data fields>}, <No data
>> fields>}, _M_start = 0x65c4e0,
>> ---Type <return> to continue, or q <return> to quit---
>>      _M_finish = 0x65c5dc, _M_end_of_storage = 0x65c660}}, <No data fields>}
>>        max_num_tracks = 1000
>>        unidirectional = false
>>        min_size = 50
>>        properties = {<std::map<std::basic_string<char,
>> std::char_traits<char>, std::allocator<char> >,std::basic_string<char,
>> std::char_traits<char>, std::allocator<char>
>>     
>>> ,std::less<std::basic_string<char, std::char_traits<char>,
>>>       
>> std::allocator<char> > >,std::allocator<std::pair<const
>> std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
>> std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >
>>     
>>>> = {_M_t = {
>>>>         
>>      _M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const
>> std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
>> std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >
>>     
>>>> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const
>>>>         
>> std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
>> std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >
>>     
>>>> = {<No data fields>}, <No data fields>},
>>>>         
>>        _M_key_compare = {<std::binary_function<std::basic_string<char,
>> std::char_traits<char>, std::allocator<char> >,std::basic_string<char,
>> std::char_traits<char>, std::allocator<char> >,bool>> = {<No data fields>},
>> <No data fields>},
>>        _M_header = {_M_color = std::_S_red, _M_parent = 0x65b800,
>>          _M_left = 0x658a20, _M_right = 0x65af80}, _M_node_count = 13}}},
>>  roi =
>> {<std::_Vector_base<MR::RefPtr<MR::DWI::Tractography::ROI>,std::allocator<MR::RefPtr<MR::DWI::Tractography::ROI>
>>     
>>>>> = {
>>>>>           
>> ---Type <return> to continue, or q <return> to quit---
>>      _M_impl = {<std::allocator<MR::RefPtr<MR::DWI::Tractography::ROI> >> =
>> {<__gnu_cxx::new_allocator<MR::RefPtr<MR::DWI::Tractography::ROI> >> = {<No
>> data fields>}, <No data fields>}, _M_start = 0x65b860, _M_finish = 0x65b890,
>>        _M_end_of_storage = 0x65b8a0}}, <No data fields>},
>>  comments = {<std::_Vector_base<std::basic_string<char,
>> std::char_traits<char>, std::allocator<char>
>>     
>>> ,std::allocator<std::basic_string<char, std::char_traits<char>,
>>>       
>> std::allocator<char> > > >> = {
>>      _M_impl = {<std::allocator<std::basic_string<char,
>> std::char_traits<char>, std::allocator<char> > >> =
>> {<__gnu_cxx::new_allocator<std::basic_string<char, std::char_traits<char>,
>> std::allocator<char> > >> = {<No data fields>}, <No data fields>}, _M_start
>> = 0x0, _M_finish = 0x0,
>>        _M_end_of_storage = 0x0}}, <No data fields>}}
>>        opt = {<std::_Vector_base<MR::OptBase,std::allocator<MR::OptBase> >>
>> = {_M_impl = {<std::allocator<MR::OptBase>> =
>> {<__gnu_cxx::new_allocator<MR::OptBase>> = {<No data fields>}, <No data
>> fields>}, _M_start = 0x65b050,
>>      _M_finish = 0x65b050, _M_end_of_storage = 0x65b070}}, <No data fields>}
>>        grad = {ptr = 0x0, count = 0x65b150}
>>        init_dir = {static Invalid = <error reading variable>
>>        source = (MR::Image::Object &) @0x654a40: {
>>  static handlers = 0x7fad4c8a6880, H = {axes = {dim = {128, 128, 60, 45,
>>        0 <repeats 12 times>}, vox = {2.34375, 2.34375, 2.5, 1,
>>        nan(0x400000) <repeats 12 times>}, desc = {{
>>          static npos = 18446744073709551615,
>> ---Type <return> to continue, or q <return> to quit---
>>          _M_dataplus = {<std::allocator<char>> =
>> {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
>> _M_p = 0x6549f8 "left->right"}}, {
>>          static npos = 18446744073709551615,
>>          _M_dataplus = {<std::allocator<char>> =
>> {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
>>            _M_p = 0x65abd8 "posterior->anterior"}}, {
>>          static npos = 18446744073709551615,
>>          _M_dataplus = {<std::allocator<char>> =
>> {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
>>            _M_p = 0x658908 "inferior->superior"}}, {
>>          static npos = 18446744073709551615,
>>          _M_dataplus = {<std::allocator<char>> =
>> {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
>>            _M_p = 0x7fad4b21ae78 ""}} <repeats 13 times>}, units = {{
>>          static npos = 18446744073709551615,
>>          _M_dataplus = {<std::allocator<char>> =
>> {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
>> _M_p = 0x65ad28 "mm"}}, {
>>          static npos = 18446744073709551615,
>>          _M_dataplus = {<std::allocator<char>> =
>> {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
>> _M_p = 0x65ad58 "mm"}}, {
>>          static npos = 18446744073709551615,
>>          _M_dataplus = {<std::allocator<char>> =
>> {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
>> _M_p = 0x65add8 "mm"}}, {
>> ---Type <return> to continue, or q <return> to quit---
>>          static npos = 18446744073709551615,
>>          _M_dataplus = {<std::allocator<char>> =
>> {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
>>            _M_p = 0x7fad4b21ae78 ""}} <repeats 13 times>}, axis = {1, 2, 3,
>>        0, 2147483647 <repeats 12 times>}, forward = {
>>        true <repeats 16 times>}, size_p = 4},
>>    comments = {<std::_Vector_base<std::basic_string<char,
>> std::char_traits<char>, std::allocator<char>
>>     
>>> ,std::allocator<std::basic_string<char, std::char_traits<char>,
>>>       
>> std::allocator<char> > > >> = {
>>        _M_impl = {<std::allocator<std::basic_string<char,
>> std::char_traits<char>, std::allocator<char> > >> =
>> {<__gnu_cxx::new_allocator<std::basic_string<char, std::char_traits<char>,
>> std::allocator<char> > >> = {<No data fields>}, <No data fields>}, _M_start
>> = 0x65ac10, _M_finish = 0x65ac18,
>>          _M_end_of_storage = 0x65ac18}}, <No data fields>}, data_type = {
>>      dt = 69 'E', static ComplexNumber = 16 '\020', static Signed = 32 ' ',
>>      static LittleEndian = 64 '@', static BigEndian = 128 '\200',
>>      static Text = 255 '�', static GroupStart = 254 '�',
>>      static GroupEnd = 253 '�', static Undefined = 0 '\0',
>>      static Bit = 1 '\001', static UInt8 = 2 '\002',
>>      static UInt16 = 3 '\003', static UInt32 = 4 '\004',
>>      static Float32 = 5 '\005', static Float64 = 6 '\006',
>>      static Int8 = 34 '"', static Int16 = 35 '#', static Int16LE = 99 'c',
>>      static UInt16LE = 67 'C', static Int16BE = 163 '�',
>> ---Type <return> to continue, or q <return> to quit---
>>      static UInt16BE = 131 '\203', static Int32 = 36 '$',
>>      static Int32LE = 100 'd', static UInt32LE = 68 'D',
>>      static Int32BE = 164 '�', static UInt32BE = 132 '\204',
>>      static Float32LE = 69 'E', static Float32BE = 133 '\205',
>>      static Float64LE = 70 'F', static Float64BE = 134 '\206',
>>      static CFloat32 = 21 '\025', static CFloat32LE = 85 'U',
>>      static CFloat32BE = 149 '\225', static CFloat64 = 22 '\026',
>>      static CFloat64LE = 86 'V', static CFloat64BE = 150 '\226',
>>      static Native = 69 'E'}, DW_scheme = {M = 0x0}, offset = 0, scale = 1,
>>    name = {static npos = 18446744073709551615,
>>      _M_dataplus = {<std::allocator<char>> =
>> {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
>> _M_p = 0x657fa8 "CSD/csd.mif"}},
>>    read_only = true, format = 0x7fad4c67df46 "MRtrix", trans_I2R = {
>>      M = 0x65b530}, trans_R2I = {M = 0x65b420}, trans_P2R = {M = 0x65b310},
>>    trans_R2P = {M = 0x65b200}}, M = {output_name = {
>>      static npos = 18446744073709551615,
>>      _M_dataplus = {<std::allocator<char>> =
>> {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>},
>> _M_p = 0x7fad4b21ae78 ""}},
>>    list =
>> {<std::_Vector_base<MR::Image::Mapper::Entry,std::allocator<MR::Image::Mapper::Entry>
>>     
>>>> = {
>>>>         
>>        _M_impl = {<std::allocator<MR::Image::Mapper::Entry>> =
>> {<__gnu_cxx::new_allocator<MR::Image::Mapper::Entry>> = {<No data fields>},
>> <No data fields>},
>>          _M_start = 0x65b460, _M_finish = 0x65b478,
>> ---Type <return> to continue, or q <return> to quit---
>>          _M_end_of_storage = 0x65b478}}, <No data fields>}, mem = 0x0,
>>    segment = 0x658aa0, segsize = 44236800, optimised = true,
>>    temporary = false, files_new = false,
>>    get_func = 0x7fad4c6523e6 <MR::Image::Mapper::getFloat32LE(void const*,
>> unsigned long)>,
>>    put_func = 0x7fad4c6527c6 <MR::Image::Mapper::putFloat32LE(float, void*,
>> unsigned long)>}, start = 0, stride = {45, 5760, 737280, 1, 0 <repeats 12
>> times>}}
>>        tracker = {ptr = 0x658ac0}
>>        writer = {count = 359, total_count = 6608, out = <incomplete type>,
>>  dtype = {dt = 69 'E', static ComplexNumber = 16 '\020',
>>    static Signed = 32 ' ', static LittleEndian = 64 '@',
>>    static BigEndian = 128 '\200', static Text = 255 '�',
>>    static GroupStart = 254 '�', static GroupEnd = 253 '
>>    static Undefined = 0 '\0', static Bit = 1 '\001', static UInt8 = 2
>> '\002',
>>    static UInt16 = 3 '\003', static UInt32 = 4 '\004',
>>    static Float32 = 5 '\005', static Float64 = 6 '\006',
>>    static Int8 = 34 '"', static Int16 = 35 '#', static Int16LE = 99 'c',
>>    static UInt16LE = 67 'C', static Int16BE = 163 '�',
>>    static UInt16BE = 131 '\203', static Int32 = 36 '$',
>>    static Int32LE = 100 'd', static UInt32LE = 68 'D',
>>    static Int32BE = 164 '�', static UInt32BE = 132 '\204',
>>    static Float32LE = 69 'E', static Float32BE = 133 '\205',
>>    static Float64LE = 70 'F', static Float64BE = 134 '\206',
>> ---Type <return> to continue, or q <return> to quit---
>>    static CFloat32 = 21 '\025', static CFloat32LE = 85 'U',
>>    static CFloat32BE = 149 '\225', static CFloat64 = 22 '\026',
>>    static CFloat64LE = 86 'V', static CFloat64BE = 150 '\226',
>>    static Native = 69 'E'}, count_offset = 340}
>> #5  0x00007fad4c60ab14 in MR::App::run (this=0x7fff54ac2ee0, argc=12,
>>    argv=0x7fff54ac3048) at lib/app.cpp:206
>> No locals.
>> #6  0x00000000004133ec in main (argc=12, argv=0x7fff54ac3048)
>>    at cmd/streamtrack.cpp:115
>>        app = {<MR::App> = {_vptr.App = 0x650a90,
>>    static command_description = 0x6514a0,
>>    static command_arguments = 0x6515a0, static command_options = 0x651660,
>>    static default_options = {
>>      {<std::vector<MR::Argument,std::allocator<MR::Argument> >> =
>> {<std::_Vector_base<MR::Argument,std::allocator<MR::Argument> >> = {
>>            _M_impl = {<std::allocator<MR::Argument>> =
>> {<__gnu_cxx::new_allocator<MR::Argument>> = {<No data fields>}, <No data
>> fields>}, _M_start = 0x0,
>>              _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>},
>>        sname = 0x101 <Address 0x101 out of bounds>,
>>        lname = 0x2 <Address 0x2 out of bounds>, desc = 0x0, mandatory = 24,
>>        allow_multiple = 254,
>>        static End = {<std::vector<MR::Argument,std::allocator<MR::Argument>
>>     
>>>> = {<std::_Vector_base<MR::Argument,std::allocator<MR::Argument> >> = {
>>>>         
>> ---Type <return> to continue, or q <return> to quit---
>>              _M_impl = {<std::allocator<MR::Argument>> =
>> {<__gnu_cxx::new_allocator<MR::Argument>> = {<No data fields>}, <No data
>> fields>}, _M_start = 0x0,
>>                _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data
>> fields>},
>>          sname = 0x0, lname = 0x0, desc = 0x0, mandatory = false,
>>          allow_multiple = false,
>>          static End = <same as static member of an already seen type>}},
>>      {<std::vector<MR::Argument,std::allocator<MR::Argument> >> =
>> {<std::_Vector_base<MR::Argument,std::allocator<MR::Argument> >> = {
>>            _M_impl = {<std::allocator<MR::Argument>> =
>> {<__gnu_cxx::new_allocator<MR::Argument>> = {<No data fields>}, <No data
>> fields>},
>>              _M_start = 0x7fad4c8a6660, _M_finish = 0x2a64830,
>>              _M_end_of_storage = 0x29c3550}}, <No data fields>},
>>        sname = 0x9d4620 <Address 0x9d4620 out of bounds>,
>>        lname = 0xd004164befa1fe18 <Address 0xd004164befa1fe18 out of
>> bounds>,
>>        desc = 0x2ffbe32e873dfe18 <Address 0x2ffbe32e873dfe18 out of bounds>,
>>        mandatory = true, allow_multiple = false,
>>        static End = {<std::vector<MR::Argument,std::allocator<MR::Argument>
>>     
>>>> = {<std::_Vector_base<MR::Argument,std::allocator<MR::Argument> >> = {
>>>>         
>>              _M_impl = {<std::allocator<MR::Argument>> =
>> {<__gnu_cxx::new_allocator<MR::Argument>> = {<No data fields>}, <No data
>> fields>}, _M_start = 0x0,
>>                _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data
>> fields>},
>>          sname = 0x0, lname = 0x0, desc = 0x0, mandatory = false,
>>          allow_multiple = false,
>> ---Type <return> to continue, or q <return> to quit---
>>          static End = <same as static member of an already seen type>}},
>>      {<std::vector<MR::Argument,std::allocator<MR::Argument> >> =
>> {<std::_Vector_base<MR::Argument,std::allocator<MR::Argument> >> = {
>>            _M_impl = {<std::allocator<MR::Argument>> =
>> {<__gnu_cxx::new_allocator<MR::Argument>> = {<No data fields>}, <No data
>> fields>}, _M_start = 0x10000,
>>              _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>},
>>        sname = 0x0, lname = 0x0, desc = 0x0, mandatory = false,
>>        allow_multiple = false,
>>        static End = {<std::vector<MR::Argument,std::allocator<MR::Argument>
>>     
>>>> = {<std::_Vector_base<MR::Argument,std::allocator<MR::Argument> >> = {
>>>>         
>>              _M_impl = {<std::allocator<MR::Argument>> =
>> {<__gnu_cxx::new_allocator<MR::Argument>> = {<No data fields>}, <No data
>> fields>}, _M_start = 0x0,
>>                _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data
>> fields>},
>>          sname = 0x0, lname = 0x0, desc = 0x0, mandatory = false,
>>          allow_multiple = false,
>>          static End = <same as static member of an already seen type>}},
>>      {<std::vector<MR::Argument,std::allocator<MR::Argument> >> =
>> {<std::_Vector_base<MR::Argument,std::allocator<MR::Argument> >> = {
>>            _M_impl = {<std::allocator<MR::Argument>> =
>> {<__gnu_cxx::new_allocator<MR::Argument>> = {<No data fields>}, <No data
>> fields>}, _M_start = 0x0,
>>              _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>},
>>        sname = 0x0, lname = 0x0, desc = 0x0, mandatory = false,
>>        allow_multiple = false,
>> ---Type <return> to continue, or q <return> to quit---
>>        static End = {<std::vector<MR::Argument,std::allocator<MR::Argument>
>>     
>>>> = {<std::_Vector_base<MR::Argument,std::allocator<MR::Argument> >> = {
>>>>         
>>              _M_impl = {<std::allocator<MR::Argument>> =
>> {<__gnu_cxx::new_allocator<MR::Argument>> = {<No data fields>}, <No data
>> fields>}, _M_start = 0x0,
>>                _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data
>> fields>},
>>          sname = 0x0, lname = 0x0, desc = 0x0, mandatory = false,
>>          allow_multiple = false,
>>          static End = <same as static member of an already seen type>}},
>>      {<std::vector<MR::Argument,std::allocator<MR::Argument> >> =
>> {<std::_Vector_base<MR::Argument,std::allocator<MR::Argument> >> = {
>>            _M_impl = {<std::allocator<MR::Argument>> =
>> {<__gnu_cxx::new_allocator<MR::Argument>> = {<No data fields>}, <No data
>> fields>}, _M_start = 0x0,
>>              _M_finish = 0x0,
>>              _M_end_of_storage = 0x7ffffafef8a0}}, <No data fields>},
>>        sname = 0x2 <Address 0x2 out of bounds>,
>>        lname = 0x9d1370 <Address 0x9d1370 out of bounds>, desc = 0x0,
>>        mandatory = 144, allow_multiple = 175,
>>        static End = {<std::vector<MR::Argument,std::allocator<MR::Argument>
>>     
>>>> = {<std::_Vector_base<MR::Argument,std::allocator<MR::Argument> >> = {
>>>>         
>>              _M_impl = {<std::allocator<MR::Argument>> =
>> {<__gnu_cxx::new_allocator<MR::Argument>> = {<No data fields>}, <No data
>> fields>}, _M_start = 0x0,
>>                _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data
>> fields>},
>>          sname = 0x0, lname = 0x0, desc = 0x0, mandatory = false,
>> ---Type <return> to continue, or q <return> to quit---
>>          allow_multiple = false,
>>          static End = <same as static member of an already seen type>}}},
>>    parsed_arguments = {<std::_Vector_base<const gchar*,std::allocator<const
>> gchar*> >> = {
>>        _M_impl = {<std::allocator<const gchar*>> =
>> {<__gnu_cxx::new_allocator<const gchar*>> = {<No data fields>}, <No data
>> fields>}, _M_start = 0x654890,
>>          _M_finish = 0x6548a8,
>>          _M_end_of_storage = 0x6548b0}}, <No data fields>},
>>    parsed_options =
>> {<std::_Vector_base<MR::ParsedOption,std::allocator<MR::ParsedOption> >> = {
>>        _M_impl = {<std::allocator<MR::ParsedOption>> =
>> {<__gnu_cxx::new_allocator<MR::ParsedOption>> = {<No data fields>}, <No data
>> fields>},
>>          _M_start = 0x654930, _M_finish = 0x6549b0,
>>          _M_end_of_storage = 0x6549b0}}, <No data fields>},
>>    argument = {<std::_Vector_base<MR::ArgBase,std::allocator<MR::ArgBase> >>
>> = {
>>        _M_impl = {<std::allocator<MR::ArgBase>> =
>> {<__gnu_cxx::new_allocator<MR::ArgBase>> = {<No data fields>}, <No data
>> fields>}, _M_start = 0x65acc0,
>>          _M_finish = 0x65acf0,
>>          _M_end_of_storage = 0x65ad00}}, <No data fields>},
>>    option = {<std::_Vector_base<MR::OptBase,std::allocator<MR::OptBase> >> =
>> {
>>        _M_impl = {<std::allocator<MR::OptBase>> =
>> {<__gnu_cxx::new_allocator<MR::OptBase>> = {<No data fields>}, <No data
>> fields>}, _M_start = 0x65b680,
>> ---Type <return> to continue, or q <return> to quit---
>>          _M_finish = 0x65b700,
>>          _M_end_of_storage = 0x65b700}}, <No data fields>},
>>    static log_level = 1}, <No data fields>}
>>        ret = 0
>>
>>
>>
>>     
>
>
>
>   



More information about the Mrtrix-discussion mailing list