* 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 I<sub>0</sub> {{:I0}} 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].