JFJOchReader: Add ReadAllSpots option to handle reading just spot finding result
This commit is contained in:
@@ -2352,6 +2352,82 @@ TEST_CASE("JFJochReader_ReadSpots_VDS", "[HDF5][Full]") {
|
||||
REQUIRE(H5Fget_obj_count(H5F_OBJ_ALL, H5F_OBJ_ALL) == 0);
|
||||
}
|
||||
|
||||
TEST_CASE("JFJochReader_ReadAllSpots_VDS", "[HDF5][Full]") {
|
||||
DiffractionExperiment x(DetJF(1));
|
||||
|
||||
x.FilePrefix("read_spots_vds")
|
||||
.ImagesPerTrigger(20)
|
||||
.ImagesPerFile(3)
|
||||
.OverwriteExistingFiles(true)
|
||||
.BitDepthImage(16)
|
||||
.PixelSigned(true)
|
||||
.SetFileWriterFormat(FileWriterFormat::NXmxVDS)
|
||||
.IndexingAlgorithm(IndexingAlgorithmEnum::FFT)
|
||||
.Compression(CompressionAlgorithm::NO_COMPRESSION);
|
||||
|
||||
std::vector<int16_t> image(x.GetPixelsNum(), 0);
|
||||
|
||||
RegisterHDF5Filter();
|
||||
{
|
||||
StartMessage start_message;
|
||||
x.FillMessage(start_message);
|
||||
FileWriter file_set(start_message);
|
||||
|
||||
for (int i = 0; i < x.GetImageNum(); i++) {
|
||||
DataMessage message{};
|
||||
message.image = CompressedImage(image, x.GetXPixelsNum(), x.GetYPixelsNum());
|
||||
message.number = i;
|
||||
message.spots = MakeTestSpots(i);
|
||||
message.spot_count = 72 + i;
|
||||
message.spot_count_ice_rings = 45 + 2 * i;
|
||||
message.spot_count_low_res = 12 + 3 * i;
|
||||
message.spot_count_indexed = 15 + 4 * i;
|
||||
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("read_spots_vds_master.h5"));
|
||||
|
||||
std::shared_ptr<JFJochReaderSpots> ret;
|
||||
REQUIRE_NOTHROW(ret = reader.ReadAllSpots(1, 15, 2));
|
||||
|
||||
// 1,3,5,7,9,11,13,15
|
||||
REQUIRE(ret);
|
||||
REQUIRE(ret->start_image == 1);
|
||||
REQUIRE(ret->stride == 2);
|
||||
REQUIRE(ret->spots.size() == 8);
|
||||
|
||||
for (int i = 0; i < ret->spots.size(); i++) {
|
||||
REQUIRE(ret->spots[i].size() == 2);
|
||||
CheckSpotFields(ret->spots[i][0], ret->spots[i][1], 2 * i + 1);
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
JFJochHDF5Reader reader;
|
||||
REQUIRE_NOTHROW(reader.ReadFile("read_spots_vds_master.h5"));
|
||||
REQUIRE_THROWS(reader.ReadAllSpots(-5,0));
|
||||
REQUIRE_THROWS(reader.ReadAllSpots(5,0));
|
||||
}
|
||||
|
||||
remove("read_spots_vds_master.h5");
|
||||
remove("read_spots_vds_data_000001.h5");
|
||||
remove("read_spots_vds_data_000002.h5");
|
||||
remove("read_spots_vds_data_000003.h5");
|
||||
remove("read_spots_vds_data_000004.h5");
|
||||
|
||||
REQUIRE(H5Fget_obj_count(H5F_OBJ_ALL, H5F_OBJ_ALL) == 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
TEST_CASE("JFJochReader_ReadSpots_Integrated", "[HDF5][Full]") {
|
||||
DiffractionExperiment x(DetJF(1));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user