[MINC-development] swig wrappers for minc2

Jonathan Taylor jonathan.taylor at stanford.edu
Wed Mar 22 12:53:44 EST 2006


hello leila,

the wrapper is probably not very functional -- it was my first attempt 
at swig. now that i've read a little more swig documentation i might do 
a better job.

i would like to try testing it out on some minc2.0 images, too.

as i was a student at mcgill, i actually still have an MNI account. can 
you point me to a few example files?

-- jonathan

Leila Baghdadi wrote:

>Hello Jonathan,
>
>Thanks very much for doing this, I am sure there is plenty of interest.
>
>I will check your code see if I use it with minc2.0 images.
>
>will let you know
>
>Leila
>
>On Tue, 2006-21-03 at 23:56 -0800, Jonathan Taylor wrote:
>  
>
>>hi,
>>
>>i don't know how much interest there is in this (i am interested at 
>>least), but i used swig to generate
>>python wrappers for minc2. they compile (and import) fine, but i have 
>>nothing to test them with.
>>
>>in theory, the swig file could be used to generate wrappers for other 
>>languages....
>>
>>attached is the minc2.i i used, and here are the commands i used to 
>>build the python module.... from the
>>minc-2.0.05 main directory:
>>
>>make distclean
>>./configure --prefix=/home/jtaylo/tmp
>> make
>>make install
>>cd libsrc2
>> swig -python minc2.i
>> gcc -c *.c -I/usr/include/python2.4
>> gcc -shared *.o -L/home/jtaylo/tmp/lib  -lminc2 -lhdf5 -lnetcdf -o  
>>_minc2.so
>> python -c "import minc2"
>>
>>got a few warnings:
>>hyper.c: In function 'mirw_hyperslab_raw':
>>hyper.c:420: warning: pointer targets in passing argument 3 of 
>>'H5Sselect_hyperslab' differ in signedness
>>m2util.c: In function 'miinit':
>>m2util.c:938: warning: passing argument 5 of 'H5Tregister' from 
>>incompatible pointer type
>>m2util.c:941: warning: passing argument 5 of 'H5Tregister' from 
>>incompatible pointer type
>>m2util.c: In function 'miinit_enum':
>>m2util.c:979: warning: passing argument 5 of 'H5Tregister' from 
>>incompatible pointer type
>>m2util.c:981: warning: passing argument 5 of 'H5Tregister' from 
>>incompatible pointer type
>>m2util.c:983: warning: passing argument 5 of 'H5Tregister' from 
>>incompatible pointer type
>>m2util.c:985: warning: passing argument 5 of 'H5Tregister' from 
>>incompatible pointer type
>>m2util.c: In function 'minc_update_thumbnail':
>>m2util.c:1343: warning: pointer targets in passing argument 3 of 
>>'H5Sselect_hyperslab' differ in signedness
>>m2util.c:1361: warning: pointer targets in passing argument 3 of 
>>'H5Sselect_hyperslab' differ in signedness
>>m2util.c:1372: warning: passing argument 4 of 'H5Sselect_elements' from 
>>incompatible pointer type
>>slice.c: In function 'mirw_slice_minmax':
>>slice.c:80: warning: passing argument 4 of 'H5Sselect_elements' from 
>>incompatible pointer type
>>
>>best,
>>
>>jonathan
>>
>>
>>plain text document attachment (minc2.i)
>>%module minc2
>>%{
>>#include "minc2.h"
>>%}
>>
>>/* ATTRIBUTE/GROUP FUNCTIONS */
>>
>>extern int micreate_group(mihandle_t vol, const char *path, const char *name);
>>extern int midelete_attr(mihandle_t vol, const char *path, const char *name);
>>extern int midelete_group(mihandle_t vol, const char *path, const char *name);
>>extern int miget_attr_length(mihandle_t vol, const char *path, 
>>			     const char *name, int *length);
>>extern int miget_attr_type(mihandle_t vol, const char *path, const char *name,
>>			   mitype_t *data_type);
>>extern int miget_attr_values(mihandle_t vol, mitype_t data_type,
>>			     const char *path, const char *name, 
>>			     int length, void *values);
>>extern int miset_attr_values(mihandle_t vol, mitype_t data_type,
>>			     const char *path, const char *name, int length,
>>			     const void *values);
>>			     
>>/* FREE FUNCTIONS */
>>extern int mifree_name(char *name_ptr);
>>extern int mifree_names(char **name_pptr);
>>
>>/* DATA TYPE/SPACE FUNCTIONS */
>>extern int miget_data_class(mihandle_t vol, miclass_t *volume_class);
>>extern int miget_data_type(mihandle_t vol, mitype_t *volume_data_type);
>>extern int miget_data_type_size(mihandle_t vol, misize_t *voxel_size);
>>extern int miget_space_name(mihandle_t vol, char **name);
>>extern int miset_space_name(mihandle_t vol, const char *name);
>>
>>/* DIMENSION FUNCTIONS */
>>extern int miget_volume_from_dimension(midimhandle_t dimension, mihandle_t *volume);
>>extern int micopy_dimension(midimhandle_t dim_ptr, midimhandle_t *new_dim_ptr);
>>extern int micreate_dimension(const char *name, midimclass_t dimclass, midimattr_t attr, 
>>			      unsigned long length, midimhandle_t *new_dim_ptr);
>>extern int mifree_dimension_handle(midimhandle_t dim_ptr);
>>extern int miget_volume_dimensions(mihandle_t volume, midimclass_t dimclass, midimattr_t attr,
>>				   miorder_t order, int array_length, 
>>				   midimhandle_t dimensions[]);
>>extern int miset_apparent_dimension_order(mihandle_t volume, int array_length, midimhandle_t dimensions[]);
>>extern int miset_apparent_dimension_order_by_name(mihandle_t volume, int array_length, char **names);
>>extern int miset_apparent_record_dimension_flag(mihandle_t volume, int record_flag);
>>extern int miget_dimension_apparent_voxel_order(midimhandle_t dimension, miflipping_t *file_order,
>>						miflipping_t *sign);
>>extern int miset_dimension_apparent_voxel_order(midimhandle_t dimension, miflipping_t flipping_order);
>>extern int miget_dimension_class(midimhandle_t dimension, midimclass_t *dimclass);
>>extern int miset_dimension_class(midimhandle_t dimension, midimclass_t dimclass);
>>extern int miget_dimension_cosines(midimhandle_t dimension, 
>>                                   double direction_cosines[3]);
>>extern int miset_dimension_cosines(midimhandle_t dimension, 
>>                                   const double direction_cosines[3]);
>>extern int miset_dimension_description(midimhandle_t dimension, const char *comments);
>>extern int miget_dimension_description(midimhandle_t dimension, char **comments_ptr);
>>extern int miget_dimension_name(midimhandle_t dimension, char **name_ptr);
>>extern int miset_dimension_name(midimhandle_t dimension, const char *name);
>>extern int miget_dimension_offsets(midimhandle_t dimension, unsigned long array_length, 
>>				   unsigned long start_position, double offsets[]);
>>extern int miset_dimension_offsets(midimhandle_t dimension, unsigned long array_length, 
>>				   unsigned long start_position, const double offsets[]);
>>extern int miget_dimension_sampling_flag(midimhandle_t dimension, BOOLEAN *sampling_flag);
>>extern int miset_dimension_sampling_flag(midimhandle_t dimension, BOOLEAN sampling_flag);
>>extern int miget_dimension_separation(midimhandle_t dimension, mivoxel_order_t voxel_order, 
>>				      double *separation_ptr);
>>extern int miset_dimension_separation(midimhandle_t dimension, double separation);
>>extern int miget_dimension_separations(const midimhandle_t dimensions[], 
>>				 mivoxel_order_t voxel_order, int array_length, 
>>				 double separations[]);
>>extern int miset_dimension_separations(const midimhandle_t dimensions[], int array_length,
>>				 const double separations[]);
>>extern int miget_dimension_size(midimhandle_t dimension, unsigned long *size_ptr);
>>extern int miset_dimension_size(midimhandle_t dimension, unsigned long size);
>>extern int miget_dimension_sizes(const midimhandle_t dimensions[], int array_length,
>>				 unsigned long sizes[]);
>>extern int miget_dimension_start(midimhandle_t dimension, mivoxel_order_t voxel_order,
>>				 double *start_ptr);
>>extern int miset_dimension_start(midimhandle_t dimension, double start_ptr);
>>extern int miget_dimension_starts(const midimhandle_t dimensions[], mivoxel_order_t voxel_order,
>>				  int array_length, double starts[]);
>>extern int miset_dimension_starts(const midimhandle_t dimensions[], int array_length, 
>>				  const double starts[]);
>>extern int miget_dimension_units(midimhandle_t dimension, char **units_ptr);
>>extern int miset_dimension_units(midimhandle_t dimension, const char *units);
>>extern int miget_dimension_width(midimhandle_t dimension, double *width_ptr);
>>extern int miset_dimension_width(midimhandle_t dimension, double width_ptr);
>>extern int miget_dimension_widths(midimhandle_t dimension, mivoxel_order_t voxel_order,
>>				  unsigned long array_length, unsigned long start_position,
>>				  double widths[]);
>>extern int miset_dimension_widths(midimhandle_t dimension, unsigned long array_length,
>>				  unsigned long start_position, const double widths[]);
>>
>>
>>/* VOLUME FUNCTIONS */
>>extern int micreate_volume(const char *filename, int number_of_dimensions,
>>			   midimhandle_t dimensions[],
>>			   mitype_t volume_type,
>>			   miclass_t volume_class,
>>			   mivolumeprops_t create_props,
>>			   mihandle_t *volume);
>>extern int micreate_volume_image(mihandle_t volume);
>>extern int miget_volume_dimension_count(mihandle_t volume, midimclass_t dimclass,
>>					midimattr_t attr, int *number_of_dimensions);
>>extern int miget_volume_voxel_count(mihandle_t volume, int *number_of_voxels);
>>extern int miopen_volume(const char *filename, int mode, mihandle_t *volume);
>>extern int miclose_volume(mihandle_t volume);
>>
>>extern int miget_slice_scaling_flag(mihandle_t volume, 
>>				    BOOLEAN *slice_scaling_flag);
>>extern int miset_slice_scaling_flag(mihandle_t volume, 
>>				    BOOLEAN slice_scaling_flag);
>>
>>/* VOLUME PROPERTIES FUNCTIONS */
>>extern int minew_volume_props(mivolumeprops_t *props);
>>extern int mifree_volume_props(mivolumeprops_t props);
>>extern int miget_volume_props(mihandle_t vol, mivolumeprops_t *props);
>>extern int miset_props_multi_resolution(mivolumeprops_t props, BOOLEAN enable_flag, 
>>				int depth);
>>extern int miget_props_multi_resolution(mivolumeprops_t props, BOOLEAN *enable_flag,
>>				int *depth);
>>extern int miselect_resolution(mihandle_t volume, int depth);
>>extern int miflush_from_resolution(mihandle_t volume, int depth);
>>extern int miset_props_compression_type(mivolumeprops_t props, micompression_t compression_type);
>>extern int miget_props_compression_type(mivolumeprops_t props, micompression_t *compression_type);
>>extern int miset_props_zlib_compression(mivolumeprops_t props, int zlib_level);
>>extern int miget_props_zlib_compression(mivolumeprops_t props, int *zlib_level);
>>extern int miset_props_blocking(mivolumeprops_t props, int edge_count, const int *edge_lengths);
>>extern int miget_props_blocking(mivolumeprops_t props, int *edge_count, int *edge_lengths,
>>				int max_lengths);
>>extern int miset_props_record(mivolumeprops_t props, long record_length, char *record_name); 
>>extern int miset_props_template(mivolumeprops_t props, int template_flag);
>>
>>/* SLICE/VOLUME SCALE FUNCTIONS */
>>extern int miget_slice_max(mihandle_t volume, 
>>			   const unsigned long start_positions[],
>>			   int array_length, double *slice_max);
>>extern int miset_slice_max(mihandle_t volume, 
>>			   const unsigned long start_positions[],
>>			   int array_length, double slice_max);
>>extern int miget_slice_min(mihandle_t volume, 
>>			   const unsigned long start_positions[],
>>			   int array_length, double *slice_min);
>>extern int miset_slice_min(mihandle_t volume, 
>>			   const unsigned long start_positions[],
>>			   int array_length, double slice_min);
>>extern int miget_slice_range(mihandle_t volume,
>>			     const unsigned long start_positions[],
>>			     int array_length, double *slice_max,
>>			     double *slice_min);
>>extern int miset_slice_range(mihandle_t volume, 
>>			     const unsigned long start_positions[],
>>			     int array_length, double slice_max, 
>>			     double slice_min);
>>extern int miget_volume_max(mihandle_t volume, double *slice_max);
>>extern int miset_volume_max(mihandle_t volume, double slice_max);
>>extern int miget_volume_min(mihandle_t volume, double *slice_min);
>>extern int miset_volume_min(mihandle_t volume, double slice_min);
>>extern int miget_volume_range(mihandle_t volume, double *slice_max, 
>>			      double *slice_min);
>>extern int miset_volume_range(mihandle_t volume, double slice_max, 
>>			      double slice_min);
>>/* HYPERSLAB FUNCTIONS */
>>
>>extern int miget_real_value_hyperslab(mihandle_t volume,
>>                                      mitype_t buffer_data_type,
>>                                      const unsigned long start[],
>>                                      const unsigned long count[],
>>                                      void *buffer);
>>
>>extern int miset_real_value_hyperslab(mihandle_t volume,
>>                                      mitype_t buffer_data_type,
>>                                      const unsigned long start[],
>>                                      const unsigned long count[],
>>                                      const void *buffer);
>>
>>extern int miget_voxel_value_hyperslab(mihandle_t volume,
>>                                       mitype_t buffer_data_type,
>>                                       const unsigned long start[],
>>                                       const unsigned long count[],
>>                                       void *buffer);
>>
>>extern int miset_voxel_value_hyperslab(mihandle_t volume,
>>                                       mitype_t buffer_data_type,
>>                                       const unsigned long start[],
>>                                       const unsigned long count[],
>>                                       const void *buffer);
>>
>>extern int miget_hyperslab_normalized(mihandle_t volume, 
>>                                      mitype_t buffer_data_type,
>>                                      const unsigned long start[], 
>>                                      const unsigned long count[],
>>                                      double min, 
>>                                      double max, 
>>                                      void *buffer);
>>
>>/* CONVERT FUNCTIONS */
>>extern int miconvert_real_to_voxel(mihandle_t volume,
>>                                   const unsigned long coords[],
>>                                   int ncoords,
>>                                   double real_value,
>>                                   double *voxel_value_ptr);
>>
>>extern int miconvert_voxel_to_real(mihandle_t volume,
>>                                   const unsigned long coords[],
>>                                   int ncoords,
>>                                   double voxel_value,
>>                                   double *real_value_ptr);
>>
>>extern int miconvert_3D_voxel_to_world(mihandle_t volume,
>>                                       const double voxel[],
>>                                       double world[]);
>>
>>extern int miconvert_3D_world_to_voxel(mihandle_t volume,
>>                                       const double world[],
>>                                       double voxel[]);
>>
>>extern int miget_real_value(mihandle_t volume,
>>                            const unsigned long coords[],
>>                            int ndims,
>>                            double *value_ptr);
>>
>>extern int miset_real_value(mihandle_t volume,
>>                            const unsigned long coords[],
>>                            int ndims,
>>                            double value);
>>extern int miget_voxel_value(mihandle_t volume,
>>                             const unsigned long coords[],
>>                             int ndims,
>>                             double *voxel_ptr);
>>
>>extern int miset_voxel_value(mihandle_t volume,
>>                             const unsigned long coords[],
>>                             int ndims,
>>                             double voxel);
>>
>>extern int miget_volume_real_range(mihandle_t volume, double real_range[2]);
>>
>>/* VALID functions */
>>extern int miget_volume_valid_max(mihandle_t volume, double *valid_max);
>>extern int miset_volume_valid_max(mihandle_t volume, double valid_max);
>>extern int miget_volume_valid_min(mihandle_t volume, double *valid_min);
>>extern int miset_volume_valid_min(mihandle_t volume, double valid_min);
>>extern int miget_volume_valid_range(mihandle_t volume,
>>                                    double *valid_max, double *valid_min);
>>extern int miset_volume_valid_range(mihandle_t volume, 
>>                                    double valid_max, double valid_min);
>>
>>/* RECORD functions */
>>extern int miget_record_name(mihandle_t volume, char **name);
>>extern int miget_record_length(mihandle_t volume, int *length);
>>extern int miget_record_field_name(mihandle_t volume, int index, char **name);
>>extern int miset_record_field_name(mihandle_t volume, int index, 
>>                                   const char *name);
>>
>>/* LABEL functions */
>>extern int midefine_label(mihandle_t volume, int value, const char *name);
>>extern int miget_label_name(mihandle_t volume, int value, char **name);
>>extern int miget_label_value(mihandle_t volume, const char *name, int *value);
>>
>>_______________________________________________
>>MINC-development mailing list
>>MINC-development at bic.mni.mcgill.ca
>>http://www.bic.mni.mcgill.ca/mailman/listinfo/minc-development
>>    
>>
>
>_______________________________________________
>MINC-development mailing list
>MINC-development at bic.mni.mcgill.ca
>http://www.bic.mni.mcgill.ca/mailman/listinfo/minc-developmen
>  
>

-- 
------------------------------------------------------------------------
I'm part of the Team in Training: please support our efforts for the
Leukemia and Lymphoma Society!

http://www.active.com/donate/tntsvmb/tntsvmbJTaylor

GO TEAM !!!

------------------------------------------------------------------------
Jonathan Taylor                           Tel:   650.723.9230
Dept. of Statistics                       Fax:   650.725.8977
Sequoia Hall, 137                         www-stat.stanford.edu/~jtaylo
390 Serra Mall
Stanford, CA 94305

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.bic.mni.mcgill.ca/pipermail/minc-development/attachments/20060322/e77a7d54/attachment-0001.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: jonathan.taylor.vcf
Type: text/x-vcard
Size: 329 bytes
Desc: not available
Url : http://www.bic.mni.mcgill.ca/pipermail/minc-development/attachments/20060322/e77a7d54/jonathan.taylor-0001.vcf


More information about the MINC-development mailing list