<section begin=description/>
This is a major feature and bugfix release. It fixes an important bug in the Monte Carlo simulation error analysis in the relaxation dispersion analysis. Features include improvements to the NMR spectral noise error analysis, expansion of the [http://www.nmr-relax.com/manual/grace_write.html grace.write user function] to handle both first and last point normalisation for reasonable R1 R<sub>1</sub> curves in saturation recovery experiments, the implementation of Needleman-Wunsch pairwise sequence alignment algorithm using the BLOSUM62, PAM250 and NUC 4.4 substitution matrices for more advanced 3D structural alignments via the [http://www.nmr-relax.com/manual/structure_align.html structure.align] and [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose] user functions as well as any of the other structure user functions dealing with multiple molecules, conversion of the [http://www.nmr-relax.com/manual/structure_displacement.html structure.displacement], [http://www.nmr-relax.com/manual/structure_find_pivot.html structure.find_pivot], [http://www.nmr-relax.com/manual/structure_rmsd.html structure.rmsd], [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose] and [http://www.nmr-relax.com/manual/structure_web_of_motion.html structure.web_of_motion] user functions to a new pipes/models/molecules/atom_id design to allow the user functions to operate on different data pipes, different structural models and different molecules, addition of the displace_id argument to the [http://www.nmr-relax.com/manual/structure_align.html structure.align] and [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose] user functions to allow finer control over which atoms are translated and rotated by the algorithm, large improvement for the PDB molecule identification code affecting the [http://www.nmr-relax.com/manual/structure_read_pdb.html structure.read_pdb user function], creation of the lib.plotting package for assembling all of the data plotting capabilities of relax, implementation of the new [http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html structure.atomic_fluctuations user function] for creating text output or Gnuplot graphs of the correlation matrix of interatomic distance, angle or parallax shift fluctuations, the implementation of ordinary least squares fitting, and improvements for the [http://www.nmr-relax.com/manual/pcs_corr_plot.html pcs.corr_plot] and [http://www.nmr-relax.com/manual/rdc_corr_plot.html rdc.corr_plot] user functions. Many more features and bugfixes are listed below.
<section end=description/>
* Added [http://www.nmr-relax.com/manual/spectrum_sn_ratio.html spectrum.sn_ratio user function] to calculate the signal to noise ration for all spins, and introduced the per-spin sn_ratio parameter for the NOE, relaxation curve-fitting and relaxation dispersion analyses.
* Added the new [http://www.nmr-relax.com/manual/select_sn_ratio.html select.sn_ratio] and [http://www.nmr-relax.com/manual/deselect_sn_ratio.html deselect.sn_ratio] user functions to change the selection status of spins according to their signal to noise ratio.
* Expansion of the [http://www.nmr-relax.com/manual/grace_write.html grace.write user function] to handle both first and last point normalisation for reasonable R1 R<sub>1</sub> curves in saturation recovery experiments.
* Conversion of the [http://www.nmr-relax.com/manual/structure_align.html structure.align], [http://www.nmr-relax.com/manual/structure_displacement.html structure.displacement], [http://www.nmr-relax.com/manual/structure_find_pivot.html structure.find_pivot], [http://www.nmr-relax.com/manual/structure_rmsd.html structure.rmsd], [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose] and [http://www.nmr-relax.com/manual/structure_web_of_motion.html structure.web_of_motion] user functions to a standardised pipes/models/molecules/atom_id argument design to allow the user functions to operate on different data pipes, different structural models and different molecules simultaneously and to restrict operation to a subset of all spins. This is also used by the new [http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html structure.atomic_fluctuations user function].
* Addition of the displace_id argument to the [http://www.nmr-relax.com/manual/structure_align.html structure.align] and [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose] user functions to allow finer control over which atoms are translated and rotated by the algorithm independently of the align_id atom ID for selecting atoms used in the superimposition.
* Documentation fix in the manual for the lower and upper bonds for parameters in the grid search.
* Documentation fix in the manual for the lower and upper bonds for parameters in the minimisation.
* Documentation fix in the manual for the scaling values of parameters in the minimisation. The scaling helps the minimisers to make the same step size for all parameters when moving in the chi2 χ<sup>2</sup> space.
* Added a devel script which can quickly convert oxygen icons to the desired sizes.
* Extended the devel script image size converter.
* The relax_fit_saturation_recovery.py system test script now sets the norm_type argument. This is for testing out this new option for the [http://www.nmr-relax.com/manual/grace_write.html grace.write user function].
* The new [http://www.nmr-relax.com/manual/grace_write.html grace.write user function] norm_type argument has been activated. The argument is now passed from pipe_control.grace.write into the write_xy_data() function of the lib.software.grace module, and is used to select which point to use for the normalisation.
* The relaxation exponential curve-fitting auto-analysis now sets the normalisation type. This is for the new [http://www.nmr-relax.com/manual/grace_write.html grace.write user function]. If the model for all spins is set to 'sat', then the norm_type will be set to 'last'. This allows for reasonable normalised curves for the saturation recovery R1 R<sub>1</sub> experiment types.
* Change for norm_type variable in the relaxation exponential curve-fitting auto-analysis. This is now set to 'last', not only for the saturation recovery, but now also for the inversion recovery experiment types. This ensures that the normalisation point is the steady state magnetisation peak intensity.
* Cleared the list of blacklisted objects for the cdp.exp_info data structure. The data_store.exp_info.ExpInfo class blacklist variable had previously not been used. But after recent changes, the list was now active. As all the contents of the container were blacklisted, the container was being initialised as being empty when reading the XML formatted state or results files. Therefore the blacklist is now set to an empty list.
* Fix for the parallax shift description in the [http://www.nmr-relax.com/manual/structure_atomic_fluctuations.html structure.atomic_fluctuations user function]. The parallax shift is not quite orthogonal to the distance fluctuations.
* Implemented ordinary_least_squares function the repeated auto-analysis. Inspection of statistics books, shows that several authors does not recommend using regression through the origin (RTO). From Joseph G. Eisenhauer, Regression through the Origin: RTO residuals will usually have a nonzero mean, because forcing the regression line through the origin is generally inconsistent with the best fit; R square measures (for RTO) the proportion of the variability in the dependent variable "about the origin" explained by regression. This cannot be compared to R square for models which include an intercept. From "Experimental design and data analysis for biologists", G. P. Quinn, M. J. Keough: Minimum observed xi rarely extends to zero, and forcing our regression line through the origin not only involves extrapolating the regression line outside our data range but also assuming the relationship is linear outside this range (Cade & Terrell 1997, Neter et al. 1996); We recommend that it is better to have a model that fits the observed data well than one that goes through the origin but provides a worse fit to the observed data; residuals from the no-intercept model no longer sum to zero; usual partition of SSTotal into SSRegression and SSResidual does not work.
* Added save state for test of bug 23186. [https://gna.org/bugs/index.php?23186 Bug #23186: Error calculation of individual parameter "dw" δω from Monte-Carlo, is based on first spin].* Added the system test Relax_disp.test_bug_23186_cluster_error_calc_dw which shows the failure of Monte Carlo simulations error calculations. [https://gna.org/bugs/index.php?23186 Bug #23186: Error calculation of individual parameter "dw" δω from Monte-Carlo, is based on first spin].* Added additional test for the r2a parameter. [https://gna.org/bugs/index.php?23186 Bug #23186: Error calculation of individual parameter "dw" δω from Monte-Carlo, is based on first spin].
* Attempt to implement the GUI test General.test_bug_23187_residue_delete_gui. This will NOT catch the error. [https://gna.org/bugs/index.php?23187 Bug #23187: Deleting residue in GUI, and then open spin viewer crashes relax].
* Added test for spin independent error of k_ABk<sub>AB</sub>. [https://gna.org/bugs/index.php?23186 Bug #23186: Error calculation of individual parameter "dw" δω from Monte-Carlo, is based on first spin].
* Fix for the showing of the spin viewer window in the GUI tests. The show_tree() method of the main GUI window class was not calling the custom self.spin_viewer.Show() method, as required to set up the observer objects required to keep the spin viewer window updated. The value of status.show_gui was blocking this. Instead the show argument of this Show() method is being set to status.show_gui to allow the method to always be executed.
* Updated the main relax copyright notices for 2015.
* Improvements for the [http://www.nmr-relax.com/manual/rdc_corr_plot.html rdc.corr_plot user function] - the plot range is now determined by the data.
* Added save state for testing implementation of error analysis. [https://gna.org/task/?7882 Task #7882: Implement Monte-Carlo simulation whereby errors are generated with width of standard deviation or residuals].
* Simplification of system test Relax_disp.test_task_7882_monte_carlo_std_residual, to just test the creation of Monte-Carlo data where errors are drawn from the reduced chi2 χ<sup>2</sup> distribution. [https://gna.org/task/?7882 Task #7882: Implement Monte-Carlo simulation whereby errors are generated with width of standard deviation or residuals].* Extension of the [http://www.nmr-relax.com/manual/monte_carlo_create_data.html monte_carlo.create_data user function] to draw errors from the reduced chi2 χ<sup>2</sup> Gauss distribution as found by best fit. [https://gna.org/task/?7882 Task #7882: Implement Monte-Carlo simulation whereby errors are generated with width of standard deviation or residuals].* Adding to backend of pipe_control.error_analysis(), to modify data point as error drawn from the reduced chi2 χ<sup>2</sup> Gauss distribution. [https://gna.org/task/?7882 Task #7882: Implement Monte-Carlo simulation whereby errors are generated with width of standard deviation or residuals].* Adding empty API method to return errors from the reduced chi2 χ<sup>2</sup> distribution. [https://gna.org/task/?7882 Task #7882: Implement Monte-Carlo simulation whereby errors are generated with width of standard deviation or residuals].* Added API function in relaxation dispersion to return error structure from the reduced chi2 χ<sup>2</sup> distribution. [https://gna.org/task/?7882 Task #7882: Implement Monte-Carlo simulation whereby errors are generated with width of standard deviation or residuals].* Temporary test of making a confidence interval as described in fitting guide. This is system test Relax_disp.x_test_task_7882_kex_conf, which is not activated by default. Running the test, interestingely shows, there is a possibility for a lower global kexk<sub>ex</sub>. But the value only differ from kexk<sub>ex</sub>=1826 to kexk<sub>ex</sub>=1813. [https://gna.org/task/?7882 Task #7882: Implement Monte-Carlo simulation whereby errors are generated with width of standard deviation or residuals].
* Change to system test Relax_disp.x_test_task_7882_kex_conf(). This is just a temporary system test, to check for local minima. This is method in regression book of Graphpad: http://www.graphpad.com/faq/file/Prism4RegressionBook.pdf Page: 109-111. [https://gna.org/task/?7882 Task #7882: Implement Monte-Carlo simulation whereby errors are generated with width of standard deviation or residuals].
* Raising an error, if the R2eff model is used, and drawing errors from the fit. [https://gna.org/task/?7882 Task #7882: Implement Monte-Carlo simulation whereby errors are generated with width of standard deviation or residuals].
<section begin=bugfixes/>
* Bug fix for the lib.arg_check.is_int_list() function for checking a list of lists. This is used to check user function arguments, but was causing a RelaxError to be raised for all integer list of lists user function arguments when a valid value is supplied. The function has been updated to match the is_str_list() function which does not suffer from this bug.
* Fix in dispersion API, to set error value for clustered values. [https://gna.org/bugs/index.php?23186 Bug #23186: Error calculation of individual parameter "dw" δω from Monte-Carlo, is based on first spin].
* Fix for [https://gna.org/bugs/?23187 bug #23187, the problem whereby opening the spin viewer window, deleting a residue, and then reopening the spin viewer crashes relax]. This change completes the spin viewer update_*() functions. The prune_list variable was initialised but not used. Now it is used to store the keys of the items to delete, and then the items are deleted at the end in a new loop so that the loop over the dictionary keys is not corrupted.
* Fix for the [http://www.nmr-relax.com/manual/rdc_corr_plot.html rdc.corr_plot user function]. The Y-axis is now set to the measured RDC, as the RDC errors are plotted as dY errors. This matches the behaviour of the [http://www.nmr-relax.com/manual/pcs_corr_plot.html pcs.corr_plot user function].