Version 3.2.0
(20 May 2014, from /trunk)
http://svn.gna.org/svn/relax/tags/3.2.0

    Features:
        * Addition of the vector_angle() relax library function for calculating the signed or directional angle between two vectors.
        * Huge speed up of the interatom.define user function.
        * For improved feedback, a busy cursor is shown in the GUI when executing user functions.
        * The steady-state NOE auto-analysis now produces a 2D Grace plot of the reference and saturated spectra peak intensity values.
        * Complete redesign of the specific analyses backend, simplifying and cleaning up this internal API and making it easier for users to add completely new analysis types to relax.
        * Parametric reduction of the rotor frame order model, eliminating one redundant parameter hence simplifying optimisation.
        * Large improvement for the lib.software.grace module.  The '*_err' and '*_bc' parameter names for the parameter error and back-calculated parameters respectively are now supported, allowing these values to be easily plotted.
        * Expansion of the value.set user function to handle parameters which consist of lists of values.  The index argument has been added to allow the index of the list to be specified, and this is then propagated into the specific analysis API.
        * Improvements for the parameter definitions in all analysis types.  This allows for better output in 2D plots and text files.
        * Implemented linear constraints for the frame order analysis.  This uses the log-barrier constraint algorithm in the minfx library https://gna.org/projects/minfx/ to provide constraints without requiring gradients.
        * Improved and expanded the relax command line options for debugging.
        * Full independence of the relax library so that it can be used outside of relax.
        * The addition of a relaxation dispersion user function for setting the R20 values to the minimum R2eff value.
        * Expanded capabilities for the relax_disp.sherekhan_input user function.
        * Implementation of the "B14" and "B14 full" relaxation dispersion CPMG models for 2-site exchange for all time scales (from the new Baldwin 2014 paper at http://dx.doi.org/10.1016/j.jmr.2014.02.023).
        * Large improvements to the relax HTML manual at http://www.nmr-relax.com/manual/index.html including fixes for URLs, bibliography entries, links, and tables.
        * Support for multiple point creation for the OpenDX chi-squared space mapping user function.
        * Automatic determination of reasonable initial contour levels for the OpenDX mapping user function.
        * Addition of a new chapter to the manual for the N-state model or ensemble analysis.
        * Creation of the new pymol.frame_order user function for visualising results.
        * Expansion of the Grace 2D data plotting capabilities.


    Changes:
        * Shifted two functions from pipe_control.angles into the new lib.geometry.angles module.  This is the fold_spherical_angles() and wrap_angles() functions which are not related to the relax data store and hence can be made independent.
        * Replaced function atan(omega1 / Delta_omega) with atan2(omega1 , Delta_omega), to make sure returned theta values are between 0 and pi.  This was done in the function return_offset_data() in the specific_analyses of relax_disp.  This was discussed in: http://thread.gmane.org/gmane.science.nmr.relax.devel/5210.
        * Changed a unit test and system test, where a change from the atan to atan2 function to calculate theta can give differences to the 15 decimal.
        * Replaced how a global analysis average results from a previous run to instead take the median.  This is to prevent averaging extreme outliers, and instead take the median of the previous result.  This was discussed in: https://mail.gna.org/public/relax-devel/2013-10/msg00009.html.
        * Modified system test Relax_disp.test_r1rho_kjaergaard to use input guess values of phi_ex in units of ppm^2 instead of rad^2/s^2.
        * Small change to system test Relax_disp.test_r1rho_kjaergaard.  The outcome of kex from system test is in the area of 4-5000. The expected value is 13000.  A deeer analysis of the input is needed, to judge what is the correct value.
        * Created the Structure.test_bug_21814_pdb_no_80_space_padding system test.  This is for catching bug #21814 (https://gna.org/bugs/?21814), the PDB reading failure when the PDB records are not padded to 80 spaces.  The PDB file used for the test is the same file as attached to the bug report.
        * The verbosity flag is now used in the centre of mass calculations.  The pipe_control.structure.mass.pipe_centre_of_mass() function now passes the verbosity argument into the lib.structure.mass.centre_of_mass() function.
        * Created the new vector_angle() library function.  This is located in the lib.geometry.vectors module.  The function will calculate the angle between two vectors with sign or direction using the atan2() function.
        * Addition of a number of unit tests for the new lib.geometry.vectors.vector_angle() function.
        * Changes to the lib.geometry.vectors.vector_angle() function.  This now expects the normal of the plane in which the angle is defined.  The original logic was not functional, therefore the angle is forced to be negative if the cross product between the two vectors points in the opposite direction as the normal.
        * Improvements for the log converter script.  This is for the script used to convert SVN messages into a format for the relax release announcement.  The script now handles spacing better.  Multi-line messages are now concatenated into a single line using a double space between separate sentences and a single space in all other cases.
        * Improvements for the pipe_control.mol_res_spin.generate_spin_id_unique() function.  The unique spin ID now takes into account if the molecule is named or not (for single molecules).  This allows the function to be used when dealing with the structural data rather than the molecule, residue, and spin data structure.
        * Removed the full stop from the printout of the test names in the test suite.  This allows for quicker copying and pasting of the test name when running with the --time option and then selecting a single test to run.
        * Modified the Noe.test_noe_analysis system test to catch bug #21863 (https://gna.org/bugs/?21863).  This is the failure to create the ref and sat Grace 2D plots in the NOE analysis.
        * Improved the user feedback when executing a user function in the GUI.  The busy cursor is now turned on at the start of the user function wizard page method _apply() and turned off again at the end.  This would avoid user confusion, thinking that the program has frozen (as was the case in bug #21862, https://gna.org/bugs/?21862).
        * Changed the Noe.test_noe_analysis system test to handle the peak intensities correctly.  This relates to bug #21863 (https://gna.org/bugs/?21863), the grace.write user function not being able to write ref/sat plots as described in sample script noe.py.  Instead of trying to produce the 'ref.agr' and 'sat.agr' files for the non-existent 'ref' and 'sat' parameters, instead the 'intensities.agr' file is being produced for the peak intensity parameter.  The reference and saturated intensities will appear as two graph sets within that plot.
        * Changed the Noe analysis sample script to properly handle the peak intensity Grace plots.  This relates to bug #21863 (https://gna.org/bugs/?21863), the grace.write user function not being able to write ref/sat plots as described in sample script noe.py.  Instead of trying to produce the 'ref.agr' and 'sat.agr' files for the non-existent 'ref' and 'sat' parameters, instead the 'intensities.agr' file is being produced for the peak intensity parameter.  The reference and saturated intensities will appear as two graph sets within that plot.  These changes match those of the test suite.
        * Fix for the line numbering for the NOE analysis sample script in the user manual.  The line numbering for the code snippets did not match that of the full sample script shown at the start of that section of the NOE chapter.
        * Added a simple shell script to quickly grep the entire source tree while excluding .svn directories.  This will only work on POSIX systems (Linux and Macs).
        * Fix for the Noe.test_bug_21562_noe_replicate_fail system test.  The 'ref' and 'sat' parameters do not exist.  Therefore the grace.write user function calls in the system test script have been modified to output the 'intensities' parameter instead.
        * Complete rearrangement of the specific analysis code for the steady-state NOE.  This brings the code into line with the recent specific analysis code rearrangements, specifically in the specific_analyses.relax_disp package.
        * Changed the Noe auto-analysis to properly handle the peak intensity Grace plots.  This relates to bug #21863 (https://gna.org/bugs/?21863), the grace.write user function not being able to write ref/sat plots as described in sample script noe.py.  Instead of trying to produce the 'ref.agr' and 'sat.agr' files for the non-existent 'ref' and 'sat' parameters, instead the 'intensities.agr' file is being produced for the peak intensity parameter.  The reference and saturated intensities will appear as two graph sets within that plot.
        * Redesign and standardisation of the peak intensity data structure throughout all analyses in relax.  The various structures 'intensities', 'intensity_err', 'intensity_sim', 'sim_intensity', and 'intensity_bc' have all been renamed.  The new structures are called 'peak_intensity', 'peak_intensity_err', 'peak_intensity_sim' and 'peak_intensity_bc'.  This allows the structure to be processed as a standard parameter in the specific analysis API.  One very visible consequence is that plots of peak intensities, as well as value files, will now have peak intensity errors.  For backwards compatibility, the relax data store method _back_compat_hook() has been modified to catch all previous peak intensity object variants and to standardise and rename these to the new object names.  As the parameter is now called 'peak_intensity' rather than 'intensities', all calls to the grace.write and value.write for this parameter have been changed in the auto-analyses, the sample scripts, the test suite and the manual.
        * Fix for the Noe.test_noe_analysis system test.  The grace plots of the peak intensities now have error bars.
        * The legends in Grace plots are now turned on by default, if the legend flags are not specified.  The Noe.test_noe_analysis system test has been updated for the change.
        * Added matplotlib detection to the dep_check module.  This follows step 1 from the planning document at http://thread.gmane.org/gmane.science.nmr.relax.devel/5278.
        * Added matplotlib to the info module.  This follows step 1 from the planning document at http://thread.gmane.org/gmane.science.nmr.relax.devel/5278.
        * Modified the python_multiversion_test_suite.py script to run the relax information printout.  This is to test out the info module on multiple Python versions and to have a record of the setup of each Python version.
        * Python 3 fixes for the info module.  The new processor_name() function was not compatible with Python 3 as the text read from STDOUT needs to be 'decoded'.
        * The variables in the relax_fit.h file are now all static.
        * Added the new exp_mc_sim_num argument to the relaxation dispersion auto-analysis.  This is in preparation for fixing bug #21869 (https://gna.org/bugs/?21869).  This argument allows for a different number of Monte Carlo simulations for the 'R2eff' model when exponential curves are fit.  It will mainly be useful in the test suite to improve the accuracy of the R2eff errors, while still running a low number of simulations for the other models to allow optimisation to be quick.
        * Modifications to the Relax_disp.test_m61_exp_data_to_m61 system test.  This is to fix bug #21869 (https://gna.org/bugs/?21869), the failure of this system test.  The number of Monte Carlo simulation for the 'R2eff' model has been increased from 3 to 25 using the new exp_mc_sim_num argument to the dispersion auto-analysis.  To keep the test fast, only a single spin is optimised.
        * Redesign and major clean up of the specific_analyses.jw_mapping package.  The code has been broken up into separate modules.
        * Fix for the default value table documentation in the specific_analyses.jw_mapping package.  This was broken in the last commit.
        * Updates for the rest of relax for the redesign of the specific_analyses.jw_mapping package.
        * Redesign and major clean up of the specific_analyses.consistency_tests package.  The code has been broken up into separate modules.  This matches the similar specific_analyses.jw_mapping package.
        * Redesign and major clean up of the specific_analyses.relax_fit package.  The code has been broken up into separate modules.  The rest of relax has been updated to handle the changes.
        * Removed the empty documentation strings from the specific analysis API base class.  These are being gradually shifted into the specific_analyses.*.uf modules, so do not belong in the API object.
        * The specific analysis API classes are now all singletons.  This change will reduce the amount of memory used, as these classes are initialised multiple times throughout relax, especially in the test suite.  The API objects are not used for local storage so the multiple instance verses singleton design change will make no difference.  The singleton design pattern code has been added to the base class specific_analyses.api_base.Api_base so that all classes inherit the __new__() method which implements the singleton.
        * Shifted the NOE analysis specific user function documentation from the API object to the uf module.
        * More code refactorisation of the specific_analyses.n_state_model package into new modules.  The API object is now in the 'api' module, the remaining private methods have been shifted into the 'optimisation' and 'uf' modules, and the user function documentation moved to the 'uf' module.
        * Added units tests for package consistency testing for all of the remaining specific analyses.
        * Fixes for the unit tests for the N-state model specific analysis package changes.
        * Updated the package __all__ lists for a number of the specific analyses.
        * Shifted all of the private methods for optimisation from the relaxation dispersion API object.  These are now functions of the specific_analyses.relax_disp.optimisation module.
        * Created the new specific_analyses.relax_disp.uf module.  This consists of the private methods of the relaxation dispersion API object which act as the back end for the user functions, as well as the user function documentation, all shifted from the 'api' module.
        * Shifted the model-free analysis specific API object to the specific_analyses.model_free.api module.
        * Fixes for the new specific_analyses.model_free.api module.
        * Created the new specific_analyses.model_free.uf module.  This consists of the private methods from the 'main' module which act as the back end for the user functions as well as the user function documentation.
        * Created the new specific_analyses.model_free.parameters module.  This consists of the private methods from the 'main' and 'mf_minimise'.  All class methods have been converted into functions.
        * Created the new specific_analyses.model_free.optimisation module.  This consists of the merger of the 'mf_minimise' and 'multi_processor_commands' modules.  All the private class methods have been converted into functions.
        * Shifted all of the model-free specific analysis API methods into specific_analyses.model_free.api.
        * Clean up and refactoring of the specific_analyses.model_free.bmrb module.  The class methods have all been converted into functions, the deleted class is no longer a base class for the specific analysis API class.
        * The read_columnar_results() method has been removed from the specific analysis API.  This is only for backwards compatibility with ancient relax 1.2 and earlier model-free results files, so will never be used by any other analysis.
        * Converted all of the class methods in specific_analyses.model_free.results to functions.  This class has been removed from the API as well.
        * Renamed specific_analyses.model_free.results to back_compat.  This is to make the purpose of the module clearer, to avoid developer confusion.
        * Shifted the model-free classic_style_doc user function documentation to the 'uf' module.
        * Shifted the last private method out of the model-free specific analysis API class.  It has been converted into a function of the new 'data' module, for lack of a better name.
        * Shifted some of the specific_analyses.model_free.parameters functions into the new 'model' module.
        * Removed the test_grid_ops() method from the specific analysis API.  This has been shifted into the new lib.optimisation module and converted into a function, breaking a number of circular import kludges.
        * Fixes for the specific analysis API unit tests.  The 'instance' variable used for the singleton design pattern is skipped in the method and object checks.
        * Redesign of the specific analysis API.  All parts of relax using this API now work with the API objects directly.  The specific_analyses.setup module has been renamed to specific_analyses.api and the get_specific_fn() function has been eliminated.  Instead of calling this, the different parts of relax now obtain the API object by calling the new return_api() function.  This results in a large cleanup of the API - method names are no longer changed to a different name.
        * Fix for the new singleton design of the specific analysis API objects.  The use of the class namespace as a storage space has been eliminated.  This was causing test suite failures when checking the API objects.  For some reason, some of the target function objects were being placed in 'self'.
        * Created a directory for holding the CaM double rotor frame order synthetic data.
        * Capitalised the pivot and CoM variables in the base frame order distribution generation script.
        * Reintroduced the distribution PDB file creation to the frame order test data generation script.  This is the generate_base.py script in the test_suite/shared_data/frame_order/cam directory.  The ability to create the distribution.pdb file was long lost in this script, and can now be activated using the DIST_PDB class variable.
        * The Frame Order test data generation base script now loads all structures before rotating them.  This allows the progress printout to function correctly by not having any user function printouts as the rotations are occurring.
        * Created a simple double rotor geometric system to used for this frame order test data generation.  The system_create.py script creates the geometric system based on the CoMs of both domains in the parent directory and two perpendicular rotation axes passing through both CoMs.  A PDB file of the representation is created by the script.
        * Improvements and expansion of the frame order test data generation base script.  More of the class variables are now defined in this base class and dummy methods are provided to allow certain operations to be skipped (print_axis_system(), axes_to_pdb() and build_axes()).  Importantly, the script can now handle multiple modes of motion with the introduction of the key _multi_system() and _state_loop() methods.
        * Fixes for the calculation of the frame order matrix in the test data generation base script.  The matrix generation now handles multiple modes of motion correctly.  The total rotation matrix is constructed when looping over the modes by using the dot product of the individual rotation to the total, and then this is used to create the outer product, summed over all states.
        * The frame order test data generation base script now outputs the frame order matrix to 8 places.
        * Introduced the ROT_FILE flag to the frame order test data generation base script.  This allows the 'rotations.bz2' file creation to be skipped, if set to False.  This file takes time to create and is of limited use.
        * Removed a duplicated state.save call in the frame order test data generation base script.
        * The save file created by the frame order test data generation base script can now be bypassed.  When loading 1,000,000 PDB structures as models into the relax data store, the RAM usage can go over 10 Gb.  When trying to save this into a relax state file with the state.save user function, the time required can be over a day.  Therefore the SAVE_STATE class variable has been introduced to allow the state.save call to be bypassed.
        * Created the RDC and PCS back calculated test data for the CaM double rotor frame order model.  This consists of a uniform distribution over both rotors, the first centred in the C-domain and the second in the N-domain, and the two axes being perpendicular to each other along the CoM-CoM axis.  The distribution consists of 250000 rotated structures.  The frame order matrix for this model is also given.
        * Created a distribution of structures for the CaM double rotor frame order model.  This is only for a distribution of 100 structures, to keep the file size to a reasonable size.  A PyMOL *.pse file is also included to show the distribution together with the rotor system and the domain positions.
        * Updated the rotation() method of all the CaM frame order test data generation scripts.  The motion_index argument is now accepted by all of the methods to allow the base script to execute correctly.
        * Fix for the Frame_order.test_generate_rotor2_distribution system test.  The rotation() method now must accept the motion_index keyword argument.
        * Created the Frame_order.test_cam_double_rotor system test for the CaM synthetic data.  This will be used to implement the frame order double rotor model.
        * The CaM double rotor frame order test RDC data now has single quotes around the spin IDs.  This allows the data to be loaded in the Frame_order.test_cam_double_rotor system test.
        * Created subsets of the CaM double rotor frame order test PCS data.  This consists of data for only 5 spins, and matches those of the other CaM frame order test data.
        * Large refactorisation of the frame order package.  The private methods of the frame order package specific_analyses.frame_order have now all been shifted into modules.  This is to simplify the package by not having huge quantities of code in the __init__ module.  Now the code resides in the api, checks, data, optimisation, parameters, and user_functions modules.
        * Added the double rotor frame order model to the frame_order.select_model user function.
        * Better support for the parameters of the double rotor frame order model.
        * Initial implementation of the double rotor frame order model target function.  The target function func_double_rotor() has been created as a copy of the func_rotor_qrint() method, modified for the double rotor model.  Modifications will likely be needed as the compile_2nd_matrix_double_rotor() and pcs_numeric_int_double_rotor() functions are implemented.
        * Initial implementation of the lib.frame_order.double_rotor module.  This module implements the functions needed to solve the frame order analysis for the RDC (via the frame order matrix) and PCS (numerically).  The interfaces have been updated for the double rotor but most of the code still implements the basic rotor model from which it derives.
        * Fix for the double rotor frame order model when only RDCs are used.  The target function was not being aliased when no PCS data was present.
        * Changed the precision of the deactivated Frame_order.test_cam_double_rotor_pcs system test.  This test will run with the command "relax -s Frame_order.test_cam_double_rotor_pcs" and, because of the small angle of the test model, the chi-squared value differences for just the PCS were too small for the previous precision of 1 decimal place.
        * The double rotor system is now truly perpendicular.  This is for the CaM frame order synthetic test data.  The two axes were not perpendicular whereas for the model they should be.
        * Updated the double rotor distribution PDB file for the perpendicular axes.  This is for the CaM frame order double rotor synthetic data.  The number of structures in this distribution is set to 100 (10 per motional mode).  The PyMOL *.pse file has also been updated.
        * Updated the CaM frame order double rotor synthetic test data for the perpendicular axes.  The RDC and PCS data has been recalculated for 250,000 structures, this time with the axes being truly perpendicular.
        * Added a simple script for analysing the eigensystem of the CaM frame order double rotor test model.
        * Capitalised the class variables of all of the CaM frame order system test scripts.
        * Class variable cleanup for the CaM frame order system test scripts.  The variables are now all defined in the base script and only overwritten when needed by the individual tests.
        * Changed the handling of the pivot point in the CaM frame order system tests.  The pivot point is now a class variable, rather than being hardcoded into a function.  The handling of a second pivot has also been added.
        * Updated the CaM frame order double rotor system test script to have the correct two pivots.
        * Changes to the frame_order.pivot user function.  The 'order' argument has been added to allow for multiple pivots to be present.  The user function backend will store these as cdp.pivot, cdp.pivot2, cdp.pivot3, etc.  The 'fix' argument is now defaulting to False to make sure it is always boolean.
        * The second pivot is now being passed into the frame order target function class.
        * Simplified the CaM frame order system test base script.  The class variables are now always defined, so checking for their existence is pointless.  The CONE_S1 is now also defined in the base script as a class variable.
        * Added support for the new axis_alpha frame order parameter to the specific_analyses.frame_order package.
        * Implemented the new frame order rotor model parameters in the target function.  The parameters {axis_theta, axis_phi} have been replaced by the single axis_alpha.  To support the new model construct, the CoM of the entire system is now passed into the target function.
        * The AXIS_ALPHA parameter is now initialised in the CaM frame order system test base script.  The base script was broken a while back due to AXIS_ALPHA not being defined but being checked for.
        * Improvements for the centre of mass calculation for the frame order model optimisation.  This is now only calculated for the rotor models.  The CoM is also printed out for better user feedback.
        * The CaM frame order system tests for the rotor models are converted to the new axis_alpha parameter.  The axis_theta and axis_phi spherical coordinates are converted to the new reduced parameter set defined by a random point in space (the CoM of all atoms), the pivot point, and a single angle alpha.
        * The CaM frame order system test base script is now using lib.geometry.vectors.vector_angle().  This is for correctly calculating the alpha axis angle for the rotor models.
        * Fixes for the rotor axis alpha angle conversion in the CaM frame order system test base script.  The pivot point is now the point on the rotor axis closest to the reference point (the CoM).  Therefore the closest point is now calculated from the pivot point on the axis and the axis vector.  This closest point is needed for defining the new minimal parameter set for the rotor models.
        * Changes for the convert_rotor() method of the CaM frame order system test base script.  The method now sets the alpha angle rather than returning it.  The method now also resets the pivot point to the point on the rotation axis closest to the CoM.
        * Fixes for the rotor axis reconstruction in the func_rotor_qrint() frame order target function.  This is for the rotor model.  The axis alpha angle is now correctly converted into the rotor axis using the CoM and pivot point.
        * Optimisation is now turned on for the Frame_order.test_cam_rotor2 system test.  This is to reveal deficiencies in the handling of the new axis alpha parameter.
        * The frame order optimisation results unpacking function now supports the axis alpha parameter.  This is in the function specific_analyses.frame_order.optimisation.unpack_opt_results().
        * Updated the chi2 value check in some of the CaM frame order system tests for the rotor model.  The chi2 value is slightly different due to truncation and conversion artifacts of the parameter set reduction.
        * Shifted all of the code for calculating the frame order rotor axis into lib.frame_order.rotor_axis.  The new frame_order.rotor_axis module consists of three function for creating a unit vector or the rotor axis using either the axis alpha angle, the two spherical angles or the three Euler angles.
        * Renamed the specific_analyses.frame_order.user_functions module to uf.
        * Fix for the optimised chi-squared value check in the Frame_order.test_cam_rotor system test.  The reduced parameter set results in a slightly different chi2 value.
        * Shifted the frame order average domain position info check from the 'optimisation' to 'checks' module.
        * Fix for the CaM frame order system tests.  The axis alpha angle and pivot shifting to the closest point to the CoM in the base system test script now only happens for the 'rotor' and 'free rotor' models.  This allows the tests for the isotropic cone models to pass again.
        * Fixes for all of the CaM frame order optimisation scripts in the test data directories.  The frame_order.average_position user function is now essential.
        * The centre of mass printout in the frame order target function setup now uses the verbosity argument.  This means that the printout is not shown for the Monte Carlo simulation optimisation.
        * Correction for the nu_CPMG to tau_CPMG conversion formula in the dispersion chapter of the manual.  In relax, the conversion nu_CPMG = 0.25 * tau_CPMG is used and not nu_CPMG = 0.5 * tau_CPMG.
        * Merged the Van't Hoff and Arrhenius lines of the dispersion software comparison table of the manual.
        * Renamed the specific_analyses.relax_disp.disp_data module to specific_analyses.relax_disp.data.  This is to match the module naming convention used in the other specific analyses, and as detailed in the post http://thread.gmane.org/gmane.science.nmr.relax.devel/5294.
        * Updated all of the frame order optimisation scripts for the CaM test suite data.  These simple testing scripts were very much out of date and non-function for the current code.  Half of the code in these scripts is now implemented in the concise frame_order.pdb_model user function.
        * Updated the ancient test_suite/shared_data/frame_order/cam/rotor2/pcs_only/frame_order.py script.  This now matches the script of its parent directory.
        * Simplified all of the CaM frame order optimisation testing scripts.  These are for the synthetic test suite data.  The unnecessary class structure of the scripts has been eliminated.
        * The frame_order.pivot user function can now be used to turn the pivot optimisation on and off.  If the pivot point is not given, this user function will now just set the fixed flag and nothing else, allowing the optimisation status of a pre-set pivot to be changed.
        * Added the axis alpha angle to the frame order return_units() API method.
        * The frame order axis alpha angle is now defined in the grid search from -pi to pi.
        * Replaced the 'elif' statements with 'if' in the frame order update_model() function.  This is to avoid possible future bugs as the logic was not consistent.
        * Renamed the specific_analyses.api_objects module to parameter_object to better reflect what it is.  This contains a single object for the parameter list object and therefore does not need to be generalised for additional types of objects for the specific analysis API.
        * Updated the module docstring of specific_analyses.parameter_object to match its purpose.
        * Created a parameter list object for the relaxation dispersion analysis.  Instead of using the parameter list object from the base class, the dispersion analysis now defines its own.
        * Docstring improvements for the add_min_data() parameter list base class method.
        * Created two new parameter list methods from the relaxation dispersion code.  The add_model_info() and add_peak_intensity() base class methods have been created from the relaxation dispersion code.  These are just aliases for setting up a number of parameters via add() in a standard way.
        * The frame order specific analysis API object is now truly a singleton.  This should help eliminate some bugs.
        * Standardised all of the parameter list objects for the specific analyses.  All of the specific_analyses packages now contain a parameter_object module which defines all of the parameters.  The ordering of these is now consistent between the analyses, the result of which will be more consistent ordering of element in the relax XML state files.  The new Param_list.add_csa() base class method has been added to standardise the CSA parameter.  And the capabilities of the add_model_info() method has been expanded.
        * The parameter list objects in the specific analysis API are now singletons.  This has no immediate benefit as these classes are only instantiated once.  But it will allow for efficient reuse of these objects in the future and for expansions of the specific analysis API.
        * The frame order pivot points are now stored differently in the current data pipe.  Instead of being stored as a list or array of numbers in cdp.pivot, the point is now stored as cdp.pivot_x, cdp.pivot_y and cdp.pivot_z.  The second pivot cdp.pivot2 is now stored as cdp.pivot_x_2, cdp.pivot_y_2 and cdp.pivot_z_2.  This is to simplify the automated handling of optimisation parameters.  Rather than having to convert the pivot_x, pivot_y, and pivot_z parameters to and from a list, the same mechanisms can now be used for all of the optimised frame order parameters.  This will be used to hugely simplify many of the functions in the specific_analyses.frame_order.parameters module and eliminate a large source of bugs.
        * Temporary deactivation of the Frame_order.test_cam_double_rotor system test.
        * Huge simplification of the specific_analyses.frame_order.parameters.assemble_param_vector() function.  The parameters are now assembled in a generic way by looping over cdp.params.  The simpler code should also be faster.
        * Huge simplification of specific_analyses.frame_order.parameters.param_num().  This now simply calls update_model() and then returns the length of cdp.params.
        * Clean up of the specific_analyses.frame_order.parameters module.  The unused and terribly designed assemble_limit_arrays() function has been deleted.  And unused imports have been removed.
        * Simplification of the specific_analyses.frame_order.optimisation.unpack_opt_results() function.  Looping over the cdp.params parameter list is now used to minimise the amount of replicated code.
        * The frame order analysis is now using the special frame order parameter object.
        * Elimination of the specific_analyses.frame_order.checks.check_rdcs() function.  This function duplicates the functionality of pipe_control.rdc.check_rdcs() while not being as comprehensive.  Switching to the pipe_control.rdc version minimises the amount of code in the frame order analysis, decreasing the potential for bugs.
        * Simplified the assemble_scaling_matrix() frame order function.  The data_type argument no longer does anything, so has been eliminated.
        * Clean up of the base_data_types() frame order function and it use.  The propagation of the data type list around the frame order code is now greatly reduced.  And the alignment tensors and NOESY data have been removed from the base_data_types() function - these are not used.
        * Docstring fixes for the frame order specific analysis API object.  A number of the methods were referring to the base data as being alignment tensors, but this has changed to RDCs and PCSs a long time ago.
        * Clean up and fixes for the frame order model_statistics() API method.  The number of data points 'n' was incorrectly calculated using the original alignment tensor base data.
        * Eliminated the specific analysis API object base __init__() method.  This is no longer needed as the parameter list object is now analysis specific and set up by each analysis type separately.  The calls to this method from the derived classes have therefore also been deleted.
        * Shifted the frame order specific API deselect() method into the Api_common base class.  The method has been renamed to _deselect_global() and extended to handle Monte Carlo simulations.
        * The specific API PARAMS object is now private.  Apart from fixing a number of unit tests, these aliased singletons should not be accessed by the rest of relax.
        * Created the specific analysis API common method _is_spin_param_false().  This simply returns False.  The is_spin_param() frame order method has been deleted and this common method is now used instead.
        * Replaced the frame order specific API model_loop() method.  The base method _model_loop_single_global() is used instead.
        * Replaced the frame order API model_type() method with the base _model_type_global() method.  The two methods were identical anyway.
        * Fixes for the units of the ave_pos_x, ave_pos_y, and ave_pos_z frame order parameters.
        * Removed the frame order API return_units() method.  This method has been superseded by the parameter list object.
        * Added the PCS and RDC as parameters for the frame order and N-state model analyses.  These are now defined in the respective parameter list objects.  The base method add_align_data() has been created to avoid code duplication.
        * Eliminated the last of the specific analysis API return_units() methods.  This functionality is now provided by the parameter list object.
        * Eliminated the model-free specific analysis API data_type() method.  This functionality is now provided by the parameter list object.
        * Converted the N_state_model.test_5_state_xz system test to use a new way to set parameters.  Instead of using pseudo-parameters for the value.set user function such as 'p0', 'p1', etc. for the probabilities, which are then converted into the 'probs' parameter with the index taken from the name, instead the index is now directly given.  The value.set user function will need to be modified to handle this.  The aim is to standardise the parameter list object for the N-state model analysis.
        * Converted the remaining N-state model system tests to use the new value.set index argument.
        * Converted all of the N-state model parameters to use the parameter list object.  The default_value(), return_data_name() and return_grace_string() API methods have also been deleted as these have been superseded by the parameter list object.
        * Clean up of the N-state model user function docstrings.  The pseudo-parameter names such as 'p0', 'p1', etc. no longer exist.
        * The new index argument for the value.set user function now defaults to zero.  This is for backwards compatibility as the default value of None was not handled by the user function backend.
        * Fix for one of the value.set user function unit tests.  The 'alpha2' N-state model parameter no longer exists, and the '2' is now supplied as index=2.
        * Shifted the core of the data_names() specific analysis API method into the parameter list object.
        * Renamed many of the specific analysis parameter list object methods to match the API names.  This is to prepare for a decoupling of the parameter list object from the API object.
        * Updated the relaxation dispersion citation for relax as this is now officially published.
        * All of the add*() methods of the parameter list object have been made private.  This is to prepare the object to be accessible to the rest of relax, so that it can be decoupled from the specific API object.
        * Shifted the minimisation Grace strings and units into the parameter list object.  The return_grace_string() and return_units() functions of the pipe_control.minimise module have been deleted and their contents shifted into the specific analysis parameter list object.
        * Simplified the pipe_control.minimise.minimise() function.  The specific API object only needs to be fetched once.
        * Eliminated the return_data_name() concept from the specific analysis API.  The parameter names can now only have one value, i.e. 's2' is different from 'S2'.  In addition, a number of related functions have been deleted form the pipe_control.minimise module as these are now handled by the parameter list object.  The deleted functions are return_conversion_factor() and return_value().
        * Shifted the Brownian rotational diffusion tensor parameters into the parameter list object.  This only affects the model-free analysis.  The pipe_control.diffusion_tensor module functions default_value(), return_conversion_factor(), return_data_name() and return_units() have been eliminated.  These functions have been merged together with the diffusion parameter self._add() calls in the model-free specific parameter list into the new parameter list base class _add_diffusion_params() method.  To allow the model-free analysis code to differentiate between diffusion and model-free parameters, the new scope() parameter list base class method has been created.  Diffusion parameters return 'global' whereas model-free parameters return 'spin'.  The model-free specific API methods default_value() and is_spin_param() have been deleted as these are now provided fully by the parameter list object.  The is_spin_param() method has been newly implemented in the parameter list object to check the parameter scope.
        * Eliminated a lot of unused code from the pipe_control.align_tensor module.  This includes the functions data_names(), default_value(), map_bounds(), map_labels(), return_conversion_factor(), return_data_name() and return_units() as well as the unused and very old user function documentation __default_value_prompt_doc__, __return_data_name_prompt_doc__ and __set_prompt_doc__.  These are all remnants from the origin of the module - the copying of the diffusion_tensor module.  But they have never been used.
        * Changed the values of the set argument for the parameter list object.  The 'generic' value has been renamed to 'fixed' and is now for all permanently fixed parameters of the model - for example the CSA value in a number of analyses.  The default set argument value of the _add() method has been changed to 'all' so that any parameters registered via that method are not placed in a special set (unless specified otherwise).
        * Clean up and fixes for the parameter definitions in the consistency testing analysis.  The fixed and calculated parameters are now defined in the correct sets, and the description for tc has been expanded and improved.
        * Added the ability to automatically create the parameter tables for the user function documentation.  These are the tables used in many of the user function docstrings.  This has been added to the parameter list base class.  The section title is pre-specified by the new _set_uf_title() method, and the table caption and LaTeX label by the _set_uf_table() method.  The documentation is generated by calling the uf_doc() method.  This uses the new type_string() method to add a compact parameter type string representation to the table.  The aim is to eliminate all of the hard-coded tables in the specific analyses which are always very quickly outdated.  By automatically creating the tables, this simplifies the codebase and simplifies the addition of new analysis types.
        * The parameter tables are now properly initialised in all of the specific analyses.  This will allow the tables to now be used in the user function documentation.
        * The auto-generated user function tables can now display the base units.
        * Spacing fix for one of the diffusion tensor parameter descriptions.
        * The label and caption for the parameter list user function documentation is now supplied to uf_doc().  This allows different types of tables to be generated, for example the default value is useful for the value.set user function but not value.write, while allowing tables to still be shared.
        * Expanded the steady-state NOE parameter description.
        * Expanded the reduced spectral density mapping parameter descriptions.
        * The default scope for the parameter list object uf_doc() method is now 'spin'.  Most of the parameter tables are for setting spin parameters, so this will minimise code.
        * Fixes for the specific analysis parameter list singleton object.  These objects are now really singleton objects and are only initialised once.
        * Fixes for some of the NOE system tests - the NOE parameter description is now different.
        * Shifted the user function documentation creation into the parameter list objects.  The uf_doc() method will now return the pre-created documentation object, and the original base class method for creating the documentation has been renamed to _uf_param_table().
        * Shifted all of the user functions to use the auto-generated parameter tables.  All of the specific analysis default_value_doc and return_data_name_doc documentation objects have been deleted and replaced with the auto-generated ones.  This results in a big code clean up and removes synchronisation issues with the user function documentation quickly becoming out of date when parameters change.
        * Expansion of the dx.map user function documentation.  This now includes tables of the N-state model and relaxation dispersion parameters.  A new auto-generated model-free parameter table including the diffusion parameters has been created and is now used instead of the separate diffusion tensor and model-free parameter tables.
        * Deleted the diffusion tensor __return_data_name_doc__ documentation object.  This is no longer used, being redundant with the new parameter list objects.
        * The frame order parameter tables for the user function documentation are now created.
        * The dx.map user function documentation now included the frame order parameters.
        * Different parameter sets can now be specified when creating the parameter tables.  This is for the analysis specific parameter list objects and the auto-generated user function documentation.
        * Clean up of the grace.write user function documentation.  The minimisation statistics table has been removed and instead the minimisation statistics are included in the parameter tables of the specific analyses, when appropriate.
        * Code clean up - deleted the return_data_name_doc and set_doc pipe.control.minimise objects.  These user function documentation objects are no longer used.  They were also extremely out of date.
        * Created the parameter list object base class _uf_doc_loop() method.  This will be used to loop over all or subsets of the user function documentation parameter tables.
        * The model-free parameter setting documentation has been shifted into the parameter list object.  As the text was quite out of date, it has been updated to the current relax design.
        * The J(w) mapping parameter setting documentation has been shifted into the parameter list object.  This has also been updated to reflect the current design of relax.
        * The consistency testing parameter setting documentation has been shifted into the parameter list object.  This has also been updated to reflect the current design of relax.
        * The relaxation dispersion parameter setting documentation has been shifted into the parameter list object.  The documentation has also been rewritten as it originates from Sebastien Morin back in 2009 and is now very much out of date.
        * Deleted the relaxation curve-fitting parameter setting documentation.  This really didn't say anything.
        * The N-state model parameter setting documentation has been shifted into the parameter list object.
        * Updated the two_domain.py N-state model sample script.  The value setting for the N-state model is now handled differently.
        * More updates of the N-state model sample scripts for the value.set user function changes.
        * Deleted the diffusion tensor parameter setting documentation from the value.set user function.  These values have not been able to be set by the value.set user function for over half a decade.  Therefore this documentation can only lead to user confusion.
        * Deletion of the user function documentation in the pipe_control.diffusion tensor module.  The __default_value_doc__ and __set_doc__ documentation objects are out of date and no longer used anywhere in relax, so they have been eliminated.
        * Shifted the model-free parameter writing documentation to the parameter list object.
        * Rearranged the parameter table ordering in the value user functions.  The order now better matches that of the chapters of the user manual and is consistent between the functions.
        * More reordering of the parameter tables for the value user functions.
        * Removed all of the prompt.doc_string.regexp_doc documentation objects from the user functions.  This is the regular expression documentation which no longer has a purpose.  It was for specifying multiple parameters simultaneously in user functions such as value.set, but this functionality has been removed.
        * Created parameter tables with no additional trailing text.  This is used in a few of the user functions.
        * Updated the value.copy user function documentation for the frame order theory.  The value.copy title has been changed to not be spin specific and a table of the frame order parameters has been added.
        * Improvements for the value.display user function documentation.  The N-state model parameter table has been removed as these parameters are not spin specific and cannot be used.  And the title has been modified.
        * Improvements for the value.read user function documentation.  The N-state model parameter table has been removed as these parameters are not spin specific and cannot be read from a file.  And the title has been modified.
        * Updated the value.set user function documentation for the frame order theory.  The value.set title has been changed to not be spin specific and a table of the frame order parameters has been added.  The spin ID documentation has also been rewritten.
        * Changed the title in the value.write user function documentation.
        * Changed the title for the value user function class.
        * Docstring update for the relaxation dispersion linear_constraints() function.
        * The pivot point x, y and z coordinates are now registered as parameters of the frame order analysis.  These are stored as the parameters pivot_x, pivot_y and pivot_z.
        * Docstring fix in the relaxation curve-fitting linear_constraints() function.
        * Converted the status.escalate variable into module variables for lib.errors and lib.warnings.  This variable is set by the command line flag '-e' or '--escalate'.  By converting it into a module variable, the lib.errors and lib.warnings warnings are now independent of relax.
        * Created the lib.warnings.TRACEBACK variable.  When True, this will cause stack-traceback to be printed out with the warning.  This is to decouple the traceback printout from the warning to error escalation.
        * Created the new '-r' or '--traceback' relax command line option.  If supplied, stack tracebacks will be shown for all RelaxWarnings and RelaxErrors.  This allows for finer debugging control.
        * Clean up of the debugging command line options.  The debug flag now will cause stack tracebacks to be printed on all RelaxWarnings.
        * Created the '--error-state' command line option for saving a pickled state when a RelaxError is raised.  This gives greater control of a powerful feature added to relax by Chris MacRaild.  The pickled state can then be attached to bug reports or can be used to quickly load the state prior to failure when in the scripting UI mode.
        * Reordered the debugging command line options and removed the '-r' shortcut.
        * The lib.errors module is now really independent of relax - the compat module is no longer used.  Instead, the Python 2 and 3 versions of the pickle module are imported using try statements.
        * Decreased the amount of newlines around the printout from the '--error-state' command line option.
        * Improved support for printing stack tracebacks with RelaxWarnings.  The '--traceback' command line option will now show a full traceback.  A replacement warnings.showwarning() function has been written to write out the traceback before the warnings.formatwarning() replacement function is called.
        * Divide by zero avoidance fix for the rotor frame order model module lib.frame_order.rotor.
        * Removed the dependency on the relax dep_check module from the relax library.  This is to further decouple the library from relax.
        * Added a script for testing the independence of the relax library.
        * Removal of all unused imports in the lib.dispersion package.
        * Improvements to the test_library_independence.py development script.  This script for checking the independence of the relax library will now recursively import all packages and modules in the library and report at the end a list of all failures.
        * Shifted the Python 2 and 3 compatibility module 'compat' into the relax library.
        * Shifted the pipe_control.sequence.validate_sequence() function into the relax library.  For this, the new lib.sequence module has been created.  This change is for better library independence.  A circular import with lib.io and lib.arg_check has also been resolved.
        * Shifted the read_spin_data() and write_spin_data() functions from lib.io to lib.sequence.
        * Removed the dependence on the relax 'dep_check' module from the lib.frame_order package.  This is for more independence of the relax library.
        * Added the missing Bioinformatics journal to the bibtex file journal name aliases.
        * Huge clean up of all unused imports in relax.  These were found using the find_unused_imports.py development script.  A number of these changes significantly decrease the possibilities of circular imports appearing in the future.  And this also makes the relax library more independent from the rest of relax.
        * Shifted the data_store.relax_xml module into the relax library as lib.xml.  This module contains a couple of functions which are used for converting Python objects into an XML representation and back again.  These are used not only by the relax data store, but also a number of the structural objects in the relax library (which are themselves placed in the relax data store).  This makes the relax library more independent from the rest of relax.
        * Shifted many of the pipe_control.structure.geometric functions into the relax library.  All but two functions from the pipe_control.structure.geometric module are independent of the relax data store.  These have been shifted into the new lib.structure.geometric module.  This removes most of the remaining relax dependencies in the relax library.
        * Removed the automatic axis labelling in the lib.software.grace.write_xy_header() function.  This is the automatic labelling based on the parameter Grace strings and units of the specific analysis type.  This is now preformed by the specific analyses themselves so the automatic code is not needed or used.  This allows the dependence on the pipe_control.pipes module and the specific analysis API to be removed making the relax library now 100% independent from the rest of relax.
        * Editing of the relax command line option descriptions.
        * Created a new test category for the relax test suite - the software verification tests.  This is part of the full test suite or can be run by itself using the new --verification-tests command line option.  Such tests are best described by https://en.wikipedia.org/wiki/Verification_and_validation_%28software%29.  These tests will be used to make sure that the design aims of the relax source code are satisfied.  For example that the relax library is independent from the rest of relax.  Or that the package __all__ lists actually contain all modules and sub-packages (these tests are currently part of the unit tests).
        * Shifted the relax library independence developer script into the software verification tests.  The functionality of the devel_scripts/test_library_independence.py script is now within the Library.test_library_independence software verification test.  Therefore the script has been deleted.
        * Updated the text for the software verification tests in the test suite.
        * The relaxation dispersion auto-analysis now outputs the R20, R20A, R20B, and R1rho0 parameters.  This includes both text files and 2D Grace plots.
        * Python 3 fix for one of the old scripts in the test suite directories.
        * Improved error messages for when the GUI is launched but the wxPython installation is broken.  Now the case of a broken wxPython installation is handled rather than just a missing installation.  The dep_check module will store the import error message, and relax will now report that back to the user.
        * Python 2.5 and 2.6 compatibility for the Library.test_library_independence verification test.  The importlib package is not available in these Python versions, but the code in the Python 2.7 library file importlib/__init__.py is compatible all the way back to Python 2.3.  Therefore the importlib functions have been copied directly into the system test script and the importlib dependency removed.
        * Updated one of the OMP model-free results files for the different ordering of parameters in the XML.  The changes to the parameter setup for the model-free analysis means that the XML files are now ordered differently.
        * Fix for the Test_data.test_count_relax_times_r1rho relaxation dispersion unit test for Python 3.2+.  The '%s' representation of floating point numbers is different on these Python versions - the number of decimal places used are different by default.
        * Added Python 3.4 support to some of the development scripts.
        * Added 4 more relaxation dispersion system tests to the blacklist for when C modules are missing.  This allows these 4 tests to be skipped in the system test rather than failing with "RelaxError: The exponential curve-fitting C module cannot be found.".
        * Changed the backward compatibility hook for old state files for the spectrometer frequency.  The behaviour has been changed so that the data pipe structure spectrometer_frq_list is now sorted.  This simply allows a number of tests to pass on Python 3.3+, a user would not notice any differences.
        * Fixes for two relaxation curve-fitting system tests for Python 3.3+.  These are the Relax_fit.test_curve_fitting_height and Relax_fit.test_curve_fitting_volume system tests which fail due to accuracy differences and a bad call to the UnitTest method assertEqaul() which should have been an assertAlmostEqual() call.
        * Added the matplotlib module to the Python binary and module seeking script.
        * Added dataset for system test.  System test for CPMG dataset, (http://dx.doi.org/10.1073/pnas.0907387106) Kaare Teilum, Melanie H. Smith, Eike Schulz, Lea C. Christensen, Gleb Solomentseva, Mikael Oliveberg, and Mikael Akkea 2009 SOD1-WT at 25 C.
        * Added system test to analyse data.  System test for CPMG dataset, (http://dx.doi.org/10.1073/pnas.0907387106) Kaare Teilum, Melanie H. Smith, Eike Schulz, Lea C. Christensen, Gleb Solomentseva, Mikael Oliveberg, and Mikael Akkea 2009 SOD1-WT at 25 C.
        * The debugging command line option no longer turns on RelaxWarning tracebacks.  These tracebacks can be separately turned on with the --traceback command line option.
        * Made name for system test shorter and moved data to shorter folder name.  Regarding bug #21953, (https://gna.org/bugs/?21953) - weird performance of grid search.
        * Modified system test for cleaner implementation of tests.  Regarding bug #21953, (https://gna.org/bugs/?21953) - weird performance of grid search.
        * Lowered range for grid search by factor 10 for kex to now between 1-10000.  Regarding bug #21953, (https://gna.org/bugs/?21953) - weird performance of grid search.
        * Changes to system test Relax_disp.test_hansen_cpmg_data_auto_analysis.  Regarding bug #21953, (https://gna.org/bugs/?21953) - weird performance of grid search.  The grid search needed to be increased by +1 and lowering of some results by one digit.
        * Lowering of precision in Relax_disp.test_hansen_cpmg_data_auto_analysis_numeric.  Regarding bug #21953, (https://gna.org/bugs/?21953) - weird performance of grid search.
        * Changes to system test Relax_disp.test_hansen_cpmg_data_auto_analysis_r2eff.  Regarding bug #21953, (https://gna.org/bugs/?21953) - weird performance of grid search.  The grid search needed to be increased by +1 and lowering of some results by one digit.
        * Changes to system test Relax_disp.test_hansen_cpmg_data_missing_auto_analysis.  Regarding bug #21953, (https://gna.org/bugs/?21953) - weird performance of grid search.  The grid search needed to be increased by +1 and changes of some results.
        * Modified system test Relax_disp.test_sod1wt_t25_to_cr72.  Regarding bug #21953, (https://gna.org/bugs/?21953) - weird performance of grid search.
        * Modified dw and kex in system test Relax_disp.test_tp02_data_to_tap03.  Regarding bug #21953, (https://gna.org/bugs/?21953) - weird performance of grid search.
        * Split system test Relax_disp.sod1wt_t25_to_cr72 into part as setup and test part.  Regarding bug #21953, (https://gna.org/bugs/?21953) - weird performance of grid search.
        * Started implementation of error analysis bug.  Regarding bug #21954, (https://gna.org/bugs/?21954) - Order of spectrum.error_analysis is important.
        * Small edit of the relax command line option descriptions.
        * Undid the modification of dw and kex in system test Relax_disp.test_tp02_data_to_tap03.  Regarding bug #21953, (https://gna.org/bugs/?21953) - weird performance of grid search.  The number of iterations needed to be increased from 2000 to 2500 to allow the values to be found.
        * Further extended system test Relax_disp.test_sod1wt_t25_bug_21954_order_error_analysis.  Regarding bug #21954, (https://gna.org/bugs/?21954) - order of spectrum.error_analysis is important.
        * Extended --gui-tests Relax_disp.test_hansen_trunc_data.  Regarding bug #21954, (https://gna.org/bugs/?21954) - order of spectrum.error_analysis is important.  To catch errors in this dataset.
        * This time the blacklisted relaxation dispersion system tests have been correctly reduced.  Only one blacklisted test did not require the C modules to be compiled.
        * Shifted all of the dispersion model descriptions and parameter lists to the variables module.  The descriptions and parameter lists which were part of the relax_disp.select_model user function backend have been shifted into the specific_analyses.relax_disp.variables module as MODEL_DESC_* and MODEL_PARAMS_* variables.  The descriptions have also all been standardised.  The MODEL_DESC and MODEL_PARAMS dictionaries have also been created to hold all of the descriptions and parameters in one place.
        * The General.test_bug_21720_pipe_switching_with_tab_closure GUI test now works without compiled C modules.
        * Updated the release checklist for the new minfx version 1.0.6 release.  See https://gna.org/forum/forum.php?forum_id=2456 and https://freecode.com/projects/minfx.
        * Fixes for the specific API _set_param_values_spin() method for lists and dictionaries.  This is for the value.set user function to allow it to handle parameters of different types.  For example the 'R2' parameter in the relaxation dispersion analysis.  This API common method now sets all dictionary elements, list elements, or the variable to the given value.
        * Created the new specific_analyses.relax_disp.variables.PARAMS_R20 list.  This variable is a list of all R20 parameters of the dispersion models.  It has been shifted out of the parameters module.
        * Created a relaxation dispersion specific API set_param_values() method.  This originates from the base _set_param_values_spin() method from the api_common module.  The method has been extended to handle the R20 parameter types - generating the current dictionary keys as needed.
        * Expanded the relaxation dispersion auto-analysis to allow the grid search to be turned off.  By setting the grid_inc argument to None, the grid search will be turned off.  As a replacement, the value.set user function is used for all model parameters to set them to their default values prior to minimisation.  This design is for speed as optimisation from the defaults is often - though not always - good enough.  It can be used, for example, in the test suite to make the system tests much faster.
        * Changed the default R20 relaxation rate from 15 to 10 rad.s^-1.  This is probably closer to the average rate expected for molecules studied by NMR.
        * The R2eff dispersion parameter now also defaults to 10 rad.s^-1.
        * Expanded the dispersion specific API set_param_values() method for the 'r2eff' and 'i0' parameters.  This now sets these parameter values correctly if the value sent into the method is not composed of dictionaries.
        * Large speed up of the relaxation dispersion system tests by about 20%.  This was achieved by turning the grid search off in the following system tests:  Some of the optimisation values are slightly different, or completely different for the one example of the CR72 model fitted to no exchange, and these have been updated in the tests.
        * Changed the bounds for the R20 parameters in the default grid search.  The range of 1 to 40 rad.s^-1 was previous used.  This has been narrowed to 5 to 20.
        * Added function to find minimum R2eff value to set as R20 value before grid search.  Feature request: #3151, (https://gna.org/support/?3151) - user function to set the R20 parameters in the default grid search using the minimum R2eff value.
        * Added system test for setting R20 from minimum R2eff before grid search.  Feature request: #3151, (https://gna.org/support/?3151) - user function to set the R20 parameters in the default grid search using the minimum R2eff value.  System test: -s Relax_disp.test_sod1wt_t25_set_grid_r20_from_min_r2eff.
        * Extended api value.set to use index in value setting.  Feature request: #3151, (https://gna.org/support/?3151) - user function to set the R20 parameters in the default grid search using the minimum R2eff value.  The index used is expected to match the spectrometer frequency.
        * Added user function: relax_disp.set_grid_r20_from_min_r2eff.  Feature request: #3151, (https://gna.org/support/?3151) - user function to set the R20 parameters in the default grid search using the minimum R2eff value.
        * Modified system test to use user function instead.  Feature request: #3151, (https://gna.org/support/?3151) - user function to set the R20 parameters in the default grid search using the minimum R2eff value.
        * Added relax_disp.set_grid_r20_from_min_r2eff functionality to the relax dispersion auto_analyses.  Feature request: #3151, (https://gna.org/support/?3151) - user function to set the R20 parameters in the default grid search using the minimum R2eff value.
        * Fix for skipping grid search, when set parameter values are of dict() type.  Feature request: #3151, (https://gna.org/support/?3151) - user function to set the R20 parameters in the default grid search using the minimum R2eff value.
        * Extended system test for -s Relax_disp.test_sod1wt_t25_set_grid_r20_from_min_r2eff.  Feature request: #3151, (https://gna.org/support/?3151) - user function to set the R20 parameters in the default grid search using the minimum R2eff value.  The system test now both test the creation of the correct values, the running of grid_search, and the auto_analysis.
        * Added True/False button to activate relax_disp.set_grid_r20_from_min_r2eff in auto analyses.  Feature request: #3151, (https://gna.org/support/?3151) - user function to set the R20 parameters in the default grid search using the minimum R2eff value.
        * Set the verbosity=1, since the output is minimal.  Feature request: #3151, (https://gna.org/support/?3151) - user function to set the R20 parameters in the default grid search using the minimum R2eff value.
        * Fix for non-existing dictionary keys causing errors.  Feature request: #3151, (https://gna.org/support/?3151) - user function to set the R20 parameters in the default grid search using the minimum R2eff value.
        * Fix for setting index=None, when setting default values for parameters.  Feature request: #3151, (https://gna.org/support/?3151) - user function to set the R20 parameters in the default grid search using the minimum R2eff value.
        * Parameter values pre-set to 0.0 is now skipped in grid_search.  Feature request: #3151, (https://gna.org/support/?3151) - user function to set the R20 parameters in the default grid search using the minimum R2eff value.
        * Renamed system test to reflect what it is testing.  Feature request: #3151, (https://gna.org/support/?3151) - user function to set the R20 parameters in the default grid search using the minimum R2eff value.
        * Better formatting of text in user function.  Feature request: #3151, (https://gna.org/support/?3151) - user function to set the R20 parameters in the default grid search using the minimum R2eff value.
        * Python 3 fix.  Feature request: #3151, (https://gna.org/support/?3151) - user function to set the R20 parameters in the default grid search using the minimum R2eff value.
        * Better wording of experimental feature in GUI tooltip.  Feature request: #3151, (https://gna.org/support/?3151) - user function to set the R20 parameters in the default grid search using the minimum R2eff value.
        * An additional warning paragraph has been added to the user function.  Feature request: #3151, (https://gna.org/support/?3151) - user function to set the R20 parameters in the default grid search using the minimum R2eff value.
        * Fix for system test Relax_disp.test_set_grid_r20_from_min_r2eff_cpmg.  Feature request: #3151, (https://gna.org/support/?3151) - user function to set the R20 parameters in the default grid search using the minimum R2eff value.  Fixed values for testing was added.
        * Improved the error reporting from the Library.test_library_independence verification test.
        * Fix for setting the pre-set values in grid_search.  Feature request: #3151, (https://gna.org/support/?3151) - user function to set the R20 parameters in the default grid search using the minimum R2eff value.  Now test that values which are of dictionary types, has more than 0 values.
        * Modified system test Relax_disp.test_sod1wt_t25_to_cr72.
        * Added a paragraph to the clustering section of the dispersion chapter covering parameter copying.  This explains the purpose of the relax_disp.parameter_copy user function.
        * Created system test to catch the error -s Relax_disp.test_sod1wt_t25_to_sherekhan_input.  Bug #21995: (https://gna.org/bugs/?21995) creating sherekhan input files, with data for several fields and different time_T2.
        * Removed the necessity that len(cdp.relax_time_list) = 1 when issuing the sherekhan input user function.  Bug #21995: (https://gna.org/bugs/?21995) creating sherekhan input files, with data for several fields and different time_T2.
        * Made testing of files for system test -s Relax_disp.test_sod1wt_t25_to_sherekhan_input.  Bug #21995: (https://gna.org/bugs/?21995) creating sherekhan input files, with data for several fields and different time_T2.  Warning, the sherekhan user function will write to current directory.
        * Added "dir" as input to the user function relax_disp.sherekhan_input in system test.  Bug #21995: (https://gna.org/bugs/?21995) creating sherekhan input files, with data for several fields and different time_T2.
        * Modified the relax_disp.sherekhan_input to accept dir as input.  Bug #21995: (https://gna.org/bugs/?21995) creating sherekhan input files, with data for several fields and different time_T2.
        * Turning off local dir writing in system test and set the correct time_T2.  Bug #21995: (https://gna.org/bugs/?21995) creating sherekhan input files, with data for several fields and different time_T2.
        * Fix for letting ShereKhan user function write the time_T2 correct.  Bug #21995: (https://gna.org/bugs/?21995) creating sherekhan input files, with data for several fields and different time_T2.
        * Fix for correct looping over time points, when creating ShereKhan files.  Bug #21995: (https://gna.org/bugs/?21995) creating sherekhan input files, with data for several fields and different time_T2.
        * Added check for number of time points is 1.  Bug #21995: (https://gna.org/bugs/?21995) creating sherekhan input files, with data for several fields and different time_T2.
        * Added model MODEL_B14 to system test Relax_disp.test_hansen_cpmg_data_auto_analysis_r2eff.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.
        * Added MODEL_B14 to specific_analyses.relax_disp.variables.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.
        * Further added info for MODEL_B14 to specific_analyses.relax_disp.variables.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.
        * Added B14 description to the relax_disp.select_model user function front end.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.
        * Added model B14 to be found as target function.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.
        * Added empty b14.py to relax library lib/dispersion/b14.py.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.
        * Extended docstring in b14.py file.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.
        * Implemented start system test for model B14.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  System test is Relax_disp.test_baldwin_synthetic.
        * Added Baldwin model B14 test data.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.
        * Removed MODEL_B14 to be tested in normal setup.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This is to allow the system test to pass.
        * Removed the standard transparent "on" setting in grace images script file.  This was rather an annoyance than helpful.
        * Made a generic script to generate R2eff data for a CPMG model based on spin parameters, and fit the data.  Still needs to implement some noise method.  1) The idea is to generate R2eff data with a numerical model with some extreme parameters.  2) Then add noise to the R2eff data.  3) Then fit with a analytical model.  Evaluate the performance on the analytical model.  This follows the idea of the paper:  http://dx.doi.org/10.1016/j.jmr.2014.02.023 "An exact solution for R2,eff in CPMG experiments in the case of two site chemical exchange" Andrew J. Baldwin, Journal of Magnetic Resonance, 2014.  The script can be extended to also include global fitting, to test this out.  The script is also ideal, when trying to implement a new model, since test-data is ready at hand.
        * Docstring update for the test suite runner class - the verification tests are now listed.
        * Added the software verification tests to the relax GUI.  The verification tests can now be selected via the "Tools->Test suite->Verification tests" menu entry.  Running the full test suite via the menus also now included the verification tests.
        * Reordered the B14 model according to release year.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Adding_the_model_to_the_list.  The B14 model is explained in: http://wiki.nmr-relax.com/B14.
        * Redid ordering of Model B14 according to release year.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Adding_the_model_to_the_list.  The B14 model is explained in: http://wiki.nmr-relax.com/B14.
        * Reordered the model B14 according to release year.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Adding_the_model_to_the_list.  The B14 model is explained in: http://wiki.nmr-relax.com/B14.
        * Reordered model B14 in target functions.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Adding_the_model_to_the_list.  The B14 model is explained in: http://wiki.nmr-relax.com/B14.
        * Python API documentation corrections for the model B14.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Adding_the_model_to_the_list.  The B14 model is explained in: http://wiki.nmr-relax.com/B14.
        * Replaced copyright notice for the Baldwin.py script.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Adding_the_model_to_the_list.  The B14 model is explained in: http://wiki.nmr-relax.com/B14.
        * Changed the compression back 9, when creating grace PNG files.  It doesn't change the quality, just the time to create the file and the size of the file.  PNG is lossless, so compression levels 1 to 9 are all pixel-perfect.  The B14 model is explained in: http://wiki.nmr-relax.com/B14.
        * Added a check for the existence of data pipes to the return_api() specific analysis function.
        * Added a README file to the sample_scripts directory to help users understand what these scripts are for.  It also explains how these scripts should be used.
        * Implemented synthetic CPMG system test.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Adding_the_model_to_the_list.  The B14 model is explained in: http://wiki.nmr-relax.com/B14.
        * Small changes to synthetic script data generator.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Adding_the_model_to_the_list.  The B14 model is explained in: http://wiki.nmr-relax.com/B14.
        * Made synthetic CPMG script accept R2eff noise values as input.
        * Added array with zero R2eff error to system test Relax_disp.test_cpmg_synthetic.
        * Added a system test, which proves that small dw values of 1, makes the minimisation goes wrong.  This is for synthetic data with R2eff values of +/- 0.05, which is to be expected for real data.
        * Added a row to the dispersion software comparison table for TROSY-type data.  This follows from http://thread.gmane.org/gmane.science.nmr.relax.devel/5414/focus=5501.
        * Added a row to the dispersion software comparison table for the support of scalar coupling effects.  This follows from http://thread.gmane.org/gmane.science.nmr.relax.devel/5414/focus=5501.
        * Added model B14 to the list of MODEL_LIST_NUMERIC_CPMG.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.  Model B14, uses the number of ncyc/CPMG blocks in its analytical equation.  To pass this information correct and calculate the ncyc power, it should be in this list.  The B14 model is explained in: http://wiki.nmr-relax.com/B14.
        * Letting the error be 0.1 in the system test for B14.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.  This is just cosmetics, to make the dispersion graph look more beautiful.  The B14 model is explained in: http://wiki.nmr-relax.com/B14.
        * Implemented model B14 in the relax library.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: Tutorial_for_adding_relaxation_dispersion_models_to_relax#The_relax_library.  The code is raw implemented, with no optimisation.  This is merely to test, that the spin parameters that created R2eff data, can be found again after grid search and minimisation.  The B14 model is explained in: http://wiki.nmr-relax.com/B14.
        * Correctly implemented the target function for model B14.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#The_target_function.  The B14 model is explained in: http://wiki.nmr-relax.com/B14.
        * Implemented system test "relax -s Relax_disp.test_baldwin_synthetic -d" for model B14.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.  This proves that the model is correctly implemented, and return same data which the Baldwin script created.  The B14 model is explained in: http://wiki.nmr-relax.com/B14.
        * Renamed the relax_disp.cpmg_frq user function to relax_disp.cpmg_setup and added some new options.  This follows from the thread http://thread.gmane.org/gmane.science.nmr.relax.devel/5511/focus=5520.  The ncyc_even option has been added so the user can specify if the pulse sequence requires an even number of CPMG blocks.  This is for use in the interpolated dispersion curves, but could have other uses in the future.
        * Removed model B14 to the list of MODEL_LIST_NUMERIC_CPMG.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.  This was not essential anyway.
        * Changed the default value of pA, the population for state A, to 0.95.  When doing a grid search in the auto-analysis, one can set "None".  This will then use default values specified for parameters, instead of a grid search.  pA is best to start at 0.95, than 0.5.
        * Extended system test Relax_disp.test_baldwin_synthetic to also include a N15 synthetic dataset.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Added the synthetic N15 data for system test Relax_disp.test_baldwin_synthetic.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Modified system_tests/scripts/relax_disp/cpmg_synthetic.py and the corresponding system tests.  Relax_disp.test_cpmg_synthetic_cr72.  Relax_disp.test_cpmg_synthetic_cr72_full_noise_cluster.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Attempt to implement function map_bounds in API for relax_disp.  Bug #22012 (https://gna.org/bugs/?22012): dx.map not implemented for pipe type relax_disp.
        * Expanded the 'CR72 full' dispersion model description in the manual to explain its origin.  This was discussed at http://thread.gmane.org/gmane.science.nmr.relax.devel/5410.  The equations used the Davis et al., 1994 simplified form, and this is now explained.
        * Changed float powers of 2.0 to integer powers of 2, to speed up the calculations.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This change did not do a large change in speed, but is more proper.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Changed all instances of "r2e" with "r20b", to be consistent with relax nomenclature.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Changed all instances of R2g with r20a. This is to be consistent with the relax nomenclature.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Implemented g3 and g4 as square root functions instead of atan2.  atan2 is always returning values between -pi and pi.  https://docs.python.org/2/library/math.html.  Next step is to convert g1>-g1, which will truly follow the CR72 Nomenclature.  For this, the atan2 function is a blocker.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Had to lower the precision of system test Relax_disp.test_baldwin_synthetic.  This was after changing g3, and g4 from atan2 functions, to square root functions.  The model is still very precise though.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Altered the sign of g1, to follow CR72 Nomenclature.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Had to lower the precision of system test Relax_disp.test_baldwin_synthetic after sign change of g1.  The model is still precise, finding the parameters which generated the data.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Made g2 use the CR72 parameter convention.  No change detected, since the change will be erased by going to order**2.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Made sign change of deltaR2, to use parameter convention of CR72.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Implemented the alpha minus shorting from CR72.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Pretty the code, making space between all multiplications "*".  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Pretty up the code, making space between "=".  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Pretty up the code, making space between all "-".  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Pretty up the code, making space between all "+".  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * More code clean up. Make it look pretty.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Pretty up code, by moving comments up on line.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Pretty up code.  Remove trailing spaces.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Replaced expression with -alpha_.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Replaced numpy.XX functions, with just the function.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Replaced "power" with ncyc and made use of numpy power.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Pretty up code, removing multiple "(" and ")".  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Replaced Trel with relax_time, to use relax parameter conventions.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Replaced pb and pa with relax parameter pA.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Replaced keg with relax parameter normal use of k_BA.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Replaced kge with k_AB, which is relax convention.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Removed where k_AB was subtracted with k_AB.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Speedup of code, replacing repetitive calculations of dw**2.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Speedup, by removing repetitive calculations of g3**2.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Speedup, by removing repetitive calculations of g4**2.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Removed the specific API method aliasing in the pipe_control.opendx module.  The API object is now instead aliased as self.api.
        * Docsting fixes for some model_statistics() API methods, including the base class method.
        * Rewrite of the rotor2 CaM test data optimisation script.  This now handles the new rotor frame order model parameterisation.  Two functions have been added for converting between the old and new parameters - alpha_angle() to calculate the new alpha parameter and shift_pivot() for shifting the pivot to the closest point to the CoM on the rotor axis.
        * Changed how the rotor axis is calculated in the func_rotor() frame order target function.  A new set of notations is now being used to try to solve a nasty alpha angle parameterisation bug.
        * Updated the rotor2 CaM frame order test data optimisation script for the changed notation.  A new set of notations is now being used to try to solve a nasty alpha angle parameterisation bug.
        * Fixed the average position Euler angles for the rotor2 CaM frame order test data optimisation script.  The angles needed to be reversed.
        * Removed an duplicated chi2 printout in the rotor2 CaM frame order test data optimisation script.
        * Speedup - made B14 use the pre-calculated inverse time, instead of calculating the inverse time inside the function.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Speedup - moved the repetitive calculations of pB, k_BA and k_AB out of the library function.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Speedup - moved the calculation of deltaR2 and alpha_m out of library function.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Pretty-up code.  Re-ordered logic of r20 parameters, and exchange parameters in function call.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Moved Carver and Richards (1972) zeta and Psi notation outside library function.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  Not sure, if this speeds the calculation up.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Speedup - made variable for the repetitive calculations of zeta**2, and Psi**2.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Speedup - made "1" and "2" integers to float, to prevent Python conversion.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Speedup - repetitive calculations of 2.0 * tcp.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Speedup - moved g_factor: g = 1/sqrt(2) outside library function to be calculated once.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Speedup - repetitive calculations of sqrt_zeta2_Psi2 = sqrt(zeta2 + Psi2).  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Speedup - converted expressions of complex(x, y) to (x + y*1j).  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Split the func_B14 into full, with a calc function.  This is to prepare for the splitting up of B14, into a full: R2a!=R2b, and "normal" which is r2a=r2b.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Documentation fix for CR72 calc function.
        * Renamed system test Relax_disp.test_baldwin_synthetic to Relax_disp.test_baldwin_synthetic_full.  And changed model from "B14" to "B14 full".  This is to help find where modifications now have to be changed.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Added B14_FULL to the lists of the specific_analyses.relax_disp.variables module.  The model name is stored in a special variable which will be used throughout relax.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Adding_the_model_to_the_list.
        * Added B14_FULL to the relax_disp.select_model user function front end.  Added the model, its description, the equations for the analytic models, and all references to the relax_disp.select_model user function front end.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax##The_relax_disp.select_model_user_function_front_end.
        * Added B14_FULL to the target function.  The system test Relax_disp.test_baldwin_synthetic_full is now back and running.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#The_target_function.
        * Implemented system test Relax_disp.test_baldwin_synthetic for the model B14, whereby the simplification R20A = R20B is assumed.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Added target function for the Baldwin (2014) 2-site exact solution model for all time scales, whereby the simplification R20A = R20B is assumed.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#The_target_function.
        * Finished system test Relax_disp.test_baldwin_synthetic.  This proves that model B14 whereby the simplification R20A = R20B is assumed is successfully implemented.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Added the synthetic data for B14 model whereby the simplification R20A = R20B is assumed.  This is used in system test Relax_disp.test_baldwin_synthetic.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Added B14 and B14_FULL to the relax GUI.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#The_GUI
        * Added the latex bibliography reference for the model B14.  This is the reference for Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#The_relax_manual.
        * Added model B14 description in the manual.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#The_relax_manual.
        * Updated the references in the b14.py library file, to point to the wiki, and the future API and html documentation.  The link to API and html documentation is to be updated for the future compilation of these.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#The_relax_manual.
        * Reinserted the library function of b14.py the calculation of:  deltaR2 = r20a - r20b; alpha_m = deltaR2 + k_AB - k_BA; zeta = 2 * dw * alpha_m; and Psi = alpha_m**2 + 4 * k_BA * k_AB - dw**2.  And put the g_fact = 1/sqrt(2), inside the library function.  It made no sense to put these calculations outside the library, since there would be no skipping of a loop.  It actually makes much better sense to keep these calculation in the library function, to preserve the possibility to import this module in other software.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Removed the pre-calculation of "zeta2 = zeta**2" "Psi2 = Psi**2" since it did not speed-up things.  This power 2 of zeta and Psi is only done once.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Used LaTeX subequations instead, and using  R2eff parameter is defined in the relax.tex.  Using the defined \Rtwoeff, \RtwozeroA, \RtwozeroB, \kAB, \kBA, \kex.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#The_relax_manual.
        * Fixes for all URLs in the HTML version of the relax manual.  This fix will appear later at http://www.nmr-relax.com/manual/index.html once the next version of relax is released.  The trick was to translate the \url{} LaTeX commands which are not recognised by latex2html into \htmladdnormallink{#1}{#1} commands using a htmlonly environment in the headers.
        * The \bibitem command is no longer ignored when building the HTML version of the relax manual.  This will allow the bibliography at http://www.nmr-relax.com/manual/Bibliography.html to be formatted in a reasonable way.  And citations will have proper links to the entries in this file rather than the current behaviour of linking to itself, hence not going anywhere.
        * Apostrophe fix in the LaTeX bibliography file.  This will fix my name at http://www.nmr-relax.com/manual/Bibliography.html so that it is not displayed as dâ€™Auvergne.
        * Better latex2html support for the relax manual.  The hyperlink command \href{}{} and inline bibliographic reference command \bibentry{} are now supported in the HTML version of the relax manual.  These are translated into \htmladdnormallink{#2}{#1} and \citet{#1} command respectively, both of which are supported by latex2html.  This will significantly improve the documentation at http://www.nmr-relax.com/manual/index.html.
        * Made better notation of equation.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#The_relax_manual.
        * Changed manual, to the recipe at Appendix 1.  This was changed after the wish of the author.  Discussed in: http://thread.gmane.org/gmane.science.nmr.relax.devel/5632.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#The_relax_manual.
        * Changed that taucpmg = 1 / 4*nucpmg and not taucpmg = 1 / nucpmg.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#The_relax_manual.
        * Added model B14 to the list of dispersion models.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#The_relax_manual.
        * Relax manual fix for model TSMFK01.  Added that the model is slow exchange.
        * Fix for equation alignment for model B14.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#The_relax_manual.
        * Elimination of minus in library function b14.py.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Replaced f0 with F0, to follow paper and relax manual.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Replaced "ex0b" with "v1c" to follow paper and manual.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Replaced "ex0c" with "v1s" to follow manual and paper.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Replaced f2 with F2, to follow manual and paper.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Sqrt fix in manual for model B14.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Fix for ordering in calculation, to make it look prettier.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Replaced "v2pPdN" with v5, to follow paper and manual.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Replaved "oGt2" with "v4" to follow manual and paper.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Took inv_tcpmg outside parenthesis to follow manual.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Sign fix in manual.  The 1/taucpmg was taken wrong outside parenthesis.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Replaced "t2" with "F1b" to follow paper.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Replaced "t1pt2" with "F1a_plus_b" for better reading.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Reorder of lines to follow appendix 1 in paper.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Rewrote lines to follow appendix 1 in paper.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Made expression according to appendix 1 in manual.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#The_relax_manual.
        * Replaced T_{\textrm{rel} with \taucpmg.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#The_relax_manual.
        * Very small speed-up.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Speedup by removing integer to float conversion part.
        * Better latex2html support for the relax manual, specifically the dispersion software comparison table.  The \yes and \no commands are now better processed as HTML, and the rotating package 'rotate' environment is replaced by nothing.  This will improve the dispersion software comparison table at http://www.nmr-relax.com/manual/Comparison_dispersion_analysis_software.html.
        * Fix for catastrophic parameter index error for model B14.  The model B14 would get the same parameter index as "B14 full", and would hence optimise wrong parameters.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Fix for model B14 making ugly graphs.  The power of ncyc has to be an integer.  bug #22018 (https://gna.org/bugs/?22018): Model B14 creates ugly graphs ! Sig saw all over the place.
        * Fix for model B14 full making ugly graphs.  The power of ncyc has to be an integer.  bug #22018 (https://gna.org/bugs/?22018): Model B14 creates ugly graphs ! Sig saw all over the place.
        * Fixes for the HTML version of the relax manual.  The renewal of the \theequation command in the model-free and relaxation dispersion chapters was causing all equation numbers in latex2html to be broken.  By placing these in a latexonly environment, the problem is avoided in the HTML version at www.nmr-relax.com/manual/.
        * Changed script for synthetic CPMG data.  This is to test the fitting of CR72 and B14, when creating R2eff data with numerical model: MODEL_NS_CPMG_2SITE_EXPANDED.  This script is ideal for testing cases.  One can readily define experiments settings: sfrq_X, time_T2_X, ncycs_X for simulating one or more spectrometer experiments.  Spins can readily be set up, to have different dynamics, like: r2, r2a, r2b, kex, pA and dw.  The script can test clustering, and can convert to Sherekhan and make a hyper-dimensinal dx map to test Chi2 hypersurface on parameter settings.  It is also ideal for strees-testing relax, to see if its minimisation algorithm performs well.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Small improvement for generic CPMG data script file.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Added functionality of the visualising the spin dynamics point which generated the data.  This is to the script, which can visualize the synthetic CPMG data.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Fix for script for the visualising the spin dynamics point which generated the data.  This is to the script, which can visualize the synthetic CPMG data.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Fix for the file name writing of the point file.  Bug #22023: (https://gna.org/bugs/?22023) relax dx.map produce .net files which makes error.
        * Made system test Relax_disp.test_cpmg_synthetic_dx_map_points to start testing.  Modified also sample CPMG script to allow for this.  Task #7791: (https://gna.org/task/?7791) the dx.map should accept a list of list with values for points.
        * Modified user function dx.map to accept list of lists with values.  Task #7791: (https://gna.org/task/?7791) the dx.map should accept a list of list with values for points.
        * Added is_list_val_or_list_of_list_val to lib/arg_check.py.  This function is not yet done.  Task #7791: (https://gna.org/task/?7791) the dx.map should accept a list of list with values for points.
        * Added list_of_lists to user_functions/objects.py.  Task #7791: (https://gna.org/task/?7791) the dx.map should accept a list of list with values for points.
        * Added list_of_lists to uf_objects.  Task #7791: (https://gna.org/task/?7791) the dx.map should accept a list of list with values for points.
        * Made multiple writing of point files.  Task #7791: (https://gna.org/task/?7791) the dx.map should accept a list of list with values for points.
        * Added B14 to the dispersion software comparison table in the manual (docs/latex/dispersion_software.tex).  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#The_relax_manual.
        * Added B14 to the dispersion auto-analysis.  The B14 models will not create output files until this is done.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#The_GUI
        * Completely removed the list_of_lists argument.  Task #7791: (https://gna.org/task/?7791) the dx.map should accept a list of list with values for points.
        * Modified the description of making x,y,z points in the chi2 space for the user function dx.map.  Task #7791: (https://gna.org/task/?7791) the dx.map should accept a list of list with values for points.
        * Made solutions for math domain error.  Prevented to take log of negative values, and division by zero.  This though slows the implementation down.  System test Relax_disp.test_baldwin_synthetic_full went from 6.x seconds to 8-9.x seconds.  Sr #3154: (https://gna.org/support/?3154) implementation of Baldwin (2014) B14 model - 2-site exact solution model for all time scales.  This follows the tutorial for adding relaxation dispersion models at: http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging.
        * Changed an 'align' environment to 'equation' as there was only one equation.
        * Removed invisible equations from the B14 dispersion model section of the relax manual.  The trailing "\\" were causing equation numbers to be produced on empty lines after the block of equations.
        * The f00 equation in the B14 dispersion model section of the manual is a single equation.  The 'subequations' and 'align' environments are therefore superfluous.
        * Modified dx.map to accept more than one point.  Task #7791: (https://gna.org/task/?7791) the dx.map should accept a list of list with values for points.
        * Added system test for the production of dx map.  Relax_disp.test_cpmg_synthetic_dx_map_points.  Task #7791: (https://gna.org/task/?7791) the dx.map should accept a list of list with values for points.
        * Added proper punctuation to the B14 dispersion model equations in the manual.  Equations should be readable as English sentences and they follow standard punctuation rules.  All of the equations in the B14 model section of the dispersion chapter have been updated to follow this.
        * Fixes for quotation marks in the B14 dispersion model section of the manual.  LaTeX requires `' for single quotes rather than ''.
        * Standardised the CR72 R2eff factor in the B14 dispersion model section of the manual.  This is now defined in the preamble of the LaTeX manuscript.
        * Converted all complex numbers 'i' in the B14 dispersion model section of the manual to \imath.
        * Removed some unnecessary {} brackets from the user manual.  This is for the B14 model (http://wiki.nmr-relax.com/B14) section of the dispersion chapter.
        * The ncyc variable is now defined in the LaTeX preamble.  This is for the B14 model (http://wiki.nmr-relax.com/B14) section of the dispersion chapter.
        * Fixes for some of the maths in the B14 model section of the dispersion chapter.
        * Fix for the arccosh operator in the B14 section of the manual.  This is for the B14 model (http://wiki.nmr-relax.com/B14) section of the dispersion chapter.
        * Switched to using the LaTeX math symbol for real numbers \Re.  This is for the B14 model (http://wiki.nmr-relax.com/B14) section of the dispersion chapter.
        * The Ncyc definition in the manual now uses a capital N.
        * The \arccosh LaTeX maths operator is now defined in the preamble of the manual.  This is used by the B14 model (http://wiki.nmr-relax.com/B14) section of the dispersion chapter.
        * Improved brackets for the B14 model (http://wiki.nmr-relax.com/B14) section of the dispersion chapter.  The \left( and \right) command are used to produce brackets that scale to the size of the maths within these brackets.  One set of unneeded brackets were also removed.
        * Grammar fixes for the B14 model (http://wiki.nmr-relax.com/B14) section of the dispersion chapter.
        * Added some text explaining why the B14 equations do not look like those of the paper.  This is for the B14 model (http://wiki.nmr-relax.com/B14) section of the dispersion chapter.
        * Small edits to the text of the B14 dispersion model section of the manual.
        * Replaced 'get' and 'got' with alternatives, as this verb is not to be used in formal English.  This is for the B14 model (http://wiki.nmr-relax.com/B14) section of the dispersion chapter of the manual.
        * Clean ups of the Carver and Richards descriptions.  This is for the B14 model (http://wiki.nmr-relax.com/B14) section of the dispersion chapter of the manual.
        * More basic editing of the text of the B14 dispersion model section of the manual.
        * The T_relax symbol is now defined in the preamble of the manual.  This is to standardise its usage in the dispersion chapter.
        * Major fix for the R2eff equations for the B14 dispersion model in the manual.  Here tau_CPMG, the time for one CPMG block, was mixed up with T_relax, the total time of all CPMG blocks.
        * Switched some 'v' symbols to '\nu' in the B14 dispersion model section of the manual.
        * Standardised the spacing in the equations for the B14 dispersion model in the manual.
        * Clean ups for the end of the B14 dispersion model section of the manual.  Here a number of 'v' were changed to \nu and the standard \kAB, \pA, and \pB are now used.
        * Some more tau_CPMG verses T_relax fixes for the B14 dispersion model equations in the manual.
        * Added some symmetry to the T equation in the B14 dispersion model section of the manual.
        * Latex2html fixes for the HTML version of the relax manual.  This is for the documentation at http://www.nmr-relax.com/manual/index.html.  Latex2html has problems determining if the contents of environments should added to the sub or superscript.  For example $1^\textrm{st}$ is not recognised and must be changed to $1^{\textrm{st}}$ for latex2html to function correctly.  Therefore these problems have been fixed throughout the manual.  The number of errors printed out by latex2html is now significantly less.
        * Shifted the model-free model equations for the HTML manual to the subequations environment.  This is for the relax manual at http://www.nmr-relax.com/manual/index.html  This is to preserve the equation numbering so that the HTML and PDF equation numbers match as closely as possible.
        * Fixes for the equation number in the HTML version of the manual.  This is for the relax manual at http://www.nmr-relax.com/manual/index.html.
        * Made collecting of min, max and median value of chi2, when creating the chi2 map.  Task #7792: (https://gna.org/task/?7792) make the dx.map write suggest chi surface values.
        * Made the parsing of the min, max and median chi2 value to be used to define the chi2 hypersurfaces when writing the dx .net program.  Task #7792: (https://gna.org/task/?7792) make the dx.map write suggest chi surface values.
        * Updated the latex2html HTML version to 4.1.  This is for the relax manual at http://www.nmr-relax.com/manual/index.html.
        * Removed the "remap" keyword in the dx.map function, since this is not in use.  Task #7792: (https://gna.org/task/?7792) make the dx.map write suggest chi surface values.
        * Removed the keywords for "remap" in backend function, since this was not used.  Task #7792: (https://gna.org/task/?7792) make the dx.map write suggest chi surface values.
        * Added the keyword "chi_surface" to the front-end dx.map function.  To set the chi2 surface level for the innermost, inner, middle and outer isosurface.  Task #7792: (https://gna.org/task/?7792) make the dx.map write suggest chi surface values.
        * Added the chi_surface=None to the backend function.  When None, it will try to find reasonable chi2 values.  These will define surface levels for the innermost, inner, middle and outer isosurface.  Task #7792: (https://gna.org/task/?7792) make the dx.map write suggest chi surface values.
        * Now saves all chi2 values, to better find reasonable chi level for the innermost, inner, middle and outer isosurface.  Task #7792: (https://gna.org/task/?7792) make the dx.map write suggest chi surface values.
        * Made the standard values of chi2 surface be 10, 20, 50 and 90 percentile of all chi2 values.  Task #7792: (https://gna.org/task/?7792) make the dx.map write suggest chi surface values.
        * Increased the precision of many of the Frame_order.test_rigid_data_to_*_model system tests.  This is to fix a test which was failing due to the recent re-parameterisation of the rotor frame order model to eliminate one parameter.  The precision of the numeric Sobol' sequence integration has been increased by shifting the fixed parameter values even closer to zero.  As a consequence, the chi-squared value of five of these tests is now lower.
        * Fix for system test Relax_dips.test_cpmg_synthetic_dx_map_points.  Removing keyword "remap", since this is not in use anymore.  Task #7792: (https://gna.org/task/?7792) make the dx.map write suggest chi surface values.
        * Changed the import of percentile from lib.mathematics to lib.numpy_future.  Task #7792: (https://gna.org/task/?7792) make the dx.map write suggest chi surface values.
        * Changed the percentage which is different in percentile from numpy_future.  Task #7792: (https://gna.org/task/?7792) make the dx.map write suggest chi surface values.
        * Added lib/numpy_future.py.  This module is for implementing numpy function code from higher versions of numpy.  The relax dependencies listed at the download page of relax: http://www.nmr-relax.com/download.html#Source_code_release currently only requires numpy >= 1.0.4.  Task #7792: (https://gna.org/task/?7792) make the dx.map write suggest chi surface values.
        * Added "numpy_future" to the __init__.py file in lib directory.  Task #7792: (https://gna.org/task/?7792) make the dx.map write suggest chi surface values.
        * Moved numpy_future from lib to extern.  Extern is special package for external software or code that is bundled with relax.  Task #7792: (https://gna.org/task/?7792) make the dx.map write suggest chi surface values.
        * Updated synthetic CPMG data script.  This is to analyse complex dispersion data.  Related to bug #22021: (https://gna.org/bugs/?22021) model B14 shows bad fitting to data.  Bug #22024: (https://gna.org/bugs/?22024) minimisation space for CR72 is catastrophic. The chi2 surface over dw and pA is bounded.
        * Added 4 unit tests for the lib.geometry.lines.closest_point_ax() function.  This relax library function was previously not being checked in the test suite.
        * Modified the rotor2 CaM frame order test data optimisation script to optimise the pivot.  Print statements has been added for comparing the optimised to the original pivot.  The rotation axis is now also only created once, as it is now used in three places in the script, hence the two functions for converting parameters to the new parameterisation have been updated.
        * Modified the rotor2 CaM frame order test data optimisation script to compare the rotor axes.  The optimised rotor axis is recreated with the lib.frame_order.rotor_axis.create_rotor_axis_alpha() function, and then the original and optimised axes are compared.  The state.save user function has been shifted forwards in the script to avoid a later RelaxError.  The log file, average position PDB file, and state file from running the script have been added to the repository or updated.
        * Removed the domain rotation code from the pymol.cone_pdb user function backend.  This should only display the cone PDB object.  The domain rotation is now performed by the far more powerful frame_order.pdb_model user function.
        * Created the Status_object.test_install_path system verification test.  This is to catch bug #22037 (http://gna.org/bugs/?22037), the failure to load graphics in the GUI due to the relax installation path not being set up correctly.
        * Started to create a chapter for the N-state model or ensemble analysis in the manual.  This simply consists of a few introductory sections and the phathalic acid graphic.
        * Spacing improvements in the stereochem_analysis.py N-state mode sample script.
        * Docstring improvements for the stereochem_analysis.py N-state model sample script.  The paragraphs are now all on one line and 'Q-factor' has been changed to 'Q factor'.
        * Replaced 'Q-factor' with 'Q factor' throughout the relax codebase.  This change to the correct notation covers code, comments, and docstrings.
        * Added a new section for the stereochemistry analysis to the N-state model chapter of the manual.  This is just an initial introduction and an inclusion of the sample script.
        * Editing of the auto_analyses.stereochem_analysis module docstring.  The line wrapping to 100 characters has been removed.
        * Exampled the stereochemistry analysis section of the N-state model chapter of the manual.
        * Advances to the Grace 2D plotting abilities in the lib.software.grace relax library module.  The write_xy_header() function now accepts the new 'world', 'tick_major_spacing', and 'tick_minor_count' arguments.  These allow the world view to be preset, and allow the ticks on the X and Y-axes to be programatically changed.  The write_xy_data() has also been modified so that the autoscaling can be turned off, as this Grace command will overwrite the world view and tick setup.
        * Improvements for the 2D Grace plots created by the rdc.corr_plot user function.  The autoscaling is now turned off, as the data set representing the diagonal (with points [-100, -100] and [100, 100]) causes the world view to be set to be between -100 to 100 or -200 to 200.  The world view is set to be between -50 and 50 Hz, so that all RDCs should be visible.  The ticks in the plot have also been set so that the minor ticks are at every Hz increment.
        * The units are now included in the Grace axis labels created by the rdc.corr_plot user function.
        * Added the 'title' and 'subtitle' arguments to the rdc.corr_plot user function.  This allows the defaults to be overridden with user supplied titles and subtitles.
        * The rdc.corr_plot and pcs.corr_plot user function now use the Grace icon in the GUI.
        * Created the new pymol.frame_order user function.  This user function pairs with the frame_order.pdb_model user function, taking the three PDB files created and displaying them nicely.  Neither user function is complete, however the rotor representation of certain frame order models is handled correctly.
        * Created a script for finding all dead http://www.nmr-relax.com links in files of a directory tree.
        * Created the Structure.test_bug_22041_atom_numbering system test to catch bug #22041.  This was reported at https://gna.org/bugs/?22041.  The problem is that the structure.write_pdb user function does not create the correct atom serial numbers.
        * Modified the frame_order.pdb_model user function so that the three PDB files are optional.  This allows only certain components of the frame order theory to be represented in PDB format.
        * Improvements for the rotor PDB representation shown by the pymol.frame_order user function.  The stick radius width change is now only for the rotor PDB object, and not everything in PyMOL.
        * Modified the 2nd rotor model of CaM frame order optimisation script.  The frame_order.pdb_model user function is now used to create a PDB representation of the rotor motions for the real, expected parameters and for the optimisation results when the pivot point is fixed.  In addition, the pymol.cone_pdb user function has been replaced by the pymol.frame_order user function.  All new files have been added to the repository.
        * Added a relax script for creating a PDB representation of the original pivot point.  This is for the 2nd rotor model of CaM frame order in the test suite.  The resultant PDB file has been added to the repository.
        * Modified the pivot point PDB representation script to include the shifted pivot.  This is for the 2nd rotor model of CaM frame order in the test suite.
        * Added the 'centre_type' argument to the structure.superimpose user function.  This allows the default 'centroid' superimposition to be replaced by a centre of mass (CoM) superimposition instead.  As the CoM and centroid position do not match, the translation vector and Euler rotation angles will be different.
        * Exposed the backend verbosity flag of the structure.read_* user functions.  This allows the user to silence these user functions, which can be very useful when loading many 3D structures in the scripting UI mode.  This change is for the structure.read_gaussian, structure.read_pdb, and structure.read_xyz user functions.
        * Expanded the structure.delete user function to add the 'verbosity' and 'spin_info' arguments.  The verbosity argument, when set to zero, allows all output to be suppressed.  The spin_info flag allows the deletion of spin and interatomic data to now be turned off, so that only 3D data is deleted.
        * The new structure.delete 'verbosity' argument is now propagated into the structural object.  This allows the printouts to now be completely suppressed.
        * The structure.read_* user function 'verbosity' argument is now passed into the structural object.  This allows another printout to be silenced.
        * The structure.read_* user function 'verbosity' argument is now passed into lib.io.open_read_file().  This allows all printouts from these three user functions to be suppressed.
        * Converted the Mf.test_opendx_s2_te_rex system test into a GUI test.  This is to demonstrate bug #22035 (https://gna.org/bugs/?22035), the dx.map user function being broken in the GUI.
        * Python 3 fixes for the extern.numpy_future module.  These changes are necessary to allow relax to even run.
        * Python 3 fixes for all of the relax code base.  The lib.compat and multi.processor module changes were fatal, not useful for Python 3, and hence reverted.
        * Python >= 3.2 fix for the Relax_disp.test_sod1wt_t25_to_sherekhan_input system test.  The B0 field value of the ShereKhan input files created by the relax_disp.sherekhan_input user function was formatted as "%s".  However in Python >= 3.2, floats are now converted to have 14 decimal places whereas previous Python versions only had 10 places.  The user function backend now forces only 10 decimal places to be written to the input files.


    Bugfixes:
        * Fix for bug #21814 (https://gna.org/bugs/?21814).  This is the PDB reading failure when the PDB records are not padded to 80 spaces.  The fix is simple, all PDB records are pre-validated.  This includes removing all newline characters and padding each PDB record to 80 spaces when needed.  This will however add an overhead cost -- the internal PDB reader will now be slower.  However corrupted PDB files, produced by MODELLER for example, not padded to 80 spaces will now be better supported.
        * Bug fix for all of the R1rho relaxation dispersion models.  The atan2() function is now being used rather than atan() for determining the rotating frame tilt angle.  This is to allow the angle to be in the correct quadrant - i.e. to have a sign or direction.
        * Huge speed up of the interatom.define user function.  This is to fix bug #21862 (https://gna.org/bugs/?21862), the freezing up of relax when using the dipolar relaxation button in the model-free auto-analysis in the GUI.  This involves a number of changes.  The algorithm for the backend of the interatom.define user function has been broken into two separate parts.  The first part is new and uses the internal structural object atom_loop() twice for each spin ID string.  This then calls the new are_bonded_index() structural object method which uses atom indices to find if two atoms are bonded, as the atom indices are returned from the atom_loop().  The are_bonded_index() is orders of magnitude faster than are_bonded() as selection objects are not used and the bonded data structure can be directly accessed.  The are_bonded() method has also been slightly speed up by improving its logic.  The second part is to perform the original algorithm of two nested spin loops over each spin ID and using the are_bonded() structural method.  This second part only happens if the first part finds nothing.  The structural object atom_loop() method has been modified to be able to return the molecule index.  These indices are needed for the new are_bonded_index() method.  When running relax with the profile flag turned on, a simple script which loads the 'Ubiquitin2.bz2' saved state and then the "interatom.define(spin_id1='@N', spin_id2='@H', direct_bond=True)" user function decreases from a total time of 143 to 3.8 seconds.  However there are no speed changes detectable in the relax test suite - on one computer the system, unit and GUI tests only only vary by a fraction of a second.
        * Fix for the NOE analysis for the peak intensity parameters.  This relates to bug #21863 (https://gna.org/bugs/?21863), the grace.write user function not being able to write ref/sat plots as described in sample script noe.py.  The 'ref' and 'sat' parameters have been replaced by the 'intensities' dictionary data structure a long, long time ago.  Therefore they have been eliminated and replaced by the 'intensities' definition.
        * Fixes for the definitions of the N-state model analysis parameters.  This analysis does not use the CSA value, and the paramagnetic centre is a list, not a float.
        * Fixes for the definitions of the 'theta' and 'w_eff' relaxation dispersion parameters.  These should not be manually changed by the user and they are not optimised parameter.  Therefore they have been shifted from the set 'params' to the set 'all', to avoid listing them in the parameter tables (for example in the value.set user function).
        * Fixes for the frame_order.pivot user function - the model parameters were not being updated.  The update_model() function is now called to make sure that the pivot point is either added or removed from the list of model parameters.
        * Fix for bug #21924 (https://gna.org/bugs/?21924).  This is the failure to output 2D Grace plots for the R20, R20A, R20B, and R1rho0 relaxation dispersion parameters.  A simple test for missing data fixed the problem.
        * Fix for the Relax_disp.test_korzhnev_2005_15n_sq_data system test for certain MS Windows systems.  This was reported as sr #3142 (http://gna.org/support/?3142).  The problem was simply the lower precision of this system.
        * Fix for the cpmg_analysis.py relaxation dispersion sample script.  This was reported as sr #3142 (http://gna.org/support/?3142).  The problem was that one of the paths was in the Linux/Unix format and hence if the path is not changed by the user, then the script will not work for them if they are using MS Windows or Mac OS X.
        * More path fixes for the sample scripts to allow them to run on MS Windows and Mac OS X.  This is for the relaxation dispersion R1rho_analysis.py script and the N-state model conformation_analysis_rdc+pcs.py script.  These scripts should be modified by the user for their own data, so they should not encounter this problem when using the scripts normally.
        * Python 3 fixes throughout the codebase.
        * Python 3 fix for the Library.test_library_independence software verification test.
        * Python 3 fix for the Relax_disp.test_kteilum_mhsmith_eschulz_lcchristensen_gsolomentsev_moliveberg_makke_sod1wt_t25_to_cr72 system test.  The xrange builtin function does not exist in Python 3.
        * Python 3 fix for the Relax_disp.setup_sod1wt_t25 system test.  The xrange builtin function does not exist in Python 3.
        * Updated the Relax_disp.test_hansen_cpmg_data_missing_auto_analysis system test for the recent changes.  This is for fixing bug #21960 (https://gna.org/bugs/?21960).  The chi-square values are different due to the fix for bug #21954, the peak intensity error analysis bug, and the CR72 model (http://wiki.nmr-relax.com/CR72) results are different due to the fix for bug #21953, the change of the kex values used in the grid search.
        * Fix for the relax_disp.select_model user function for when the C modules are not compiled.  This was checking for the presence of the compiled C modules whenever the 'R2eff' model was specified.  However this behaviour is incorrect.  It should only check for the C modules if exponential curves are to be fit.
        * Fix for bug.  The variances used to calculated std, should only be taken from those which are defined in the subset.  Regarding bug #21954, (https://gna.org/bugs/?21954) - order of spectrum.error_analysis is important.
        * Fix for system test Relax_disp.test_hansen_cpmgfit_input.  Bug #21989: (https://gna.org/bugs/?21989) - relax_disp.cpmgfit_input does not work for model CR72.  The looping was performed over the file lines instead of the defined fixed lines.  The output files is truncated, and does not contain the wished data.
        * Fix for "offset" and "point" swapped in looping.  Bug #21989: (https://gna.org/bugs/?21989) - relax_disp.cpmgfit_input does not work for model CR72.
        * Fix for bug #21990, the --log and --tee options not functioning with the test suite.  The bug report is at https://gna.org/bugs/?21990.
        * Fix for bug #21970 (http://gna.org/bugs/?21970).  The Mac OS X dmg file required one of the test_suite/shared_data directories included in the 'include' list to properly bundle all relax modules inside the Mac App framework.  This was achieved by creating a whitelist structure and adding the directory to that.
        * Fix for bug #21984 (https://gna.org/bugs/?21984), the numpy.float16 error.  The numpy.float16 type is not defined for all numpy versions.  Therefore the lib.check_types.float16 type is used instead as this defaults to numpy.float32 when numpy.float16 is missing.
        * Fix for the relax_disp.parameter_copy function.  The median of the values was not performed properly, since 0.0 was already in the starting list of values.
        * Fix for the relax_disp.parameter_copy user function description.  The parameters are not averaged but instead the median value from all spins is taken.
        * Fix for bug #22001, the execution of script changing the current working directory.  This is reported at http://gna.org/bugs/?22001.  The changing of the current working directory (CWD) was added to allow for nested scripting.  However this is no longer needed as the script import mechanism has changed from the exec() function call to the runpy Python module.
        * Fix for bug #22002, the failure of the Library.test_library_independence software verification test.  This is reported at https://gna.org/bugs/?22002.  The fix was simply to use the relax installation path in the status singleton object to make sure that the relax 'lib' directory can be found independently of what the current working directory is.
        * Fix for path to sample data in sample script: sample_scripts/relax_disp/cpmg_analysis.py.
        * Fix for path to sample data in sample script: sample_scripts/relax_disp/R1rho_analysis.py.
        * Fix for bug #22004, the conformation_analysis_rdc+pcs.py N-state model sample script not working.  This is reported at https://gna.org/bugs/?22004.  The problem was that the return_api() function call needed to be after the creation of the data pipe.
        * Fix for the local_min_search.py N-state model sample script.  The return_api() function call was preformed too early.  Instead of placing it after the data pipe creation, the specific analysis type is now directly specified.
        * Fix for type in the eta scale of CR72 model.  The calculation in relax was correct, but the scale of eta has been wrong in the documentation.  This was discussed in: http://thread.gmane.org/gmane.science.nmr.relax.devel/5506.  The B14 model is explained in: http://wiki.nmr-relax.com/B14.
        * Bug fix for taking the median if there is more than 0 values in the list.  Bug #22010 (https://gna.org/bugs/?22010): relax_disp.parameter_copy return a list of pA, if copying only for one spin.
        * Fix for the dispersion model_statistics() specific API method.  The spin ID argument should override the model_info argument.  The method now correctly implements this.
        * Fixed the rotor axis direction in the lib.frame_order.rotor_axis module.  The normalisation code has also been simplified.
        * Fix for tabular space and forgotten "\n" when writing dx.maps config files.  Bug #22023: (https://gna.org/bugs/?22023) relax dx.map produce .net files which makes error.
        * Added another sentence telling the user that multiple field relaxation data is essential.  This is for the model-free dauvergne_protocol auto-analysis section of the relax manual and relates to bug #21799 (https://gna.org/bugs/?21799).
        * Another sentence about multiple field relaxation data added to the manual.  This is for the model-free dauvergne_protocol GUI section of the relax manual and relates to bug #21799 (https://gna.org/bugs/?21799).
        * Documentation fix for IT99.  Changed kex to tex.  Still needs to be changed at homepage: http://www.nmr-relax.com/analyses/relaxation_dispersion.html#IT99.  Bug #22019: (https://gna.org/bugs/?22019) the IT99 model is listed with parameter kex instead of tex.
        * Documentation fix for IT99.  Changed kex to tex in user function.  bug #22019: (https://gna.org/bugs/?22019) the IT99 model is listed with parameter kex instead of tex.
        * Small extra explanation in auto analysis.  Bug #21799 (https://gna.org/bugs/?21799): Insufficient recommendations/warning message for the execution of dauvergne protocol with 1 field is incomplete.
        * Big bug fix for the relax installation path determination.  This is to fix bug #22037 (http://gna.org/bugs/?22037), the failure to load graphics in the GUI due to the relax installation path not being set up correctly.  The problem is that the status module was looking for the compat.py file to determine where the base directory is, but this file has been moved into the lib/ package.  Now the dep_check.py file is being searched for.
        * Fixed the description of the N-state model in the pipe.create user function.  This has nothing to do with domain motions - it is the treatment of ensembles of structures.
        * Fix for the axis labels in the rdc.corr_plot user function when T data is converted to D.
        * Fix for bug #22039, the printing out of Dpar twice by the diffusion_tensor.display user function.  This is reported at https://gna.org/bugs/?22039.  The solution is given in the original bug report.
        * Fix for bug #22041, the PDB atom serial number error from the structure.write_pdb user function.  This was reported at https://gna.org/bugs/?22041.  The problem is that the structure.write_pdb user function preserves the atom numbering from the original structure and uses that for the atom serial number.  However the atom serial number must be replaced with sequential values to produce a valid PDB file.  This is fatal for any CONECT records.
        * Fix for the chain-reaction failures in the test suite.  This fixes bug #22055 (https://gna.org/bugs/?22055), the processor.run_queue() not cleaning up in uni_processor - chain-reaction failures in the test suite.  The fix was insanely simple, just implementing what was mentioned Gary Thompson's FIXME comment in the run_queue() method of the uni-processor object.  The queue execution code has been placed inside a 'try' statement and the queue cleaning up code in a 'finally' statement.  This closes a painfully difficult to find bug that has been in relax since 2006, though only affecting relax developers.



