* Created the Structure.test_rmsd_spins system test for checking the per-atom RMSD calculation. This is for the new option in the [http://www.nmr-relax.com/manual/structure_rmsd.html structure.rmsd user function].
* Implemented the per-atom RMSD calculation for the [http://www.nmr-relax.com/manual/structure_rmsd.html structure.rmsd user function].
* Fixes for the Relax_fit.test_inversion_recovery system test. The wrong equation was used in the calc.py Python script used to calculate the peak intensities in the test_suite/shared_data/curve_fitting/inversion_recovery/*.list files. The script and Sparky files have been updated. And the I0 I<sub>0</sub> value in the script and system test has been changed from 30 to -30, so that the curves start as negative.
* Huge speed up for the superimposition of a large number of structures. The internal structural object validate_models() method was being called once for each structure via the selection() method prior performing the translations, and once prior to performing the rotations, for creating the atomic selection object. This resulted in the _translate() internal structural object method, which converts all input data to formatted strings, being called hundreds of millions of times. Therefore selection() method no longer calls validate_models(). This may speed up quite a number of internal structure object methods when large numbers of structures are present.
* Copying deployment script of Ubuntu to a Fedora version. This is a response to [https://gna.org/bugs/?25084 bug #25084].
<section begin=bugfixes/>
* Fix for [https://gna.org/bugs/?24723 bug #24723]. This is the bug that the mean RMSD from the structure.rmsd user function is incorrectly calculated - it should be a quadratic mean. The quadratic mean and quadratic standard deviation are now correctly calculated, and the structure.test_rmsd, structure.test_rmsd_molecules, and structure.test_rmsd_ubi system tests have been updated for the fix.
* Bug fix for the inversion recovery equations [https://gna.org/support/?3345 sr #3345]. The inversion recovery experiment was incorrectly implemented as I(t) = {{:Iinf }} - {{:I0 * exp(}}e<sup>-{{:R1 * }}t) </sup> whereas it should be I(t) = {{:Iinf }} - ({{:Iinf }} - {{:I0}}) * exp(e<sup>-{{:R1 * }}t)</sup>.
<section end=bugfixes/>