[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