v1.0.0-rc.148 (#58)
Build Packages / Unit tests (push) Skipped
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 9m28s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 10m9s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 9m47s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 10m58s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 11m39s
Build Packages / build:rpm (rocky8) (push) Successful in 11m43s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 12m59s
Build Packages / Generate python client (push) Successful in 35s
Build Packages / Build documentation (push) Successful in 59s
Build Packages / Create release (push) Skipped
Build Packages / build:rpm (ubuntu2204) (push) Successful in 11m48s
Build Packages / build:rpm (rocky9) (push) Successful in 12m32s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 10m24s
Build Packages / XDS test (durin plugin) (push) Successful in 7m35s
Build Packages / XDS test (neggia plugin) (push) Successful in 6m50s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 7m40s
Build Packages / DIALS test (push) Successful in 11m19s
Build Packages / Unit tests (push) Skipped
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 9m28s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 10m9s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 9m47s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 10m58s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 11m39s
Build Packages / build:rpm (rocky8) (push) Successful in 11m43s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 12m59s
Build Packages / Generate python client (push) Successful in 35s
Build Packages / Build documentation (push) Successful in 59s
Build Packages / Create release (push) Skipped
Build Packages / build:rpm (ubuntu2204) (push) Successful in 11m48s
Build Packages / build:rpm (rocky9) (push) Successful in 12m32s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 10m24s
Build Packages / XDS test (durin plugin) (push) Successful in 7m35s
Build Packages / XDS test (neggia plugin) (push) Successful in 6m50s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 7m40s
Build Packages / DIALS test (push) Successful in 11m19s
This is an UNSTABLE release. The release has significant modifications for data processing - in case of troubles go back to 1.0.0-rc.144. * jfjoch_broker: Improve azimuthal integration (add <I^2> calculation) * jfjoch_broker: Fixes around indexing, aiming to handle multi-lattice crystals (work in progress, it is not fully integrated) * jfjoch_writer: Save mean(I), stddev(I), and count(I) for each azimuthal bin Reviewed-on: #58
This commit was merged in pull request #58.
This commit is contained in:
@@ -46,7 +46,9 @@ inline std::string to_bravais_code(const std::optional<LatticeMessage> &lm_opt)
|
||||
}
|
||||
|
||||
HDF5DataFilePluginMX::HDF5DataFilePluginMX(const StartMessage &msg)
|
||||
: max_spots(msg.max_spot_count), indexing(msg.indexing_algorithm != IndexingAlgorithmEnum::None) {
|
||||
: max_spots(msg.max_spot_count),
|
||||
max_extra_lattices(msg.max_extra_lattices),
|
||||
indexing(msg.indexing_algorithm != IndexingAlgorithmEnum::None) {
|
||||
}
|
||||
|
||||
void HDF5DataFilePluginMX::OpenFile(HDF5File &data_file, const DataMessage &msg, size_t images_per_file) {
|
||||
@@ -58,26 +60,18 @@ void HDF5DataFilePluginMX::OpenFile(HDF5File &data_file, const DataMessage &msg,
|
||||
spot_x.reserve(max_spots * images_per_file);
|
||||
spot_y.reserve(max_spots * images_per_file);
|
||||
spot_int.reserve(max_spots * images_per_file);
|
||||
spot_indexed.reserve(max_spots * images_per_file);
|
||||
spot_ice_ring.reserve(max_spots * images_per_file);
|
||||
spot_h.reserve(max_spots * images_per_file);
|
||||
spot_k.reserve(max_spots * images_per_file);
|
||||
spot_l.reserve(max_spots * images_per_file);
|
||||
spot_dist_ewald.reserve(max_spots * images_per_file);
|
||||
|
||||
spot_x.reserve(max_spots * images_per_file);
|
||||
spot_y.reserve(max_spots * images_per_file);
|
||||
spot_int.reserve(max_spots * images_per_file);
|
||||
spot_ice_ring.reserve(max_spots * images_per_file);
|
||||
spot_h.reserve(max_spots * images_per_file);
|
||||
spot_k.reserve(max_spots * images_per_file);
|
||||
spot_l.reserve(max_spots * images_per_file);
|
||||
spot_dist_ewald.reserve(max_spots * images_per_file);
|
||||
if (indexing)
|
||||
if (indexing) {
|
||||
spot_indexed.reserve(max_spots * images_per_file);
|
||||
if (indexing)
|
||||
spot_lattice.reserve(max_spots * images_per_file);
|
||||
indexed_lattice.reserve(images_per_file * 9);
|
||||
|
||||
extra_lattices.reserve(images_per_file * max_extra_lattices * 9);
|
||||
}
|
||||
beam_corr_x.reserve(images_per_file);
|
||||
beam_corr_y.reserve(images_per_file);
|
||||
|
||||
@@ -118,12 +112,14 @@ void HDF5DataFilePluginMX::Write(const DataMessage &msg, uint64_t image_number)
|
||||
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));
|
||||
spot_lattice.resize(max_spots * (max_image_number + 1), -1);
|
||||
spot_dist_ewald.resize(max_spots * (max_image_number + 1), NAN);
|
||||
|
||||
if (indexing)
|
||||
if (indexing) {
|
||||
spot_indexed.resize(max_spots * (max_image_number + 1));
|
||||
if (indexing)
|
||||
indexed_lattice.resize((max_image_number + 1) * 9, NAN);
|
||||
extra_lattices.resize((max_image_number + 1) * max_extra_lattices * 9, NAN);
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t spot_cnt = std::min(msg.spots.size(), max_spots);
|
||||
@@ -134,6 +130,7 @@ void HDF5DataFilePluginMX::Write(const DataMessage &msg, uint64_t image_number)
|
||||
spot_int[max_spots * image_number + i] = msg.spots[i].intensity;
|
||||
if (indexing) {
|
||||
spot_indexed[max_spots * image_number + i] = msg.spots[i].indexed;
|
||||
spot_lattice[max_spots * image_number + i] = msg.spots[i].lattice;
|
||||
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;
|
||||
@@ -150,6 +147,8 @@ void HDF5DataFilePluginMX::Write(const DataMessage &msg, uint64_t image_number)
|
||||
|
||||
if (indexing) {
|
||||
indexed[image_number] = msg.indexing_result.value_or(0);
|
||||
// Fallback value is indexing result (1 or 0 lattices)
|
||||
indexing_lattice_count[image_number] = msg.indexing_lattice_count.value_or(indexed[image_number]);
|
||||
profile_radius[image_number] = msg.profile_radius.value_or(NAN);
|
||||
mosaicity_deg[image_number] = msg.mosaicity_deg.value_or(NAN);
|
||||
b_factor[image_number] = msg.b_factor.value_or(NAN);
|
||||
@@ -169,6 +168,18 @@ void HDF5DataFilePluginMX::Write(const DataMessage &msg, uint64_t image_number)
|
||||
indexed_lattice[image_number * 9 + i] = NAN;
|
||||
}
|
||||
|
||||
for (size_t li = 0; li < max_extra_lattices; li++) {
|
||||
const size_t base = (image_number * max_extra_lattices + li) * 9;
|
||||
if (li < msg.indexing_extra_lattices.size()) {
|
||||
auto tmp = msg.indexing_extra_lattices[li].GetVector();
|
||||
for (int i = 0; i < 9; i++)
|
||||
extra_lattices[base + i] = tmp[i];
|
||||
} else {
|
||||
for (int i = 0; i < 9; i++)
|
||||
extra_lattices[base + i] = NAN;
|
||||
}
|
||||
}
|
||||
|
||||
if (msg.lattice_type) {
|
||||
bravais_lattice[image_number] = to_bravais_code(msg.lattice_type);
|
||||
niggli_class[image_number] = msg.lattice_type->niggli_class;
|
||||
@@ -204,6 +215,7 @@ void HDF5DataFilePluginMX::WriteFinal(HDF5File &data_file) {
|
||||
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});
|
||||
data_file.SaveVector("/entry/MX/peakLattice", spot_lattice, {(hsize_t) (max_image_number + 1), max_spots});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -221,9 +233,16 @@ void HDF5DataFilePluginMX::WriteFinal(HDF5File &data_file) {
|
||||
|
||||
if (!indexed.empty())
|
||||
data_file.SaveVector("/entry/MX/imageIndexed", indexed.vec());
|
||||
if (!indexing_lattice_count.empty())
|
||||
data_file.SaveVector("/entry/MX/indexingLatticeCount", indexing_lattice_count.vec());
|
||||
if (!indexed_lattice.empty())
|
||||
data_file.SaveVector("/entry/MX/latticeIndexed", indexed_lattice, {(hsize_t) (max_image_number + 1), 9})
|
||||
->Units("Angstrom");
|
||||
if (!extra_lattices.empty())
|
||||
data_file.SaveVector("/entry/MX/latticeIndexedExtra", extra_lattices,
|
||||
{(hsize_t) (max_image_number + 1), (hsize_t) max_extra_lattices, 9})
|
||||
->Units("Angstrom");
|
||||
|
||||
if (!bkg_estimate.empty())
|
||||
data_file.SaveVector("/entry/MX/bkgEstimate", bkg_estimate.vec());
|
||||
if (!profile_radius.empty())
|
||||
|
||||
Reference in New Issue
Block a user