diff --git a/tools/battery/README.md b/tools/battery/README.md index 5c7a66467..41ce6f2b7 100644 --- a/tools/battery/README.md +++ b/tools/battery/README.md @@ -23,7 +23,7 @@ data): `cd tools/battery && python3 doc_check.py`. | arm | datasets | reference | manifest | |---|---|---|---| | **open** | public PDB depositions of raw diffraction data, plus a few published small-molecule sets | the deposited space group, cell and resolution | `open.json` (committed) | -| **inhouse** | standard test crystals measured at the SLS (lysozyme, thaumatin, insulin, cytochrome C, myoglobin), small-molecule standards (aspirin, citric acid, HEPES, YAG, KDP, L-cystine), plus no-crystal controls | XDS, from the `CORRECT.LP` beside each dataset (the standard proteins also carry a reference model for R-free, reported only: `--model` below); for the small molecules the space group is the literature's (`ref_override`), as XDS reports only Sohncke groups; L-cystine, which XDS does not index, has only the literature reference | `inhouse.json` (committed) | +| **inhouse** | standard test crystals measured at the SLS (lysozyme, thaumatin, insulin, cytochrome C, myoglobin), small-molecule standards (aspirin, citric acid, HEPES, YAG, KDP, L-cystine, L-ascorbic acid), plus no-crystal controls | XDS, from the `CORRECT.LP` beside each dataset (the standard proteins also carry a reference model for R-free, reported only: `--model` below); for the small molecules the space group is the literature's (`ref_override`), as XDS reports only Sohncke groups; L-cystine, which XDS does not index, has only the literature reference | `inhouse.json` (committed) | | **private** | user data | XDS, like inhouse | outside the repository; the local site config gives its path | | **refine** | public PDB depositions whose structure factors and coordinates go through refinement only, nothing processed | none: a set passes when the refinement ran; the R-factors and the solvent audit are reported | `refine.json` (committed) | | **multisweep** | several sweeps merged as one - small wedges of several crystals, several sweeps of one crystal (swung detector, kappa runs, repeated sweeps), small molecules - plus must-not-merge controls; opt-in, never part of a default run | the base row's: each row names an open or in-house row (`base`), whose reference scores the merge as that arm scores it, plus which sweeps joined (`sweeps_expect`, below) | `multisweep.json` (committed) | @@ -909,6 +909,12 @@ whole range; the manifest keeps the rule used as `dmin_rule`. A reference measured by hand goes in `ref_override`, which `refs` leaves alone. A set whose reference is known to be wrong gets `"unscored": ""`: it still runs, but scores `unscored` instead of pass or fail. + A set whose files misdescribe the experiment in a way rugnux is not meant to detect (a placeholder + distance written by a retired acquisition system, a run padded with frames recorded after the + shutter closed) gets `"args": [...]` and `"args_why": ""`: the options are added to that set's + command, ahead of any the run passes to every set, and appear in the row's `cmd`. Keep them to + what the reference itself was given (its frame range, its refined distance), so the comparison + stays like for like; anything rugnux should work out on its own does not belong here. A set where two answers are both defensible gets `"ref_alternatives": [{"sg": ..., "sgno": ..., "cell": [...], "why": ""}]` - the fields given replace the reference's, the row passes on any of its references, and `why` is mandatory. diff --git a/tools/battery/battery.py b/tools/battery/battery.py index 628b3fe32..f85099c17 100644 --- a/tools/battery/battery.py +++ b/tools/battery/battery.py @@ -412,6 +412,7 @@ def command(binary, e, opts, model=None): f"{dmin:.3f}" + (f",{ref['dmax']:.3f}" if ref.get("dmax") else "")] if model: cmd += ["--model", model] + cmd += e.get("args", []) # the set's own options (see README), then the run's cmd += opts["extra_args"] cmd += e.get("input_paths") or [e["input_path"]] if opts["gpulock"] and "--no-gpu" not in cmd: # a CPU run has no card to share diff --git a/tools/battery/doc_check.py b/tools/battery/doc_check.py index e257951a0..c6bea7c2c 100644 --- a/tools/battery/doc_check.py +++ b/tools/battery/doc_check.py @@ -30,7 +30,7 @@ DOCS = os.path.join(HERE, "..", "..", "docs") INHOUSE = {"lyso": "lysozyme", "lysoI": "lysozyme", "thau": "thaumatin", "insu": "insulin", "cytc": "cytochrome C", "myob": "myoglobin", "nothing": "no-crystal controls", "aspirin": "aspirin", "citricacid": "citric acid", "hepes": "HEPES", "yag": "YAG", - "kdp": "KDP", "lcystine": "L-cystine"} + "kdp": "KDP", "lcystine": "L-cystine", "lascorbate": "L-ascorbic acid"} errors = []