[MINC-development] Draft API for MINC 2.0

Robert VINCENT minc-development@bic.mni.mcgill.ca
Mon, 16 Jun 2003 14:27:00 -0400


On Mon, 16 Jun 2003, Andrew Janke wrote:

> Are you really really sure you want to add more data types?  (COMPLEX, etc) I
> for one was happy with the idea of a 'vector_dimension/complex_vector' for these
> as it allowed a fair bit more flexibility.
>

My assumption was that adding some intrinsic support for complex data
would be useful, and that we would ultimately allow arbitrarily-sized and
-structured voxel values.  So nothing would prevent you from continuing to
use a vector type.  Remember that 99% of the traditional MINC ways of
accomplishing things should continue to work!

> Do you return a pointer to a double and assume that double++ will contain the
> second part of the complex data point?  or do you return a struct?  or do you
> have a set of special functions like this:
>
>    get_complex_voxel_value(starts[], double *real, double *imag)
>

I think we would standardize the layout of the complex data types (real
first, imaginary second) so that a complex could reliably be returned as a
"C" structure or an array of alternating values (real0, imag0, real1,
imag1, etc...).  Some flavor of get_voxel_value() will just take a void *
and "do the right thing" based on the requested type.

>
> On a similar note, (and I don't know their real purpose yet), is there really a
> good reason to introduce things such as "TALAIRACH" types into a data format?
> these are head CT/MRI specific things are they not?  By all means include them
> but I would have thought such a thing was better included as a user attribute
> using some C/L tool. Granted you have included it as what appears to be an
> optional extra.
>

I don't know its true utility, but this is just a carryforward of the
"spacetype" attribute that was already specified in MINC 1.0.
MIspacetype, MI_TALAIRACH, MI_CALLOSAL etc. are already defined in minc.h

	-bert