The embedded CCP4 Monomer Library subset grows from 62 to 84 compounds: - the modified tRNA/rRNA nucleotides PSU, 5MC, 1MA, OMG, OMC, OMU, H2U, M2G, 7MG, 2MG, 5MU (RNA group, joined by the library's backbone link "p"); - the cofactors NAD, NAI, NAP, NDP, FAD, FMN, HEM, HEC, SAM, SAH, and dioxygen (OXY). CMO is left out: its dictionary has C-O at 1.25 A, where bound CO is near 1.15 A. links_and_mods.cif gains the links these compounds use: HEC-CYS1/HEC-CYS2 (heme C thioethers), CYS-HEMB/CYS-HEMC, CYS-FAD and HIS-FAD1/2, with their modifications. AddMetalLinks now takes a metal atom of any residue, not only a one-atom ion, so a heme iron's LINK records to His NE2 / Met SD / water become bonds at the library's metal-site distances; the site's coordination counts the metal's bonds in its own dictionary (a heme's four pyrrole N) as well as the records. A metal within a ligand is also a metal for the repulsions (1.9 A to N, O, S) and its dictionary bonds are kept with the metal bonds. Note HEC.cif's own Fe-N(pyrrole) ideal is 1.90 A (HEM: 2.04 A), so a cytochrome c reports a metal-bond rmsd near 0.1 A. Test RefinementRestraints_deposited_ligands builds the topology of eleven deposited models cut down to the ligand and its surroundings (tests/test_data/ligands, 66 KB, from PDB 1EHZ, 8BKH, 6K9I, 2W3V, 5VML, 6F3P, 8CON, 3TK0, 7TCD, 6W4H, 5EPE): every ligand restrained, bond rmsd < 0.03 A, the RNA backbone bonded to each modified nucleotide, the heme Fe-His bonds, and the HEC thioethers. rugnux --mode refine on the full entries against their deposited structure factors: R-free within +-0.003 of the build where these were held fixed, ligand bond rmsd vs the dictionary from 0.004-0.058 A down to 0.002-0.042 A. rugnux grows by 425 KiB. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015CeEGgpKdfkCTJb3YNMJcu (cherry picked from commit f4d407c8de6cb462320edb21a70665350e436d28)
27 KiB
Data analysis: refinement of a placed model (§15)
Part of the CPU/GPU data-analysis reference; the section numbers are continuous across its parts.
:local:
:depth: 2
15. Restrained refinement of a placed model
Wherever a model is placed - it fits where it is (§14.8), or molecular replacement placed it (§14.10) -
rugnux refines it against the merge it was placed on (--no-refine skips this). rugnux --mode refine
runs the same refinement on a model and merged structure factors that already exist. How to use it, and
what it writes, is in Models and reference data; its report
keys are in The results report.
The refinement comes after every processing decision and changes none of them. Nothing it finds is
read by the space-group search, the indexing choice, the resolution cut or the files <prefix>.mtz,
<prefix>_model.cif and <prefix>_maps.mtz; R_WORK and R_FREE stay those of the model as placed
(§14.3). What it produces is written beside them: the refined model, its map coefficients, the blobs of its
difference map and the REFINE_ keys.
The library reads and writes no file. The model and the reflections come in, the refined model, its statistics and its map coefficients go out; the restraint dictionary is compiled into the binary (§15.4).
15.1 What is refined, and in what order
The model is taken as the refinement can use it: the first model of the file only, its hydrogens removed, every anisotropic B replaced by its isotropic equivalent, and every B clamped to the range the refinement allows (2 Ų up to twice the model's largest B, within 100-300 Ų). Occupancies are kept as they are, and so are alternative conformations, each refined with its own restraints.
Two stages follow.
- Placement. Each chain of at least 50 non-water atoms is moved as a rigid body - an angle-axis rotation about its centroid, scaled by its rms radius so that a unit of rotation moves a typical atom by about an angstrom, and a translation - against the X-ray target (§15.2), by Ceres' L-BFGS for 30 iterations. Then one B shift per residue. Each of the two is kept only where it lowers R-free by more than 0.001: a deposited model was refined atom by atom already, and moving its chains or shifting its B factors residue by residue then only makes it worse. The placement stage needs no dictionary.
- Restrained refinement. Every atom's position and isotropic B, against the X-ray target and the geometry of the dictionary (§15.4-§15.5), in weight trials chosen by R-free (§15.7). Residues the dictionary does not describe, and residues with an atom it does not know, are held fixed: they stay in the structure factors, in the bulk-solvent mask and in the repulsions the refined atoms see, but they do not move. So do atoms of zero occupancy.
15.2 The X-ray target
The target is the maximum-likelihood amplitude target: for an acentric reflection the Rice distribution of
the observed amplitude F_o given the model's |F_\mathrm{model}|, for a centric one its centric
counterpart,
-\ln L_\mathrm{acentric} = \ln\Sigma + \frac{F_o^2 + D^2|F_\mathrm{model}|^2}{\Sigma} - \ln I_0\!\left(\frac{2F_o D|F_\mathrm{model}|}{\Sigma}\right),\qquad
-\ln L_\mathrm{centric} = \tfrac12\ln\Sigma + \frac{F_o^2 + D^2|F_\mathrm{model}|^2}{2\Sigma} - \ln\cosh\frac{F_o D|F_\mathrm{model}|}{\Sigma},
(the terms that depend on neither the model nor the parameters left out) with D the fraction of the model that is right and \Sigma the variance that the rest of the structure and
the measurement leave (§15.3), summed over the working reflections. \ln I_0 and I_1/I_0 are evaluated
with the polynomial approximations of Abramowitz and Stegun, through the exponentially scaled form for large
arguments so that nothing overflows. The amplitudes are the French-Wilson |F| of §10.8 - the ones the
written reflection file carries - and the free reflections are those of §10.7.
F_\mathrm{model} is the model of §14.2,
F_\mathrm{model} = k\,e^{-\mathbf{s}^\top\mathbf{B}\mathbf{s}/4}\left(F_\mathrm{calc} + k_\mathrm{sol}\,e^{-B_\mathrm{sol}s^2/4}\,F_\mathrm{mask}\right),
with the atoms' F_\mathrm{calc} computed with the dictionary's riding hydrogens included (§15.4). The
scale, the anisotropic B, the bulk solvent and the likelihood's parameters are fitted at the start of each
macro-cycle (§15.3) and held fixed while the minimiser runs; the mask is drawn for the model as it is
at that point.
The gradient by the FFT method. The atoms' density is placed on a grid with a Gaussian blur (the one
REFMAC-compatible density calculation uses, chosen for the lowest B a macro-cycle can reach) and transformed
once; the crystal's symmetry is composed in reciprocal space from the transform of one copy, as for the rigid
body (§14.8). The derivative of the target with respect to every structure factor, taken back to real space
by one inverse transform through the adjoint of that composition, is a map; each atom's derivatives with
respect to x, y, z and B are that map summed against the derivatives of its own blurred density. One
evaluation of the target and of the gradient of every atom thus costs a density gather, two FFTs and a
gradient gather, whatever the number of atoms. The derivative of a riding hydrogen is passed to its parent.
15.3 Scale, bulk solvent and the likelihood parameters
Scale and solvent. The flat bulk-solvent mask is drawn with the REFMAC radii (probe 1.0 Å, shrink 0.8 Å)
on a grid of its own, with a spacing of d_\mathrm{min}/3 or 0.4 Å, whichever is finer (coarser only where
a cell would need more than 2^{26} points). On the atoms' density grid the shrink is lost at low
resolution: at 3 Å its 1 Å step leaves no grid point within the shrink radius. k_\mathrm{sol} and
B_\mathrm{sol} are searched over their physical range on the working reflections, and the overall scale
and anisotropic B are fitted at each point of that search (§14.2) - at the points of its fine pass by
robust least squares:
iteratively reweighted (four reweightings), each reflection's residual r = F_o - |F_\mathrm{model}|
weighted by 1/\sqrt{1 + (r/c)^2} with c the median |r| of the unweighted fit. The fit then minimises
the pseudo-Huber loss \sum 2c^2\left(\sqrt{1 + (r/c)^2} - 1\right), quadratic for the bulk of the
reflections and linear for the few a model cannot explain - a beam-stop shadow, an ice ring, a missing part
of the model - which ordinary least squares would let set the scale of all the rest. When the B factors
are refined, the overall isotropic part of the scale's B is moved into the atoms (and into B_\mathrm{sol},
so that F_\mathrm{model} stays as it is); left in the scale, it and the atoms' B drift against each other
as the B factors are refined.
With these three choices - riding hydrogens, the fine mask grid and the robust scale - the R-work and
R-free of a model as given (REFINE_R_WORK_START, REFINE_R_FREE_START) agree with REFMAC 5.8's 0-cycle
values on the same model and data within 0.002 on twelve of fourteen depositions from 1.1 to 3.6 Å, and
within 0.006 on the other two (tools/battery/refine_parity.py).
D and \Sigma. The two parameters of the likelihood are fitted by maximum likelihood in resolution
bins of the free set (100 free reflections to a bin, at most 30 bins; where the free set has fewer than
100 reflections, the working ones join it so that the likelihood still has a scale), and interpolated
linearly in 1/d^2 between the bins' centres:
\betaon the free reflections, as the whole spread ofF_oaboutD F_\mathrm{model}with variance\varepsilon\beta- the measurement error included;Dthen on the working reflections of the bin, with the variance\Sigma = \varepsilon\beta + 2\sigma^2for an acentric reflection and\varepsilon\beta + \sigma^2for a centric one,\sigmathe amplitude's own error.
\Sigma is also the variance of each reflection in the target. Where the measurement error is a large part
of the spread - the weak high-resolution shells - it is counted twice, and D falls towards 0 there, with
the figure of merit. This division of the two parameters between the working and the free set is the one
REFMAC5 describes; measured on REFMAC 5.8's own output it reproduces its D by bin and its overall figure of
merit (the mean over the working reflections) to about 0.01 on most depositions.
15.4 The dictionary and the topology
The restraints are those of the CCP4 Monomer Library, a subset of which is compiled into rugnux
(image_analysis/structure_refinement/monomers/, regenerated by update_monomers.py; nothing is read from
disk, and $CLIBD is never consulted): the 20 standard amino acids and MSE; the DNA and RNA nucleotides
(DA, DC, DG, DT, A, C, G, U); the modified nucleotides of tRNA and rRNA met most often - pseudouridine (PSU),
5-methylcytidine (5MC), 1-methyladenosine (1MA), the 2'-O-methyl nucleotides OMG, OMC and OMU, dihydrouridine
(H2U), N2-methyl- and N2,N2-dimethylguanosine (2MG, M2G), 7-methylguanosine (7MG) and ribothymidine (5MU), polymer
residues joined by the same backbone link; ATP, ADP, AMP, GTP, GDP and GMP; the cofactors NAD⁺ (NAD), NADH (NAI),
NADP⁺ (NAP), NADPH (NDP), FAD, FMN, heme (HEM), heme C (HEC), S-adenosylmethionine (SAM) and
S-adenosylhomocysteine (SAH), and dioxygen (OXY); DMSO; the PEG fragments PEG, PGE, PG4 and 1PE; glycerol,
ethylene glycol, MPD, acetate, sulfate and phosphate; water; and the ions Na, K, Mg, Ca, Mn, Fe²⁺, Fe³⁺, Co, Ni,
Cu, Zn, Cd, Cl, Br and I - 84 compounds - with the library's links and modifications that apply to them (among
them heme C's two thioethers to its cysteines, HEC-CYS1 and HEC-CYS2, and the covalent links of heme and FAD to
the protein) and the energy types those compounds use.
The model's topology is built from it by GEMMI (prepare_topology): the links between residues (the peptide
and cis-peptide, the nucleic-acid backbone, disulfides, and the model's LINK records where the library
describes them), the modifications those links imply, and per residue the bonds, angles, torsions, chiral
volumes and planes. Torsions are restrained where the dictionary gives them an esd, except the main-chain
φ/ψ and the sugar puckers it lists as alternatives. The dictionary's hydrogens are added to every
residue it describes (waters excepted), placed by GEMMI from the dictionary's geometry and moved with their
parents: they take part in the structure factors and in no restraint, and are placed again on their
parents at every macro-cycle. The refined model is written with them.
15.5 Geometry, metal and B restraints
Every restraint is a squared normalised deviation, E = ((x - x_\mathrm{ideal})/\sigma)^2, with its
analytic derivatives:
- bonds and angles, ideal and esd from the dictionary;
- torsions, modulo the dictionary's period, with derivatives in the form of Blondel and Karplus, free of the singularities of the arccos form;
- chiral volumes
(\mathbf{a}_1 - \mathbf{c})\cdot((\mathbf{a}_2 - \mathbf{c})\times(\mathbf{a}_3 - \mathbf{c})),\sigma = 0.2ų; - planes: the distances of the atoms from their least-squares plane (the plane's normal the smallest eigenvector of the atoms' scatter, by Jacobi rotations); the plane is optimal, so the derivative of each distance carries no term from the plane moving;
- repulsions of every pair of atoms closer than its contact distance, symmetry mates included, that no
bond, angle or 1-4 relation joins and that are not alternative conformations of each other, with at least
one of the two refinable:
E = ((d_0 - d)/0.2\,\text{Å})^2below the contact distanced_0and nothing above it,d_0the sum of the energy types' van der Waals radii, 2.6 Å where both atoms can hydrogen-bond and 1.9 Å between a metal and N, O or S. The list is rebuilt at every macro-cycle.
Metal sites. A metal - an ion, or a metal atom of a ligand such as a heme's iron - is restrained to the
donor atoms (O, N or S) that the model's LINK / _struct_conn records bind it to. Where the library has a link for the pair - its ZN-CYS, ZN-HISND,
ZN-HISNE, FE-CYS, FE-HISND and FE-HISNE - that link is used as it is, with the modification it makes to
the donor's residue (the proton the bond replaces). Every other record becomes a link of one bond at the
distance of the library's own statistics of metal sites (its metals.json, carried as monomers/metals.cif)
for the metal, the donor element and the site's coordination number - the number of such records the metal
has, plus the bonds its own residue's dictionary gives it (a heme iron's four pyrrole nitrogens) - interpolated linearly between two tabulated coordination numbers (rows resting on at least 20 sites
count; σ is the row's standard deviation, at least 0.02 Å). Only the bond is restrained, not
the angles at the metal. A contact without a record stays a repulsion, and a record to a symmetry mate is
left out, as every bond to a symmetry mate is. The rmsd of these bonds - with the dictionary's own bonds of
a metal within a ligand, a heme iron's to its porphyrin - is reported apart from the covalent bonds'
(REFINE_RMSD_METAL_BONDS).
B restraints. The B factors of two atoms are restrained to each other in proportion to their size, by
the symmetric Kullback-Leibler divergence of two isotropic Gaussians of variances B_i and B_j:
E = \frac{(B_i - B_j)^2}{\kappa^2 B_i B_j},
a difference restraint whose \sigma is \kappa\sqrt{B_iB_j}, so that atoms of high B may differ more than
atoms of low B. \kappa is 0.1 for bonded main-chain atoms and 0.133 for main-chain atoms bonded to a
common atom, 0.2 and 0.3 for the side chains and the rest, and 0.5 for atoms within 4 Å of each other (waters
among them, symmetry mates included) that no bond or angle relates. No atom's B goes below 2 Ų or above
the ceiling of §15.1.
15.6 The minimiser
Positions and B factors are minimised in turn, each by an L-BFGS of rugnux's own (RefinementMinimiser),
with the two-loop recursion of Nocedal and of Liu and Nocedal, a memory of 20 pairs and a backtracking line
search from the full step to sufficient decrease, its first trial moving no position by more than 0.3 Å and
no B by more than 10 Ų. What sets it apart from a textbook L-BFGS:
- Its memory is kept from one macro-cycle to the next. A macro-cycle is a few dozen iterations on a target whose scale and likelihood parameters were refitted in between; starting each from what the earlier ones learnt of the curvature, instead of from a steepest-descent step, is what lets two macro-cycles of a weight trial get as far as many restarted ones. Each weight trial starts with an empty memory.
- The B steps are scaled by their curvature. The initial inverse Hessian of the B factors is a
diagonal: the X-ray target's curvature in each atom's B - its shape from the likelihood's curvature in
|F_\mathrm{model}|and the atom's own scattering, summed in resolution shells, calibrated once per trial against central differences of the gradient along a random\pm1direction - plus the B restraints' curvature, each element at least a thousandth of the median. The positions take none: their restraints' curvature is that of stiff bonds and angles, which move atoms together, and as a diagonal it slows the soft (torsion and X-ray) directions rather than scaling them.
The diagonal is rescaled at each iteration by the latest pair (Oren-Shanno scaling in that metric). A solve
stops after its iteration budget (30 for the positions and 20 for the B factors per macro-cycle) or where an
iteration lowers the target by less than 10^{-7} of it.
15.7 The weights, decided by trial
The refined target is w\,T_\mathrm{X\text{-}ray} + E_\mathrm{geometry} for the positions and
w_B\,T_\mathrm{X\text{-}ray} + E_B for the B factors. Rather than fixing w and w_B in advance, rugnux
runs short refinements at several weights and keeps the one that does best on the free set - a weight
chosen late, on the evidence, instead of early at a rule.
The starting weights balance the gradients: w_0 = |\nabla E_\mathrm{geometry}| / |\nabla T_\mathrm{X\text{-}ray}|,
the geometry's gradient taken on the model shaken by 0.1 Å (a refined model's geometry would give none), and
w_{B,0} likewise from the B restraints on the B factors shaken by 20%. Each trial is two macro-cycles
(the scale, solvent and likelihood refitted, then the positions, then the B factors) from where it starts.
A trial is within bounds where its rmsd from the dictionary is at most 0.02 Å for bonds and 2° for
angles; one trial displaces another where it is within bounds and its R-free is lower by more than 0.001
(differences smaller than that do not decide, and the trial listed first - on a ladder, the tighter
geometry - is kept). The trials
are:
- The ladder from the placed model:
w = w_0 \times \{1/1024, 1/128, 1/16\}, each with the B factors held and refined atw_{B,0}- six trials. - The trajectory: up to eight steps, each a set of trials from where the last step ended - the weights as they are, and in turn the positions' weight halved and doubled (halved because the geometry loosens at one weight as the model improves, until it leaves the bounds) or the B factors' weight divided and multiplied by four. A step is taken while it lowers R-free or R-work by more than 0.001 and its R-free stays within 0.001 of the best so far, and the trajectory ends at its best step. On a deposited model, whose free set the depositor's refinement has already fitted, R-work falls while R-free rises, and the trajectory ends where it began.
- The final ladder: the trajectory's weights times
\{0.5, 1, 2\}, kept where one displaces it.
w never exceeds w_0/8. The trials of one set run side by side - on one GPU, on several, or on the CPU's
threads - each from the same start and taking nothing from the one before it, so the result does not depend
on how many run at once.
The refinement can be cut short from outside (the broker's deadline or cancel, Ctrl+C): the check is made between the minimiser's iterations and before every trial, the trials that finished are chosen among as usual, and the report says so. Cut before the first trial, the model is the placement's.
15.8 Maps of the refined model
The refined model's map coefficients, <prefix>_refined_maps.mtz, are 2mF_o - DF_c and mF_o - DF_c as in
§14.4, but with m and D those of the refinement's own likelihood (§15.3) rather than the shell
\sigma_A of §14.4, so the maps carry the weights the target was minimised with; m is
I_1(X)/I_0(X), X = 2F_oD|F_\mathrm{model}|/\Sigma, for an acentric reflection and \tanh(X/2) for a
centric one. Where the merge kept the Bijvoet pairs, the anomalous difference map is made on the refined
model's phases too, and read by the blob finder below.
15.9 Unexplained density: blobs
The mF_o - DF_c map of the refined model is searched for what the model leaves unexplained: the connected
regions above 3 σ that peak above 4 σ, found by flood fill (GEMMI's find_blobs_by_flood_fill, the method
of Coot's "unmodelled blobs"), each moved to the copy nearest the model and measured - peak, volume, the
density integrated above the cutoff, the nearest atom, the polar (N, O) atoms at 2.4-3.4 Å and the N, O or S
at 1.8-2.6 Å, and the anomalous map at its peak. Each gets one reading, by rules on what is measured:
| Reading | Rule |
|---|---|
MODEL_ERROR |
within 1.6 Å of a model atom: the model's own atom out of place, or a missing alternative conformation |
ION |
at least 1.8 Å from the model, and an anomalous peak of at least 4 σ, or two metal-like contacts and a peak of at least 8 σ |
LIGAND |
larger than 1.5 times a single atom's blob at this resolution (a sphere of radius d_\mathrm{min}/2) and than 8 ų, at least 2.2 Šfrom the model |
WATER |
at least 2.2 Å from the model with at least one polar contact |
UNASSIGNED |
anything else |
They are listed strongest first (by the integrated density) in <prefix>_blobs.json, and the five strongest
in the report. A blob read as LIGAND is density of ligand size where the model has nothing: a buffer
molecule or an unmodelled side chain is that as well as the compound that was soaked. The readings point a
person at the density; they do not identify a compound.
15.10 GPU and CPU
On a CUDA build the target, the gradient and the restraints are evaluated on the card - the density gather,
cuFFT, the composition of the symmetry and the target per reflection, the adjoint through a CSR list, the inverse transform and one warp per atom for its gradient; the restraints in one kernel whose
per-atom gradient slots are summed in a fixed order; the robust scale fit and the fine solvent mask on the
card as well - with no floating-point atomics, so the result is the same from run to run. The weight trials
of a set run on as many cards as there are, each trial on an engine of its own. Where the case does not fit
the card's budget, or with --no-gpu, or on a build without CUDA (macOS included: the refinement has no
Metal path), the CPU engine computes the same target, to rounding, several times more slowly (seconds on a
GPU, typically 2-15 minutes on the CPU).
15.11 Not yet
What the refinement does not do yet - each a known gap, not a design choice:
- Custom ligands and other monomer libraries. Only the 84 compounds of §15.4 are restrained. Any other
residue is held fixed (it stays in
F_\mathrm{calc}, the mask and the repulsions); no restraints are generated for a new ligand, and neither a user's restraint CIF nor an external monomer library can be given. - TLS refinement.
- Anisotropic ADPs: an anisotropic B is replaced by its isotropic equivalent, and only isotropic B is refined.
- NCS restraints: copies are refined independently.
- Twin refinement: the target is not a twinned one, also where the twin hypothesis' merge was written.
- Water building: waters are neither picked nor removed; the blob finder only points at candidates.
- Alternative conformations and occupancies: existing conformers are refined in place; no occupancy is refined and no conformer is added.
- Rotamer and peptide-flip search, and Ramachandran restraints.
- Real-space refinement, and jelly-body or reference-model restraints.
- A Metal (Apple GPU) path: on macOS the refinement runs on the CPU.
- Validation beyond geometry: the report gives the bond and angle rmsd, the metal-bond rmsd and the number of clashes, not a MolProbity-style analysis (Ramachandran, rotamer and clashscore statistics).
References
- R. C. Agarwal, "A new least-squares refinement technique based on the fast Fourier transform algorithm", Acta Cryst. A34 (1978), 791-809 (the gradient by the FFT method, §15.2).
- N. S. Pannu & R. J. Read, "Improved structure refinement through maximum likelihood", Acta Cryst. A52 (1996), 659-668, and G. N. Murshudov, A. A. Vagin & E. J. Dodson, "Refinement of macromolecular structures by the maximum-likelihood method", Acta Cryst. D53 (1997), 240-255 (the maximum-likelihood amplitude target and its figure of merit, §15.2, §15.8).
- G. N. Murshudov, P. Skubák, A. A. Lebedev, N. S. Pannu, R. A. Steiner, R. A. Nicholls, M. D. Winn, F. Long & A. A. Vagin, "REFMAC5 for the refinement of macromolecular crystal structures", Acta Cryst. D67 (2011), 355-367 (D from the working set and the variance from the free, §15.3; the Kullback-Leibler form of the B restraints, §15.5).
- R. J. Read, "Improved Fourier coefficients for maps using phases from partial structures with errors", Acta Cryst. A42 (1986), 140-149 (the m, D weighting of the map coefficients, §15.8).
- V. Y. Lunin & T. P. Skovoroda, "R-free likelihood-based estimates of errors for phases calculated from atomic models", Acta Cryst. A51 (1995), 880-887, and V. Y. Lunin, P. V. Afonine & A. G. Urzhumtsev, "Likelihood-based refinement. I. Irremovable model errors", Acta Cryst. A58 (2002), 270-282 (the likelihood's parameters from the free set, §15.3).
- J.-S. Jiang & A. T. Brünger, "Protein hydration observed by X-ray diffraction: solvation properties of penicillopepsin and neuraminidase crystal structures", J. Mol. Biol. 243 (1994), 100-115, and A. Fokine & A. Urzhumtsev, "Flat bulk-solvent model: obtaining optimal parameters", Acta Cryst. D58 (2002), 1387-1392 (the flat bulk-solvent mask and its parameters, §15.3).
- P. V. Afonine, R. W. Grosse-Kunstleve & P. D. Adams, "A robust bulk-solvent correction and anisotropic scaling procedure", Acta Cryst. D61 (2005), 850-855 (the grid search over the solvent parameters, §15.3).
- P. J. Huber, "Robust estimation of a location parameter", Ann. Math. Statist. 35 (1964), 73-101, and P. Charbonnier, L. Blanc-Féraud, G. Aubert & M. Barlaud, "Deterministic edge-preserving regularization in computed imaging", IEEE Trans. Image Process. 6 (1997), 298-311 (the robust scale fit and its smooth, pseudo-Huber loss, §15.3).
- A. A. Vagin, R. A. Steiner, A. A. Lebedev, L. Potterton, S. McNicholas, F. Long & G. N. Murshudov, "REFMAC5 dictionary: organization of prior chemical knowledge and guidelines for its use", Acta Cryst. D60 (2004), 2184-2195 (the restraint dictionary, §15.4).
- M. Wojdyr, "GEMMI: A library for structural biology", J. Open Source Softw. 7 (2022), 4200 (the topology, the riding hydrogens and the blob search, §15.4, §15.9).
- A. Blondel & M. Karplus, "New formulation for derivatives of torsion angles and improper torsion angles in molecular mechanics: elimination of singularities", J. Comput. Chem. 17 (1996), 1132-1141 (the torsion derivatives, §15.5).
- M. M. Harding, "Geometry of metal-ligand interactions in proteins", Acta Cryst. D57 (2001), 401-411, and "Small revisions to predicted distances around metal sites in proteins", Acta Cryst. D62 (2006), 678-682; F. Leonarski, L. D'Ascenzo & P. Auffinger, "Mg2+ ions: do they bind to nucleobase nitrogens?", Nucleic Acids Res. 45 (2017), 987-1004 (the metal-site distances, §15.5).
- J. Nocedal, "Updating quasi-Newton matrices with limited storage", Math. Comp. 35 (1980), 773-782, and D. C. Liu & J. Nocedal, "On the limited memory BFGS method for large scale optimization", Math. Program. 45 (1989), 503-528 (the minimiser, §15.6).
- A. T. Brünger, M. Karplus & G. A. Petsko, "Crystallographic refinement by simulated annealing: application to crambin", Acta Cryst. A45 (1989), 50-61 (the starting weight from the ratio of the gradients, §15.7).
- P. V. Afonine et al., "Towards automated crystallographic structure refinement with phenix.refine", Acta Cryst. D68 (2012), 352-367 (weights chosen among refinements by R-free within geometry bounds, and the overall B moved into the atoms, §15.3, §15.7).
- A. T. Brünger, "Free R value: a novel statistical quantity for assessing the accuracy of crystal structures", Nature 355 (1992), 472-475 (R-free).
- P. Emsley, B. Lohkamp, W. G. Scott & K. Cowtan, "Features and development of Coot", Acta Cryst. D66 (2010), 486-501 (unmodelled blobs, §15.9).
- M. Abramowitz & I. A. Stegun, Handbook of Mathematical Functions, National Bureau of Standards (1964), 9.8.1-9.8.4 (the Bessel functions of the target, §15.2).
The full citations, with DOIs, are in ACKNOWLEDGEMENT.md.