A few things:
(1) If the integers in the dataset cannot be represented by INTEGER*4 (which
I’m assuming is your native INTEGER size) then the values read from the HDF5
file will be wrong. You should be reading them
into an INTEGER*8.
(2) What is the most recent version of hdf you can use without having a
conflict with netcdf?
(i) If it is 1.8.7 then you will need to promote your native integers to
INTEGER*8 when you build the hdf5 library so that you get the interface for
INTEGER*8. You can do this
by setting the compiler flag FCFLAGS=<compiler option> before running
configure; for Intel the option is -i8, and for gfortran it’s
-fdefault-integer-8
The better option:
(ii) If you can use hdf5 1.8.8, or greater, then you can instead use the
F2003 features and pass in a pointer to h5dread, and not have to worry about if
the interface is present. An example for you to look at is
h5ex_d_rdwr_kind_F03.f90 at
https://www.hdfgroup.org/HDF5/examples/api18-fortran.html
Scot
> On Aug 5, 2015, at 12:50 PM, Richa Mathur <[email protected]> wrote:
>
> Hi Marc,
> Thanks Sorry the problem is when I try to read in ( var_a ) H5T_STD_I64BE (
> not with H5T_STD_U64BE as stated earlier) I get numbers that donot match
> the h5dump..However I am able to read in (var_b) H5T_STD_U16BE correctly
> using( matches with h5dump) H5T_NATIVE_INTEGER in the hdfread. Both the
> variables( var_a and var_b) that I read in is are arrays declared as Integer
> in my fortran program. and compiled on Bign Endian m/c. If I var_a as
> Integer*8 I get Error: There is no specific subroutine for the generic
> 'h5dread_f'
> Gompie
>
>
> On Wed, Aug 5, 2015 at 12:24 PM, Miller, Mark C. <[email protected]> wrote:
> Have a look at these type definitions. . .
>
> https://www.hdfgroup.org/HDF5/doc/RM/PredefDTypes.html
>
> and this description of type conversion, in particular section 6.9
>
> https://www.hdfgroup.org/HDF5/doc/UG/UG_frame11Datatypes.html#Dtransfer
>
> I suspect the problem may have to do with signed vs. UNsigned types here.
>
> Also, regarding array dimension ordering, see this. . .
>
> https://www.hdfgroup.org/HDF5/doc/fortran/index.html#FortranUserNotes
>
> Mark
>
> From: Hdf-forum <[email protected]> on behalf of Richa
> Mathur <[email protected]>
> Reply-To: HDF Users Discussion List <[email protected]>
> Date: Tuesday, August 4, 2015 7:43 PM
>
> To: HDF Users Discussion List <[email protected]>
> Subject: Re: [Hdf-forum] h5dopen returns error
>
> Thanks again Marc, I now dont get core dump
> For H5T_STD_U16BE I am able to correctly read and the values that I read
> match with the h5dump output. However for H5T_STD_U64BE
> when I read using the H5T_NATIVE_INTEGER my output does not match with
> h5dump.
> I am using hdf5-1.8.7. If I use hdf5-1.8.13 it conflicts with the netcdf
> -gfortran reader that is also a part of my code.
>
> Is the array shape (12,22,26) indicated by the h5dump same as the one in
> fortran or it gets inverted (26,22,12) ?
> Gompie
>
> On Tue, Aug 4, 2015 at 9:58 PM, Miller, Mark C. <[email protected]> wrote:
> So, HDF5 will handle all the 'conversion' from whatever type is used to store
> the data in the file to whatever type you are using to store the data in
> memory. So, for mem_type arg to h5dread_f, all you need to do is inform HDF5
> what the datatype is of the buffer (data_out) you are reading into. You have
> defined data_out as INTEGER in your programming language. So, I suspect the
> right thing to do is. . .
>
> CALL h5dread_f(dset_id,H5T_NATIVE_INTEGER, data_out, data_dims,
> error)
>
> That tells HDF5 that data_out is the caller's *native* integer type and it
> will convert from whatever is in the file H5T_STD_I64BE (a 64 bit big
> endianne integer) to that type automatically when it reads it.
>
> Mark
>
>
>
>
> From: Hdf-forum <[email protected]> on behalf of Richa
> Mathur <[email protected]>
> Reply-To: HDF Users Discussion List <[email protected]>
> Date: Tuesday, August 4, 2015 6:43 PM
>
> To: HDF Users Discussion List <[email protected]>
> Subject: Re: [Hdf-forum] h5dopen returns error
>
> Hi Marc,
> Thanks again. That link is helpful. I was able to read in the data directly
> using the path in the h5read_f. I use
>
> INTEGER, dimension(12,96):: data_out
> data_dims(1) = 12, data_dims(2) =96
> CALL h5dread_f(dset_id,H5T_STD_I64BE , data_out, data_dims, error)
> as the h5dump indicates DATA_TYPE as H5T_STF_I64BE.
>
> But it does not read properly ( gives core dump). I compile on a x86_64 m/c
> gfortran.
>
> GROUP "All_Data" {
>> GROUP "AMS-SDR_All" {
>> DATASET "BeamTime" {
>> DATATYPE H5T_STD_I64BE
>> Gompie
>
> On Tue, Aug 4, 2015 at 4:24 PM, Miller, Mark C. <[email protected]> wrote:
> Hmm. At this point, I think it may be more productive for everyone if you
> would review the manual,
> https://www.hdfgroup.org/HDF5/doc/RM/RM_H5Front.html, a bit more to be sure
> you are attempting to use the HDF5 interface correctly.
>
> In particular, your 2nd call to h5gopen_f is still specfying 'file_id' for
> first arg when it should be specifing 'grp_id1'. AMS-SDR_All is a group that
> 'lives in' the "All_Data" group (grp_id1), not the root group (file_id).
>
> Next, I am pretty certain you can just directly h5dopen_f
> "All_Data/AMS-SDR_All/BeamTime" and avoid all the business with the groups.
>
> Mark
>
> From: Hdf-forum <[email protected]> on behalf of Richa
> Mathur <[email protected]>
> Reply-To: HDF Users Discussion List <[email protected]>
> Date: Tuesday, August 4, 2015 1:06 PM
>
> To: HDF Users Discussion List <[email protected]>
> Subject: Re: [Hdf-forum] h5dopen returns error
>
> Thanks Mark, Christian , the problem was case sensitivety and the first level
> All_Data did not return any error.
> Now since the path to BeamTime is All_Data/AMS-SDR_All/BeamTime I gave
>
> CALL h5gopen_f(file_id,"All_Data" , grp_id1, grp_hdferr)
> print *,"Open Group ID ID ERROR",grp_id1, grp_hdferr
>
> CALL h5gopen_f(file_id,"AMS-SDR_All" , grp_id2, grp_hdferr) [should I give
> the grp_id1 instead of file_id ?]
> print *,"Open Group AMS-SDR ID ERROR",grp_id2, grp_hdferr ( here the hdferr
> is -1)
>
> CALL h5dopen_f(grp_id1,"BeamTime", dset_id, error)
>
> Please help
>
> On Tue, Aug 4, 2015 at 3:53 PM, Christian Oyarzun
> <[email protected]> wrote:
> It is case sensitive. it should be:
>
> CALL h5gopen_f(file_id,"All_Data" , grp_id1, grp_hdferr)
>
> not:
>
> CALL h5gopen_f(file_id,"All_data" , grp_id1, grp_hdferr)
>
> —Christian
>
>> On Aug 4, 2015, at 3:45 PM, Richa Mathur <[email protected]> wrote:
>>
>> Thanks Mark and Corey.
>>
>> after CALL h5fopen_f(filename, H5F_ACC_RDONLY_F, file_id, error)
>> I gave CALL h5gopen_f(file_id,"All_data" , grp_id1, grp_hdferr) as the
>> first call to open the group and got grp_hdrerr as -1.
>> I guess there is an error opening the group All_data.
>>
>>
>> the h5dump -n output is
>>
>> HDF5
>> "SAMS_npp_d20150728_t2359556_e0000273_b19431_c20150729063134831043_nasa_ops.h5"
>> {
>> FILE_CONTENTS {
>> group /
>> group /All_Data
>> group /All_Data/AMS-SDR_All
>> dataset /All_Data/AMS-SDR_All/BeamTime
>> dataset /All_Data/AMS-SDR_All/BrightnessTemperature
>> dataset /All_Data/AMS-SDR_All/BrightnessTemperatureFactors
>>
>> Any help....
>>
>>
>> On Tue, Aug 4, 2015 at 3:11 PM, Miller, Mark C. <[email protected]> wrote:
>> yeah, agree. "BeamTime" is in group "All_Data". To get to BeamTime, you have
>> to H5Gopen the group and use the hid_t you get from that group in place of
>> 'file_id' arg in h5dopen. Don't forget to close the group (and dataset)
>> after you're done.
>>
>> Mark
>>
>>
>> From: Hdf-forum <[email protected]> on behalf of Richa
>> Mathur <[email protected]>
>> Reply-To: HDF Users Discussion List <[email protected]>
>> Date: Tuesday, August 4, 2015 12:03 PM
>> To: HDF Users Discussion List <[email protected]>
>> Subject: Re: [Hdf-forum] h5dopen returns error
>>
>> Thanks Mark !!!
>> Filename is complete. The file_id that is returned from hdfopen_f
>> (filename, H5F_ACC_RDONLY_F, file_id, error) is 16777217 and
>> error code is 0.
>> How do I find if 'BeamTime' is in root group or sub group ?
>>
>> The H5Dump is as below I guess the BeamTime is inside a GROUP "All_Data",
>>
>> GROUP "All_Data" {
>> GROUP "AMS-SDR_All" {
>> DATASET "BeamTime" {
>> DATATYPE H5T_STD_I64BE
>> DATASPACE SIMPLE { ( 12, 96 ) / ( H5S_UNLIMITED, H5S_UNLIMITED
>> ) }
>> DATA {
>> (0,0): 1816819231684734, 1816819231702752, 1816819231720770,
>> (0,3): 1816819231738788, 1816819231756806, 1816819231774824
>>
>> Gompie
>>
>>
>> On Tue, Aug 4, 2015 at 2:52 PM, Miller, Mark C. <[email protected]> wrote:
>> Are you sure you are getting a valid file_id back from the h5fopen_f call?
>> Are you by chance missing an extension on the filename such as
>> 'satfilename.h5' and is the dataset 'BeamTime' in the 'root group' of the
>> file or perhaps some sub-group?
>>
>> Mark
>>
>>
>> From: Hdf-forum <[email protected]> on behalf of Richa
>> Mathur <[email protected]>
>> Reply-To: HDF Users Discussion List <[email protected]>
>> Date: Tuesday, August 4, 2015 10:42 AM
>> To: "[email protected]" <[email protected]>
>> Subject: [Hdf-forum] h5dopen returns error
>>
>>
>>
>> Hi
>> I am trying to read a hdf5 file in fortran95 ( gfortran). Peice of code is
>>
>> INTEGER(HID_T) :: file_id ! File identifier
>> INTEGER(HID_T) :: dset_id ! Dataset identifier
>>
>> INTEGER :: error ! Error flag
>> INTEGER :: i, j
>>
>> INTEGER, DIMENSION(96,12) :: dset_data, data_out ! Data buffers
>> INTEGER(HSIZE_T), DIMENSION(2) :: data_dims
>>
>> filename='satfilename'
>>
>> CALL h5fopen_f(filename, H5F_ACC_RDONLY_F, file_id, error)
>>
>> CALL h5dopen_f(file_id,"BeamTime", dset_id, error)
>>
>>
>> print *,"Data Set(ATMS) ID ERROR",dset_id, error .
>> The h5dopen_f returns error as -1.
>>
>> Later on when I use
>>
>> CALL h5dread_f(dset_id, H5T_STD_I64BE, data_out, data_dims, error)
>>
>> error -1 is returned from this function as well and I get incorrect values
>> of my variable in data_out.
>>
>> Can you help
>> Gompie
>>
>>
>>
>> The h5dump of my hdf5 file has
>>
>>
>> GROUP "All_Data" {
>> GROUP "AMS-SDR_All" {
>> DATASET "BeamTime" {
>> DATATYPE H5T_STD_I64BE
>> DATASPACE SIMPLE { ( 12, 96 ) / ( H5S_UNLIMITED, H5S_UNLIMITED
>> ) }
>> DATA {
>> (0,0): 1816819231684734, 1816819231702752, 1816819231720770,
>> (0,3): 1816819231738788, 1816819231756806, 1816819231774824
>>
>>
>> _______________________________________________
>> Hdf-forum is for HDF software users discussion.
>> [email protected]
>> http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
>> Twitter: https://twitter.com/hdf5
>>
>>
>> _______________________________________________
>> Hdf-forum is for HDF software users discussion.
>> [email protected]
>> http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
>> Twitter: https://twitter.com/hdf5
>>
>> _______________________________________________
>> Hdf-forum is for HDF software users discussion.
>> [email protected]
>> http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
>> Twitter: https://twitter.com/hdf5
>
>
> _______________________________________________
> Hdf-forum is for HDF software users discussion.
> [email protected]
> http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
> Twitter: https://twitter.com/hdf5
>
>
> _______________________________________________
> Hdf-forum is for HDF software users discussion.
> [email protected]
> http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
> Twitter: https://twitter.com/hdf5
>
>
> _______________________________________________
> Hdf-forum is for HDF software users discussion.
> [email protected]
> http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
> Twitter: https://twitter.com/hdf5
>
>
> _______________________________________________
> Hdf-forum is for HDF software users discussion.
> [email protected]
> http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
> Twitter: https://twitter.com/hdf5
>
> _______________________________________________
> Hdf-forum is for HDF software users discussion.
> [email protected]
> http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
> Twitter: https://twitter.com/hdf5
_______________________________________________
Hdf-forum is for HDF software users discussion.
[email protected]
http://lists.hdfgroup.org/mailman/listinfo/hdf-forum_lists.hdfgroup.org
Twitter: https://twitter.com/hdf5