v1.0.0-rc.113 (#19)
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 11m0s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 11m2s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 11m54s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 8m20s
Build Packages / Generate python client (push) Successful in 24s
Build Packages / Build documentation (push) Successful in 56s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (rocky8) (push) Successful in 8m51s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 9m9s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 8m53s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 8m21s
Build Packages / build:rpm (rocky9) (push) Successful in 9m47s
Build Packages / Unit tests (push) Successful in 1h13m38s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 11m0s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 11m2s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 11m54s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 8m20s
Build Packages / Generate python client (push) Successful in 24s
Build Packages / Build documentation (push) Successful in 56s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (rocky8) (push) Successful in 8m51s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 9m9s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 8m53s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 8m21s
Build Packages / build:rpm (rocky9) (push) Successful in 9m47s
Build Packages / Unit tests (push) Successful in 1h13m38s
This is an UNSTABLE release and not recommended for production use (please use rc.111 instead). * jfjoch_broker: Improve handling of rotation indexing * jfjoch_broker: More information saved in CBOR end message (WIP) * jfjoch_writer: Save rotation indexing lattice parameters and Niggli class * jfjoch_viewer: Remove (for now) primitive cell information Reviewed-on: #19 Co-authored-by: Filip Leonarski <filip.leonarski@psi.ch> Co-committed-by: Filip Leonarski <filip.leonarski@psi.ch>
This commit was merged in pull request #19.
This commit is contained in:
+244
-226
@@ -9,71 +9,71 @@
|
||||
#include "../frame_serialize/CborUtil.h"
|
||||
|
||||
TEST_CASE("CBORSerialize_Start", "[CBOR]") {
|
||||
std::vector<uint8_t> buffer(8*1024*1024);
|
||||
std::vector<uint8_t> buffer(8 * 1024 * 1024);
|
||||
CBORStream2Serializer serializer(buffer.data(), buffer.size());
|
||||
|
||||
StartMessage message {
|
||||
.detector_distance = 0.0005,
|
||||
.beam_center_x = 456.6,
|
||||
.beam_center_y = 124.3,
|
||||
.number_of_images = 34567,
|
||||
.image_size_x = 456,
|
||||
.image_size_y = 457,
|
||||
.bit_depth_image = 32,
|
||||
.bit_depth_readout = 16,
|
||||
.pixel_signed = true,
|
||||
.countrate_correction_enabled = true,
|
||||
.incident_energy = 12400,
|
||||
.incident_wavelength = 0.988,
|
||||
.frame_time = 0.0001,
|
||||
.count_time = 0.000098,
|
||||
.saturation_value = 65534,
|
||||
.error_value = 65535,
|
||||
.pixel_size_x = 0.000075,
|
||||
.pixel_size_y = 0.000075,
|
||||
.sensor_thickness = 0.0005,
|
||||
.sensor_material = "Si",
|
||||
.unit_cell = UnitCell{.a = 45,.b = 37, .c = 45, .alpha = 90, .beta = 108,. gamma = 120},
|
||||
.space_group_number = 154,
|
||||
.max_spot_count = 250,
|
||||
.storage_cell_number = 16,
|
||||
.storage_cell_delay_ns = 15345,
|
||||
.pixel_mask_enabled = true,
|
||||
.arm_date = "abc",
|
||||
.sample_name = "lyso",
|
||||
.file_prefix = "lyso1/dir/file",
|
||||
.images_per_file = 12345,
|
||||
.channels = {"default", "sc2"},
|
||||
.detector_description = "EIGER 16M",
|
||||
.detector_serial_number = "123",
|
||||
.run_name = "bla",
|
||||
.run_number = 4567,
|
||||
.gain_file_names = {"abc" , "def", "/dsadasdsa/dadsadas/dsadsa/M056.bin"},
|
||||
.detector_translation = {0.5f, 0.0f, 0.5f},
|
||||
.source_type = "Synchrotron X-ray Source",
|
||||
.source_name = "Swiss Light Source",
|
||||
.instrument_name = "X06SA",
|
||||
.summation = 567,
|
||||
.az_int_bin_to_q = {0.1, 0.2, 0.3, 0.5},
|
||||
.az_int_q_bin_count = 35,
|
||||
.az_int_phi_bin_count = 120,
|
||||
.total_flux = 123,
|
||||
.attenuator_transmission = 0.345,
|
||||
.write_master_file = true,
|
||||
.user_data = R"({"pi":3.1415, "z":"string"})"_json,
|
||||
.data_reduction_factor_serialmx = 0.75,
|
||||
.experiment_group = "p10001",
|
||||
.jfjoch_release = "1.4.98",
|
||||
.socket_number = 3,
|
||||
.writer_notification_zmq_addr = "tcp://1.2.3.4:5678",
|
||||
.jungfrau_conversion_enabled = true,
|
||||
.jungfrau_conversion_factor = 17.56f,
|
||||
.geometry_transformation_enabled = false,
|
||||
.overwrite = true,
|
||||
.file_format = FileWriterFormat::NXmxVDS,
|
||||
.ring_current_mA = 123,
|
||||
.sample_temperature_K = 345,
|
||||
.indexing_algorithm = IndexingAlgorithmEnum::FFT
|
||||
StartMessage message{
|
||||
.detector_distance = 0.0005,
|
||||
.beam_center_x = 456.6,
|
||||
.beam_center_y = 124.3,
|
||||
.number_of_images = 34567,
|
||||
.image_size_x = 456,
|
||||
.image_size_y = 457,
|
||||
.bit_depth_image = 32,
|
||||
.bit_depth_readout = 16,
|
||||
.pixel_signed = true,
|
||||
.countrate_correction_enabled = true,
|
||||
.incident_energy = 12400,
|
||||
.incident_wavelength = 0.988,
|
||||
.frame_time = 0.0001,
|
||||
.count_time = 0.000098,
|
||||
.saturation_value = 65534,
|
||||
.error_value = 65535,
|
||||
.pixel_size_x = 0.000075,
|
||||
.pixel_size_y = 0.000075,
|
||||
.sensor_thickness = 0.0005,
|
||||
.sensor_material = "Si",
|
||||
.unit_cell = UnitCell{.a = 45, .b = 37, .c = 45, .alpha = 90, .beta = 108, . gamma = 120},
|
||||
.space_group_number = 154,
|
||||
.max_spot_count = 250,
|
||||
.storage_cell_number = 16,
|
||||
.storage_cell_delay_ns = 15345,
|
||||
.pixel_mask_enabled = true,
|
||||
.arm_date = "abc",
|
||||
.sample_name = "lyso",
|
||||
.file_prefix = "lyso1/dir/file",
|
||||
.images_per_file = 12345,
|
||||
.channels = {"default", "sc2"},
|
||||
.detector_description = "EIGER 16M",
|
||||
.detector_serial_number = "123",
|
||||
.run_name = "bla",
|
||||
.run_number = 4567,
|
||||
.gain_file_names = {"abc", "def", "/dsadasdsa/dadsadas/dsadsa/M056.bin"},
|
||||
.detector_translation = {0.5f, 0.0f, 0.5f},
|
||||
.source_type = "Synchrotron X-ray Source",
|
||||
.source_name = "Swiss Light Source",
|
||||
.instrument_name = "X06SA",
|
||||
.summation = 567,
|
||||
.az_int_bin_to_q = {0.1, 0.2, 0.3, 0.5},
|
||||
.az_int_q_bin_count = 35,
|
||||
.az_int_phi_bin_count = 120,
|
||||
.total_flux = 123,
|
||||
.attenuator_transmission = 0.345,
|
||||
.write_master_file = true,
|
||||
.user_data = R"({"pi":3.1415, "z":"string"})"_json,
|
||||
.data_reduction_factor_serialmx = 0.75,
|
||||
.experiment_group = "p10001",
|
||||
.jfjoch_release = "1.4.98",
|
||||
.socket_number = 3,
|
||||
.writer_notification_zmq_addr = "tcp://1.2.3.4:5678",
|
||||
.jungfrau_conversion_enabled = true,
|
||||
.jungfrau_conversion_factor = 17.56f,
|
||||
.geometry_transformation_enabled = false,
|
||||
.overwrite = true,
|
||||
.file_format = FileWriterFormat::NXmxVDS,
|
||||
.ring_current_mA = 123,
|
||||
.sample_temperature_K = 345,
|
||||
.indexing_algorithm = IndexingAlgorithmEnum::FFT
|
||||
};
|
||||
|
||||
REQUIRE_NOTHROW(serializer.SerializeSequenceStart(message));
|
||||
@@ -136,9 +136,9 @@ TEST_CASE("CBORSerialize_Start", "[CBOR]") {
|
||||
CHECK(output_message.unit_cell->beta == message.unit_cell->beta);
|
||||
CHECK(output_message.unit_cell->gamma == message.unit_cell->gamma);
|
||||
|
||||
REQUIRE (output_message.total_flux);
|
||||
REQUIRE(output_message.total_flux);
|
||||
CHECK(output_message.total_flux.value() == message.total_flux.value());
|
||||
REQUIRE (output_message.attenuator_transmission);
|
||||
REQUIRE(output_message.attenuator_transmission);
|
||||
CHECK(output_message.attenuator_transmission.value() == message.attenuator_transmission.value());
|
||||
CHECK(output_message.user_data == message.user_data);
|
||||
REQUIRE(output_message.user_data.is_object());
|
||||
@@ -164,14 +164,14 @@ TEST_CASE("CBORSerialize_Start", "[CBOR]") {
|
||||
}
|
||||
|
||||
TEST_CASE("CBORSerialize_Start_GoniometerAxis", "[CBOR]") {
|
||||
GoniometerAxis axis("z", 115, 0.456, {1,2,3}, Coord{50,20,30});
|
||||
GoniometerAxis axis("z", 115, 0.456, {1, 2, 3}, Coord{50, 20, 30});
|
||||
axis.ScreeningWedge(0.01);
|
||||
|
||||
StartMessage message{
|
||||
.goniometer = axis
|
||||
};
|
||||
|
||||
std::vector<uint8_t> buffer(8*1024*1024);
|
||||
std::vector<uint8_t> buffer(8 * 1024 * 1024);
|
||||
CBORStream2Serializer serializer(buffer.data(), buffer.size());
|
||||
REQUIRE_NOTHROW(serializer.SerializeSequenceStart(message));
|
||||
|
||||
@@ -199,7 +199,7 @@ TEST_CASE("CBORSerialize_Start_GridScan", "[CBOR]") {
|
||||
StartMessage message{
|
||||
.grid_scan = grid
|
||||
};
|
||||
std::vector<uint8_t> buffer(8*1024*1024);
|
||||
std::vector<uint8_t> buffer(8 * 1024 * 1024);
|
||||
CBORStream2Serializer serializer(buffer.data(), buffer.size());
|
||||
REQUIRE_NOTHROW(serializer.SerializeSequenceStart(message));
|
||||
|
||||
@@ -217,8 +217,9 @@ TEST_CASE("CBORSerialize_Start_GridScan", "[CBOR]") {
|
||||
CHECK(output_message.grid_scan->GetGridElemFast_um() == Catch::Approx(grid.GetGridElemFast_um()));
|
||||
CHECK(output_message.grid_scan->GetGridElemSlow_um() == Catch::Approx(grid.GetGridElemSlow_um()));
|
||||
}
|
||||
|
||||
TEST_CASE("CBORSerialize_Start_ThresholdEnergy", "[CBOR]") {
|
||||
std::vector<uint8_t> buffer(8*1024*1024);
|
||||
std::vector<uint8_t> buffer(8 * 1024 * 1024);
|
||||
CBORStream2Serializer serializer(buffer.data(), buffer.size());
|
||||
|
||||
StartMessage message{};
|
||||
@@ -237,7 +238,7 @@ TEST_CASE("CBORSerialize_Start_ThresholdEnergy", "[CBOR]") {
|
||||
}
|
||||
|
||||
TEST_CASE("CBORSerialize_Start_Fluorescence", "[CBOR]") {
|
||||
std::vector<uint8_t> buffer(8*1024*1024);
|
||||
std::vector<uint8_t> buffer(8 * 1024 * 1024);
|
||||
CBORStream2Serializer serializer(buffer.data(), buffer.size());
|
||||
|
||||
StartMessage message{};
|
||||
@@ -260,39 +261,39 @@ TEST_CASE("CBORSerialize_Start_Fluorescence", "[CBOR]") {
|
||||
}
|
||||
|
||||
TEST_CASE("CBORSerialize_ROI", "[CBOR]") {
|
||||
std::vector<uint8_t> buffer(8*1024*1024);
|
||||
std::vector<uint8_t> buffer(8 * 1024 * 1024);
|
||||
CBORStream2Serializer serializer(buffer.data(), buffer.size());
|
||||
|
||||
StartMessage message {
|
||||
.rois = {
|
||||
ROIConfig{
|
||||
.type = ROIConfig::ROIType::Circle,
|
||||
.name = "roi1",
|
||||
.circle = ROIConfigCircle{
|
||||
.r = 3.0,
|
||||
.x = 5.0,
|
||||
.y = 4.0
|
||||
}
|
||||
},
|
||||
ROIConfig{
|
||||
.type = ROIConfig::ROIType::Box,
|
||||
.name = "roi2",
|
||||
.box = ROIConfigBox{
|
||||
.xmin = 5,
|
||||
.xmax = 12,
|
||||
.ymin = 7,
|
||||
.ymax = 3
|
||||
}
|
||||
},
|
||||
ROIConfig{
|
||||
.type = ROIConfig::ROIType::Azim,
|
||||
.name = "roi3",
|
||||
.azim = ROIConfigAzim{
|
||||
.qmin = 4.0,
|
||||
.qmax = 5.0
|
||||
}
|
||||
}
|
||||
StartMessage message{
|
||||
.rois = {
|
||||
ROIConfig{
|
||||
.type = ROIConfig::ROIType::Circle,
|
||||
.name = "roi1",
|
||||
.circle = ROIConfigCircle{
|
||||
.r = 3.0,
|
||||
.x = 5.0,
|
||||
.y = 4.0
|
||||
}
|
||||
},
|
||||
ROIConfig{
|
||||
.type = ROIConfig::ROIType::Box,
|
||||
.name = "roi2",
|
||||
.box = ROIConfigBox{
|
||||
.xmin = 5,
|
||||
.xmax = 12,
|
||||
.ymin = 7,
|
||||
.ymax = 3
|
||||
}
|
||||
},
|
||||
ROIConfig{
|
||||
.type = ROIConfig::ROIType::Azim,
|
||||
.name = "roi3",
|
||||
.azim = ROIConfigAzim{
|
||||
.qmin = 4.0,
|
||||
.qmax = 5.0
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
REQUIRE_NOTHROW(serializer.SerializeSequenceStart(message));
|
||||
@@ -317,17 +318,17 @@ TEST_CASE("CBORSerialize_ROI", "[CBOR]") {
|
||||
CHECK(output_message.rois[1].box.ymin == message.rois[1].box.ymin);
|
||||
CHECK(output_message.rois[1].box.ymax == message.rois[1].box.ymax);
|
||||
|
||||
CHECK(output_message.rois[2].azim.qmin == message.rois[2].azim.qmin );
|
||||
CHECK(output_message.rois[2].azim.qmax == message.rois[2].azim.qmax );
|
||||
CHECK(output_message.rois[2].azim.qmin == message.rois[2].azim.qmin);
|
||||
CHECK(output_message.rois[2].azim.qmax == message.rois[2].azim.qmax);
|
||||
}
|
||||
|
||||
TEST_CASE("CBORSerialize_Start_EmptyString", "[CBOR]") {
|
||||
std::vector<uint8_t> buffer(8*1024*1024);
|
||||
std::vector<uint8_t> buffer(8 * 1024 * 1024);
|
||||
CBORStream2Serializer serializer(buffer.data(), buffer.size());
|
||||
|
||||
StartMessage message {
|
||||
.sample_name = "",
|
||||
.file_prefix = ""
|
||||
StartMessage message{
|
||||
.sample_name = "",
|
||||
.file_prefix = ""
|
||||
};
|
||||
|
||||
REQUIRE_NOTHROW(serializer.SerializeSequenceStart(message));
|
||||
@@ -343,16 +344,16 @@ TEST_CASE("CBORSerialize_Start_EmptyString", "[CBOR]") {
|
||||
}
|
||||
|
||||
TEST_CASE("CBORSerialize_Start_PixelMask", "[CBOR]") {
|
||||
std::vector<uint8_t> buffer(8*1024*1024);
|
||||
std::vector<uint8_t> buffer(8 * 1024 * 1024);
|
||||
CBORStream2Serializer serializer(buffer.data(), buffer.size());
|
||||
|
||||
std::vector<uint32_t> mask_0(456*457, 15);
|
||||
std::vector<uint32_t> mask_1(456*457, 12);
|
||||
std::vector<uint32_t> mask_0(456 * 457, 15);
|
||||
std::vector<uint32_t> mask_1(456 * 457, 12);
|
||||
|
||||
StartMessage message {
|
||||
StartMessage message{
|
||||
.image_size_x = 456,
|
||||
.image_size_y = 457,
|
||||
.pixel_mask = {{"default" , mask_0}, {"mask_1" , mask_1}}
|
||||
.pixel_mask = {{"default", mask_0}, {"mask_1", mask_1}}
|
||||
};
|
||||
|
||||
REQUIRE_NOTHROW(serializer.SerializeSequenceStart(message));
|
||||
@@ -374,7 +375,7 @@ TEST_CASE("CBORSerialize_Start_PixelMask", "[CBOR]") {
|
||||
}
|
||||
|
||||
TEST_CASE("CBORSerialize_Calibration", "[CBOR]") {
|
||||
std::vector<uint8_t> buffer(8*1024*1024);
|
||||
std::vector<uint8_t> buffer(8 * 1024 * 1024);
|
||||
CBORStream2Serializer serializer(buffer.data(), buffer.size());
|
||||
|
||||
std::vector<float> calib1(256);
|
||||
@@ -402,18 +403,24 @@ TEST_CASE("CBORSerialize_Calibration", "[CBOR]") {
|
||||
}
|
||||
|
||||
TEST_CASE("CBORSerialize_End", "[CBOR]") {
|
||||
std::vector<uint8_t> buffer(8*1024*1024);
|
||||
std::vector<uint8_t> buffer(8 * 1024 * 1024);
|
||||
CBORStream2Serializer serializer(buffer.data(), buffer.size());
|
||||
|
||||
EndMessage message {
|
||||
.max_image_number = 57789,
|
||||
.images_collected_count = 50000,
|
||||
.images_sent_to_write_count = 40000,
|
||||
.max_receiver_delay = 3456,
|
||||
.efficiency = 0.99,
|
||||
.end_date = "ccc",
|
||||
.run_name = "bla5",
|
||||
.run_number = 45676782
|
||||
EndMessage message{
|
||||
.max_image_number = 57789,
|
||||
.images_collected_count = 50000,
|
||||
.images_sent_to_write_count = 40000,
|
||||
.max_receiver_delay = 3456,
|
||||
.efficiency = 0.99,
|
||||
.end_date = "ccc",
|
||||
.run_name = "bla5",
|
||||
.run_number = 45676782,
|
||||
.rotation_lattice_type = LatticeMessage{
|
||||
.centering = 'R',
|
||||
.niggli_class = 22,
|
||||
.crystal_system = gemmi::CrystalSystem::Tetragonal,
|
||||
},
|
||||
.rotation_lattice = CrystalLattice(40, 50, 60, 90, 90, 90)
|
||||
};
|
||||
|
||||
REQUIRE_NOTHROW(serializer.SerializeSequenceEnd(message));
|
||||
@@ -434,19 +441,26 @@ TEST_CASE("CBORSerialize_End", "[CBOR]") {
|
||||
REQUIRE(output_message.run_number == message.run_number);
|
||||
REQUIRE(output_message.run_name == message.run_name);
|
||||
REQUIRE(output_message.az_int_result.empty());
|
||||
|
||||
REQUIRE(output_message.rotation_lattice_type.has_value());
|
||||
CHECK(output_message.rotation_lattice_type->centering == 'R');
|
||||
CHECK(output_message.rotation_lattice_type->crystal_system == gemmi::CrystalSystem::Tetragonal);
|
||||
CHECK(output_message.rotation_lattice_type->niggli_class == 22);
|
||||
REQUIRE(output_message.rotation_lattice.has_value());
|
||||
CHECK(output_message.rotation_lattice->GetUnitCell().c == Catch::Approx(60.0));
|
||||
}
|
||||
|
||||
TEST_CASE("CBORSerialize_End_RadIntResult", "[CBOR]") {
|
||||
std::vector<uint8_t> buffer(8*1024*1024);
|
||||
std::vector<uint8_t> buffer(8 * 1024 * 1024);
|
||||
CBORStream2Serializer serializer(buffer.data(), buffer.size());
|
||||
|
||||
EndMessage message {
|
||||
.max_image_number = 57789,
|
||||
.max_receiver_delay = 3456,
|
||||
.efficiency = 0.99,
|
||||
.end_date = "ccc",
|
||||
.run_name = "bla5",
|
||||
.run_number = 45676782
|
||||
EndMessage message{
|
||||
.max_image_number = 57789,
|
||||
.max_receiver_delay = 3456,
|
||||
.efficiency = 0.99,
|
||||
.end_date = "ccc",
|
||||
.run_name = "bla5",
|
||||
.run_number = 45676782
|
||||
};
|
||||
|
||||
message.az_int_result["avg"] = {11.0, 12.0, 13.0};
|
||||
@@ -467,17 +481,17 @@ TEST_CASE("CBORSerialize_End_RadIntResult", "[CBOR]") {
|
||||
}
|
||||
|
||||
TEST_CASE("CBORSerialize_End_ADUHistogram", "[CBOR]") {
|
||||
std::vector<uint8_t> buffer(8*1024*1024);
|
||||
std::vector<uint8_t> buffer(8 * 1024 * 1024);
|
||||
CBORStream2Serializer serializer(buffer.data(), buffer.size());
|
||||
|
||||
EndMessage message {
|
||||
.max_image_number = 57789,
|
||||
.max_receiver_delay = 3456,
|
||||
.efficiency = 0.99,
|
||||
.end_date = "ccc",
|
||||
.run_name = "bla5",
|
||||
.run_number = 45676782,
|
||||
.adu_histogram_bin_width = 55
|
||||
EndMessage message{
|
||||
.max_image_number = 57789,
|
||||
.max_receiver_delay = 3456,
|
||||
.efficiency = 0.99,
|
||||
.end_date = "ccc",
|
||||
.run_name = "bla5",
|
||||
.run_number = 45676782,
|
||||
.adu_histogram_bin_width = 55
|
||||
};
|
||||
|
||||
message.adu_histogram["avg"] = {11, 12, 13};
|
||||
@@ -500,7 +514,7 @@ TEST_CASE("CBORSerialize_End_ADUHistogram", "[CBOR]") {
|
||||
}
|
||||
|
||||
TEST_CASE("CBORSerialize_Image", "[CBOR]") {
|
||||
std::vector<uint8_t> buffer(8*1024*1024);
|
||||
std::vector<uint8_t> buffer(8 * 1024 * 1024);
|
||||
CBORStream2Serializer serializer(buffer.data(), buffer.size());
|
||||
|
||||
std::vector<SpotToSave> spots;
|
||||
@@ -511,32 +525,32 @@ TEST_CASE("CBORSerialize_Image", "[CBOR]") {
|
||||
|
||||
CompressedImage image(test, 256, 2);
|
||||
|
||||
DataMessage message {
|
||||
.number = 456,
|
||||
.image = image,
|
||||
.image_collection_efficiency = 0.11,
|
||||
.spots = spots,
|
||||
.spot_count_ice_rings = 157,
|
||||
.bkg_estimate = 12.345f,
|
||||
.indexing_result = true,
|
||||
.indexing_unit_cell = UnitCell{.a = 123, .b = 145, .c=67.5, .alpha = 90, .beta = 120, .gamma = 134},
|
||||
.adu_histogram = {3, 4, 5, 8},
|
||||
.timestamp = 1ul<<27 | 1ul <<35,
|
||||
.exptime = 1000,
|
||||
.run_name = "bla2",
|
||||
.run_number = 4567678,
|
||||
.saturated_pixel_count = 378,
|
||||
.error_pixel_count = 123,
|
||||
.strong_pixel_count = 1234,
|
||||
.min_viable_pixel_value = 123,
|
||||
.max_viable_pixel_value = 6789,
|
||||
.user_data = R"({"pi":3.1415, "z":"string"})"_json,
|
||||
.jf_info = UINT32_MAX,
|
||||
.receiver_aq_dev_delay = 2323,
|
||||
.storage_cell = 0xF,
|
||||
.xfel_pulse_id = UINT64_MAX - 5678,
|
||||
.xfel_event_code = UINT64_MAX - 123,
|
||||
.original_number = 12789
|
||||
DataMessage message{
|
||||
.number = 456,
|
||||
.image = image,
|
||||
.image_collection_efficiency = 0.11,
|
||||
.spots = spots,
|
||||
.spot_count_ice_rings = 157,
|
||||
.bkg_estimate = 12.345f,
|
||||
.indexing_result = true,
|
||||
.indexing_unit_cell = UnitCell{.a = 123, .b = 145, .c = 67.5, .alpha = 90, .beta = 120, .gamma = 134},
|
||||
.adu_histogram = {3, 4, 5, 8},
|
||||
.timestamp = 1ul << 27 | 1ul << 35,
|
||||
.exptime = 1000,
|
||||
.run_name = "bla2",
|
||||
.run_number = 4567678,
|
||||
.saturated_pixel_count = 378,
|
||||
.error_pixel_count = 123,
|
||||
.strong_pixel_count = 1234,
|
||||
.min_viable_pixel_value = 123,
|
||||
.max_viable_pixel_value = 6789,
|
||||
.user_data = R"({"pi":3.1415, "z":"string"})"_json,
|
||||
.jf_info = UINT32_MAX,
|
||||
.receiver_aq_dev_delay = 2323,
|
||||
.storage_cell = 0xF,
|
||||
.xfel_pulse_id = UINT64_MAX - 5678,
|
||||
.xfel_event_code = UINT64_MAX - 123,
|
||||
.original_number = 12789
|
||||
};
|
||||
|
||||
REQUIRE_NOTHROW(serializer.SerializeImage(message));
|
||||
@@ -588,7 +602,7 @@ TEST_CASE("CBORSerialize_Image", "[CBOR]") {
|
||||
}
|
||||
|
||||
TEST_CASE("CBORSerialize_Image_CrystalLattice", "[CBOR]") {
|
||||
std::vector<uint8_t> buffer(8*1024*1024);
|
||||
std::vector<uint8_t> buffer(8 * 1024 * 1024);
|
||||
CBORStream2Serializer serializer(buffer.data(), buffer.size());
|
||||
|
||||
std::vector<SpotToSave> spots;
|
||||
@@ -599,10 +613,10 @@ TEST_CASE("CBORSerialize_Image_CrystalLattice", "[CBOR]") {
|
||||
|
||||
CompressedImage image(test, 256, 2);
|
||||
|
||||
std::vector<float> latt = {1,2,3,4,5,6,7,8,9};
|
||||
DataMessage message {
|
||||
.image = image,
|
||||
.indexing_lattice = CrystalLattice(latt)
|
||||
std::vector<float> latt = {1, 2, 3, 4, 5, 6, 7, 8, 9};
|
||||
DataMessage message{
|
||||
.image = image,
|
||||
.indexing_lattice = CrystalLattice(latt)
|
||||
};
|
||||
|
||||
REQUIRE_NOTHROW(serializer.SerializeImage(message));
|
||||
@@ -617,22 +631,22 @@ TEST_CASE("CBORSerialize_Image_CrystalLattice", "[CBOR]") {
|
||||
}
|
||||
|
||||
TEST_CASE("CBORSerialize_Image_2", "[CBOR]") {
|
||||
std::vector<uint8_t> buffer(8*1024*1024);
|
||||
std::vector<uint8_t> buffer(8 * 1024 * 1024);
|
||||
CBORStream2Serializer serializer(buffer.data(), buffer.size());
|
||||
|
||||
std::vector<SpotToSave> spots;
|
||||
|
||||
std::vector<uint8_t> test(512*1024);
|
||||
std::vector<uint8_t> test(512 * 1024);
|
||||
for (int i = 0; i < test.size(); i++)
|
||||
test[i] = (i * 253 + 56) % 256;
|
||||
|
||||
CompressedImage image(test, 1024, 512);
|
||||
|
||||
DataMessage message {
|
||||
.number = 480,
|
||||
.image = image,
|
||||
.spots = spots,
|
||||
.indexing_result = true
|
||||
DataMessage message{
|
||||
.number = 480,
|
||||
.image = image,
|
||||
.spots = spots,
|
||||
.indexing_result = true
|
||||
};
|
||||
|
||||
REQUIRE_NOTHROW(serializer.SerializeImage(message));
|
||||
@@ -656,22 +670,22 @@ TEST_CASE("CBORSerialize_Image_2", "[CBOR]") {
|
||||
}
|
||||
|
||||
TEST_CASE("CBORSerialize_Image_Float", "[CBOR]") {
|
||||
std::vector<uint8_t> buffer(8*1024*1024);
|
||||
std::vector<uint8_t> buffer(8 * 1024 * 1024);
|
||||
CBORStream2Serializer serializer(buffer.data(), buffer.size());
|
||||
|
||||
std::vector<SpotToSave> spots;
|
||||
|
||||
std::vector<float> test(512*1024);
|
||||
std::vector<float> test(512 * 1024);
|
||||
for (int i = 0; i < test.size(); i++)
|
||||
test[i] = i * 0.1f;
|
||||
|
||||
CompressedImage image(test, 1024, 512);
|
||||
|
||||
DataMessage message {
|
||||
.number = 480,
|
||||
.image = image,
|
||||
.spots = spots,
|
||||
.indexing_result = false
|
||||
DataMessage message{
|
||||
.number = 480,
|
||||
.image = image,
|
||||
.spots = spots,
|
||||
.indexing_result = false
|
||||
};
|
||||
|
||||
REQUIRE_NOTHROW(serializer.SerializeImage(message));
|
||||
@@ -694,12 +708,12 @@ TEST_CASE("CBORSerialize_Image_Float", "[CBOR]") {
|
||||
}
|
||||
|
||||
TEST_CASE("CBORSerialize_Image_Rgb", "[CBOR]") {
|
||||
std::vector<uint8_t> buffer(8*1024*1024);
|
||||
std::vector<uint8_t> buffer(8 * 1024 * 1024);
|
||||
CBORStream2Serializer serializer(buffer.data(), buffer.size());
|
||||
|
||||
std::vector<SpotToSave> spots;
|
||||
|
||||
std::vector<rgb> test(512*1024);
|
||||
std::vector<rgb> test(512 * 1024);
|
||||
for (int i = 0; i < test.size(); i++) {
|
||||
test[i].r = (i / 256) % 256;
|
||||
test[i].g = i % 256;
|
||||
@@ -708,11 +722,11 @@ TEST_CASE("CBORSerialize_Image_Rgb", "[CBOR]") {
|
||||
|
||||
CompressedImage image(test, 1024, 512);
|
||||
|
||||
DataMessage message {
|
||||
.number = 480,
|
||||
.image = image,
|
||||
.spots = spots,
|
||||
.indexing_result = false
|
||||
DataMessage message{
|
||||
.number = 480,
|
||||
.image = image,
|
||||
.spots = spots,
|
||||
.indexing_result = false
|
||||
};
|
||||
|
||||
REQUIRE_NOTHROW(serializer.SerializeImage(message));
|
||||
@@ -735,7 +749,7 @@ TEST_CASE("CBORSerialize_Image_Rgb", "[CBOR]") {
|
||||
}
|
||||
|
||||
TEST_CASE("CBORSerialize_Image_Compressed", "[CBOR]") {
|
||||
std::vector<uint8_t> buffer(8*1024*1024);
|
||||
std::vector<uint8_t> buffer(8 * 1024 * 1024);
|
||||
CBORStream2Serializer serializer(buffer.data(), buffer.size());
|
||||
|
||||
std::vector<SpotToSave> spots;
|
||||
@@ -746,10 +760,10 @@ TEST_CASE("CBORSerialize_Image_Compressed", "[CBOR]") {
|
||||
|
||||
CompressedImage image(test, 256, 2, CompressedImageMode::Int32, CompressionAlgorithm::BSHUF_LZ4);
|
||||
|
||||
DataMessage message {
|
||||
.number = 456,
|
||||
.image = image,
|
||||
.spots = spots
|
||||
DataMessage message{
|
||||
.number = 456,
|
||||
.image = image,
|
||||
.spots = spots
|
||||
};
|
||||
|
||||
REQUIRE_NOTHROW(serializer.SerializeImage(message));
|
||||
@@ -781,9 +795,9 @@ TEST_CASE("CBORSerialize_Image_Rad_Int_Profile", "[CBOR]") {
|
||||
CompressedImage image(test, 256, 2);
|
||||
|
||||
DataMessage message{
|
||||
.number = 789,
|
||||
.image = image,
|
||||
.az_int_profile = {4.0, 5.0, 7.0, 12.0, 13.25, 0.125}
|
||||
.number = 789,
|
||||
.image = image,
|
||||
.az_int_profile = {4.0, 5.0, 7.0, 12.0, 13.25, 0.125}
|
||||
};
|
||||
|
||||
REQUIRE_NOTHROW(serializer.SerializeImage(message));
|
||||
@@ -802,7 +816,7 @@ TEST_CASE("CBORSerialize_Image_Rad_Int_Profile", "[CBOR]") {
|
||||
}
|
||||
|
||||
TEST_CASE("CBORSerialize_Image_Spots", "[CBOR]") {
|
||||
std::vector<uint8_t> buffer(8*1024*1024);
|
||||
std::vector<uint8_t> buffer(8 * 1024 * 1024);
|
||||
CBORStream2Serializer serializer(buffer.data(), buffer.size());
|
||||
|
||||
std::vector<SpotToSave> spots;
|
||||
@@ -815,10 +829,10 @@ TEST_CASE("CBORSerialize_Image_Spots", "[CBOR]") {
|
||||
|
||||
CompressedImage image(test, 256, 2);
|
||||
|
||||
DataMessage message {
|
||||
.number = 789,
|
||||
.image = image,
|
||||
.spots = spots
|
||||
DataMessage message{
|
||||
.number = 789,
|
||||
.image = image,
|
||||
.spots = spots
|
||||
};
|
||||
|
||||
REQUIRE_NOTHROW(serializer.SerializeImage(message));
|
||||
@@ -869,7 +883,7 @@ TEST_CASE("CBORSerialize_Image_Reflections") {
|
||||
|
||||
CompressedImage image(test, 256, 2);
|
||||
|
||||
DataMessage msg_in {
|
||||
DataMessage msg_in{
|
||||
.number = 789,
|
||||
.image = image,
|
||||
.reflections = refs_in
|
||||
@@ -890,8 +904,8 @@ TEST_CASE("CBORSerialize_Image_Reflections") {
|
||||
// Check reflections
|
||||
REQUIRE(msg_out.reflections.size() == refs_in.size());
|
||||
for (size_t i = 0; i < refs_in.size(); ++i) {
|
||||
const auto& a = refs_in[i];
|
||||
const auto& b = msg_out.reflections[i];
|
||||
const auto &a = refs_in[i];
|
||||
const auto &b = msg_out.reflections[i];
|
||||
|
||||
CHECK(a.h == b.h);
|
||||
CHECK(a.k == b.k);
|
||||
@@ -906,7 +920,7 @@ TEST_CASE("CBORSerialize_Image_Reflections") {
|
||||
|
||||
|
||||
TEST_CASE("CBORSerialize_Image_ROI", "[CBOR]") {
|
||||
std::vector<uint8_t> buffer(8*1024*1024);
|
||||
std::vector<uint8_t> buffer(8 * 1024 * 1024);
|
||||
CBORStream2Serializer serializer(buffer.data(), buffer.size());
|
||||
|
||||
std::vector<uint16_t> test(512);
|
||||
@@ -915,13 +929,17 @@ TEST_CASE("CBORSerialize_Image_ROI", "[CBOR]") {
|
||||
|
||||
CompressedImage image(test, 256, 2);
|
||||
|
||||
DataMessage message {
|
||||
.number = 789,
|
||||
.image = image,
|
||||
DataMessage message{
|
||||
.number = 789,
|
||||
.image = image,
|
||||
};
|
||||
|
||||
message.roi["roi0"] = {.sum = -876, .sum_square = 89998, .max_count = -1, .pixels = 4567, .x_weighted = 123, .y_weighted = 122};
|
||||
message.roi["roi1"] = {.sum = 876, .sum_square = 998, .max_count = 12, .pixels = 234, .x_weighted = -11222233443123LL, .y_weighted = -5};
|
||||
message.roi["roi0"] = {
|
||||
.sum = -876, .sum_square = 89998, .max_count = -1, .pixels = 4567, .x_weighted = 123, .y_weighted = 122
|
||||
};
|
||||
message.roi["roi1"] = {
|
||||
.sum = 876, .sum_square = 998, .max_count = 12, .pixels = 234, .x_weighted = -11222233443123LL, .y_weighted = -5
|
||||
};
|
||||
|
||||
REQUIRE_NOTHROW(serializer.SerializeImage(message));
|
||||
|
||||
@@ -953,7 +971,7 @@ TEST_CASE("CBORSerialize_Image_ROI", "[CBOR]") {
|
||||
}
|
||||
|
||||
TEST_CASE("CBORSerialize_Image_Append", "[CBOR]") {
|
||||
std::vector<uint8_t> buffer(8*1024*1024);
|
||||
std::vector<uint8_t> buffer(8 * 1024 * 1024);
|
||||
CBORStream2Serializer serializer(buffer.data(), buffer.size());
|
||||
|
||||
std::vector<uint8_t> test(512 * 1024);
|
||||
@@ -963,8 +981,8 @@ TEST_CASE("CBORSerialize_Image_Append", "[CBOR]") {
|
||||
CompressedImage image(nullptr, 0, 1024, 512, CompressedImageMode::Uint8, CompressionAlgorithm::BSHUF_LZ4);
|
||||
|
||||
DataMessage message{
|
||||
.number = 480,
|
||||
.image = image
|
||||
.number = 480,
|
||||
.image = image
|
||||
};
|
||||
|
||||
REQUIRE_NOTHROW(serializer.SerializeImage(message));
|
||||
@@ -997,7 +1015,7 @@ TEST_CASE("CBORSerialize_Metadata", "[CBOR]") {
|
||||
msgs.images.push_back(DataMessage{.number = 173, .image = image, .bkg_estimate = 48});
|
||||
//msgs.push_back(DataMessage{.number = 174, .image = CompressedImage{.GetWidth() = 123, .GetHeight() = 145}, .bkg_estimate = 48});
|
||||
|
||||
std::vector<uint8_t> buffer(8*1024*1024);
|
||||
std::vector<uint8_t> buffer(8 * 1024 * 1024);
|
||||
CBORStream2Serializer serializer(buffer.data(), buffer.size());
|
||||
|
||||
REQUIRE_NOTHROW(serializer.SerializeMetadata(msgs));
|
||||
@@ -1073,24 +1091,24 @@ TEST_CASE("CBORSerialize_Image_LatticeType", "[CBOR][Lattice]") {
|
||||
char ctr;
|
||||
};
|
||||
std::vector<Case> cases = {
|
||||
{gemmi::CrystalSystem::Triclinic, 'P'},
|
||||
{gemmi::CrystalSystem::Monoclinic, 'C'},
|
||||
{gemmi::CrystalSystem::Triclinic, 'P'},
|
||||
{gemmi::CrystalSystem::Monoclinic, 'C'},
|
||||
{gemmi::CrystalSystem::Orthorhombic, 'F'},
|
||||
{gemmi::CrystalSystem::Orthorhombic, 'A'},
|
||||
{gemmi::CrystalSystem::Tetragonal, 'P'},
|
||||
{gemmi::CrystalSystem::Trigonal, 'R'},
|
||||
{gemmi::CrystalSystem::Hexagonal, 'P'},
|
||||
{gemmi::CrystalSystem::Cubic, 'I'},
|
||||
{gemmi::CrystalSystem::Tetragonal, 'P'},
|
||||
{gemmi::CrystalSystem::Trigonal, 'R'},
|
||||
{gemmi::CrystalSystem::Hexagonal, 'P'},
|
||||
{gemmi::CrystalSystem::Cubic, 'I'},
|
||||
};
|
||||
|
||||
int i = 0;
|
||||
for (const auto& c : cases) {
|
||||
for (const auto &c: cases) {
|
||||
CBORStream2Serializer ser(buffer.data(), buffer.size());
|
||||
DataMessage m{
|
||||
.number = 3,
|
||||
.image = img
|
||||
};
|
||||
m.lattice_type = LatticeMessage{ .centering = c.ctr, .niggli_class = i, .crystal_system = c.cs };
|
||||
m.lattice_type = LatticeMessage{.centering = c.ctr, .niggli_class = i, .crystal_system = c.cs};
|
||||
REQUIRE_NOTHROW(ser.SerializeImage(m));
|
||||
auto d = CBORStream2Deserialize(buffer.data(), ser.GetBufferSize());
|
||||
REQUIRE(d);
|
||||
|
||||
Reference in New Issue
Block a user