Commit Graph
2 Commits
Author SHA1 Message Date
leonarski_fandClaude Opus 5 6773e8516d symmetry: a metric two-fold the lattice search refused is asked of the intensities
The Niggli character walk takes the first character its tolerance matches, and on a lattice
that is nearly but not exactly hexagonal it matches hexagonal. Under a hexagonal holohedry no
candidate point group can carry the two strongest two-folds the data actually have, so the
search lands on the weakest one and the crystal is processed in a group of order two where it
should have been eight.

The metric group knows better than the character walk: it holds every rotation the cell can
host, including the ones the named lattice system has no room for. Each of those is now put to
the intensities directly - one operator, scored the way Stage A scores its own, on the same
reflection population, with the same strong-reflection gate and the same E^2 cap. That last
part is what makes the answer usable: normalising over the full resolution range of a merge
whose outer shells are correlated junk reads a genuine two-fold at CC 0.05, and the same
operator over the population the pipeline itself pairs reads 0.88.

The flattening and normalising the search does at its start is now one function, so an operator
can be asked about without enumerating a point group around it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EFEJG6WBQv8th4UJFNe53N
2026-09-06 07:21:41 +02:00
leonarski_fandClaude Opus 5 491167c90d rugnux: a Bravais class the reduction decided by rounding is re-asked on the metric's own cell
Build Packages / build:rugnux:aarch64 (cross) (push) Successful in 8m45s
Build Packages / build:rugnux-tgz (x86_64) (push) Successful in 18m40s
Build Packages / build:windows:nocuda (push) Successful in 19m33s
Build Packages / build:windows:cuda (push) Successful in 21m41s
Build Packages / build:viewer-tgz:cpu (push) Successful in 21m41s
Build Packages / build:viewer-tgz:cuda (push) Successful in 22m0s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 23m26s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 28m34s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 20m6s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 28m51s
Build Packages / build:rugnux:windows (push) Successful in 11m3s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 26m32s
Build Packages / XDS test (durin plugin) (push) Failing after 12s
Build Packages / XDS test (JFJoch plugin) (push) Failing after 11s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 24m38s
Build Packages / Generate python client (push) Successful in 41s
Build Packages / build:rpm (rocky9) (push) Successful in 25m7s
Build Packages / Create release (push) Skipped
Build Packages / Build documentation (push) Successful in 1m49s
Build Packages / build:rpm (rocky8) (push) Successful in 27m57s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 22m2s
Build Packages / DIALS test (push) Successful in 24m47s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 25m30s
Build Packages / XDS test (neggia plugin) (push) Successful in 8m51s
Build Packages / Unit tests (push) Successful in 1h23m15s
The class is named by Niggli-reducing the indexed cell and looking the reduced cell up in the 44
lattice characters, and that lookup is a coin flip for any lattice whose Buerger cells straddle the
Niggli type-I/type-II boundary. An F-centred cubic lattice does so by construction: it has reduced
forms on both sides, the two sides carry different characters, and which side the reduction lands on
is set by the last digits of whatever refinement produced the cell. Measured over 600 perturbations
of one such lattice: 43% cubic F, 36% tetragonal I, 21% orthorhombic I, and the split is flat over a
factor of ten in the noise. The class then caps the point-group search, so from the body-centred
sub-cell the cubic three-fold is never enumerated and the run reports that nothing was refused -
which is accurate, because nothing was asked.

Le Page's two-fold search has no such key: it measures each rotation's obliquity on the lattice
itself, in a primitive basis. LePageLattice turns the rotation group it finds into a conventional
cell, a centring letter and an integral change of basis, and where that group is larger than the
adopted class's holohedry the merge is reindexed into that cell and the space-group search is run
again there, on both merges, with every gate live. Nothing here decides: the reindex is committed
only where the search in the new setting confirms a strictly higher point group AND the centring the
new cell describes, so a pseudo-symmetric metric leaves the answer already in hand standing.

Measured as a paired battery over 113 rotation datasets: the re-ask fires on 7 and adopts on 1, and
that one crystal - an F-centred cubic lattice the reduction had named body-centred tetragonal -
moves to its deposited group, gaining 0.10 A of resolution and 2.8x the multiplicity at R_meas
0.117 -> 0.120. Nothing else moves, in space group, resolution, CC1/2, R_meas, multiplicity,
I/sigma or completeness.

A second such crystal, named body-centred orthorhombic, is offered the same cubic cell and confirms
all 23 added operators at CC 0.96 with an H ratio of 1.00, and is still refused, on the merge chi^2
ratio at 2.50x a bound of 1.85. Letting H rescue that refusal is the one-line change an earlier
round measured and rejected - it promotes the synthetic P 4_3 2_1 2 in the test suite to point group
432 - so it is not here, and that crystal is left where it was.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EFEJG6WBQv8th4UJFNe53N
2026-09-03 13:53:14 +02:00