v1.0.0-rc.38
This commit is contained in:
+126
-49
@@ -25,7 +25,6 @@ TEST_CASE("HDF5DataType_ElemSize","[HDF5]") {
|
||||
CHECK(type_u32.GetElemSize() == 4);
|
||||
}
|
||||
|
||||
|
||||
TEST_CASE("HDF5DataType_ElemType","[HDF5]") {
|
||||
HDF5DataType type_u8((uint8_t)0), type_fl(0.0f), type_i32((int32_t) 0), type_u32((uint32_t) 0);
|
||||
|
||||
@@ -42,7 +41,8 @@ TEST_CASE("JFJochReader_MasterFile", "[HDF5][Full]") {
|
||||
x.FilePrefix("test08").ImagesPerTrigger(950).OverwriteExistingFiles(true);
|
||||
x.BeamX_pxl(100).BeamY_pxl(200).DetectorDistance_mm(150)
|
||||
.IncidentEnergy_keV(WVL_1A_IN_KEV)
|
||||
.FrameTime(std::chrono::microseconds(500), std::chrono::microseconds(10));
|
||||
.FrameTime(std::chrono::microseconds(500), std::chrono::microseconds(10))
|
||||
.SetUnitCell(UnitCell{.a= 10, .b= 20, .c= 30, .alpha= 90, .beta= 101, .gamma = 90});
|
||||
RegisterHDF5Filter();
|
||||
|
||||
{
|
||||
@@ -59,13 +59,16 @@ TEST_CASE("JFJochReader_MasterFile", "[HDF5][Full]") {
|
||||
JFJochHDF5Reader reader;
|
||||
REQUIRE_NOTHROW(reader.ReadFile("test08_master.h5"));
|
||||
auto dataset = reader.GetStartMessage();
|
||||
CHECK(dataset->geom.GetBeamX_pxl() == Catch::Approx(x.GetBeamX_pxl()));
|
||||
CHECK(dataset->geom.GetBeamY_pxl() == Catch::Approx(x.GetBeamY_pxl()));
|
||||
CHECK(dataset->geom.GetDetectorDistance_mm() == Catch::Approx(x.GetDetectorDistance_mm()));
|
||||
CHECK(dataset->frame_time == Catch::Approx(x.GetFrameTime().count() / 1e6));
|
||||
CHECK(dataset->count_time == Catch::Approx(x.GetFrameCountTime().count() / 1e6));
|
||||
CHECK(dataset->geom.GetWavelength_A() == Catch::Approx(x.GetWavelength_A()));
|
||||
CHECK(dataset->number_of_images == 0);
|
||||
CHECK(dataset->experiment.GetBeamX_pxl() == Catch::Approx(x.GetBeamX_pxl()));
|
||||
CHECK(dataset->experiment.GetBeamY_pxl() == Catch::Approx(x.GetBeamY_pxl()));
|
||||
CHECK(dataset->experiment.GetDetectorDistance_mm() == Catch::Approx(x.GetDetectorDistance_mm()));
|
||||
CHECK(dataset->experiment.GetFrameTime() == x.GetFrameTime());
|
||||
CHECK(dataset->experiment.GetFrameCountTime() == x.GetFrameCountTime());
|
||||
CHECK(dataset->experiment.GetWavelength_A() == Catch::Approx(x.GetWavelength_A()));
|
||||
CHECK(dataset->experiment.GetImageNum() == 0);
|
||||
REQUIRE(dataset->experiment.GetUnitCell().has_value());
|
||||
CHECK(dataset->experiment.GetUnitCell()->b == 20.0);
|
||||
CHECK(dataset->experiment.GetUnitCell()->beta == 101.0);
|
||||
}
|
||||
remove("test08_master.h5");
|
||||
|
||||
@@ -125,11 +128,11 @@ TEST_CASE("JFJochReader_PixelMask", "[HDF5][Full]") {
|
||||
REQUIRE_NOTHROW(reader.LoadImage(0));
|
||||
auto reader_image = reader.CopyImage();
|
||||
|
||||
CHECK(reader_image->image.at(5767) == GAP_PXL_VALUE);
|
||||
CHECK(reader_image->image.at(0) == ERROR_PXL_VALUE);
|
||||
CHECK(reader_image->image.at(1) == 0);
|
||||
CHECK(reader_image->image.at(2) == 0);
|
||||
CHECK(reader_image->image.at(x.GetPixelsNum() - 1) == ERROR_PXL_VALUE);
|
||||
CHECK(reader_image->Image().at(5767) == GAP_PXL_VALUE);
|
||||
CHECK(reader_image->Image().at(0) == ERROR_PXL_VALUE);
|
||||
CHECK(reader_image->Image().at(1) == 0);
|
||||
CHECK(reader_image->Image().at(2) == 0);
|
||||
CHECK(reader_image->Image().at(x.GetPixelsNum() - 1) == ERROR_PXL_VALUE);
|
||||
}
|
||||
remove("test16_master.h5");
|
||||
|
||||
@@ -184,7 +187,7 @@ TEST_CASE("JFJochReader_DataI16", "[HDF5][Full]") {
|
||||
JFJochHDF5Reader reader;
|
||||
REQUIRE_NOTHROW(reader.ReadFile("test09_master.h5"));
|
||||
auto dataset = reader.GetStartMessage();
|
||||
CHECK(dataset->number_of_images == 4);
|
||||
CHECK(dataset->experiment.GetImageNum() == 4);
|
||||
REQUIRE(dataset->spot_count.size() == 4);
|
||||
REQUIRE(dataset->bkg_estimate.size() == 4);
|
||||
|
||||
@@ -195,11 +198,11 @@ TEST_CASE("JFJochReader_DataI16", "[HDF5][Full]") {
|
||||
|
||||
auto reader_image = reader.CopyImage();
|
||||
REQUIRE(reader_image);
|
||||
CHECK(reader_image->image[0] == SATURATED_PXL_VALUE);
|
||||
CHECK(reader_image->image[1] == ERROR_PXL_VALUE);
|
||||
CHECK(reader_image->image[2] == image[2]);
|
||||
CHECK(reader_image->image[3] == image[3]);
|
||||
CHECK(reader_image->image[5678] == i);
|
||||
CHECK(reader_image->Image()[0] == SATURATED_PXL_VALUE);
|
||||
CHECK(reader_image->Image()[1] == ERROR_PXL_VALUE);
|
||||
CHECK(reader_image->Image()[2] == image[2]);
|
||||
CHECK(reader_image->Image()[3] == image[3]);
|
||||
CHECK(reader_image->Image()[5678] == i);
|
||||
CHECK(dataset->indexing_result[i] == (i % 2 == 0));
|
||||
CHECK(dataset->bkg_estimate[i] == Catch::Approx(i * 345.6));
|
||||
}
|
||||
@@ -264,7 +267,7 @@ TEST_CASE("JFJochReader_DataI16_OldMasterFormat", "[HDF5][Full]") {
|
||||
JFJochHDF5Reader reader;
|
||||
REQUIRE_NOTHROW(reader.ReadFile("test15_master.h5"));
|
||||
auto dataset = reader.GetStartMessage();
|
||||
CHECK(dataset->number_of_images == 4);
|
||||
CHECK(dataset->experiment.GetImageNum() == 4);
|
||||
REQUIRE(dataset->spot_count.size() == 4);
|
||||
REQUIRE(dataset->bkg_estimate.size() == 4);
|
||||
|
||||
@@ -275,16 +278,16 @@ TEST_CASE("JFJochReader_DataI16_OldMasterFormat", "[HDF5][Full]") {
|
||||
|
||||
auto reader_image = reader.CopyImage();
|
||||
REQUIRE(reader_image);
|
||||
CHECK(reader_image->image[0] == SATURATED_PXL_VALUE);
|
||||
CHECK(reader_image->image[1] == ERROR_PXL_VALUE);
|
||||
CHECK(reader_image->image[2] == image[2]);
|
||||
CHECK(reader_image->image[3] == image[3]);
|
||||
CHECK(reader_image->image[5678] == i);
|
||||
REQUIRE(reader_image->spots.size() == 1);
|
||||
CHECK(reader_image->spots[0].x == 1);
|
||||
CHECK(reader_image->spots[0].y == 2);
|
||||
CHECK(reader_image->spots[0].intensity == 376);
|
||||
CHECK(reader_image->spots[0].indexed == true);
|
||||
CHECK(reader_image->Image()[0] == SATURATED_PXL_VALUE);
|
||||
CHECK(reader_image->Image()[1] == ERROR_PXL_VALUE);
|
||||
CHECK(reader_image->Image()[2] == image[2]);
|
||||
CHECK(reader_image->Image()[3] == image[3]);
|
||||
CHECK(reader_image->Image()[5678] == i);
|
||||
REQUIRE(reader_image->ImageData().spots.size() == 1);
|
||||
CHECK(reader_image->ImageData().spots[0].x == 1);
|
||||
CHECK(reader_image->ImageData().spots[0].y == 2);
|
||||
CHECK(reader_image->ImageData().spots[0].intensity == 376);
|
||||
CHECK(reader_image->ImageData().spots[0].indexed == true);
|
||||
CHECK(dataset->indexing_result[i] == (i % 2 == 0));
|
||||
CHECK(dataset->bkg_estimate[i] == Catch::Approx(i * 345.6));
|
||||
}
|
||||
@@ -346,7 +349,7 @@ TEST_CASE("JFJochReader_DataU16", "[HDF5][Full]") {
|
||||
JFJochHDF5Reader reader;
|
||||
REQUIRE_NOTHROW(reader.ReadFile("test10_master.h5"));
|
||||
auto dataset = reader.GetStartMessage();
|
||||
CHECK(dataset->number_of_images == 4);
|
||||
CHECK(dataset->experiment.GetImageNum() == 4);
|
||||
|
||||
REQUIRE_THROWS(reader.LoadImage(4));
|
||||
|
||||
@@ -355,10 +358,10 @@ TEST_CASE("JFJochReader_DataU16", "[HDF5][Full]") {
|
||||
|
||||
auto reader_image = reader.CopyImage();
|
||||
REQUIRE(reader_image);
|
||||
CHECK(reader_image->image[0] == SATURATED_PXL_VALUE);
|
||||
CHECK(reader_image->image[1] == INT16_MAX);
|
||||
CHECK(reader_image->image[2] == 456);
|
||||
CHECK(reader_image->image[5678] == i);
|
||||
CHECK(reader_image->Image()[0] == SATURATED_PXL_VALUE);
|
||||
CHECK(reader_image->Image()[1] == INT16_MAX);
|
||||
CHECK(reader_image->Image()[2] == 456);
|
||||
CHECK(reader_image->Image()[5678] == i);
|
||||
CHECK(dataset->indexing_result[i] == (i % 2 == 0));
|
||||
CHECK(dataset->bkg_estimate[i] == Catch::Approx(i * 345.6));
|
||||
}
|
||||
@@ -418,7 +421,7 @@ TEST_CASE("JFJochReader_DataI32", "[HDF5][Full]") {
|
||||
JFJochHDF5Reader reader;
|
||||
REQUIRE_NOTHROW(reader.ReadFile("test11_master.h5"));
|
||||
auto dataset = reader.GetStartMessage();
|
||||
CHECK(dataset->number_of_images == 4);
|
||||
CHECK(dataset->experiment.GetImageNum() == 4);
|
||||
|
||||
REQUIRE_THROWS(reader.LoadImage(4));
|
||||
|
||||
@@ -427,10 +430,10 @@ TEST_CASE("JFJochReader_DataI32", "[HDF5][Full]") {
|
||||
|
||||
auto reader_image = reader.CopyImage();
|
||||
REQUIRE(reader_image);
|
||||
CHECK(reader_image->image[0] == SATURATED_PXL_VALUE);
|
||||
CHECK(reader_image->image[1] == ERROR_PXL_VALUE);
|
||||
CHECK(reader_image->image[2] == 456);
|
||||
CHECK(reader_image->image[5678] == i);
|
||||
CHECK(reader_image->Image()[0] == SATURATED_PXL_VALUE);
|
||||
CHECK(reader_image->Image()[1] == ERROR_PXL_VALUE);
|
||||
CHECK(reader_image->Image()[2] == 456);
|
||||
CHECK(reader_image->Image()[5678] == i);
|
||||
}
|
||||
}
|
||||
remove("test11_master.h5");
|
||||
@@ -490,7 +493,7 @@ TEST_CASE("JFJochReader_DataU32", "[HDF5][Full]") {
|
||||
JFJochHDF5Reader reader;
|
||||
REQUIRE_NOTHROW(reader.ReadFile("test12_master.h5"));
|
||||
auto dataset = reader.GetStartMessage();
|
||||
CHECK(dataset->number_of_images == 4);
|
||||
CHECK(dataset->experiment.GetImageNum() == 4);
|
||||
|
||||
REQUIRE_THROWS(reader.LoadImage(4));
|
||||
|
||||
@@ -499,12 +502,12 @@ TEST_CASE("JFJochReader_DataU32", "[HDF5][Full]") {
|
||||
|
||||
auto reader_image = reader.CopyImage();
|
||||
REQUIRE(reader_image);
|
||||
CHECK(reader_image->image[0] == INT32_MAX);
|
||||
CHECK(reader_image->image[1] == INT32_MAX);
|
||||
CHECK(reader_image->image[2] == 456);
|
||||
CHECK(reader_image->image[3] == INT32_MAX);
|
||||
CHECK(reader_image->image[4] == INT32_MAX - 1);
|
||||
CHECK(reader_image->image[5678] == i);
|
||||
CHECK(reader_image->Image()[0] == INT32_MAX);
|
||||
CHECK(reader_image->Image()[1] == INT32_MAX);
|
||||
CHECK(reader_image->Image()[2] == 456);
|
||||
CHECK(reader_image->Image()[3] == INT32_MAX);
|
||||
CHECK(reader_image->Image()[4] == INT32_MAX - 1);
|
||||
CHECK(reader_image->Image()[5678] == i);
|
||||
}
|
||||
}
|
||||
remove("test12_master.h5");
|
||||
@@ -517,6 +520,80 @@ TEST_CASE("JFJochReader_DataU32", "[HDF5][Full]") {
|
||||
REQUIRE(H5Fget_obj_count(H5F_OBJ_ALL, H5F_OBJ_ALL) == 0);
|
||||
}
|
||||
|
||||
TEST_CASE("JFJochReader_Summation", "[HDF5][Full]") {
|
||||
DiffractionExperiment x(DetJF(1));
|
||||
|
||||
x.FilePrefix("test30").ImagesPerTrigger(3).OverwriteExistingFiles(true);
|
||||
x.BitDepthImage(16).ImagesPerFile(3).SetFileWriterFormat(FileWriterFormat::NXmxVDS)
|
||||
.PixelSigned(true);
|
||||
x.Compression(CompressionAlgorithm::NO_COMPRESSION);
|
||||
|
||||
std::vector<int16_t> image_1(x.GetPixelsNum(),1);
|
||||
std::vector<int16_t> image_2(x.GetPixelsNum(),2);
|
||||
std::vector<int16_t> image_3(x.GetPixelsNum(),3);
|
||||
image_3[0] = INT16_MAX;
|
||||
image_2[1] = INT16_MIN;
|
||||
|
||||
RegisterHDF5Filter();
|
||||
{
|
||||
StartMessage start_message;
|
||||
x.FillMessage(start_message);
|
||||
FileWriter file_set(start_message);
|
||||
|
||||
std::vector<SpotToSave> spots;
|
||||
|
||||
DataMessage message{};
|
||||
message.image.pixel_depth_bytes = x.GetByteDepthImage();
|
||||
message.image.pixel_is_signed = x.IsPixelSigned();
|
||||
message.image.algorithm = CompressionAlgorithm::NO_COMPRESSION;
|
||||
message.image.xpixel = x.GetXPixelsNum();
|
||||
message.image.ypixel = x.GetYPixelsNum();
|
||||
message.image.size = x.GetPixelsNum() * x.GetByteDepthImage();
|
||||
message.spots = spots;
|
||||
|
||||
message.image.data = (uint8_t *) image_1.data();
|
||||
message.number = 0;
|
||||
REQUIRE_NOTHROW(file_set.WriteHDF5(message));
|
||||
|
||||
message.image.data = (uint8_t *) image_2.data();
|
||||
message.number = 1;
|
||||
REQUIRE_NOTHROW(file_set.WriteHDF5(message));
|
||||
|
||||
message.image.data = (uint8_t *) image_3.data();
|
||||
message.number = 2;
|
||||
REQUIRE_NOTHROW(file_set.WriteHDF5(message));
|
||||
|
||||
EndMessage end_message;
|
||||
end_message.max_image_number = x.GetImageNum();
|
||||
file_set.WriteHDF5(end_message);
|
||||
file_set.Finalize();
|
||||
}
|
||||
{
|
||||
JFJochHDF5Reader reader;
|
||||
REQUIRE_NOTHROW(reader.ReadFile("test30_master.h5"));
|
||||
auto dataset = reader.GetStartMessage();
|
||||
CHECK(dataset->experiment.GetImageNum() == 3);
|
||||
|
||||
REQUIRE_NOTHROW(reader.LoadImage(0, 3));
|
||||
|
||||
auto reader_image = reader.CopyImage();
|
||||
REQUIRE(reader_image);
|
||||
CHECK(reader_image->Image()[0] == SATURATED_PXL_VALUE);
|
||||
CHECK(reader_image->Image()[1] == ERROR_PXL_VALUE);
|
||||
CHECK(reader_image->Image()[2] == 1 + 2 +3);
|
||||
CHECK(reader_image->Image()[5678] == 1 + 2 +3);
|
||||
CHECK(reader_image->Image()[x.GetPixelsNum() - 1] == 1 + 2 +3);
|
||||
|
||||
REQUIRE_THROWS(reader.LoadImage(1, 3));
|
||||
}
|
||||
remove("test30_master.h5");
|
||||
remove("test30_data_000001.h5");
|
||||
|
||||
REQUIRE(H5Fget_obj_count(H5F_OBJ_ALL, H5F_OBJ_ALL) == 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
TEST_CASE("JFJochReader_ROI", "[HDF5][Full]") {
|
||||
DiffractionExperiment x(DetJF(1));
|
||||
|
||||
@@ -575,7 +652,7 @@ TEST_CASE("JFJochReader_ROI", "[HDF5][Full]") {
|
||||
JFJochHDF5Reader reader;
|
||||
REQUIRE_NOTHROW(reader.ReadFile("test25_master.h5"));
|
||||
auto dataset = reader.GetStartMessage();
|
||||
CHECK(dataset->number_of_images == 4);
|
||||
CHECK(dataset->experiment.GetImageNum() == 4);
|
||||
|
||||
CHECK(dataset->roi.size() == 2);
|
||||
REQUIRE(dataset->roi_max.size() == 2);
|
||||
|
||||
Reference in New Issue
Block a user