diff --git a/tools/battery/README.md b/tools/battery/README.md index f8dddceee..982e7d7e5 100644 --- a/tools/battery/README.md +++ b/tools/battery/README.md @@ -30,7 +30,7 @@ Every set runs **once**, with one command per arm: | arm (reference) | command | |---|---| | open (deposition) | `rugnux -o p --no-export-unmerged --model `; sets without a deposited model (small molecules, unpublished sets, or coordinates that cannot be downloaded) run the same command without `--model` | -| inhouse, private (XDS) | `rugnux -o p --no-export-unmerged [-A] --report-resolution , ` | +| inhouse, private (XDS) | `rugnux -o p --no-export-unmerged [-A] --report-resolution , ` | Neither `--model` nor `--report-resolution` changes the processing: the merged reflections, the resolution cut and every decision are the same with and without them (verified bit for bit). So @@ -50,8 +50,8 @@ the reference: data's own determination instead (`SOHNCKE_SPACE_GROUP` where `SPACE_GROUP_ENANTIOMORPH` is `ASSUMED_FROM_MODEL`) and keeps the label in `sg_label`. - **`--report-resolution`** (XDS arms): a second statistics table from the same merge, binned over - XDS's range (the reference d_min, see "The XDS reference d_min" below, and XDS's d_max as given, - 999 included), and `-A` where XDS merged with `FRIEDEL'S_LAW=FALSE` (`"anomalous": true` in the + XDS's own range (`dmin_xds` and XDS's d_max as given, 999 included, so it covers exactly what + XDS's CORRECT.LP totals cover), and `-A` where XDS merged with `FRIEDEL'S_LAW=FALSE` (`"anomalous": true` in the manifest), so the two tables count the same way. Its REFRES_* numbers are scored against XDS's CORRECT.LP totals: completeness, multiplicity, R_meas, CC1/2 and ISa (I/sigma is shown; the manifest holds no XDS value for it). Where rugnux's own cut is coarser than the reference @@ -325,9 +325,9 @@ is significant, and that decides which case applies (`inputs.reference_dmin`): point where XDS's CC1/2 falls through 0.30 (the target of rugnux's own cutoff), interpolated in 1/d² between shell centres. -The derived value is both the score reference and the d_min of the reference-range table. The manifest keeps XDS's own -limit as `dmin_xds` and the rule used as `dmin_rule`. XDS's pooled R_meas, CC1/2 and completeness -still cover its whole range. +The derived value is the reference rugnux's own cut is scored against. The reference-range table +uses XDS's own limit, `dmin_xds`, because XDS's pooled R_meas, CC1/2 and completeness cover its +whole range; the manifest keeps the rule used as `dmin_rule`. ## Adding or changing datasets diff --git a/tools/battery/battery.py b/tools/battery/battery.py index 5fae02de1..27ae2c150 100644 --- a/tools/battery/battery.py +++ b/tools/battery/battery.py @@ -68,7 +68,7 @@ PDB_ID = re.compile(r"^[0-9][A-Za-z0-9]{3}$") COMMAND_DOC = { "deposition": "`rugnux --model ` (without --model where there is no " "deposited model: small molecules, unpublished sets)", - "xds": "`rugnux [-A] --report-resolution , `: -A where XDS kept " + "xds": "`rugnux [-A] --report-resolution , `: -A where XDS kept " "Friedel mates apart; the second statistics table at XDS's range is report-only", } @@ -178,10 +178,14 @@ def command(binary, e, opts, model=None): # statistics are not comparable if ref.get("anomalous"): cmd.append("-A") - # a second statistics table over XDS's range, from the same merge (report only) - if ref.get("dmin"): + # a second statistics table over XDS's own range, from the same merge (report only). XDS's + # own limit, not the derived reference d_min: the manifest's XDS totals are over XDS's range, + # so only that makes the table like for like. Shells past rugnux's own cut print as not + # merged. + dmin = ref.get("dmin_xds") or ref.get("dmin") + if dmin: cmd += ["--report-resolution", - f"{ref['dmin']:.3f}" + (f",{ref['dmax']:.3f}" if ref.get("dmax") else "")] + f"{dmin:.3f}" + (f",{ref['dmax']:.3f}" if ref.get("dmax") else "")] if model: cmd += ["--model", model] cmd += opts["extra_args"]