diff --git a/image_analysis/scale_merge/SearchSpaceGroup.cpp b/image_analysis/scale_merge/SearchSpaceGroup.cpp index 8f581bc8..8f2caf11 100644 --- a/image_analysis/scale_merge/SearchSpaceGroup.cpp +++ b/image_analysis/scale_merge/SearchSpaceGroup.cpp @@ -382,7 +382,7 @@ SearchSpaceGroupResult SearchSpaceGroup( // has to grow to swallow it (mirroring the merge error model's b / ISa collapse). This isolates // the systematic part of the scatter, which the fixed-sigma chi^2 ratio cannot: a genuine but // imperfectly-scaled high-symmetry merge and a twin can share a chi^2 ratio (~2) yet differ - // sharply here (cubic Ins_I_3 b x1.04 vs twin Ins_H_2 b x1.6). + // sharply here (a genuine cubic step b x1.04 vs a merohedral twin b x1.6). auto merge_systematic_b = [&](const std::vector& rotations) -> double { struct Acc { double sw = 0.0, swI = 0.0; int n = 0; }; std::unordered_map grp; @@ -455,10 +455,10 @@ SearchSpaceGroupResult SearchSpaceGroup( for (const auto& c : pg_cands) { // A genuine symmetry operator merges equivalent reflections, so it barely changes the reduced // chi^2 relative to the best subgroup - across the whole rotation-test battery every correct - // point group stays within ~1.7x, even on weak or badly-integrated data (F432 chi2_ref 8.3 -> - // 1.15; Thau P41212 -> 1.71). A twin law or pseudo-symmetry forces non-equivalent reflections - // together, so its ratio is markedly higher (Ins_H_2's twin 2-fold: R3 3.02 -> R32 6.07, ratio - // 2.01). max_merge_chi2_ratio sits between the two. (An earlier log10(chi2_ref) widening + // point group stays within ~1.7x, even on weak or badly-integrated data (a cubic F432 chi2_ref + // 8.3 -> 1.15; a tetragonal P41212 -> 1.71). A twin law or pseudo-symmetry forces non-equivalent + // reflections together, so its ratio is markedly higher (a merohedral twin 2-fold: R3 3.02 -> + // R32 6.07, ratio 2.01). max_merge_chi2_ratio sits between the two. (An earlier log10(chi2_ref) widening // compensated for an under-calibrated error model that inflated real-symmetry ratios with data // weakness; the variance-floor fix removed that inflation, and the widening now only let the // twin through, so it is gone.) diff --git a/image_analysis/scale_merge/SearchSpaceGroup.h b/image_analysis/scale_merge/SearchSpaceGroup.h index 9bc8ef55..076f6e87 100644 --- a/image_analysis/scale_merge/SearchSpaceGroup.h +++ b/image_analysis/scale_merge/SearchSpaceGroup.h @@ -87,21 +87,21 @@ struct SearchSpaceGroupOptions { // candidate. A false operator forces non-equivalent reflections together so they disagree by many // sigma and chi^2 blows up; a real one leaves it ~flat even when the operator CC is only moderate. // Calibrated on the rotation-test battery: every correct point group stays within ~1.7x the best - // subgroup even on weak / badly-integrated data (worst real case Thau P41212 at 1.71), while a twin - // law or pseudo-symmetry lands clearly higher (Ins_H_2's R3->R32 twin 2-fold at 2.01). 1.85 sits + // subgroup even on weak / badly-integrated data (worst real case a P41212 at 1.71), while a twin + // law or pseudo-symmetry lands clearly higher (a merohedral R3->R32 twin 2-fold at 2.01). 1.85 sits // between the two, so a partial merohedral twin is kept in its true lower symmetry (R3), not // over-promoted to the holohedral R32. double max_merge_chi2_ratio = 1.85; // A genuine high-symmetry merge can drift just past max_merge_chi2_ratio when its data are only // imperfectly scaled: each real symmetry step then adds a little systematic scatter, so a weakly- - // scaled cubic like Ins_I_3 lands at ratio ~2.0 - right where a merohedral twin (Ins_H_2's R3->R32 - // at ~1.95) also lands, so the chi^2 ratio alone cannot separate them. A candidate whose chi^2 is + // scaled cubic case lands at ratio ~2.0 - right where a merohedral twin (an R3->R32 case at ~1.95) + // also lands, so the chi^2 ratio alone cannot separate them. A candidate whose chi^2 is // only this far past the best subgroup is therefore rescued if the SYSTEMATIC part of the extra // scatter stayed small (max_systematic_b_ratio): merging under a genuine operator gains multiplicity // without intensity-proportional disagreement, so the merge error model's b barely moves, whereas a - // twin forces non-equivalent reflections together and b balloons (Ins_I_3 b x1.6 vs Ins_H_2 x2.2, - // measured against the largest confirmed subgroup). Both bounds sit in the gap; the rescue only ever + // twin forces non-equivalent reflections together and b balloons (a genuine cubic step b x1.6 vs a + // merohedral twin x2.2, measured against the largest confirmed subgroup). Both bounds sit in the gap; the rescue only ever // promotes, and only in this narrow chi^2 band. double max_merge_chi2_rescue = 2.30; double max_systematic_b_ratio = 1.90;