= Description =
This is a major feature release which includes a huge number of changes, as can be seen below. The largest change is a huge speed up of all relaxation dispersion models - see the table below for a comparison to relax 3.2.3. Other important features include the implementation of a zooming grid search algorithm to be used in all analysis types, improved plotting of R1rho values in the relaxation dispersion analysis, the ability to optimise the R1 parameter in all off-resonance dispersion models, proper minimisation statistics resetting by the minimisation user functions, and the expansion of the periodic table information in the relax library for better estimating molecular masses. Additional features are that there is better tab completion support in the prompt for Mac OS X, the addition of the 'time' user function, the value.copy user function accepting a force argument, model nesting in the dispersion auto-analysis has been extended, the spin-lock offset is now shown in the dispersion analysis in the GUI, the relax_disp.r2eff_estimate user function has been added for fast R2eff and I0 parameter value and error estimation, and gradients and Hessians have been added to the exponential curve-fitting C module allowing more advanced optimisation in the relaxation curve-fitting and dispersion analyses. An important change, which is the main reason for starting the relax 3.3.x line is the renaming of the calculate, grid_search and minimise user functions to minimise.calculate, minimise.grid_search and minimise.execute respectively. This change breaks compatibility with old relax scripts.
* Huge speed ups for all of the relaxation dispersion models ranging from 1.366x to 164.180x times faster. The speed ups for the clustered spin analysis are far greater than for the single spin analysis.
* Implementation of a zooming grid search algorithm for optimisation in all analyses. This includes the addition of the minimise.grid_zoom user function to set the zoom level. The grid width will be divided by 2**zoom_level and centred at the current parameter values. If the new grid is outside of the bounds of the original grid, the entire grid will be translated so that it lies entirely within the original.
* Increased the amount of user feedback for the minimise.grid_search user function. Now a comment for each parameter is included in the printed grid search setup table. This includes if the lower or upper bounds, or both, have been supplied and if a preset value has been used instead.
* Improved support for R1rho 2D graph plotting in the relax_disp.plot_disp_curves user function as the X-axis can now be the nu1 value, the effective field omega_eff, or the rotating frame title angle. And the plots are interpolation over the spin-lock offset.
* Ability to optimise the R1 relaxation rate parameter in the off-resonance relaxation dispersion models.
* Creation of the relax_disp.r1_fit user function for activating and deactivating R1 fitting in the dispersion analysis.
* Better tab completion support in the prompt UI for Mac OS X users. For some Python versions, the Mac supplied libedit library is used rather than GNU readline. But this library uses a completely different language and hence tab completion was non-functional on these systems. The library difference is now detected and the correct language sent into libedit to activate tab completion.
* Created the time user function. This is just a shortcut for printing out the output of the time.asctime() function.
* The value.copy user function now accepts the force flag to allow destination values to be overwritten.
* Expanded model nesting capabilities in the relaxation dispersion auto-analysis to speed up the protocol.
* The spin-lock offset is now included in the spectra list GUI element for the relaxation dispersion analysis.
* Creation of the relax_disp.r2eff_estimate user function for the fast estimation of R2eff/R1rho values and errors when full exponential curves have been collected. This experiment feature uses linearisation to estimate the R2eff and I0 parameters and the covariance matrix to estimate parameter errors.
* Gradients and Hessians are implemented for the exponential curve-fitting, hence all optimisation algorithms and constraint algorithms are now available for this analysis type. Using Newton optimisation instead of Nelder-Mead Simplex can save over an order of magnitude in computation time. This is also available in the relaxation dispersion analysis.
* The minimisation statistics are now being reset for all analysis types. The minimise.calculate, minimise.grid_search, and minimise.execute user functions now all reset the minimisation statistics for either the model or the Monte Carlo simulations prior to performing any optimisation. This is required for both parallelised grid searches and repetitive optimisation schemes to allow the result to overwrite an old result in all situations, as sometimes the original chi-squared value is lower and the new result hence is rejected.
* Large expansion of the periodic table information in the relax library to include all elements, the IUPAC 2011 standard atomic weights for all elements, mass numbers and atomic masses for all stable isotopes, and gyromagnetic ratios.
* Significant improvements to the structure centre of mass calculations by using the new periodic table information - all elements are now supported and exact masses are now used.
* Added a button to the spectra list GUI element for the spectrum.error_analysis user function. This is placed after the 'Add' and 'Delete' buttons and is used in the NOE, R1 and R2 curve-fitting and relaxation dispersion analyses.
Renaming of To demonstrating the huge speeds ups in the calculaterelaxation dispersion analysis, grid_search and minimise user functions to minimise.calculate, minimise.grid_search and minimise.execute respectively. The the following table compares the speed of relaxation dispersion models in relax 3.2.3 compared to the new 3.3.0 version, demonstrating the huge speeds ups:
100 single spins analysis: