v1.0.0-rc.130 (#37)
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 10m14s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 10m4s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 12m0s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 10m31s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 10m0s
Build Packages / Generate python client (push) Successful in 45s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 11m17s
Build Packages / Create release (push) Has been skipped
Build Packages / Build documentation (push) Successful in 42s
Build Packages / build:rpm (rocky8) (push) Successful in 10m56s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 10m8s
Build Packages / build:rpm (rocky9) (push) Successful in 11m27s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 10m10s
Build Packages / Unit tests (push) Successful in 1h14m45s

This is an UNSTABLE release. The release has significant modifications and bug fixes, if things go wrong, it is better to revert to 1.0.0-rc.124.

* jfjoch_broker: Rotation indexer has two retries if failes
* jfjoch_broker: Rotation indexer handles small number of rotation images (like test shot)
* jfjoch_broker: Integration calculates background mask based on R2 radius
* jfjoch_process: HDF5 files are not saved by default

Reviewed-on: #37
This commit was merged in pull request #37.
This commit is contained in:
2026-03-06 14:38:56 +01:00
parent 64002f1e29
commit 928789a67c
142 changed files with 458 additions and 172 deletions
+19 -6
View File
@@ -23,11 +23,13 @@ RotationIndexer::RotationIndexer(const DiffractionExperiment &x, IndexerThreadPo
} else {
if (x.GetImageNum() < min_images_for_indexing) {
// For short measurements - only indexing at the end
first_image_to_try_indexing = INT64_MAX;
first_image_to_try_indexing = std::max<int64_t>(0, x.GetImageNum() - 1);
next_image_to_try_indexing = first_image_to_try_indexing;
image_stride = 1;
} else {
first_image_to_try_indexing = std::max<int64_t>(min_images_for_indexing,
x.GetIndexingSettings().GetRotationIndexingMinAngularRange_deg() / angle_norm_deg);
next_image_to_try_indexing = first_image_to_try_indexing;
image_stride = std::ceil(x.GetIndexingSettings().GetRotationIndexingAngularStride_deg() / angle_norm_deg);
if (image_stride == 0)
image_stride = 1;
@@ -37,8 +39,6 @@ RotationIndexer::RotationIndexer(const DiffractionExperiment &x, IndexerThreadPo
}
void RotationIndexer::TryIndex() {
indexing_tried = true;
// Index
std::vector<SpotToSave> v_sel;
std::vector<Coord> coords_sel;
@@ -101,8 +101,16 @@ void RotationIndexer::TryIndex() {
indexed_lattice = data.latt;
updated_geom_ = data.geom;
axis_ = data.axis;
return;
}
}
if (indexing_range_multiplier < max_indexing_range_multiplier) {
indexing_range_multiplier++;
next_image_to_try_indexing = first_image_to_try_indexing * indexing_range_multiplier;
} else {
next_image_to_try_indexing = INT64_MAX;
}
}
std::optional<RotationIndexerResult> RotationIndexer::ProcessImage(int64_t image, const std::vector<SpotToSave> &spots) {
@@ -115,7 +123,7 @@ std::optional<RotationIndexerResult> RotationIndexer::ProcessImage(int64_t image
const float angle_deg = axis_->GetAngle_deg(image) + axis_->GetWedge_deg() / 2.0f;
const auto rot = axis_->GetTransformationAngle(angle_deg);
if (!indexing_tried && image >= last_accumulated_image + image_stride) {
if (!indexed_lattice && image >= last_accumulated_image + image_stride) {
v_.reserve(v_.size() + spots.size());
coords_.reserve(coords_.size() + spots.size());
@@ -129,7 +137,12 @@ std::optional<RotationIndexerResult> RotationIndexer::ProcessImage(int64_t image
accumulated_images++;
last_accumulated_image = image;
if (accumulated_images >= min_images_for_indexing && image >= first_image_to_try_indexing)
const bool short_scan_last_image =
(experiment.GetImageNum() < min_images_for_indexing) &&
(image >= experiment.GetImageNum() - 1);
if ((accumulated_images >= min_images_for_indexing || short_scan_last_image) &&
image >= next_image_to_try_indexing)
TryIndex();
}
if (!indexed_lattice)
@@ -152,4 +165,4 @@ std::optional<RotationIndexerResult> RotationIndexer::GetLattice() {
.geom = updated_geom_,
.axis = axis_
};
}
}