v1.0.0-rc.81
This commit is contained in:
@@ -859,8 +859,11 @@ TEST_CASE("JFJochReader_Spots_OldMasterFormat", "[HDF5][Full]") {
|
||||
message.image = CompressedImage(image, x.GetXPixelsNum(), x.GetYPixelsNum());
|
||||
message.spots = spots;
|
||||
message.indexing_result = (i % 2 == 0);
|
||||
message.number = i;
|
||||
|
||||
message.number = i;
|
||||
message.spot_count = 72;
|
||||
message.spot_count_ice_rings = 45;
|
||||
message.spot_count_low_res = 12;
|
||||
message.spot_count_indexed = 15;
|
||||
REQUIRE_NOTHROW(file_set.WriteHDF5(message));
|
||||
|
||||
}
|
||||
@@ -882,6 +885,10 @@ TEST_CASE("JFJochReader_Spots_OldMasterFormat", "[HDF5][Full]") {
|
||||
REQUIRE_NOTHROW(reader_image = reader.LoadImage(i));
|
||||
|
||||
REQUIRE(reader_image);
|
||||
CHECK(reader_image->ImageData().spot_count == 72);
|
||||
CHECK(reader_image->ImageData().spot_count_ice_rings == 45);
|
||||
CHECK(reader_image->ImageData().spot_count_low_res == 12);
|
||||
CHECK(reader_image->ImageData().spot_count_indexed == 15);
|
||||
REQUIRE(reader_image->ImageData().spots.size() == 2);
|
||||
CHECK(reader_image->ImageData().spots[0].x == 1);
|
||||
CHECK(reader_image->ImageData().spots[0].y == 2);
|
||||
@@ -993,4 +1000,70 @@ TEST_CASE("JFJochReader_Spots_VDS", "[HDF5][Full]") {
|
||||
|
||||
// No leftover HDF5 objects
|
||||
REQUIRE(H5Fget_obj_count(H5F_OBJ_ALL, H5F_OBJ_ALL) == 0);
|
||||
}
|
||||
|
||||
TEST_CASE("JFJochReader_InstrumentMetadata_Sample_RingCurrent", "[HDF5][Full]") {
|
||||
DiffractionExperiment x(DetJF(1));
|
||||
|
||||
// Set identifying names and ring current (mA in API; writer stores A)
|
||||
x.FilePrefix("test_meta").ImagesPerTrigger(0).OverwriteExistingFiles(true);
|
||||
|
||||
InstrumentMetadata metadata;
|
||||
metadata.InstrumentName("PXI").SourceName("SLS");
|
||||
x.ImportInstrumentMetadata(metadata).SampleName("Lysozyme").RingCurrent_mA(399.5); // 0.3995 A
|
||||
x.TotalFlux(1e7).AttenuatorTransmission(0.56);
|
||||
x.DetectIceRings(false);
|
||||
|
||||
// Minimal other required fields
|
||||
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));
|
||||
|
||||
// also set fluorescence spectrum
|
||||
x.FluorescenceSpectrum(XrayFluorescenceSpectrum({1.0f, 2.0f, 3.0f}, {5.0f, 7.0f, 6.0f}));
|
||||
|
||||
RegisterHDF5Filter();
|
||||
|
||||
{
|
||||
StartMessage start_message;
|
||||
x.FillMessage(start_message);
|
||||
|
||||
EndMessage end_message;
|
||||
end_message.max_image_number = 0;
|
||||
|
||||
std::unique_ptr<NXmx> master = std::make_unique<NXmx>(start_message);
|
||||
master->Finalize(end_message);
|
||||
master.reset();
|
||||
}
|
||||
{
|
||||
JFJochHDF5Reader reader;
|
||||
REQUIRE_NOTHROW(reader.ReadFile("test_meta_master.h5"));
|
||||
auto dataset = reader.GetDataset();
|
||||
|
||||
auto meta = dataset->experiment.GetInstrumentMetadata();
|
||||
CHECK(meta.GetInstrumentName() == "PXI");
|
||||
CHECK(meta.GetSourceName() == "SLS");
|
||||
|
||||
CHECK(dataset->experiment.GetAttenuatorTransmission() == Catch::Approx(0.56));
|
||||
CHECK(dataset->experiment.GetTotalFlux() == Catch::Approx(1e7));
|
||||
|
||||
// Sample name
|
||||
CHECK(dataset->experiment.GetSampleName() == "Lysozyme");
|
||||
|
||||
// Ring current read back in mA; allow small fp tolerance
|
||||
CHECK(dataset->experiment.GetRingCurrent_mA().has_value());
|
||||
CHECK(dataset->experiment.GetRingCurrent_mA().value() == Catch::Approx(399.5));
|
||||
|
||||
CHECK(!dataset->experiment.IsDetectIceRings());
|
||||
// Fluorescence spectrum presence and values
|
||||
REQUIRE(!dataset->experiment.GetFluorescenceSpectrum().empty());
|
||||
const auto& fl = dataset->experiment.GetFluorescenceSpectrum();
|
||||
CHECK(fl.GetEnergy_eV().size() == 3);
|
||||
CHECK(fl.GetData().size() == 3);
|
||||
CHECK(fl.GetEnergy_eV()[0] == Catch::Approx(1.0f));
|
||||
CHECK(fl.GetData()[1] == Catch::Approx(7.0f));
|
||||
}
|
||||
|
||||
remove("test_meta_master.h5");
|
||||
REQUIRE(H5Fget_obj_count(H5F_OBJ_ALL, H5F_OBJ_ALL) == 0);
|
||||
}
|
||||
Reference in New Issue
Block a user