[MINC-development] learning minc IO procedures

Robert VINCENT minc-development@bic.mni.mcgill.ca
Mon, 18 Jul 2005 11:14:02 -0400


Hi Richard,

This is probably an issue with MINC 2.0.08 and HDF5 1.6.4.  If you replace
HDF5 1.6.4 with 1.6.2 or earlier I believe your example should work.

I am going to release MINC 2.0.09 shortly (probably either today or
tomorrow).  It contains a fix for compatibility with HDF5 1.6.4.

	-bert

On Thu, 14 Jul 2005, Richard Beare wrote:

> Dear minc developers,
>
> I've recently joined Prof Reuten's group at Monash Uni, Australia, and
> I'm trying to experiment with some of the low level tools in minc2.
> I'm starting with the basics and trying to just query a minc2 file
> starting with one of the test files from the minc2 distribution, but
> I'm having trouble.
>
> Here's what I did - I'd appreciate any pointers.
>
> 1) Installed minc-2.0.08
>
> 2) Converted a minc1 file using mincconvert
>
> mincconvert -t /tmp/7.mnc /tmp/8.mnc
>
> 3) Confirmed that it is a version 2 file
>
> h5dump /tmp/8.mnc | head
>
> HDF5 "/tmp/8.mnc" {
> GROUP "/" {
>    GROUP "minc-2.0" {
>       ATTRIBUTE "ident" {
>          DATATYPE  H5T_STRING {
>                STRSIZE 44;
>                STRPAD H5T_STR_NULLTERM;
>                CSET H5T_CSET_ASCII;
>                CTYPE H5T_C_S1;
>             }
>
> 4) Produced a modified version of volprops-test.c (below), compiled and ran it:
>
> 5) So the question is - should I be using the miopen_volume as per the
> examples, or am I better off using some other approach.
>
> My aim in this exercise is to produce a reader for ITK, as a way of
> learning both ITK and about minc.
>
> ./volprops-test
>
> HDF5-DIAG: Error detected in HDF5 library version: 1.6.4 thread
> 46912498417408.  Back trace follows.
>   #000: H5D.c line 1239 in H5Dget_space(): not a dataset
>     major(01): Function arguments
>     minor(03): Inappropriate type
> HDF5-DIAG: Error detected in HDF5 library version: 1.6.4 thread
> 46912498417408.  Back trace follows.
>   #000: H5D.c line 1191 in H5Dclose(): not a dataset
>     major(01): Function arguments
>     minor(03): Inappropriate type
> HDF5-DIAG: Error detected in HDF5 library version: 1.6.4 thread
> 46912498417408.  Back trace follows.
>   #000: H5D.c line 1469 in H5Dget_create_plist(): not a dataset
>     major(01): Function arguments
>     minor(03): Inappropriate type
> Error reported on line #31, failed: -1
> Segmentation fault (core dumped)
>
> #include <stdio.h>
> #include "minc2.h"
>
> #define TESTRPT(msg, val) (error_cnt++, fprintf(stderr, \
>                                   "Error reported on line #%d, %s: %d\n", \
>                                   __LINE__, msg, val))
>
> static int error_cnt = 0;
>
>
> int main(int argc, char **argv)
> {
>   mihandle_t vol;
>   mivolumeprops_t  props;
>   int r;
>   micompression_t compression_type;
>   BOOLEAN enable_flag;
>   int zlib_level;
>   int depth;
>   int edge_lengths[MI2_MAX_VAR_DIMS];
>   int edge_count;
>   int i;
>
>   //  fprintf(stderr, "%s\n", *++argv);
>   r = miopen_volume("/tmp/8.mnc", MI2_OPEN_READ, &vol);
>   if (r < 0) {
>     TESTRPT("failed", r);
>   }
>   r = miget_volume_props(vol, &props);
>   if (r < 0) {
>     TESTRPT("failed", r);
>   }
>   r = miget_props_blocking(props, &edge_count, edge_lengths,
> 			   MI2_MAX_VAR_DIMS);
>   if (r < 0) {
>     TESTRPT("failed", r);
>   }
>   printf("edge_count %d\n", edge_count);
>   for (i = 0; i < edge_count; i++) {
>     printf("  %d", edge_lengths[i]);
>   }
>   printf("\n");
>   mifree_volume_props(props);
>   miclose_volume(vol);
>
>
>   if (error_cnt != 0) {
>     fprintf(stderr, "%d error%s reported\n",
> 	    error_cnt, (error_cnt == 1) ? "" : "s");
>   }
>   else {
>     fprintf(stderr, "No errors\n");
>   }
>   return (error_cnt);
> }
>
>
> All advice welcome
>
> _______________________________________________
> MINC-development mailing list
> MINC-development@bic.mni.mcgill.ca
> http://www.bic.mni.mcgill.ca/mailman/listinfo/minc-development
>