mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-14 13:57:13 +02:00
Minor debugging
This commit is contained in:
@ -35,6 +35,17 @@ void conditionalIncrement(std::vector<hsize_t>& vec, hsize_t max_value) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void printDatatypeSize(hid_t dataset) {
|
||||||
|
|
||||||
|
hid_t datatype = H5Dget_type(dataset);
|
||||||
|
H5T_class_t class_id = H5Tget_class(datatype);
|
||||||
|
size_t type_size = H5Tget_size(datatype);
|
||||||
|
|
||||||
|
std::cout << " dataset type class: " << class_id
|
||||||
|
<< ", size: " << type_size << " bytes\n";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class member functions
|
* Class member functions
|
||||||
*/
|
*/
|
||||||
@ -55,9 +66,15 @@ HDF5File::~HDF5File () {
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void HDF5File::SetImageDataPath (std::string const& name) { data_datasetname = name; }
|
void HDF5File::SetImageDataPath (std::string const& name) {
|
||||||
|
std::cout << "Image dataset path set to " << name << std::endl;
|
||||||
|
data_datasetname = name;
|
||||||
|
}
|
||||||
|
|
||||||
void HDF5File::SetFrameIndexPath (std::string const& name) { index_datasetname = name; }
|
void HDF5File::SetFrameIndexPath (std::string const& name) {
|
||||||
|
std::cout << "Frame index dataset path set to " << name << std::endl;
|
||||||
|
index_datasetname = name;
|
||||||
|
}
|
||||||
|
|
||||||
void HDF5File::InitializeDimensions () {
|
void HDF5File::InitializeDimensions () {
|
||||||
|
|
||||||
@ -173,11 +190,15 @@ bool HDF5File::OpenFrameIndexDataset() {
|
|||||||
H5Sclose (fi_dataspace);
|
H5Sclose (fi_dataspace);
|
||||||
|
|
||||||
// allocate frame index memory
|
// allocate frame index memory
|
||||||
frame_index_list.resize(file_dims[0]);
|
frame_index_list.resize(fi_dims[0]); //file_dims
|
||||||
|
|
||||||
|
// print datatype size of dataset
|
||||||
|
std::cout << "Frame index";
|
||||||
|
printDatatypeSize(fi_dataset);
|
||||||
|
|
||||||
//read frame index values
|
//read frame index values
|
||||||
//Is u32 correct? I would think not. But I get a segmentation fault if I use u64.
|
//Is u32 correct? I would think not. But I get a segmentation fault if I use u64.
|
||||||
if (H5Dread (fi_dataset, H5T_STD_U32LE, H5S_ALL, H5S_ALL, H5P_DEFAULT, frame_index_list.data()) < 0) {
|
if (H5Dread (fi_dataset, H5T_STD_U64LE, H5S_ALL, H5S_ALL, H5P_DEFAULT, frame_index_list.data()) < 0) {
|
||||||
cprintf (RED,"Could not read frame index dataset %s\n", index_datasetname.c_str());
|
cprintf (RED,"Could not read frame index dataset %s\n", index_datasetname.c_str());
|
||||||
std::cerr << "Error: Could not read frame index dataset\n";
|
std::cerr << "Error: Could not read frame index dataset\n";
|
||||||
H5Dclose (fi_dataset);
|
H5Dclose (fi_dataset);
|
||||||
@ -208,6 +229,10 @@ int HDF5File::OpenResources (char const*const fname, bool validate) {
|
|||||||
}
|
}
|
||||||
cprintf(BLUE, "Opened Dataset: %s\n", data_datasetname.c_str());
|
cprintf(BLUE, "Opened Dataset: %s\n", data_datasetname.c_str());
|
||||||
|
|
||||||
|
// print datatype size of dataset
|
||||||
|
std::cout << "Image";
|
||||||
|
printDatatypeSize(dataset);
|
||||||
|
|
||||||
// Create Dataspace
|
// Create Dataspace
|
||||||
dataspace = H5Dget_space (dataset);
|
dataspace = H5Dget_space (dataset);
|
||||||
if (dataspace < 0){
|
if (dataspace < 0){
|
||||||
@ -289,20 +314,6 @@ int HDF5File::ReadImage (uint16_t* image, std::vector<hsize_t>& offset ) {
|
|||||||
// Initialize frame_offset
|
// Initialize frame_offset
|
||||||
if (frame_offset.empty())
|
if (frame_offset.empty())
|
||||||
frame_offset.resize(rank,0);
|
frame_offset.resize(rank,0);
|
||||||
|
|
||||||
// Validate frame_offset index
|
|
||||||
if (frame_offset[0] >= frame_index_list.size()) {
|
|
||||||
std::cerr << "Error: frame_offset[0] out of bounds.\n";
|
|
||||||
return -99;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if images exist at the current frame offset
|
|
||||||
if (frame_index_list[frame_offset[0]] == 0) {
|
|
||||||
cprintf (RED,"No images at this frame offset %llu\n", frame_offset[0]);
|
|
||||||
std::cerr << "Error: Framenumber 0 at this frame offset\n";
|
|
||||||
CloseResources ();
|
|
||||||
return -99;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if we reached the end of file
|
// Check if we reached the end of file
|
||||||
// Compares that the offsets of frame and storage cell (Z and S) have reached the end of file
|
// Compares that the offsets of frame and storage cell (Z and S) have reached the end of file
|
||||||
@ -318,6 +329,20 @@ int HDF5File::ReadImage (uint16_t* image, std::vector<hsize_t>& offset ) {
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// Validate frame_offset index
|
||||||
|
if (frame_offset[0] >= frame_index_list.size()) {
|
||||||
|
std::cerr << "Error: frame_offset[0] = " << frame_offset[0] << " of bounds.\n";
|
||||||
|
return -99;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if images exist at the current frame offset
|
||||||
|
if (frame_index_list[frame_offset[0]] == 0) {
|
||||||
|
cprintf (RED,"No images at this frame offset %llu\n", frame_offset[0]);
|
||||||
|
std::cerr << "Error: Framenumber 0 at this frame offset\n";
|
||||||
|
CloseResources ();
|
||||||
|
return -99;
|
||||||
|
}
|
||||||
|
|
||||||
// Optional: Ensure dataset and dataspace are valid
|
// Optional: Ensure dataset and dataspace are valid
|
||||||
if (dataset < 0) {
|
if (dataset < 0) {
|
||||||
std::cerr << "Error: Invalid dataset ID.\n";
|
std::cerr << "Error: Invalid dataset ID.\n";
|
||||||
|
@ -20,13 +20,13 @@
|
|||||||
|
|
||||||
//#define MAX_STR_LENGTH 1000
|
//#define MAX_STR_LENGTH 1000
|
||||||
|
|
||||||
#define RANK 4 // Dimension of the image dataset, only for validation
|
#define RANK 3 // Dimension of the image dataset, only for validation
|
||||||
#define DEFAULT_Z_DIMS 10000 // only for validation
|
#define DEFAULT_Z_DIMS 10000 // only for validation
|
||||||
#define DEFAULT_Y_DIMS 1024 // only for validation
|
#define DEFAULT_Y_DIMS 1024 // only for validation
|
||||||
#define DEFAULT_X_DIMS 512 // only for validation
|
#define DEFAULT_X_DIMS 512 // only for validation
|
||||||
//#define DEFAULT_S_DIMS 1 // Storage cells
|
//#define DEFAULT_S_DIMS 1 // Storage cells
|
||||||
|
|
||||||
#define DEFAULT_CHUNK_Z_DIMS 100 // only for validation
|
#define DEFAULT_CHUNK_Z_DIMS 1 // only for validation
|
||||||
#define DEFAULT_CHUNK_Y_DIMS 1024 // only for validation
|
#define DEFAULT_CHUNK_Y_DIMS 1024 // only for validation
|
||||||
#define DEFAULT_CHUNK_X_DIMS 512 // only for validation
|
#define DEFAULT_CHUNK_X_DIMS 512 // only for validation
|
||||||
//#define DEFAULT_CHUNK_S_DIMS 1
|
//#define DEFAULT_CHUNK_S_DIMS 1
|
||||||
|
@ -377,7 +377,8 @@ class jungfrauLGADStrixelsDataQuadH5 : public slsDetectorData<uint16_t> {
|
|||||||
char* readNextFrame( HDF5File& hfile, int& framenumber, std::vector<hsize_t>& h5offset, char* data ) {
|
char* readNextFrame( HDF5File& hfile, int& framenumber, std::vector<hsize_t>& h5offset, char* data ) {
|
||||||
|
|
||||||
if (framenumber >= 0) {
|
if (framenumber >= 0) {
|
||||||
std::cout << "*";
|
if (h5offset[0] % 10 == 0)
|
||||||
|
std::cout << "*";
|
||||||
|
|
||||||
//Storing the reinterpret_cast in the variable data_ptr ensures that I can pass it to a function that expects at uint16_t*
|
//Storing the reinterpret_cast in the variable data_ptr ensures that I can pass it to a function that expects at uint16_t*
|
||||||
uint16_t* data_ptr = reinterpret_cast<uint16_t*>(data); //now data_ptr points where data points (thus modifies the same memory)
|
uint16_t* data_ptr = reinterpret_cast<uint16_t*>(data); //now data_ptr points where data points (thus modifies the same memory)
|
||||||
|
@ -237,7 +237,7 @@ int main(int argc, char *argv[]) {
|
|||||||
mt->popFree(buff);
|
mt->popFree(buff);
|
||||||
|
|
||||||
int ifr = 0; //frame counter of while loop
|
int ifr = 0; //frame counter of while loop
|
||||||
int framenumber = -1; //framenumber as read from file (detector)
|
int framenumber = 0; //framenumber as read from file (detector)
|
||||||
std::vector<hsize_t> h5offset(1,0); //frame counter internal to HDF5File::ReadImage (provided for sanity check/debugging)
|
std::vector<hsize_t> h5offset(1,0); //frame counter internal to HDF5File::ReadImage (provided for sanity check/debugging)
|
||||||
|
|
||||||
if (pedfilename.length()>1) {
|
if (pedfilename.length()>1) {
|
||||||
@ -257,12 +257,12 @@ int main(int argc, char *argv[]) {
|
|||||||
//HDF5File pedefile;
|
//HDF5File pedefile;
|
||||||
auto pedefile = std::make_unique<HDF5File>();
|
auto pedefile = std::make_unique<HDF5File>();
|
||||||
pedefile->SetFrameIndexPath(frameindexpath);
|
pedefile->SetFrameIndexPath(frameindexpath);
|
||||||
pedefile->SetFrameIndexPath(datasetpath);
|
pedefile->SetImageDataPath(datasetpath);
|
||||||
// //open file
|
// //open file
|
||||||
if ( pedefile->OpenResources(fname.c_str(),validate_rank) ) {
|
if ( pedefile->OpenResources(fname.c_str(),validate_rank) ) {
|
||||||
std::cout << "bbbb " << std::ctime(&end_time) << std::endl;
|
std::cout << "bbbb " << std::ctime(&end_time) << std::endl;
|
||||||
|
|
||||||
framenumber = -1;
|
framenumber = 0;
|
||||||
|
|
||||||
while ( decoder->readNextFrame(*pedefile, framenumber, h5offset, buff) ) {
|
while ( decoder->readNextFrame(*pedefile, framenumber, h5offset, buff) ) {
|
||||||
|
|
||||||
@ -282,7 +282,7 @@ int main(int argc, char *argv[]) {
|
|||||||
|
|
||||||
if (ifr >= 1000)
|
if (ifr >= 1000)
|
||||||
break;
|
break;
|
||||||
framenumber = -1;
|
//framenumber = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
pedefile->CloseResources();
|
pedefile->CloseResources();
|
||||||
@ -371,7 +371,7 @@ int main(int argc, char *argv[]) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// //while read frame
|
// //while read frame
|
||||||
framenumber = -1;
|
framenumber = 0;
|
||||||
h5offset[0] = 0;
|
h5offset[0] = 0;
|
||||||
ifr = 0;
|
ifr = 0;
|
||||||
//std::cout << "Here! " << framenumber << " ";
|
//std::cout << "Here! " << framenumber << " ";
|
||||||
@ -403,7 +403,7 @@ int main(int argc, char *argv[]) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
framenumber = -1;
|
//framenumber = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//std::cout << "aa --" << std::endl;
|
//std::cout << "aa --" << std::endl;
|
||||||
|
Reference in New Issue
Block a user