From 402b3d12932d641e19e894e16c8aae29909604f9 Mon Sep 17 00:00:00 2001 From: Filip Leonarski Date: Tue, 13 Oct 2026 09:03:32 +0200 Subject: [PATCH] ACKNOWLEDGEMENT: autoPROC and Clemens Vonrhein; DOIs verified; DISTL; tNCS credit in MR - All 84 DOIs checked (82 on Crossref, 2 DataCite): title, journal, volume, pages and first author match; Matthews 1968 and Yeates 1997 links percent-encode their parentheses; the MOSFLM link points at a page that answers. - autoPROC: an explicit acknowledgement of Clemens Vonrhein (Global Phasing) for the principle that a pipeline should verify the metadata it is given - beam centre, geometry, goniometer - and correct it where it is wrong; Vonrhein et al. (2011) Acta Cryst. D67, 293-302 (DOI checked). - Zhang, Sauter et al. (2006) DISTL, already credited in SpotFindingSettings.h, gets its entry. - Molecular replacement: tNCS looked for in the native Patterson as Read, Adams & McCoy do; the same credit at DetectTranslationalNcs (comment only). Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_01EizBKhTqrAYago9KJG3dA3 --- docs/ACKNOWLEDGEMENT.md | 30 +++++++++++++------ .../MolecularReplacement.cpp | 1 + 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/docs/ACKNOWLEDGEMENT.md b/docs/ACKNOWLEDGEMENT.md index 7083f4c66..10b01e011 100644 --- a/docs/ACKNOWLEDGEMENT.md +++ b/docs/ACKNOWLEDGEMENT.md @@ -21,11 +21,13 @@ image-header metadata, and the attention paid to diffraction anisotropy, each de pipeline that takes the decisions an experienced crystallographer would take while processing a dataset, and reports each decision together with the evidence it rests on, so that a bare invocation gives the best answer available. autoPROC is the inspiration and the target for that -behaviour, and two of rugnux's working principles come from it. The first is that the metadata in -the image headers - beam centre, detector geometry, rotation axis - may be wrong and must not be -trusted blindly, a point argued in particular by Clemens Vonrhein. The second, which follows from -it, is that the beam centre should be determined from the images themselves; rugnux does this in -its own way, described in §1.4 of the [data-analysis reference](CPU_DATA_ANALYSIS_IMAGE.md). The +behaviour, and two of rugnux's working principles come from it. The first, and the one that has +guided rugnux most, we owe to Clemens Vonrhein: a processing pipeline should not take the +experimental metadata it is given - the beam centre, the detector geometry, the goniometer and its +rotation axis - on trust, but verify it against the images and, where it is wrong, correct it. We +are grateful to him for arguing this so clearly and for so long. The second follows from it: the +beam centre should be determined from the images themselves; rugnux does this in its own way, +described in §1.4 of the [data-analysis reference](CPU_DATA_ANALYSIS_IMAGE.md). The reasons rugnux gives for a weak stretch of a sweep also use autoPROC's wording ("loss of centring during crystal rotation"). C. Vonrhein, C. Flensburg, P. Keller, A. Sharff, O. Smart, W. Paciorek, T. Womack and G. Bricogne, "Data processing and analysis with the autoPROC toolbox" (2011), @@ -75,6 +77,13 @@ B. Couturier, V. V. Gligorov and L. Lacassagne, "SparseCCL: Connected Components Analysis for sparse images" (2019), DASIP 2019, 65-70 [doi:10.1109/DASIP48288.2019.9049184](https://doi.org/10.1109/DASIP48288.2019.9049184). +**XDS and DISTL** — a spot is bounded by its shape (how much of its bounding box it fills) rather than +by its size alone, as XDS (cited under [Integration and rotation geometry](#integration-and-rotation-geometry)) and DISTL bound theirs; the statistic +is rugnux's own, the choice of shape over size is theirs. Z. Zhang, N. K. Sauter, H. van den Bedem, +G. Snell and A. M. Deacon, "Automated diffraction image analysis and spot searching for high-throughput +crystal screening" (2006), J. Appl. Cryst. 39, 112-119 +[doi:10.1107/S0021889805040677](https://doi.org/10.1107/S0021889805040677). + ### Indexing **Fourier-transform indexing** — indexing a diffraction pattern, with no prior knowledge of the @@ -84,7 +93,7 @@ one-dimensional projection form of that idea described in the next paragraph. G. in *Proceedings of the EEC Cooperative Workshop on Position-Sensitive Detector Software (Phase III)*, LURE, Paris, p. 28 (a workshop proceedings without a DOI). -**[MOSFLM](https://www.mrc-lmb.cam.ac.uk/mosflm/)** — the Rossmann FFT autoindexing algorithm and +**[MOSFLM](https://www.mrc-lmb.cam.ac.uk/mosflm/mosflm/)** — the Rossmann FFT autoindexing algorithm and post-refinement practice, including which parameters are safe to refine per image and which must be refined over a wedge. The autoindexing algorithm itself — projecting the reciprocal-space points onto many directions and Fourier-transforming the 1D projection histograms — is I. Steller, @@ -216,7 +225,7 @@ steps are restricted when one is detected - see the translational-pseudo-symmetr the intensity a twinned crystal records is (1−α) I(h) + α I(Th), and the disagreement H = |I(h) − I(Th)|/(I(h) + I(Th)) of the pairs a law relates is uniform on [0, 1−2α], so the median gives the fraction. T. O. Yeates, "Detecting and overcoming crystal twinning" (1997), Methods Enzymol. -276, 344-358 [doi:10.1016/S0076-6879(97)76068-3](https://doi.org/10.1016/S0076-6879(97)76068-3). +276, 344-358 [doi:10.1016/S0076-6879(97)76068-3](https://doi.org/10.1016/S0076-6879%2897%2976068-3). **A first-pass cell that is the coincidence lattice of two twin domains** (twinning by reticular merohedry of index 2 or 3, e.g. obverse/reverse rhombohedral domains or a cubic crystal twinned about @@ -465,7 +474,7 @@ crystallographic software" (2007), J. Appl. Cryst. 40, 658-674 [doi:10.1107/S0021889807021206](https://doi.org/10.1107/S0021889807021206). Whether one copy fits the cell is read off the Matthews coefficient: B. W. Matthews, "Solvent content of protein crystals" (1968), J. Mol. Biol. 33, 491-497 -[doi:10.1016/0022-2836(68)90205-2](https://doi.org/10.1016/0022-2836(68)90205-2). How many copies +[doi:10.1016/0022-2836(68)90205-2](https://doi.org/10.1016/0022-2836%2868%2990205-2). How many copies to search for is weighed by a distribution of the Matthews coefficient over protein crystals made from the mode and mean of Kantardjieff and Rupp's: K. A. Kantardjieff and B. Rupp, "Matthews coefficient probabilities: Improved estimates for unit cell contents of proteins, DNA, and protein-nucleic acid @@ -486,7 +495,10 @@ log-likelihood gain - the sum of sigma_A^4 / 2 over the reflections - is too sma out is not searched for: A. J. McCoy, R. D. Oeffner, A. G. Wrobel, J. R. M. Ojala, K. Tryggvason, B. Lohkamp and R. J. Read, "Ab initio solution of macromolecular crystal structures without direct methods" (2017), Proc. Natl. Acad. Sci. USA 114, 3637-3641 -[doi:10.1073/pnas.1701640114](https://doi.org/10.1073/pnas.1701640114). The logarithm of the Bessel +[doi:10.1073/pnas.1701640114](https://doi.org/10.1073/pnas.1701640114). Translational NCS is looked +for in the native Patterson before the search, an off-origin peak read as Read, Adams and McCoy read +it (see +[Translational pseudo-symmetry](#space-group-twinning-and-pseudo-symmetry) above). The logarithm of the Bessel function I0 in it is evaluated with the polynomial approximations of M. Abramowitz and I. A. Stegun, "Handbook of Mathematical Functions" (1964), National Bureau of Standards, 9.8.1-9.8.2. A predicted model is cut into rigid domains by its predicted aligned error, as Oeffner et al. (above) do before diff --git a/image_analysis/structure_refinement/MolecularReplacement.cpp b/image_analysis/structure_refinement/MolecularReplacement.cpp index 92a71b55c..6d6763811 100644 --- a/image_analysis/structure_refinement/MolecularReplacement.cpp +++ b/image_analysis/structure_refinement/MolecularReplacement.cpp @@ -1603,6 +1603,7 @@ LikelihoodPeak LikelihoodTranslationZ(const LikelihoodSetup &setup, const std::v // --- translational NCS --- +// Following Read, Adams & McCoy (2013) Acta Cryst. D69, 176-183 TranslationalNcs DetectTranslationalNcs(const std::vector &merged, const gemmi::UnitCell &cell, const gemmi::SpaceGroup &sg) { constexpr double D_MIN = 5.0, D_MAX = 10.0, MIN_DISTANCE_A = 15.0, MIN_HEIGHT = 0.2;