v1.0.0-rc.36

This commit is contained in:
2025-05-05 19:32:22 +02:00
parent 759243d1bf
commit 040cf08386
333 changed files with 22724 additions and 15251 deletions

View File

@@ -6,8 +6,7 @@
#include "../common/DiffractionExperiment.h"
#include "../writer/HDF5Objects.h"
#include "../writer/HDF5Writer.h"
#include "../writer/HDF5NXmx.h"
#include "../writer/FileWriter.h"
#include "../compression/JFJochCompressor.h"
#include "../common/AzimuthalIntegrationProfile.h"
#include <nlohmann/json.hpp>
@@ -164,7 +163,7 @@ TEST_CASE("HDF5ExternalLink", "[HDF5][Unit]") {
TEST_CASE("HDF5MasterFile", "[HDF5][Full]") {
{
RegisterHDF5Filter();
DiffractionExperiment x(DetectorGeometry(8, 2, 8, 36));
DiffractionExperiment x(DetJF4M());
x.FilePrefix("test01").ImagesPerTrigger(950);
@@ -191,7 +190,7 @@ TEST_CASE("HDF5MasterFile", "[HDF5][Full]") {
TEST_CASE("HDF5MasterFile_UserData", "[HDF5][Full]") {
{
RegisterHDF5Filter();
DiffractionExperiment x(DetectorGeometry(8, 2, 8, 36));
DiffractionExperiment x(DetJF4M());
x.FilePrefix("test07").ImagesPerTrigger(950);
@@ -223,14 +222,14 @@ TEST_CASE("HDF5MasterFile_UserData", "[HDF5][Full]") {
TEST_CASE("HDF5MasterFile_RadInt", "[HDF5][Full]") {
{
RegisterHDF5Filter();
DiffractionExperiment x(DetectorGeometry(8, 2, 8, 36));
DiffractionExperiment x(DetJF4M());
x.DetectorDistance_mm(50).BeamX_pxl(1000).BeamY_pxl(1000);
x.QSpacingForAzimInt_recipA(0.1).QRangeForAzimInt_recipA(0.1, 4.0);
x.FilePrefix("test01_rad_int").ImagesPerTrigger(950);
std::vector<uint32_t> pixel_mask(x.GetPixelsNum(), 0);
PixelMask pixel_mask(x);
AzimuthalIntegration mapping(x, pixel_mask);
AzimuthalIntegrationProfile profile(mapping);
@@ -254,14 +253,14 @@ TEST_CASE("HDF5MasterFile_RadInt", "[HDF5][Full]") {
TEST_CASE("HDF5Writer", "[HDF5][Full]") {
{
RegisterHDF5Filter();
DiffractionExperiment x(DetectorGeometry(8, 2, 8, 36));
DiffractionExperiment x(DetJF4M());
std::vector<SpotToSave> spots;
x.FilePrefix("test02_1p10").ImagesPerTrigger(5).ImagesPerFile(2).Compression(CompressionAlgorithm::NO_COMPRESSION);
StartMessage start_message;
x.FillMessage(start_message);
HDF5Writer file_set(start_message);
FileWriter file_set(start_message);
std::vector<uint16_t> image(x.GetPixelsNum());
for (int i = 0; i < x.GetImageNum(); i++) {
@@ -300,7 +299,7 @@ TEST_CASE("HDF5Writer", "[HDF5][Full]") {
TEST_CASE("HDF5Writer_Socket", "[HDF5][Full]") {
{
RegisterHDF5Filter();
DiffractionExperiment x(DetectorGeometry(8, 2, 8, 36));
DiffractionExperiment x(DetJF4M());
x.FrameTime(std::chrono::microseconds(1000), std::chrono::microseconds(100));
DatasetSettings d;
@@ -315,7 +314,7 @@ TEST_CASE("HDF5Writer_Socket", "[HDF5][Full]") {
StartMessage start_message;
x.FillMessage(start_message);
HDF5Writer file_set(start_message);
FileWriter file_set(start_message);
file_set.SetupFinalizedFileSocket("ipc://#1");
std::vector<uint16_t> image(x.GetPixelsNum());
@@ -385,7 +384,7 @@ TEST_CASE("HDF5Writer_Socket", "[HDF5][Full]") {
TEST_CASE("HDF5Writer_Spots", "[HDF5][Full]") {
{
RegisterHDF5Filter();
DiffractionExperiment x(DetectorGeometry(8, 2, 8, 36));
DiffractionExperiment x(DetJF4M());
std::vector<SpotToSave> spots;
spots.push_back({10,10,7});
@@ -396,7 +395,7 @@ TEST_CASE("HDF5Writer_Spots", "[HDF5][Full]") {
StartMessage start_message;
x.FillMessage(start_message);
HDF5Writer file_set(start_message);
FileWriter file_set(start_message);
std::vector<uint16_t> image(x.GetPixelsNum());
for (int i = 0; i < x.GetImageNum(); i++) {
@@ -425,11 +424,11 @@ TEST_CASE("HDF5Writer_Spots", "[HDF5][Full]") {
TEST_CASE("HDF5Writer_Rad_Int_Profile", "[HDF5][Full]") {
{
RegisterHDF5Filter();
DiffractionExperiment x(DetectorGeometry(8, 2, 8, 36));
DiffractionExperiment x(DetJF4M());
x.DetectorDistance_mm(50).BeamX_pxl(1000).BeamY_pxl(1000);
x.QSpacingForAzimInt_recipA(0.1).QRangeForAzimInt_recipA(0.1, 4.0);
std::vector<uint32_t> pixel_mask(x.GetPixelsNum(), 0);
PixelMask pixel_mask(x);
AzimuthalIntegration mapping(x, pixel_mask);
std::vector<float> rad_int_profile(mapping.GetBinNumber(), 4.0);
@@ -440,7 +439,7 @@ TEST_CASE("HDF5Writer_Rad_Int_Profile", "[HDF5][Full]") {
x.FillMessage(start_message);
start_message.az_int_bin_to_q = mapping.GetBinToQ();
HDF5Writer file_set(start_message);
FileWriter file_set(start_message);
std::vector<uint16_t> image(x.GetPixelsNum());
for (int i = 0; i < x.GetImageNum(); i++) {
@@ -508,7 +507,7 @@ TEST_CASE("HDF5DataType", "[HDF5]") {
}
TEST_CASE("HDF5Writer_Link", "[HDF5][Full]") {
DiffractionExperiment x(DetectorGeometry(1));
DiffractionExperiment x(DetJF(1));
x.ImagesPerTrigger(7).ImagesPerFile(2).Compression(CompressionAlgorithm::NO_COMPRESSION).FilePrefix("link");
x.OverwriteExistingFiles(true);
@@ -521,7 +520,7 @@ TEST_CASE("HDF5Writer_Link", "[HDF5][Full]") {
EndMessage end_message;
end_message.max_image_number = x.GetImageNum() - 2;
HDF5Writer writer(start_message);
FileWriter writer(start_message);
std::vector<uint16_t> image(x.GetPixelsNum());
std::vector<SpotToSave> spots;
for (int i = 0; i < x.GetImageNum() - 2; i++) {
@@ -540,7 +539,7 @@ TEST_CASE("HDF5Writer_Link", "[HDF5][Full]") {
REQUIRE_NOTHROW(writer.Write(message));
}
writer.Write(end_message);
writer.WriteHDF5(end_message);
writer.Finalize();
}
{
@@ -584,21 +583,21 @@ TEST_CASE("HDF5Writer_Link", "[HDF5][Full]") {
}
TEST_CASE("HDF5Writer_Link_VDS", "[HDF5][Full]") {
DiffractionExperiment x(DetectorGeometry(1));
DiffractionExperiment x(DetJF(1));
x.ImagesPerTrigger(7).ImagesPerFile(2).Compression(CompressionAlgorithm::NO_COMPRESSION).FilePrefix("link_vds");
x.HDF5MasterFormatVersion(FileWriterFileFormat::NXmxVDS).OverwriteExistingFiles(true);
x.SetFileWriterFormat(FileWriterFormat::NXmxVDS).OverwriteExistingFiles(true);
{
RegisterHDF5Filter();
StartMessage start_message;
x.FillMessage(start_message);
REQUIRE(start_message.hdf5_format_version == FileWriterFileFormat::NXmxVDS);
REQUIRE(start_message.file_format == FileWriterFormat::NXmxVDS);
EndMessage end_message;
end_message.max_image_number = x.GetImageNum() - 2;
HDF5Writer writer(start_message);
FileWriter writer(start_message);
std::vector<uint16_t> image(x.GetPixelsNum());
std::vector<SpotToSave> spots;
for (int i = 0; i < x.GetImageNum() - 2; i++) {
@@ -618,7 +617,7 @@ TEST_CASE("HDF5Writer_Link_VDS", "[HDF5][Full]") {
REQUIRE_NOTHROW(writer.Write(message));
}
writer.Write(end_message);
writer.WriteHDF5(end_message);
writer.Finalize();
}
{
@@ -643,21 +642,21 @@ TEST_CASE("HDF5Writer_Link_VDS", "[HDF5][Full]") {
TEST_CASE("HDF5Writer_NoMasterFile", "[HDF5][Full]") {
DiffractionExperiment x(DetectorGeometry(1));
DiffractionExperiment x(DetJF(1));
x.ImagesPerTrigger(7).ImagesPerFile(2).Compression(CompressionAlgorithm::NO_COMPRESSION).FilePrefix("data_only");
x.HDF5MasterFormatVersion(FileWriterFileFormat::DataOnly).OverwriteExistingFiles(true);
x.SetFileWriterFormat(FileWriterFormat::DataOnly).OverwriteExistingFiles(true);
{
RegisterHDF5Filter();
StartMessage start_message;
x.FillMessage(start_message);
REQUIRE(start_message.hdf5_format_version == FileWriterFileFormat::DataOnly);
REQUIRE(start_message.file_format == FileWriterFormat::DataOnly);
EndMessage end_message;
end_message.max_image_number = x.GetImageNum() - 2;
HDF5Writer writer(start_message);
FileWriter writer(start_message);
std::vector<uint16_t> image(x.GetPixelsNum());
std::vector<SpotToSave> spots;
for (int i = 0; i < x.GetImageNum() - 2; i++) {
@@ -677,7 +676,7 @@ TEST_CASE("HDF5Writer_NoMasterFile", "[HDF5][Full]") {
REQUIRE_NOTHROW(writer.Write(message));
}
writer.Write(end_message);
writer.WriteHDF5(end_message);
writer.Finalize();
}
REQUIRE(!std::filesystem::exists("data_only_master.h5"));
@@ -689,7 +688,7 @@ TEST_CASE("HDF5Writer_NoMasterFile", "[HDF5][Full]") {
TEST_CASE("HDF5Writer_Link_zero_images", "[HDF5][Full]") {
DiffractionExperiment x(DetectorGeometry(1));
DiffractionExperiment x(DetJF(1));
x.ImagesPerTrigger(5).ImagesPerFile(2).Compression(CompressionAlgorithm::NO_COMPRESSION).FilePrefix("link_zero");
{
@@ -714,3 +713,116 @@ TEST_CASE("HDF5Writer_Link_zero_images", "[HDF5][Full]") {
// No leftover HDF5 objects
REQUIRE (H5Fget_obj_count(H5F_OBJ_ALL, H5F_OBJ_ALL) == 0);
}
TEST_CASE("FileWriter_CBF_16bit", "[HDF5][Full]") {
{
DetectorSetup det = DetJF4M("DET1");
det.SerialNumber("1");
DiffractionExperiment x(det);
std::vector<SpotToSave> spots;
x.FilePrefix("lyso_cbf_16").ImagesPerTrigger(5).ImagesPerFile(2).Compression(CompressionAlgorithm::NO_COMPRESSION);
x.PixelSigned(true).BitDepthImage(16);
x.SetFileWriterFormat(FileWriterFormat::CBF);
StartMessage start_message;
x.FillMessage(start_message);
FileWriter file_set(start_message);
std::vector<uint16_t> image(x.GetPixelsNum(), 45);
for (int i = 0; i < x.GetImageNum(); i++) {
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.data = (uint8_t *) image.data();
message.image.size = x.GetPixelsNum() * x.GetByteDepthImage();
message.spots = spots;
message.number = i;
REQUIRE_NOTHROW(file_set.Write(message));
}
auto v = file_set.Finalize();
REQUIRE(!file_set.GetZMQAddr());
}
}
TEST_CASE("FileWriter_CBF", "[HDF5][Full]") {
{
DetectorSetup det = DetJF4M("DET1");
det.SerialNumber("1");
DiffractionExperiment x(det);
std::vector<SpotToSave> spots;
x.FilePrefix("lyso_cbf").ImagesPerTrigger(5).ImagesPerFile(2).Compression(CompressionAlgorithm::NO_COMPRESSION);
x.PixelSigned(false).BitDepthImage(32);
x.SetFileWriterFormat(FileWriterFormat::CBF);
StartMessage start_message;
x.FillMessage(start_message);
FileWriter file_set(start_message);
std::vector<uint32_t> image(x.GetPixelsNum());
for (int i = 0; i < image.size(); i++)
image[i] = i;
for (int i = 0; i < x.GetImageNum(); i++) {
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.data = (uint8_t *) image.data();
message.image.size = x.GetPixelsNum() * x.GetByteDepthImage();
message.spots = spots;
message.number = i;
REQUIRE_NOTHROW(file_set.Write(message));
}
auto v = file_set.Finalize();
REQUIRE(!file_set.GetZMQAddr());
}
}
TEST_CASE("FileWriter_TIFF", "[HDF5][Full]") {
{
DetectorSetup det = DetJF4M("DET1");
det.SerialNumber("1");
DiffractionExperiment x(det);
std::vector<SpotToSave> spots;
x.FilePrefix("lyso_tiff").ImagesPerTrigger(5).ImagesPerFile(2).Compression(CompressionAlgorithm::NO_COMPRESSION);
x.SetFileWriterFormat(FileWriterFormat::TIFF);
StartMessage start_message;
x.FillMessage(start_message);
FileWriter file_set(start_message);
std::vector<uint16_t> image(x.GetPixelsNum(), 45);
for (int i = 0; i < x.GetImageNum(); i++) {
DataMessage message{};
message.image.pixel_depth_bytes = x.GetByteDepthImage();
message.image.pixel_is_signed = false;
message.image.algorithm = CompressionAlgorithm::NO_COMPRESSION;
message.image.xpixel = x.GetXPixelsNum();
message.image.ypixel = x.GetYPixelsNum();
message.image.data = (uint8_t *) image.data();
message.image.size = x.GetPixelsNum() * x.GetByteDepthImage();
message.spots = spots;
message.number = i;
REQUIRE_NOTHROW(file_set.Write(message));
}
auto v = file_set.Finalize();
REQUIRE(!file_set.GetZMQAddr());
}
}