The P1 cross-check (<prefix>_P1.mtz) and --no-p1-crosscheck are gone. The
tail waited for that merge after the reflection files were written: 12-18 s
on a large rotation set (7200 frames), ~2 s on a small protein. A user who
wants a P1 merge re-runs with -S 1.
--finalist-ledger keeps working: it now starts a P1 merge of its own beside
the analyses (made only when the flag is given) and folds the ledger from it.
The twin-immune zone evidence, which was read on the cross-check merge, moves
with it and is reported only with --finalist-ledger.
The unmerged MTZ was built in the shadow of the cross-check merge; it is now
built beside the reflection files, from the point where the model validation
has settled the indexing.
WriteMtzReflections loses its amplitudes flag (only the cross-check wrote an
intensity-only MTZ). The merged outputs (p.mtz, .hkl, _unmerged.mtz) are
byte-identical to the base on the gate matrix.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SVmAWnzCmRKAXVUCdc4iNi
A pure move. ModelValidation, RigidBodyRefine, RigidBodyGPU, ModelFFT, ModelGrid,
ModelScaling, ModelMaskGPU, ModelScaleGPU and SigmaA - everything that works on an
atomic model - become the JFJochStructureRefinement library, linked by
JFJochImageAnalysis. WriteModel (the placed-model mmCIF/PDB writer) goes to writer/
as its own small JFJochModelWriter target, so JFJochWriter, which a writer-only build
compiles, does not gain a gemmi dependency. Only include paths and CMake lists change.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SVmAWnzCmRKAXVUCdc4iNi