broker: no rotation indexing in the Lite and FPGA receivers
The converter no longer passes indexing_settings.rotation_indexing and its two angles into the experiment, so the receivers' IndexAndRefine never builds a rotation indexer: rotation frames get the per-frame indexing stills get. Output reports the old defaults (false, 20 deg, 0.5 deg). The receiver's end-of-run rotation lattice (END message and scan result) goes; rugnux live fills both for rotation runs, as it already did. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HVeDQsU5a8AJUdJPgWevAK
This commit is contained in:
1 parent
11eb760936
commit
d279827a82
4 files changed
+6
-28
No files matched your search
@@ -1019,9 +1019,6 @@ IndexingSettings Convert(const org::openapitools::server::model::Indexing_settin
|
||||
ret.UnitCellDistTolerance(input.getUnitCellDistTolerance());
|
||||
ret.ViableCellMinSpots(input.getViableCellMinSpots());
|
||||
ret.IndexIceRings(input.isIndexIceRings());
|
||||
ret.RotationIndexing(input.isRotationIndexing());
|
||||
ret.RotationIndexingAngularStride_deg(input.getRotationIndexingAngularStrideDeg());
|
||||
ret.RotationIndexingMinAngularRange_deg(input.getRotationIndexingMinAngularRangeDeg());
|
||||
ret.BlockingBehavior(input.isBlocking());
|
||||
return ret;
|
||||
}
|
||||
@@ -1037,9 +1034,10 @@ org::openapitools::server::model::Indexing_settings Convert(const IndexingSettin
|
||||
ret.setThreadCount(input.GetIndexingThreads());
|
||||
ret.setUnitCellDistTolerance(input.GetUnitCellDistTolerance());
|
||||
ret.setViableCellMinSpots(input.GetViableCellMinSpots());
|
||||
ret.setRotationIndexing(input.GetRotationIndexing());
|
||||
ret.setRotationIndexingAngularStrideDeg(input.GetRotationIndexingAngularStride_deg());
|
||||
ret.setRotationIndexingMinAngularRangeDeg(input.GetRotationIndexingMinAngularRange_deg());
|
||||
// Deprecated: the broker runs no rotation indexer (rugnux live does), so these report the old defaults.
|
||||
ret.setRotationIndexing(false);
|
||||
ret.setRotationIndexingAngularStrideDeg(0.5);
|
||||
ret.setRotationIndexingMinAngularRangeDeg(20.0);
|
||||
ret.setBlocking(input.GetBlockingBehavior());
|
||||
|
||||
org::openapitools::server::model::Geom_refinement_algorithm refinement;
|
||||
|
||||
@@ -267,18 +267,6 @@ void JFJochReceiver::SendEndMessage() {
|
||||
|
||||
message.az_int_result["dataset"] = plots.GetAzIntProfile();
|
||||
|
||||
const auto rotation_indexer_ret = indexer.FinalizeRotationIndexing();
|
||||
if (rotation_indexer_ret.has_value()) {
|
||||
message.rotation_lattice = rotation_indexer_ret->lattice;
|
||||
message.rotation_lattice_type = LatticeMessage{
|
||||
.centering = rotation_indexer_ret->search_result.centering,
|
||||
.niggli_class = rotation_indexer_ret->search_result.niggli_class,
|
||||
.crystal_system = rotation_indexer_ret->search_result.system
|
||||
};
|
||||
message.rotation_extra_lattices = rotation_indexer_ret->extra_lattices;
|
||||
rotation_indexing_lattice = rotation_indexer_ret->lattice;
|
||||
rotation_indexing_lattice_type = message.rotation_lattice_type;
|
||||
}
|
||||
message.unit_cell = indexer.GetConsensusUnitCell();
|
||||
// The images are written regardless, but the indexing rate is then not a statement about the crystal
|
||||
if (const int64_t error_count = indexer.GetIndexerErrorCount(); error_count > 0) {
|
||||
@@ -286,8 +274,7 @@ void JFJochReceiver::SendEndMessage() {
|
||||
indexer.RethrowIndexerError();
|
||||
} catch (const std::exception &e) {
|
||||
logger.Error("Indexing failed {} times in this collection, first with: {}. Those attempts are "
|
||||
"left out of the indexing rate, and a rotation lattice may be missing for the same "
|
||||
"reason", error_count, e.what());
|
||||
"left out of the indexing rate", error_count, e.what());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -328,11 +315,6 @@ JFJochReceiverOutput JFJochReceiver::GetFinalStatistics() const {
|
||||
ret.status = GetStatus();
|
||||
ret.writer_err = writer_error;
|
||||
ret.scan_result = scan_result.GetResult();
|
||||
ret.scan_result.rotation_lattice = rotation_indexing_lattice;
|
||||
if (rotation_indexing_lattice_type) {
|
||||
ret.scan_result.rotation_crystal_system = rotation_indexing_lattice_type->crystal_system;
|
||||
ret.scan_result.rotation_centering = rotation_indexing_lattice_type->centering;
|
||||
}
|
||||
ret.images_written = images_written;
|
||||
ret.processing_time = plots.GetMeanProcessingTime();
|
||||
return ret;
|
||||
|
||||
@@ -86,8 +86,6 @@ protected:
|
||||
std::mutex max_delay_mutex;
|
||||
|
||||
IndexAndRefine indexer;
|
||||
std::optional<CrystalLattice> rotation_indexing_lattice;
|
||||
std::optional<LatticeMessage> rotation_indexing_lattice_type;
|
||||
|
||||
std::string writer_error;
|
||||
|
||||
|
||||
@@ -424,7 +424,7 @@ void JFJochReceiverRugnuxRotation::SetSpotFindingSettings(const SpotFindingSetti
|
||||
JFJochReceiverOutput JFJochReceiverRugnuxRotation::GetFinalStatistics() const {
|
||||
JFJochReceiverOutput ret = JFJochReceiver::GetFinalStatistics();
|
||||
ret.analysis_warning = skipped_warning;
|
||||
// The receiver's own rotation indexer sees no image here: the lattice is rugnux's.
|
||||
// The rotation lattice is rugnux's: the receivers run no rotation indexer of their own.
|
||||
std::unique_lock ul(rugnux_mutex);
|
||||
if (rugnux_result) {
|
||||
const EndMessage &rugnux_end = rugnux_result->end_message;
|
||||
|
||||
Reference in new issue
Block a user