[MINC-users] [minctracc] segfault when using -measure option

Robert D. Vincent robert.d.vincent at mcgill.ca
Sun Sep 25 20:44:47 EDT 2016


Hi Mishkin,

The beauty of this is that I don't think you should have to recalculate
your transforms. The transforms express an operation in world coordinates.
The world coordinates of the files remains the same after reshaping, it's
only the relationship between the voxel space and the world space that is
changing.

I'm not completely expert with minctracc, so I hope someone else on this
list will correct me if I'm wrong.

    -bert

On Sun, Sep 25, 2016 at 7:13 PM, Mishkin Derakhshan <mishkind at gmail.com>
wrote:

> That fixed it!
> many thanks.
>
> I'm assuming though that the original xfm calculated with the -ve steps
> would not be appropriate to use for the newly reshaped files. Is there a
> tool or a simple way to fix the original xfms so I don't need to calculate
> them from scratch again on the +ve direction files?
>
> On Sun, Sep 25, 2016 at 3:01 AM, Robert D. Vincent <
> robert.d.vincent at mcgill.ca> wrote:
>
> > Hi again,
> >
> > So I have a couple of clues about the possible problem. It appears that
> > minctracc can misbehave for some files with negative steps. Can you try
> the
> > following with your example:
> >
> > mincreshape -valid_range 0 4095 +xdirection +ydirection +zdirection
> t1p.mnc
> > t1c.mnc
> >
> > and re-run minctracc with t1c.mnc instead of t1p.mnc. Let me know if this
> > still produces a segfault. It seems to fix it for me.
> >
> >     -bert
> >
> > On Sun, Sep 25, 2016 at 7:28 AM, Robert D. Vincent <
> > robert.d.vincent at mcgill.ca> wrote:
> >
> > > Thanks for the example, I'll look into it.
> > >
> > >
> > > On Sun, Sep 25, 2016 at 4:13 AM, Mishkin Derakhshan <
> mishkind at gmail.com>
> > > wrote:
> > >
> > >> Hi,
> > >> I get a segfault whenever I try to use the -measure option.
> > >> Here is the simplest example to reproduce the bug.
> > >>
> > >> $ minctracc -measure out.txt t1p.mnc.gz t1p.mnc.gz -transformation
> > >> identity.xfm
> > >>
> > >> I'm using:
> > >> $ minctracc -version
> > >> The program <minctracc> was built from:
> > >> mni_autoreg 0.99.60
> > >>
> > >> Here is some info on the files, but I don't think it has to do with
> the
> > >> files themselves as I've tried 100s. Maybe someone else can confirm.
> > >> $ mincinfo t1p.mnc.gz
> > >> file: t1p.mnc.gz
> > >> image: signed__ short 0 to 4095
> > >> image dimensions: zspace yspace xspace
> > >>     dimension name         length         step        start
> > >>     --------------         ------         ----        -----
> > >>     zspace                     60            3     -93.0427
> > >>     yspace                    256    -0.976562      119.239
> > >>     xspace                    192    -0.976562      91.5716
> > >>
> > >> $ cat identity.xfm
> > >> MNI Transform File
> > >> %Sun Sep 25 03:59:15 2016>>> param2xfm -scale 1 1 1 identity.xfm
> > >> %(mni_autoreg 0.99.60)
> > >>
> > >> Transform_Type = Linear;
> > >> Linear_Transform =
> > >>  1 0 0 0
> > >>  0 1 0 0
> > >>  0 0 1 0;
> > >>
> > >> Looking at the print statements in the debug output from minctracc,
> and
> > >> comparing with minctracc/Main/measure_code.c I have a rough idea where
> > the
> > >> segfault must be happening, but it's a little outside my depth at this
> > >> point.
> > >>
> > >> Bug happens somewhere in here:
> > >>                             /* do var_ratio */
> > >>
> > >>     main_args.obj_function = vr_objective;
> > >>     obj_func_val = measure_fit( data, model, mask_data, mask_model,
> > >> &main_args );
> > >>     (void)fprintf (ofd, "%f - var_ratio\n",obj_func_val);
> > >>     (void)fflush(ofd);
> > >>     DEBUG_PRINT1 ( "%f - var_ratio\n",obj_func_val);
> > >>
> > >>     delete_volume(data);
> > >>     delete_volume(model);
> > >>
> > >>                                 /* do ssc / zero-crossings */
> > >>
> > >>     status = input_volume( main_args.filenames.data, 3,
> > default_dim_names,
> > >>                           NC_UNSPECIFIED, FALSE, 0.0, 0.0,
> > >>                           TRUE, &data, (minc_input_options *)NULL );
> > >>     status = input_volume( main_args.filenames.model, 3,
> > >> default_dim_names,
> > >>                           NC_UNSPECIFIED, FALSE, 0.0, 0.0,
> > >>                           TRUE, &model, (minc_input_options *)NULL );
> > >>
> > >>     main_args.obj_function = ssc_objective;
> > >>     obj_func_val = measure_fit( data, model, mask_data, mask_model,
> > >> &main_args );
> > >>     (void)fprintf (ofd, "%f - ssc\n",obj_func_val);
> > >>     (void)fflush(ofd);
> > >>     DEBUG_PRINT1 ( "%f - ssc\n",obj_func_val);
> > >>
> > >>
> > >> The good news is that the out.txt measure file still gets output,
> albeit
> > >> incomplete, but so does a large core file. Not to mention I can't
> sleep
> > at
> > >> night having a seg fault that is built into the pipeline, er, at least
> > one
> > >> that that I know about!
> > >>
> > >> any help?
> > >> mishkin
> > >>
> > >> Here is the debugging output from minctracc if that helps:
> > >>
> > >> $ minctracc -measure out.txt t1p.mnc.gz t1p.mnc.gz -transformation
> > >> identity.xfm -debug
> > >> ===== Debugging information from minctracc =====
> > >> Data filename       = t1p.mnc.gz
> > >> Model filename      = t1p.mnc.gz
> > >> Data mask filename  =
> > >> Model mask filename =
> > >> Input xform name    = identity.xfm
> > >> Measure filename    = out.txt
> > >>
> > >> Step size           = 4.000000 4.000000 4.000000
> > >> Sub-lattice dia     = 24.000000 24.000000 24.000000
> > >> Objective function  = cross correlation (threshold = 0.000000
> 0.000000)
> > >> Transform linear    = TRUE
> > >> Transform inverted? = FALSE
> > >> Transform type      = 4
> > >> Transform matrix    =    1.0000    0.0000    0.0000    0.0000
> > >>                          0.0000    1.0000    0.0000    0.0000
> > >>                          0.0000    0.0000    1.0000    0.0000
> > >> Transform center   =    0.000    0.000    0.000
> > >> Transform rotation   =    0.000    0.000    0.000
> > >>
> > >> Transform trans    =    0.000    0.000    0.000
> > >> Transform scale    =    1.000    1.000    1.000
> > >>
> > >> Source volume size:  60  by 256  by 192
> > >> Source voxel size =    3.000   -0.977   -0.977
> > >> Source min/max real range =    0.000 2083.000
> > >> Source min/max voxel=    0.000 2083.000
> > >>
> > >> Target volume size:  60  by 256  by 192
> > >> Target voxel =    3.000   -0.977   -0.977
> > >> Target min/max real range=    0.000 2083.000
> > >> Target min/max voxel =    0.000 2083.000
> > >>
> > >>
> > >>   using input transformation to get initial parameters:
> > >>    Center of rot/scale not forced, will be set to : 0.000000 0.000000
> > >> 0.000000
> > >> In set_up_lattice, xyzv[axes] = 2, 1, 0, -1
> > >> slice lim 0 44
> > >> row lim   1 62
> > >> col lim   1 46
> > >> thresh =    0.00000    0.00000
> > >> In set_up_lattice, xyzv[axes] = 2, 1, 0, -1
> > >> Source volume is smallest
> > >> Lattice step size  =   -4.000   -4.000    4.000
> > >> Lattice start      =   88.104  129.917  -72.203
> > >> Lattice count      =       46       62       45
> > >>
> > >>  128340  128340  128340 ->        inf
> > >> inf - zscore
> > >>  128340  128340 -> 0.00000000
> > >> 0.000000 - xcorr
> > >>  128340  128340       0 -> 0.20877945
> > >> 0.208779 - var_ratio
> > >> Segmentation fault
> > >> _______________________________________________
> > >> MINC-users at bic.mni.mcgill.ca
> > >> http://www.bic.mni.mcgill.ca/mailman/listinfo/minc-users
> > >>
> > >
> > >
> > _______________________________________________
> > MINC-users at bic.mni.mcgill.ca
> > http://www.bic.mni.mcgill.ca/mailman/listinfo/minc-users
> >
> _______________________________________________
> MINC-users at bic.mni.mcgill.ca
> http://www.bic.mni.mcgill.ca/mailman/listinfo/minc-users
>


More information about the MINC-users mailing list