[MINC-development] Draft API for MINC 2.0

Andrew Janke minc-development@bic.mni.mcgill.ca
Mon, 16 Jun 2003 15:06:53 +1000


On Sat, 14 Jun 2003, Steve ROBBINS wrote:

> > http://www.bic.mni.mcgill.ca/users/jgsled/outgoing/minc2.0/
> >
> > Please read it over a let us know what you think.  If you find any
> > loose ends please pull on them.
>
> Wow -- that looks like a lot of work.
>
> Is there a gentler introduction that outlines the concepts and
> data types?  For instance, what is a "group"?  What is the "path"
> argument that many functions take?  Is this api layered on top of
> hdf5?  If so, is it necessary to understand it to read the new api
> document?

What Steve said.

+

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.

The reason I ask is that it's going to make the current "voxel_value_get" type
functions a whole lot more difficult to grok.

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)

?

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.

Extra wants/needs/desires:

  * gems such as voxel_loop() get transferred, and hopefully parallelised... :)

  * get_data_from_world_point(ulong coord[])  ie: internal interpolation
     that returns null/0 when out of bounds.  This may well be a very slow
     function but such is life.

  * 'noob' functions?

         get_voxel_data_3d(x, y, z)  ala volume_io ?


Apart from that I like a lot, expecially the functions with hypercube in their
names... ;)


a