From 3bae44c0d9def05d3771f0bada97883531f3d5df Mon Sep 17 00:00:00 2001 From: "Vladimir S. FONOV" Date: Thu, 9 Aug 2018 12:56:07 -0400 Subject: [PATCH] MINC 2018-08-09 (ce4333ca) Run the UpdateFromUpstream.sh script to extract upstream MINC using the following shell commands. $ git archive --prefix=upstream-minc/ ce4333ca -- ./ChangeLog ./volume_io ./libsrc ./libsrc/minc_compat.h ./libcommon/minc_config.h ./libcommon/minc_config.c ./libsrc/minc_format_convert.c ./libsrc/value_conversion.c ./libsrc/hdf_convenience.c ./libcommon/read_file_names.c ./libsrc/minc_simple.c ./libcommon/time_stamp.h ./libsrc/hdf_convenience.h ./libsrc/type_limits.h ./libcommon/read_file_names.h ./libsrc/minc_varlists.h ./libcommon/restructure.h ./libsrc/nd_loop.h ./libcommon/restructure.c ./libsrc/minc_simple.h ./libsrc/strdup.c ./libsrc/minc_useful.h ./libsrc/minc_convenience.c ./libsrc/minc_basic.h ./libsrc/minc_compat.c ./libcommon/time_stamp.c ./libsrc/voxel_loop.h ./libsrc/minc_routines.h ./libsrc/minc_private.h ./libsrc/netcdf_convenience.c ./libsrc/voxel_loop.c ./libsrc/dim_conversion.c ./libsrc/minc_format_convert.h ./libsrc/nd_loop.c ./libcommon/ParseArgv.h ./libcommon/minc_error.c ./libcommon/minc_error.h ./libsrc/minc_structures.h ./libsrc/minc.h ./libsrc/image_conversion.c ./libcommon/ParseArgv.c ./libcommon/minc_common_defs.h ./COPYING ./UseLIBMINC.cmake.in ./NEWS ./AUTHORS ./libsrc2/m2util.c ./libsrc2/minc2_defs.h ./libsrc2/minc2_api.h ./libcommon/minc2_error.h ./libsrc2/grpattr.c ./libsrc2/hyper.c ./libsrc2/minc_compat2.h ./libcommon/minc2_error.c ./libsrc2/record.c ./libsrc2/volume.c ./libsrc2/datatype.c ./libsrc2/volprops.c ./libsrc2/valid.c ./libsrc2/convert.c ./libsrc2/free.c ./libsrc2/dimension.c ./libsrc2/label.c ./libsrc2/minc2.h ./libsrc2/minc2_private.h ./libsrc2/slice.c ./libsrc2/minc2_structs.h ./CMakeLists.txt ./nifti ./LIBMINCConfig.cmake.in ./README.release ./INSTALL ./config.h.cmake ./README | tar x $ git shortlog --perl-regexp --author='^((?!Kitware Robot).*)$' --no-merges --abbrev=8 --format='%h %s' f2d06a67..ce4333ca Bradley Lowekamp (1): ce789353 COMP: Enable CMP0063 NEW, support setting visibility properties Gabriel A. Devenyi (3): 8844cf48 Limit HDF5 file versioning to 1.8.x c9a9c843 Move the location of version setting for HDF5 6d6614b4 Switch to checking defines instead of an enum Vladimir S. FONOV (5): e2a099f6 minor change 6b471c8a HACK to fix voxel-loop operation for discrete data type on MINC1 file a9cbe135 Reversed the hack for MINC1 719b3fb4 Updated README to have better explanation of MINC_FILE_CACHE_MB e75a936c Updated patch number Change-Id: I0d38a685a44796e0df43b42f880022cc19c4fce9 --- CMakeLists.txt | 6 +++++- README | 3 +-- libsrc/hdf_convenience.c | 17 +++++++++-------- libsrc/voxel_loop.c | 4 ++-- libsrc2/volume.c | 11 ++++++----- 5 files changed, 23 insertions(+), 18 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c3382ed02d4..c83cf73f05f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,7 +7,7 @@ PROJECT(LIBMINC) SET(LIBMINC_PACKAGE_VERSION_MAJOR 2) SET(LIBMINC_PACKAGE_VERSION_MINOR 4) -SET(LIBMINC_PACKAGE_VERSION_PATCH 02) +SET(LIBMINC_PACKAGE_VERSION_PATCH 03) SET(LIBMINC_SOVERSION "5.2.0") @@ -24,6 +24,10 @@ ENABLE_TESTING() CMAKE_MINIMUM_REQUIRED(VERSION 2.8) +IF( POLICY CMP0063 ) + CMAKE_POLICY(SET CMP0063 NEW) +ENDIF() + IF(MINC_TOOLKIT_BUILD) SET(LIBMINC_EXTERNALLY_CONFIGURED ON) ENDIF(MINC_TOOLKIT_BUILD) diff --git a/README b/README index 4eed2274721..089d3c46212 100644 --- a/README +++ b/README @@ -86,7 +86,7 @@ MINC_MAX_FILE_BUFFER_KB = # MINC_MAX_MEMORY_KB = -# FILE cache, used in some minc programs +# Memory cache for MINC2 files, per open file # MINC_FILE_CACHE_MB = @@ -107,4 +107,3 @@ DOCUMENTATION ------------- http://en.wikibooks.org/wiki/MINC - diff --git a/libsrc/hdf_convenience.c b/libsrc/hdf_convenience.c index 79ea18de893..ff4db288532 100644 --- a/libsrc/hdf_convenience.c +++ b/libsrc/hdf_convenience.c @@ -13,9 +13,9 @@ #define MI2_LENGTH "length" #define MI2_CLASS "class" -/* So we build with 1.8.4 */ -#ifndef H5F_LIBVER_18 -#define H5F_LIBVER_18 H5F_LIBVER_LATEST +/* Make 1.8.x compatible files if building with 1.10.x */ +#if (H5_VERS_MAJOR==1)&&(H5_VERS_MINOR<10) +#define H5F_LIBVER_V18 H5F_LIBVER_LATEST #endif /************************************************************************ @@ -2218,6 +2218,8 @@ hdf_open(const char *path, int mode) /*Set cachine parameters*/ fpid=H5Pcreate( H5P_FILE_ACCESS ); + /* Limit file compatability to 1.8.x */ + H5Pset_libver_bounds (fpid, H5F_LIBVER_V18, H5F_LIBVER_V18); /*setup a bigger cache to work with typical chunking ( MI_MAX_VAR_BUFFER_SIZE )*/ H5Pset_cache(fpid, 0, 2503, miget_cfg_present(MICFG_MINC_FILE_CACHE)?miget_cfg_int(MICFG_MINC_FILE_CACHE)*100000:MI_MAX_VAR_BUFFER_SIZE*10, 1.0); @@ -2228,6 +2230,7 @@ hdf_open(const char *path, int mode) hid_t prp_id; prp_id = H5Pcreate(H5P_FILE_ACCESS); + H5Pset_libver_bounds (prp_id, H5F_LIBVER_V18, H5F_LIBVER_V18); H5Pset_fapl_mmap(prp_id, 8192, 1); file_id = H5Fopen(path, mode & 0x7FFF, prp_id); H5Pclose(prp_id); @@ -2326,10 +2329,11 @@ hdf_create(const char *path, int cmode, struct mi2opts *opts_ptr) /*Set cachine parameters*/ fpid = H5Pcreate (H5P_FILE_ACCESS); + /* Limit file compatability to 1.8.x */ + H5Pset_libver_bounds (fpid, H5F_LIBVER_V18, H5F_LIBVER_V18); /*setup a bigger cache to work with typical chunking ( MI_MAX_VAR_BUFFER_SIZE )*/ - H5Pset_cache(fpid, 0, 2503, miget_cfg_present(MICFG_MINC_FILE_CACHE)?miget_cfg_int(MICFG_MINC_FILE_CACHE)*100000:MI_MAX_VAR_BUFFER_SIZE*10, 1.0); - + H5Pset_cache(fpid, 0, 2503, miget_cfg_present(MICFG_MINC_FILE_CACHE)?miget_cfg_int(MICFG_MINC_FILE_CACHE)*100000:MI_MAX_VAR_BUFFER_SIZE*10, 1.0); /* Convert the MINC (NetCDF) mode to a HDF5 mode. */ @@ -2340,9 +2344,6 @@ hdf_create(const char *path, int cmode, struct mi2opts *opts_ptr) cmode = H5F_ACC_TRUNC; } - /*VF use all the features of new HDF5 1.8*/ - H5Pset_libver_bounds (fpid, H5F_LIBVER_18, H5F_LIBVER_18); - H5E_BEGIN_TRY { file_id = H5Fcreate(path, cmode, H5P_DEFAULT, fpid); } H5E_END_TRY; diff --git a/libsrc/voxel_loop.c b/libsrc/voxel_loop.c index cf1f71b30a3..6961de19b83 100644 --- a/libsrc/voxel_loop.c +++ b/libsrc/voxel_loop.c @@ -1120,7 +1120,7 @@ PRIVATE void setup_variables(int inmincid, int outmincid, } else { set_ncopts(0); - (void) ncattdel(outmincid, outimgid, MIvalid_range); /*VF: why is this needed?*/ + (void) ncattdel(outmincid, outimgid, MIvalid_range); /*VF: needed for MINC v2 and not for MINC v1*/ set_ncopts(NC_OPTS_VAL); } } @@ -1669,7 +1669,6 @@ PRIVATE int do_voxel_loop(Loop_Options *loop_options, if( loop_options->is_labels ) { /*Have to write out global valid range and global image range*/ - if ((global_minimum[ofile] == DBL_MAX) && (global_maximum[ofile] == -DBL_MAX)) { global_minimum[ofile] = 0.0; @@ -1689,6 +1688,7 @@ PRIVATE int do_voxel_loop(Loop_Options *loop_options, } (void) mivarput1(outmincid, minid, 0, NC_DOUBLE, NULL, &valid_range[0]); (void) mivarput1(outmincid, maxid, 0, NC_DOUBLE, NULL, &valid_range[1]); + /*VF: if MINC2 this works, if MINC1 - variables are not updated?*/ (void) miset_valid_range(outmincid, imgid, valid_range); } } diff --git a/libsrc2/volume.c b/libsrc2/volume.c index 9a565e645c7..038bb207869 100644 --- a/libsrc2/volume.c +++ b/libsrc2/volume.c @@ -32,9 +32,9 @@ #include "minc2.h" #include "minc2_private.h" -/* So we build with 1.8.4 */ -#ifndef H5F_LIBVER_18 -#define H5F_LIBVER_18 H5F_LIBVER_LATEST +/* Build with 1.8.x support if using 1.10.x */ +#if (H5_VERS_MAJOR==1)&&(H5_VERS_MINOR<10) +#define H5F_LIBVER_V18 H5F_LIBVER_LATEST #endif /*Used to optimize chunking size for faster MINC1 API access*/ @@ -117,6 +117,7 @@ static hid_t _hdf_open(const char *path, int mode) int ndims;*/ prp_id = H5Pcreate(H5P_FILE_ACCESS); + H5Pset_libver_bounds(prp_id, H5F_LIBVER_V18, H5F_LIBVER_V18); H5Pset_cache(prp_id, 0, 2503, miget_cfg_present(MICFG_MINC_FILE_CACHE)?miget_cfg_int(MICFG_MINC_FILE_CACHE)*100000:_MI1_MAX_VAR_BUFFER_SIZE*10, 1.0); H5E_BEGIN_TRY { @@ -218,8 +219,8 @@ static hid_t _hdf_create(const char *path, int cmode) fpid = H5Pcreate (H5P_FILE_ACCESS); - /*VF use all the features of new HDF5 1.8*/ - H5Pset_libver_bounds (fpid, H5F_LIBVER_18, H5F_LIBVER_18); + /* Limit filetype to 1.8.x */ + H5Pset_libver_bounds(fpid, H5F_LIBVER_V18, H5F_LIBVER_V18); H5Pset_cache(fpid, 0, 2503, miget_cfg_present(MICFG_MINC_FILE_CACHE)?miget_cfg_int(MICFG_MINC_FILE_CACHE)*100000:_MI1_MAX_VAR_BUFFER_SIZE*100, 1.0);