Unify still processing on one --force-still flag; scaling follows rotation indexing
Fold the two overlapping knobs into one. Rotation-vs-stills is now a single decision (IsRotationIndexing() = goniometer && rotation-indexing) that drives BOTH indexing and scaling/merging - there is no independent scaling-model switch: - ScalingSettings: drop combine_3d and force_still_processing (and Combine3D/GetCombine3D, ForceStillProcessing/GetForceStillProcessing). The scaling stage reads experiment.IsRotationIndexing() instead - rotation indexing implies RotationScaleMerge, no rotation indexing implies per-image ScaleOnTheFly. - jfjoch_process: merge --process-as-stills and --force-still-processing into one --force-still (turns rotation processing off entirely: still indexing + still scaling). The rotation-specific scaling defaults (scale-fulls, smooth-G, capture uncertainty, outlier rejection) now key on rotation_indexing. - jfjoch_scale: replace -P fixed|rot3d with --force-still; rotation is auto-detected from the goniometer (RotationIndexing set accordingly) so it matches jfjoch_process. - jfjoch_viewer: the "process as stills" toggle already sets RotationIndexing; drop the now redundant Combine3D/ForceStillProcessing calls. Rotation path unchanged (lyso 16.4/99.6%/87.3%); --force-still routes to ScaleOnTheFly; the -R + --force-still conflict still errors. CUDA + non-CUDA + viewer all build. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -440,7 +440,7 @@ ProcessResult JFJochProcess::Run(JFJochProcessObserver *observer) {
|
||||
// (forced) mosaicity is handled by the recompute. It does NOT support external-reference scaling,
|
||||
// B-factor refinement, an absorption surface, or wedge refinement - reject those combinations.
|
||||
const auto &rot_ss = experiment_.GetScalingSettings();
|
||||
const bool is_rotation = rot_ss.GetCombine3D(); // set for rotation data unless force-still
|
||||
const bool is_rotation = experiment_.IsRotationIndexing(); // rotation indexing -> rotation scaling/merge
|
||||
std::optional<RotationScaleMerge> rsm;
|
||||
if (is_rotation) {
|
||||
if (!config_.reference_data.empty() || rot_ss.GetRefineB() || rot_ss.GetAbsorptionIter() > 0
|
||||
|
||||
Reference in New Issue
Block a user