Read Images from HDF5 container files.
146 dsname = provider.second;
148 switch (provider.first)
152 grpid = H5Gopen(
fhdf5,
"/MDF/images/", H5P_DEFAULT);
154 H5Gget_num_objs(grpid, &d.
nobjEman);
164 switch (provider.first)
174 d.
dataset = H5Dopen2(
fhdf5, dsname.c_str(), H5P_DEFAULT);
184 int rank = H5Sget_simple_extent_dims(d.
filespace, d.
dims, NULL);
189 hid_t h5datatype = H5Dget_type(d.
dataset);
192 switch(H5Tget_order(h5datatype))
194 case H5T_ORDER_ERROR:
211 bool isStack =
false;
213 switch (provider.first)
226 aDim.
ydim = (rank>1)?d.
dims[rank-2]:1;
227 aDim.
zdim = (rank>3 || (rank==3 && !isStack))?d.
dims[rank-3]:1;
228 if ( provider.first ==
EMAN )
231 nDimFile = ( rank<3 || !isStack )?1:d.
dims[0] ;
233 if (select_img > nDimFile)
245 if ( provider.first ==
EMAN )
249 size_t imgEnd = (select_img !=
ALL_IMAGES) ? imgStart + 1 : aDim.
ndim;
252 for (
size_t i = 0;
i < imgEnd-imgStart;
i++)
258 if ( H5Pget_layout(d.
cparms) == H5D_CONTIGUOUS )
277 count[rank-3] = aDim.
zdim;
280 count[rank-2] = aDim.
ydim;
284 count[rank-1] = aDim.
xdim;
288 aDim.
ydim = (rank>1)?d.
dims[rank-2]:1;
289 aDim.
zdim = (rank == 4)?d.
dims[1]:1;
292 hid_t memspace = H5Screate_simple(rank,count,NULL);
298 for (
size_t idx = imgStart, imN = 0; idx < imgEnd; ++idx, ++imN)
304 if ( H5Sselect_hyperslab(d.
filespace, H5S_SELECT_SET, offset, NULL,
311 H5P_DEFAULT, (
void*)(data + pad*imN)) < 0 )
String getBlockName() const
bool IsLittleEndian(void)
#define REPORT_ERROR(nerr, ErrormMsg)
DataType datatypeH5(hid_t dataset)
virtual void readData(FILE *fimg, size_t select_img, DataType datatype, size_t pad)=0
hid_t H5Datatype(DataType datatype)
virtual void coreAllocateReuse()=0
void setValue(const MDObject &object) override
std::vector< std::unique_ptr< MDRow > > MD
virtual void * getArrayPointer() const =0
Input/Output general error.
if(fabs(c[*nmax+ *nmax *c_dim1])==0.e0)
virtual void setDimensions(int Xdim, int Ydim, int Zdim, size_t Ndim)=0
File or directory does not exist.
Couldn't read from file.
static MDRowVec emptyHeaderVec()
DataType datatype() const
String formatString(const char *format,...)
#define IMG_INDEX(select_img)
virtual DataType myT() const =0
MultidimArrayBase * mdaBase
size_t gettypesize(DataType type)
Returns memory size of datatype.