<section begin=changes/>
* Addition of the atomic boolean argument to the [http://www.nmr-relax.com/manual/structure_rmsd.html structure.rmsd user function] front end. This will be used to enable the calculation of per-atom RMSDs.
* Created the [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.structure.Structure-class.html#test_rmsd_spins 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 [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.relax_fit.Relax_fit-class.html#test_inversion_recovery Relax_fit.test_inversion_recovery system test]. The wrong equation was used in the <code>calc.py</code> Python script used to calculate the peak intensities in the <code>test_suite/shared_data/curve_fitting/inversion_recovery/*.list</code> files. The script and Sparky files have been updated. And the {{: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 [http://www.nmr-relax.com/api/4.0/lib.structure.internal.object.Internal-class.html#validate_models internal structural object validate_models() method ] was being called once for each structure via the [http://www.nmr-relax.com/api/4.0/lib.structure.internal.object.Internal-class.html#selection selection() method ] prior performing the translations, and once prior to performing the rotations, for creating the atomic selection object. This resulted in the [http://www.nmr-relax.com/api/4.0/lib.structure.internal.object.Internal-class.html#_translate _translate() internal structural object method], which converts all input data to formatted strings, being called hundreds of millions of times. Therefore [http://www.nmr-relax.com/api/4.0/lib.structure.internal.object.Internal-class.html#selection selection() method ] no longer calls [http://www.nmr-relax.com/api/4.0/lib.structure.internal.object.Internal-class.html#validate_models 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].
* Moving fedora to redhat. Google Cloud does not offer fedora images.
<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 [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.structure.Structure-class.html#test_rmsd structure.test_rmsd], [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.structure.Structure-class.html#test_rmsd_molecules structure.test_rmsd_molecules], and [http://www.nmr-relax.com/api/4.0/test_suite.system_tests.structure.Structure-class.html#test_rmsd_ubi 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}}e<sup>-{{:R1}}t</sup> whereas it should be I(t) = {{:Iinf}} - ({{:Iinf}} - {{:I0}})e<sup>-{{:R1}}t</sup>.
<section end=bugfixes/>