docs: the FFT axis ceiling, one-sweep inputs, exit status and _anom.ccp4

The longest FFT axis (500 A, no flag; -C moves it) was implied twice and never
stated, and its failure mode is a plausible sub-cell rather than a refusal.
One input is one sweep - said affirmatively where inputs are described instead
of in an aside about pointless. A default 50 A low-resolution cut discards
real reflections on a very large cell; the option row says so. Exit status is
documented for scripts (0 = completed, non-zero = stopped), and the
--model output list gains _anom.ccp4, which was written but undocumented.

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 87b1402c50
commit 86f8edfabc
+22 -3
View File
@@ -402,7 +402,10 @@ goniometer axis but you want per-frame stills processing anyway, add `--force-st
## Input and output
**Input** is either an HDF5 master file or a directory of PILATUS miniCBF frames.
**Input** is either an HDF5 master file or a directory of PILATUS miniCBF frames. One input is
**one sweep of one crystal** — rugnux does not combine sweeps or crystals in a run; process each
sweep to its own `_unmerged.mtz` and merge them downstream
(see [Taking the data onward](#taking-the-data-onward)).
* **HDF5 master (NXmx-based)** — a file written by [`jfjoch_writer`](JFJOCH_WRITER.md), a DECTRIS
EIGER master, or an NXmx master written by another facility's toolchain. Lengths are taken in the
@@ -668,6 +671,12 @@ to enable or disable it. Two cases follow from that:
The report is never allowed to fail a run: if it cannot be written (unwritable path, full disk) the
failure is logged as a warning and the run finishes normally.
**Exit status.** rugnux exits 0 when the run completed — everything it determined, declined to
determine (`CANNOT_DETERMINE`) or warned about is in the report — and non-zero when the run
stopped: unreadable input, no usable lattice, a `-S` group the indexed lattice cannot host, an
indexer that could not run. The reason goes to the terminal, and the report may not exist in that
case — so a script branches on the exit status first and greps the report second.
### Format
The model is XDS's `CORRECT.LP`: prose and tables a crystallographer reads top to bottom, with a
@@ -935,7 +944,9 @@ Given an atomic model of the same structure, `--model model.pdb` scales the mode
factors to the merged amplitudes — fitting a flat bulk-solvent contribution and an overall
anisotropic *B* — and reports **R-work / R-free** and the mean 2Fo-Fc density at the atom centres.
It also writes `<prefix>_2fofc.ccp4`, `<prefix>_fofc.ccp4` and `<prefix>_maps.mtz` next to the
merged reflections. Nothing about the model is refined; it is only re-fractionalized into the data
merged reflections — and, where the merge kept the Bijvoet split (a rotation merge always does),
`<prefix>_anom.ccp4`, the anomalous difference map whose strongest sites the report names
(`ANOMALOUS_SITE_01`…`10`). Nothing about the model is refined; it is only re-fractionalized into the data
cell, so a deposited model with a slightly different cell still lines up.
The model may be **PDB or mmCIF**, gzipped or not, and the format is taken from the file's own
@@ -1164,6 +1175,14 @@ indexing) by default; a dataset without one is processed as independent stills.
overrides the former; the `-R` / `--single-pass-rotation` / `--force-rotation-lattice` flags request
rotation explicitly and pick the pass or lattice.
The FFT search looks for cell axes between 10 Å (`--fft-min-unit-cell`) and a default **longest
axis of 500 Å**, which has no flag of its own — a reference cell (`-C`) moves both bounds to cover
the cell it names. An axis beyond the search's reach is **not refused**: the run returns a
plausible shorter sub-cell or an axis harmonic and processes it happily, so a cell that comes out
at a half or a third of the expected long axis should be read as this limit, not as the crystal.
For very long axes the direction grid's angular resolution binds well below 500 Å — see the
[analysis reference](CPU_DATA_ANALYSIS.md) on FFT indexing.
| Option | Description |
| --- | --- |
| `--force-still` | Treat a rotation (goniometer) dataset as independent stills instead of rotation |
@@ -1199,7 +1218,7 @@ Scaling and merging:
| `--capture-uncertainty <num>` | rot3d: systematic sigma on under-captured fulls, ~num·(1captured_fraction)·I (default: 1.0 for rotation, 0 otherwise) |
| `--min-captured-fraction <num>` | rot3d: drop a combined full whose rocking curve was captured below this fraction — edge-of-sweep truncated fulls (default: 0.7 for rotation, 0 otherwise; 0 = off) |
| `--scaling-high-resolution <num>` | High-resolution limit for scaling, Å — manual override (default: no limit; disables the automatic cutoff below) |
| `--scaling-low-resolution <num>` | Low-resolution limit for scaling and merging, Å (default: 50, the value XDS configurations use; 0 removes the limit). Reflections coarser than this sit behind or beside the beam stop and are measured on a background it has eaten into |
| `--scaling-low-resolution <num>` | Low-resolution limit for scaling and merging, Å (default: 50, the value XDS configurations use; 0 removes the limit). Reflections coarser than this sit behind or beside the beam stop and are measured on a background it has eaten into. That reasoning assumes an ordinary cell: a very large one (a few hundred Å) has real reflections coarser than 50 Å, so lower it there |
| `--resolution-cutoff <txt>` | Automatic high-resolution cutoff for the written reflections and reported shells: `cc-logistic` \| `off` (default: `cc-logistic`; ignored when `--scaling-high-resolution` is set) |
| `--resolution-cc-target <num>` | CC1/2 target defining the `cc-logistic` fall-off (default: 0.30) |
| `--resolution-shells <num>` | Number of resolution shells in the reported statistics table (default: 9). The bins are equal steps in 1/d² between the lowest- and highest-resolution reflection merged, which is XDS's rule, and 9 is XDS's count — so at the same resolution limits the two tables have the same shells and can be read row for row |