v1.0.0-rc.107 (#12)
All checks were successful
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 7m33s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 8m46s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 7m19s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 7m50s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 9m8s
Build Packages / Generate python client (push) Successful in 17s
Build Packages / Build documentation (push) Successful in 43s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (rocky8) (push) Successful in 8m25s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 7m39s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 8m13s
Build Packages / build:rpm (rocky9) (push) Successful in 9m33s
Build Packages / Unit tests (push) Successful in 1h14m4s

This is an UNSTABLE release.

* jfjoch_viewer: Minor polishing of new functionality
* jfjoch_broker: User NaN for empty azimuthal bins

Reviewed-on: #12
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 #12.
This commit is contained in:
2025-11-24 07:07:32 +01:00
committed by leonarski_f
parent ddcc24fba8
commit f44c6520a8
155 changed files with 344 additions and 228 deletions

View File

@@ -47,7 +47,7 @@ inline std::string to_bravais_code(const std::optional<LatticeMessage> &lm_opt)
}
HDF5DataFilePluginMX::HDF5DataFilePluginMX(const StartMessage &msg)
: max_spots(msg.max_spot_count) {
: max_spots(msg.max_spot_count), indexing(msg.indexing_algorithm != IndexingAlgorithmEnum::None) {
}
void HDF5DataFilePluginMX::OpenFile(HDF5File &data_file, const DataMessage &msg) {
@@ -96,14 +96,16 @@ void HDF5DataFilePluginMX::Write(const DataMessage &msg, uint64_t image_number)
spot_x.resize(max_spots * (max_image_number + 1));
spot_y.resize(max_spots * (max_image_number + 1));
spot_int.resize(max_spots * (max_image_number + 1));
spot_indexed.resize(max_spots * (max_image_number + 1));
spot_ice_ring.resize(max_spots * (max_image_number + 1));
spot_h.resize(max_spots * (max_image_number + 1));
spot_k.resize(max_spots * (max_image_number + 1));
spot_l.resize(max_spots * (max_image_number + 1));
spot_dist_ewald.resize(max_spots * (max_image_number + 1));
indexed_lattice.resize((max_image_number + 1) * 9);
if (indexing)
spot_indexed.resize(max_spots * (max_image_number + 1));
if (indexing)
indexed_lattice.resize((max_image_number + 1) * 9);
}
uint32_t spot_cnt = std::min(msg.spots.size(), max_spots);
@@ -112,57 +114,48 @@ void HDF5DataFilePluginMX::Write(const DataMessage &msg, uint64_t image_number)
spot_x[max_spots * image_number + i] = msg.spots[i].x;
spot_y[max_spots * image_number + i] = msg.spots[i].y;
spot_int[max_spots * image_number + i] = msg.spots[i].intensity;
spot_indexed[max_spots * image_number + i] = msg.spots[i].indexed;
spot_ice_ring[max_spots * image_number + i] = msg.spots[i].ice_ring;
spot_h[max_spots * image_number + i] = msg.spots[i].h;
spot_k[max_spots * image_number + i] = msg.spots[i].k;
spot_l[max_spots * image_number + i] = msg.spots[i].l;
if (indexing) {
spot_indexed[max_spots * image_number + i] = msg.spots[i].indexed;
spot_h[max_spots * image_number + i] = msg.spots[i].h;
spot_k[max_spots * image_number + i] = msg.spots[i].k;
spot_l[max_spots * image_number + i] = msg.spots[i].l;
spot_dist_ewald[max_spots * image_number + i] = msg.spots[i].dist_ewald_sphere;
}
spot_ice_ring[max_spots * image_number + i] = msg.spots[i].ice_ring;
}
npeaks[image_number] = spot_cnt;
if (msg.strong_pixel_count.has_value())
strong_pixel_count[image_number] = msg.strong_pixel_count.value();
strong_pixel_count[image_number] = msg.strong_pixel_count.value_or(0);
spot_count_total[image_number] = msg.spot_count.value_or(0);
spot_count_ice[image_number] = msg.spot_count_ice_rings.value_or(0);
spot_count_low_res[image_number] = msg.spot_count_low_res.value_or(0);
if (msg.indexing_result.has_value())
indexed[image_number] = msg.indexing_result.value();
if (indexing) {
indexed[image_number] = msg.indexing_result.value_or(0);
profile_radius[image_number] = msg.profile_radius.value_or(NAN);
b_factor[image_number] = msg.b_factor.value_or(NAN);
resolution_estimate[image_number] = msg.resolution_estimate.value_or(NAN);
beam_corr_x[image_number] = msg.beam_corr_x.value_or(NAN);
beam_corr_y[image_number] = msg.beam_corr_y.value_or(NAN);
spot_count_indexed[image_number] = msg.spot_count_indexed.value_or(0);
if (msg.profile_radius.has_value())
profile_radius[image_number] = msg.profile_radius.value();
if (msg.indexing_lattice) {
auto tmp = msg.indexing_lattice->GetVector();
if (msg.b_factor.has_value())
b_factor[image_number] = msg.b_factor.value();
for (int i = 0; i < 9; i++)
indexed_lattice[image_number * 9 + i] = tmp[i];
} else {
for (int i = 0; i < 9; i++)
indexed_lattice[image_number * 9 + i] = NAN;
}
if (msg.resolution_estimate.has_value())
resolution_estimate[image_number] = msg.resolution_estimate.value();
if (msg.beam_corr_x)
beam_corr_x[image_number] = msg.beam_corr_x.value();
if (msg.beam_corr_y)
beam_corr_y[image_number] = msg.beam_corr_y.value();
if (msg.spot_count)
spot_count_total[image_number] = msg.spot_count.value();
if (msg.spot_count_ice_rings)
spot_count_ice[image_number] = msg.spot_count_ice_rings.value();
if (msg.spot_count_low_res)
spot_count_low_res[image_number] = msg.spot_count_low_res.value();
if (msg.spot_count_indexed)
spot_count_indexed[image_number] = msg.spot_count_indexed.value();
if (msg.indexing_lattice) {
auto tmp = msg.indexing_lattice->GetVector();
for (int i = 0; i < 9; i++)
indexed_lattice[image_number * 9 + i] = tmp[i];
}
if (msg.lattice_type) {
bravais_lattice[image_number] = to_bravais_code(msg.lattice_type);
niggli_class[image_number] = msg.lattice_type->niggli_class;
if (msg.lattice_type) {
bravais_lattice[image_number] = to_bravais_code(msg.lattice_type);
niggli_class[image_number] = msg.lattice_type->niggli_class;
} else {
bravais_lattice[image_number] = "";
niggli_class[image_number] = 0;
}
}
}
@@ -173,17 +166,20 @@ void HDF5DataFilePluginMX::WriteFinal(HDF5File &data_file) {
data_file.SaveVector("/entry/MX/peakXPosRaw", spot_x, {(hsize_t) (max_image_number + 1), max_spots});
data_file.SaveVector("/entry/MX/peakYPosRaw", spot_y, {(hsize_t) (max_image_number + 1), max_spots});
data_file.SaveVector("/entry/MX/peakTotalIntensity", spot_int, {(hsize_t) (max_image_number + 1), max_spots});
data_file.SaveVector("/entry/MX/peakIndexed", spot_indexed, {(hsize_t) (max_image_number + 1), max_spots});
data_file.SaveVector("/entry/MX/peakIceRingRes", spot_ice_ring, {(hsize_t) (max_image_number + 1), max_spots});
data_file.SaveVector("/entry/MX/nPeaks", npeaks.vec());
data_file.SaveVector("/entry/MX/peakH", spot_h, {(hsize_t) (max_image_number + 1), max_spots});
data_file.SaveVector("/entry/MX/peakK", spot_k, {(hsize_t) (max_image_number + 1), max_spots});
data_file.SaveVector("/entry/MX/peakL", spot_l, {(hsize_t) (max_image_number + 1), max_spots});
data_file.SaveVector("/entry/MX/peakDistEwaldSphere", spot_dist_ewald,
{(hsize_t) (max_image_number + 1), max_spots});
if (indexing) {
data_file.SaveVector("/entry/MX/peakH", spot_h, {(hsize_t) (max_image_number + 1), max_spots});
data_file.SaveVector("/entry/MX/peakK", spot_k, {(hsize_t) (max_image_number + 1), max_spots});
data_file.SaveVector("/entry/MX/peakL", spot_l, {(hsize_t) (max_image_number + 1), max_spots});
data_file.SaveVector("/entry/MX/peakDistEwaldSphere", spot_dist_ewald,
{(hsize_t) (max_image_number + 1), max_spots});
data_file.SaveVector("/entry/MX/peakIndexed", spot_indexed, {(hsize_t) (max_image_number + 1), max_spots});
}
}
if (!strong_pixel_count.empty())
data_file.SaveVector("/entry/MX/strongPixels", strong_pixel_count.vec());