IndexAndRefine: Fixes
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 12m15s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 13m17s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 13m14s
Build Packages / build:rpm (rocky8) (push) Successful in 13m13s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 13m13s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 13m24s
Build Packages / Generate python client (push) Successful in 19s
Build Packages / Build documentation (push) Successful in 39s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 14m2s
Build Packages / build:rpm (rocky9) (push) Successful in 14m0s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 6m45s
Build Packages / Unit tests (push) Successful in 53m38s

This commit is contained in:
2025-11-30 08:22:24 +01:00
parent 2c35655f5e
commit a08cc17f9f
5 changed files with 16 additions and 14 deletions
+10 -10
View File
@@ -18,11 +18,10 @@ IndexAndRefine::IndexAndRefine(const DiffractionExperiment &x, IndexerThreadPool
geom_(x.GetDiffractionGeometry()),
updated_geom_(geom_),
indexer_(indexer) {
auto axis = x.GetGoniometer();
if (indexer && axis && x.GetIndexingSettings().GetRotationIndexing()) {
float angle_norm_deg = std::fabs(axis_->GetIncrement_deg());
float angle_norm_deg = std::fabs(axis->GetIncrement_deg());
if (angle_norm_deg > 1e-6) {
axis_ = axis;
if (x.GetImageNum() > min_images_for_indexing) {
@@ -108,9 +107,9 @@ void IndexAndRefine::TryIndexRotationData() {
}
void IndexAndRefine::ProcessImage(DataMessage &msg,
const SpotFindingSettings &spot_finding_settings,
const CompressedImage &image,
BraggPrediction &prediction) {
const SpotFindingSettings &spot_finding_settings,
const CompressedImage &image,
BraggPrediction &prediction) {
if (!indexer_)
return;
@@ -267,11 +266,12 @@ std::optional<RotationIndexerResult> IndexAndRefine::Finalize(bool retry) {
if (!indexed_lattice || retry)
TryIndexRotationData();
return RotationIndexerResult{
.lattice = indexed_lattice.value(),
.search_result = search_result_,
.geom = geom_
};
if (indexed_lattice)
return RotationIndexerResult{
.lattice = indexed_lattice.value(),
.search_result = search_result_,
.geom = geom_
};
}
return {};
}
+2 -2
View File
@@ -48,8 +48,8 @@ class IndexAndRefine {
IndexerThreadPool *indexer_;
int64_t image_stride;
int64_t first_image_to_try_indexing;
int64_t image_stride = 1;
int64_t first_image_to_try_indexing = INT64_MAX;
void TryIndexRotationData();
public:
+1 -1
View File
@@ -24,7 +24,7 @@ int main(int argc, char** argv) {
IndexingSettings indexing_settings;
indexing_settings.Algorithm(IndexingAlgorithmEnum::FFT);
indexing_settings.RotationIndexing(true);
indexing_settings.GeomRefinementAlgorithm(GeomRefinementAlgorithmEnum::BeamCenter);
DiffractionExperiment experiment(reader.GetDataset()->experiment);
experiment.ImportIndexingSettings(indexing_settings);
experiment.SetUnitCell({});
+2 -1
View File
@@ -101,8 +101,9 @@ void JFJochImageReadingWorker::LoadImage(int64_t image_number, int64_t summation
void JFJochImageReadingWorker::UpdateAzint_i(const JFJochReaderDataset *dataset) {
if (dataset) {
azint_mapping = std::make_unique<AzimuthalIntegration>(curr_experiment, dataset->pixel_mask);
index_and_refine = std::make_unique<IndexAndRefine>(curr_experiment, indexing.get());
image_analysis = std::make_unique<MXAnalysisWithoutFPGA>(curr_experiment, *azint_mapping, dataset->pixel_mask,
indexing.get());
*index_and_refine.get());
}
}
+1
View File
@@ -52,6 +52,7 @@ private:
std::shared_ptr<JFJochReaderImage> current_image_ptr;
std::unique_ptr<AzimuthalIntegration> azint_mapping;
std::unique_ptr<MXAnalysisWithoutFPGA> image_analysis;
std::unique_ptr<IndexAndRefine> index_and_refine;
std::unique_ptr<ROIElement> roi;