docs: the change of hand is a label, only the ambiguity choice reindexes

Both pages said in one place that adopting a model's enantiomorph moves no
reflection, and in another that it is applied to the merged reflections and
exchanges the Bijvoet mates. The code (ModelValidation.cpp, AdoptModelFrame)
does the former: the model's group is a label on the written files, I(+)/I(-)
stay as measured, and only the merohedral-ambiguity reindex touches reflection
indices. Say that once, consistently, in CPU_DATA_ANALYSIS.md §14.5 and in the
two RUGNUX.md passages that carried the wrong reading.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EFEJG6WBQv8th4UJFNe53N
This commit is contained in:
2026-09-02 09:18:36 +02:00
co-authored by Claude Opus 5
parent 200a2d53b7
commit d3879d0112
2 changed files with 15 additions and 11 deletions
+1 -1
View File
@@ -1175,7 +1175,7 @@ Two maps are formed with the model phases $\varphi_\mathrm{model}$: a $2F_o-F_c$
The model fixes a definite hand and indexing, but the merged data need not share them, so before comparison the observed reflections are brought into the model's frame.
- **Enantiomorph / screw.** When the data space group is the enantiomorph of the model's (e.g. data $P4_12_12$, model $P4_32_12$; or $P3_1/P3_2$), the two are **indistinguishable from merged intensities** — $|F_\mathrm{calc}|$ is invariant under the change of hand, so R-free cannot choose between them and probing would be meaningless. The model's group is therefore adopted as the **label** the reflections are written under, and the reflections themselves are left untouched. The two groups of an enantiomorphic pair differ only in the translations of their operations: their rotations are identical, so they transform $hkl$ identically, share a reciprocal ASU, and assign the Bijvoet hands identically. The label carries no handedness, and there is nothing about it to undo. Reindexing by the change-of-hand operator — which is the inversion — would instead **swap $I(+)$ with $I(-)$**, flipping every anomalous difference on the strength of a label the space-group search itself reports as undetermined; where the model is genuinely the wrong enantiomorph for the crystal, it would manufacture agreement rather than reveal the mismatch. What does carry the hand is the indexing the data already have, from the diffraction geometry, and the anomalous differences that come with it. §14.6 is what tests them against the model.
- **Indexing (merohedral) ambiguity.** When the crystal has a merohedral ambiguity (§10.9), the observed intensities *do* differ between indexings, and the right one is chosen against the best available reference. **If a reference MTZ was supplied, the data were already reindexed to agree with it** (§10.9 — by the reference-intensity correlation, at the merge stage for rotation data or per image in stills scaling), and model validation keeps that authoritative choice. **Only with a model and no reference** does validation resolve the ambiguity itself, as a fallback: the scaled model is fit to each reindexing of the data (identity plus the twin-law cosets) and the one giving the **lowest R-free** is kept. This matters for a multi-dataset campaign — a single shared reference fixes one indexing convention for every dataset, whereas an independent per-dataset lowest-R-free choice could send borderline datasets to different conventions. A no-op either way for a holohedral crystal (no twin laws) Both reindexings — the change of hand and the ambiguity choice — are then applied to the merged reflections themselves, which are written after this step, so the reflection file, the R-factors and the maps describe one indexing. The change of hand also changes the space group the file is written in (it is the model's enantiomorph), and since it is the inversion it exchanges the Bijvoet mates: on anomalous data adopting a model's hand is what puts the anomalous differences the right way round. The ambiguity choice is reported with the R-free of the winner and of the runner-up, since the margin between them is what says whether the data decided or the two came out within noise of each other.
- **Indexing (merohedral) ambiguity.** When the crystal has a merohedral ambiguity (§10.9), the observed intensities *do* differ between indexings, and the right one is chosen against the best available reference. **If a reference MTZ was supplied, the data were already reindexed to agree with it** (§10.9 — by the reference-intensity correlation, at the merge stage for rotation data or per image in stills scaling), and model validation keeps that authoritative choice. **Only with a model and no reference** does validation resolve the ambiguity itself, as a fallback: the scaled model is fit to each reindexing of the data (identity plus the twin-law cosets) and the one giving the **lowest R-free** is kept. This matters for a multi-dataset campaign — a single shared reference fixes one indexing convention for every dataset, whereas an independent per-dataset lowest-R-free choice could send borderline datasets to different conventions. A no-op either way for a holohedral crystal (no twin laws). The two decisions then reach the written output differently, because only one of them moves reflections. The **ambiguity choice is applied to the merged reflections themselves** — and to the integrated observations behind the unmerged export — which are written after this step, so the reflection file, the R-factors and the maps describe one indexing. The **change of hand changes only the space group the files are written under** (the model's enantiomorph): no reflection moves, exactly as the first bullet says, so $I(+)$ and $I(-)$ stay as measured and §14.6's hand check remains a genuine test rather than an agreement manufactured by reindexing. The ambiguity choice is reported with the R-free of the winner and of the runner-up, since the margin between them is what says whether the data decided or the two came out within noise of each other.
### 14.6 Anomalous difference map and the sites it names
+14 -10
View File
@@ -808,8 +808,11 @@ Two things the indexing ambiguity is **not**:
- **Not the enantiomorph.** P4<sub>1</sub>2<sub>1</sub>2 versus P4<sub>3</sub>2<sub>1</sub>2 (or
P3<sub>1</sub> versus P3<sub>2</sub>) leaves the merged intensities *unchanged*, so no amount of
data can choose between them and rugnux never tries — the run reports the pair it cannot separate.
A model settles it, being the only evidence there is: with `--model` the written reflections take
the model's hand and its space group, which on anomalous data exchanges I(+) and I(-). The
A model names it, and the naming is a label only: with `--model` the written reflections take
the model's space group, no reflection moves, and I(+)/I(-) stay exactly as measured — reindexing
by the change of hand would flip every anomalous difference, so it is never done. Whether the
model and the data really agree about the hand is answered afterwards by the anomalous difference
map, which warns when the density at the model's atoms comes out inverted. The
`_process.h5`, whose per-image reflections were written as they were integrated, keeps the group
the run determined and is left alone.
- **Not twinning.** The twin laws are the same operators, but twinning is a property of the crystal
@@ -844,14 +847,15 @@ section at all.
It is a *data-quality lens*, independent of the internal statistics: R-free measures the merged
intensities against external truth, where CC1/2 and R<sub>meas</sub> only measure them against
themselves. It also settles the two things merged intensities alone cannot: the enantiomorph (data
merged in P4<sub>1</sub>2<sub>1</sub>2 against a P4<sub>3</sub>2<sub>1</sub>2 model are reindexed
into the model's hand), and — when no reference MTZ has already fixed it — a merohedral
[indexing ambiguity](#the-indexing-ambiguity), by keeping the candidate reindexing with the lowest
R-free. Both of those reindexings are applied to the **written reflections** as well as to the
R-factors and the maps — validation runs before the reflection files, so the `.mtz` / `.cif` /
`.hkl` come out in the model's frame, and where the hand was adopted they carry the model's space
group. The log names the operator in each case, and for the indexing choice gives the winning
themselves. It also settles the two things merged intensities alone cannot, in two different ways. The
enantiomorph is a **relabelling**: data merged in P4<sub>1</sub>2<sub>1</sub>2 against a
P4<sub>3</sub>2<sub>1</sub>2 model take the model's space group as the label they are written
under, with no reflection moved and I(+)/I(-) exactly as measured. A merohedral
[indexing ambiguity](#the-indexing-ambiguity) — when no reference MTZ has already fixed it — is a
**reindexing**: the candidate with the lowest R-free is kept and applied to the **written
reflections** as well as to the R-factors and the maps. Validation runs before the reflection
files, so the `.mtz` / `.cif` / `.hkl` come out in the model's frame either way — reindexed where
the ambiguity decided, and carrying the model's space group where the hand was adopted. The log names the operator in each case, and for the indexing choice gives the winning
R-free together with the runner-up.
## Re-scaling and re-merging (`rugnux --mode scale`)