From dbc09e04f97438a1e8233ed9bbcc7230aaf21f71 Mon Sep 17 00:00:00 2001 From: Filip Leonarski Date: Sat, 6 Dec 2025 16:40:00 +0100 Subject: [PATCH] XtalOptimizer: Max time is configurable --- image_analysis/IndexAndRefine.cpp | 3 ++- image_analysis/geom_refinement/XtalOptimizer.cpp | 2 +- image_analysis/geom_refinement/XtalOptimizer.h | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/image_analysis/IndexAndRefine.cpp b/image_analysis/IndexAndRefine.cpp index 757fbac8..0bbbafde 100644 --- a/image_analysis/IndexAndRefine.cpp +++ b/image_analysis/IndexAndRefine.cpp @@ -104,7 +104,8 @@ void IndexAndRefine::ProcessImage(DataMessage &msg, .crystal_system = symmetry.crystal_system, .min_spots = experiment.GetIndexingSettings().GetViableCellMinSpots(), .refine_beam_center = true, - .refine_distance_mm = false + .refine_distance_mm = false, + .max_time = 0.04 // 40 ms is max allowed time for the operation }; if (symmetry.crystal_system == gemmi::CrystalSystem::Trigonal) diff --git a/image_analysis/geom_refinement/XtalOptimizer.cpp b/image_analysis/geom_refinement/XtalOptimizer.cpp index 14a8d8dc..0dd5b482 100644 --- a/image_analysis/geom_refinement/XtalOptimizer.cpp +++ b/image_analysis/geom_refinement/XtalOptimizer.cpp @@ -517,7 +517,7 @@ bool XtalOptimizerInternal(XtalOptimizerData &data, ceres::Solver::Options options; options.linear_solver_type = ceres::DENSE_QR; options.minimizer_progress_to_stdout = false; - options.max_solver_time_in_seconds = 0.02; // 20 ms - try not go longer + options.max_solver_time_in_seconds = data.max_time; options.logging_type = ceres::LoggingType::SILENT; ceres::Solver::Summary summary; diff --git a/image_analysis/geom_refinement/XtalOptimizer.h b/image_analysis/geom_refinement/XtalOptimizer.h index 155128f4..0a3cfcb2 100644 --- a/image_analysis/geom_refinement/XtalOptimizer.h +++ b/image_analysis/geom_refinement/XtalOptimizer.h @@ -27,6 +27,8 @@ struct XtalOptimizerData { bool refine_distance_mm = false; bool refine_detector_angles = false; + float max_time = 1.0; + std::optional axis; // output