v1.0.0-rc.131 (#39)
All checks were successful
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 11m20s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 10m46s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 11m27s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 12m32s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 10m57s
Build Packages / build:rpm (rocky8) (push) Successful in 11m54s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 13m9s
Build Packages / build:rpm (rocky9) (push) Successful in 12m37s
Build Packages / Generate python client (push) Successful in 24s
Build Packages / Create release (push) Has been skipped
Build Packages / Build documentation (push) Successful in 57s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 9m12s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 8m4s
Build Packages / Unit tests (push) Successful in 1h17m43s
All checks were successful
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 11m20s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 10m46s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 11m27s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 12m32s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 10m57s
Build Packages / build:rpm (rocky8) (push) Successful in 11m54s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 13m9s
Build Packages / build:rpm (rocky9) (push) Successful in 12m37s
Build Packages / Generate python client (push) Successful in 24s
Build Packages / Create release (push) Has been skipped
Build Packages / Build documentation (push) Successful in 57s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 9m12s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 8m4s
Build Packages / Unit tests (push) Successful in 1h17m43s
This is an UNSTABLE release. The release has significant modifications and bug fixes, if things go wrong, it is better to revert to 1.0.0-rc.124. * jfjoch_broker: Fix bug in saving JUNGFRAU calibration (pedestal/pedestalRMS) * jfjoch_viewer: Fix calibration (pedestal) images being open flipped * jfjoch_process: Add space group detection (EXPERIMENTAL) Reviewed-on: #39
This commit was merged in pull request #39.
This commit is contained in:
@@ -799,6 +799,103 @@ TEST_CASE("HDF5Writer_NoMasterFile", "[HDF5][Full]") {
|
||||
REQUIRE (H5Fget_obj_count(H5F_OBJ_ALL, H5F_OBJ_ALL) == 0);
|
||||
}
|
||||
|
||||
TEST_CASE("HDF5Writer_Calibration", "[HDF5][Full]") {
|
||||
DiffractionExperiment x(DetJF(2));
|
||||
|
||||
std::vector<int16_t> calib_1(x.GetModulesNum() * RAW_MODULE_SIZE);
|
||||
std::vector<float> calib_2(x.GetModulesNum() * RAW_MODULE_SIZE);
|
||||
for (int i = 0; i < x.GetModulesNum(); i++) {
|
||||
calib_1[i] = i * 3 - 1024;
|
||||
calib_2[i] = static_cast<float>(i) / 16.0 + 123.25f;
|
||||
}
|
||||
|
||||
JFJochBitShuffleCompressor compressor(CompressionAlgorithm::BSHUF_LZ4);
|
||||
std::vector<uint8_t> calib_3 = compressor.Compress(calib_1);
|
||||
|
||||
x.ImagesPerTrigger(7).ImagesPerFile(2).Compression(CompressionAlgorithm::NO_COMPRESSION).FilePrefix("calib");
|
||||
x.OverwriteExistingFiles(true);
|
||||
{
|
||||
RegisterHDF5Filter();
|
||||
|
||||
StartMessage start_message;
|
||||
x.FillMessage(start_message);
|
||||
|
||||
EndMessage end_message;
|
||||
end_message.max_image_number = x.GetImageNum() - 2;
|
||||
|
||||
FileWriter writer(start_message);
|
||||
|
||||
CompressedImage image_1(calib_1, RAW_MODULE_COLS, x.GetModulesNum() * RAW_MODULE_LINES);
|
||||
CompressedImage image_2(calib_2, RAW_MODULE_COLS, x.GetModulesNum() * RAW_MODULE_LINES);
|
||||
CompressedImage image_3(calib_3, RAW_MODULE_COLS, x.GetModulesNum() * RAW_MODULE_LINES,
|
||||
CompressedImageMode::Int16, CompressionAlgorithm::BSHUF_LZ4);
|
||||
image_1.Channel("calib1");
|
||||
image_2.Channel("calib2");
|
||||
image_3.Channel("calib3");
|
||||
|
||||
writer.WriteHDF5(image_1);
|
||||
writer.WriteHDF5(image_2);
|
||||
writer.WriteHDF5(image_3);
|
||||
|
||||
writer.WriteHDF5(end_message);
|
||||
writer.Finalize();
|
||||
}
|
||||
REQUIRE(std::filesystem::exists("calib_master.h5"));
|
||||
{
|
||||
HDF5ReadOnlyFile file("calib_master.h5");
|
||||
{
|
||||
std::unique_ptr<HDF5DataSet> dataset;
|
||||
REQUIRE_NOTHROW(dataset = std::make_unique<HDF5DataSet>(file,"/entry/instrument/detector/calibration/calib1"));
|
||||
HDF5DataSpace file_space(*dataset);
|
||||
REQUIRE(file_space.GetNumOfDimensions() == 2);
|
||||
HDF5DataType type(*dataset);
|
||||
REQUIRE(type.GetElemSize() == 2);
|
||||
REQUIRE(type.IsSigned());
|
||||
REQUIRE(type.IsInteger());
|
||||
|
||||
REQUIRE(file_space.GetDimensions()[0] == RAW_MODULE_COLS);
|
||||
REQUIRE(file_space.GetDimensions()[1] == RAW_MODULE_LINES * x.GetModulesNum());
|
||||
std::vector<int16_t> output(file_space.GetDimensions()[0] * file_space.GetDimensions()[1]);
|
||||
dataset->ReadVector(output, {0,0}, file_space.GetDimensions());
|
||||
CHECK(memcmp(output.data(), calib_1.data(), output.size() * type.GetElemSize()) == 0);
|
||||
}
|
||||
{
|
||||
std::unique_ptr<HDF5DataSet> dataset;
|
||||
REQUIRE_NOTHROW(dataset = std::make_unique<HDF5DataSet>(file,"/entry/instrument/detector/calibration/calib2"));
|
||||
HDF5DataSpace file_space(*dataset);
|
||||
REQUIRE(file_space.GetNumOfDimensions() == 2);
|
||||
HDF5DataType type(*dataset);
|
||||
REQUIRE(type.GetElemSize() == 4);
|
||||
REQUIRE(type.IsSigned());
|
||||
REQUIRE(!type.IsInteger());
|
||||
|
||||
REQUIRE(file_space.GetDimensions()[0] == RAW_MODULE_COLS);
|
||||
REQUIRE(file_space.GetDimensions()[1] == RAW_MODULE_LINES * x.GetModulesNum());
|
||||
std::vector<float> output(file_space.GetDimensions()[0] * file_space.GetDimensions()[1]);
|
||||
dataset->ReadVector(output, {0,0}, file_space.GetDimensions());
|
||||
CHECK(memcmp(output.data(), calib_2.data(), output.size() * type.GetElemSize()) == 0);
|
||||
}
|
||||
{
|
||||
std::unique_ptr<HDF5DataSet> dataset;
|
||||
REQUIRE_NOTHROW(dataset = std::make_unique<HDF5DataSet>(file,"/entry/instrument/detector/calibration/calib3"));
|
||||
HDF5DataSpace file_space(*dataset);
|
||||
REQUIRE(file_space.GetNumOfDimensions() == 2);
|
||||
HDF5DataType type(*dataset);
|
||||
REQUIRE(type.GetElemSize() == 2);
|
||||
REQUIRE(type.IsSigned());
|
||||
REQUIRE(type.IsInteger());
|
||||
|
||||
REQUIRE(file_space.GetDimensions()[0] == RAW_MODULE_COLS);
|
||||
REQUIRE(file_space.GetDimensions()[1] == RAW_MODULE_LINES * x.GetModulesNum());
|
||||
std::vector<int16_t> output(file_space.GetDimensions()[0] * file_space.GetDimensions()[1]);
|
||||
dataset->ReadVector(output, {0,0}, file_space.GetDimensions());
|
||||
CHECK(memcmp(output.data(), calib_1.data(), output.size() * type.GetElemSize()) == 0);
|
||||
}
|
||||
}
|
||||
// No leftover HDF5 objects
|
||||
REQUIRE (H5Fget_obj_count(H5F_OBJ_ALL, H5F_OBJ_ALL) == 0);
|
||||
}
|
||||
|
||||
|
||||
TEST_CASE("HDF5Writer_Link_zero_images", "[HDF5][Full]") {
|
||||
DiffractionExperiment x(DetJF(1));
|
||||
|
||||
Reference in New Issue
Block a user