mailrelax version 3.1.0.


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by Edward d'Auvergne on November 28, 2013 - 15:51:
After four years of development by numerous NMR spectroscopists, the
relaxation dispersion analysis in relax is finally ready for release!
This support is complete and includes almost all analytic and numeric
dispersion models in existence.  These have been labelled as 'R2eff',
'No Rex', 'LM63', 'LM63 3-site', 'CR72', 'IT99', 'TSMFK01', 'NS CPMG
2-site expanded', 'NS CPMG 2-site 3D', 'NS CPMG 2-site star', 'M61',
'DPL94', 'TP02', 'TAP03', 'MP05', 'NS R1rho 2-site', 'MQ CR72', and
'MMQ 2-site', mainly named after the authors and publication date.  It
includes support for single, zero, double, and multiple quantum CPMG
data, including combined proton-heteronuclear data, and off-resonance
R1rho data.  An automated protocol has been developed to simplify the
analysis and a GUI has been designed around this auto-analysis.
Calculations have been parallelised at the spin cluster and Monte
Carlo simulation level for speed.

The new relax versions can be downloaded from
http://www.nmr-relax.com/download.html.  If binary distributions are
not yet available for your platform and you manage to compile the
binary modules, please consider contributing these to the relax
project (described in section 3.6 of the relax manual,
http://www.nmr-relax.com/manual/relax_distribution_archives.html).

The full list of changes is (note this list is huge as it covers 4
years of development by numerous authors):

    Features:
        * Full support for the analysis of relaxation dispersion data
in the prompt, scripting, and graphical user interfaces.
        * Support for single quantum (SQ), zero quantum (ZQ), double
quantum (DQ), and multiple quantum (MQ) CPMG-type data.
        * Support for R1rho-type data.
        * Support for combined proton-heteronuclear SQ, ZQ, DQ, and MQ
CPMG-type data (multiple-MQ or MMQ data).
        * The 'R2eff' model - used to determine the R2eff or R1rho
values and errors required as the base data for all other models.
        * The 'No Rex' model - the model for no chemical exchange being 
present.
        * The 'LM63' SQ CPMG-type analytic model - the original Luz
and Meiboom 1963 2-site fast exchange equation with parameters {R20,
..., phi_ex, kex}.
        * The 'LM63 3-site' SQ CPMG-type analytic model - the original
Luz and Meiboom 1963 3-site fast exchange equation with parameters
{R20, ..., phi_exB, k_B, phi_exC, k_C}.
        * The 'CR72' SQ CPMG-type analytic model - the reduced Carver
and Richards 1972 2-site equation for most time scales whereby the
simplification R20A = R20B is assumed with the parameters {R20, ...,
pA, dw, kex}.
        * The 'CR72 full' SQ CPMG-type analytic model - the full
Carver and Richards 1972 2-site equation for most time scales with
parameters {R20A, R20B, ..., pA, dw, kex}.
        * The 'IT99' SQ CPMG-type analytic model - the Ishima and
Torchia 1999 2-site model for all time scales with pA >> pB and with
parameters {R20, ..., phi_ex, pA.dw^2, kex}.
        * The 'TSMFK01' SQ CPMG-type analytic model - the Tollinger et
al., 2001 2-site very-slow exchange model for time scales within range
of microsecond to second time scale with parameters are {R20A, ...,
dw, k_AB}.
        * The 'NS CPMG 2-site expanded' SQ CPMG-type numeric model - A
model for 2-site exchange expanded using Maple by Nikolai Skrynnikov
(Tollinger et al., 2001) with the parameters {R20, ..., pA, dw, kex}.
        * The 'NS CPMG 2-site 3D' SQ CPMG-type numeric model - the
reduced model for 2-site exchange using 3D magnetisation vectors
whereby the simplification R20A = R20B is assumed with the parameters
{R20, ..., pA, dw, kex}.
        * The 'NS CPMG 2-site 3D full' SQ CPMG-type numeric model -
the full model for 2-site exchange using 3D magnetisation vectors with
parameters {R20A, R20B, ..., pA, dw, kex}.
        * The 'NS CPMG 2-site star' SQ CPMG-type numeric model - the
reduced model for 2-site exchange using complex conjugate matrices
whereby the simplification R20A = R20B is assumed with the parameters
{R20, ..., pA, dw, kex}.
        * The 'NS CPMG 2-site star full' SQ CPMG-type numeric model -
the full model for 2-site exchange using complex conjugate matrices
with parameters {R20A, R20B, ..., pA, dw, kex}.
        * The 'M61' R1rho-type analytic model - the Meiboom 1961
2-site fast exchange equation for on-resonance data with parameters
{R1rho', ..., phi_ex, kex}.
        * The 'M61 skew' R1rho-type analytic model - the Meiboom 1961
2-site equation for all time scales with pA >> pB and with parameters
{R1rho', ..., pA, dw, kex}.
        * The 'DPL94' R1rho-type analytic model - the Davis et al.,
1994 2-site fast exchange equation extending the 'M61' model for
off-resonance data with parameters {R1rho', ..., phi_ex, kex}.
        * The 'TP02' R1rho-type analytic model - the Trott and Palmer
2002 2-site equation for all time scales with pA >> pB and with
parameters {R1rho', ..., pA, dw, kex}.
        * The 'TAP03' R1rho-type analytic model - the Trott et al.,
2003 off-resonance 2-site equation for all time scales with the weak
condition pA >> pB and with parameters {R1rho', ..., pA, dw, kex}.
        * The 'MP05' R1rho-type analytic model - the Miloushev and
Palmer 2005 off-resonance 2-site equation for all time scales with
parameters {R1rho', ..., pA, dw, kex}.
        * The 'NS R1rho 2-site' R1rho numeric model - the model for
2-site exchange using 3D magnetisation vectors with the parameters
{R1rho', ..., pA, dw, kex}.
        * The 'MQ CR72' MMQ-type analytic model - the Carver and
Richards 1972 2-site model for most time scales expanded for MMQ CPMG
data by Korzhnev et al., 2004 with the parameters {R20, ..., pA, dw,
dwH, kex}.
        * The 'MMQ 2-site' MMQ-type numeric model - the model for
2-site exchange whereby the simplification R20A = R20B is assumed with
the parameters {R20, ..., pA, dw, dwH, kex}.
        * An automated protocol for relaxation dispersion which
includes sequential optimisation of the models, fixed model
elimination rules to remove failed models and failed MC simulations
increasing both parameter reliability and accuracy (d'Auvergne and
Gooley 2006), and a final run whereby AIC model selection is used to
judge statistical significance.
        * Additional methods to speed up the auto-analysis by skipping
the grid search:  Model nesting, the more complex model starts with
the optimised parameters of the simpler;  Model equivalence, when two
models have the same parameters;  And spin clustering, the analysis
starts with the averaged parameter values from a completed
non-clustered analysis.
        * Parallelisation of the dispersion analysis at the level of
the spin cluster and Monte Carlo simulation for fast optimisation on
computer clusters using OpenMPI.


    Changes:
        * Started to implement the framework for relaxation dispersion
system tests.
        * Copied 'test_suite/system_tests/relax_fit.py' for relaxation
dispersion.
        * Started to implement relaxation dispersion system tests.
        * Created the user_functions.relax_disp module by copying
user_functions.relax_fit.  This file now needs to be modified to suit
the needs of relaxation dispersion.
        * Manually created the relax_disp user functions.  This is
equivalent to Seb's commit for the prompt.relax_disp module.  The
equivalent changes to the user_functions.relax_disp were hand edited.
Added functions to select the experiment type and mathematical model
used.  These functions allow the user to select the experiment type
(cpmg or r1rho) as well as the mathematical model to fit the data
(fast or slow).
        * Copied the 'relax_fit.py' script to 'relax_disp.py'.  This
file, obviously, will need to be modified to suit the needs of the
relaxation dispersion code.
        * Modified the script so it will test for fast-exchange curve
fitting from CPMG data.  Data and functions to treat it are still
missing.
        * Added a test for CPMG data in slow-exchange and changed the
name of the test for fast-exchange.
        * Copied the 'relax_fit.py' specific functions to
'relax_disp.py'.  The code will now need many many many changes to
suit the needs of relaxation dispersion.
        * Made a few changes towards a functional relaxation
dispersion code.  This includes several modifications as well as the
addition of the exp_type() function.
        * Moved the relax_time() function to cpmg_frq() and made other
small changes.  Still much (!) work is needed for this code to be
complete.
        * Renamed 'cdp.frq' to 'cdp.cpmg_frqs' so it is not confusing
with the spectrometer frequency.  Indeed, 'cdp.cpmg_frqs' points to
the CPMG pulse train frequency (nu_cpmg).
        * Changed all instances of 'relax_times' to 'cpmg_frqs' and
made other small changes.
        * Changed 'relax_time' instances to 'cpmg_frq'.
        * Changed the index name and description.  The description
might change later to be more appropriate when the code is more
mature...
        * Included the setting of the spectrometer frequency and
uncommented a few lines of code.  Of course, this won't work until the
sample data has been introduced and the right names for the different
files be input in the system test script...
        * Fixed many formatting errors and made the 'relax_disp' code
accessible (pipes, interpreter, etc.).  These changes also include a
coming back to using the C code 'math_fns/relax_fit.py' since there is
still no such code associated to relaxation dispersion.  This will
allow working in the code without relax crashing and complaining about
the lack of a C module name 'relax_disp.py'.
        * Added the user function cpmg_delayT() which allows setting
the CPMG constant time delay T used for the analysed dataset.  This
follows a post at
https://mail.gna.org/public/relax-devel/2009-01/msg00027.html.
        * Made a few changes so the cpmg_delayT() function now works.
        * Added the user function cpmg_frq() and added examples to the
user function cpmg_delayT().
        * Corrected remaining frq instances to cpmg_frq when
appropriate to avoid confusion and corrected a few related things in
the system test script.
        * Made the cpmg_frq() function accept only None for the
reference spectrum and corrected a typo.
        * Added the parameters for the slow- and fast-exchange regime.
        * Added the parameters for the slow- and fast-exchange regime
in the function data_names().
        * Corrected a few formatting issues and still added parameters
for the slow- and fast-exchange regime.
        * Corrected a few formatting issues and still added parameters
for the slow- and fast-exchange regime.  Formatting issues corrected
were spotted by Ed in a post at
https://mail.gna.org/public/relax-devel/2009-01/msg00045.html.
        * A bit more changes to introduce parameters for CPMG
relaxation dispersion.
        * Introduced CPMG parameters into the function
return_grace_string() and corrected formatting issues.
        * Introduced relaxation dispersion parameters in the function
return_data_name().
        * Changed the default cpmg_frq value in cpmg_frq() from 0 to None.
        * Added a relaxation dispersion dataset in the system-test.
This was kindly provided by Dr Flemming Hansen (flemming AT pound DOT
med DOT utoronto DOT ca) and was previously published in Hansen,
Vallurupalli & Kay (2008) J. Phys. Chem. B, 112, 5898-5904.  The
original format was different and was modified to better suit the way
relax handles datasets.  Finally, the information contained here were
written in a 'readme' file placed in the same directory as the dataset
itself to allow referencing and acknowledgments.
        * Added 'Sparky' formatted files to the system-test so the
files can be input and development of the branch continued.
        * Changed the format of the CPMG frequency and corrected the
names of some input files.
        * Added an unresolved file to meet the script requirements.
        * Copied the script for the fast-exchange regime to the
slow-exchange regime.
        * Modified the newly copied script so it is effectively for
the slow-exchange regime.
        * Added details to the readme file and changed the directory
name where the sample data is located.  The directory is now named
'dataset_1-a'.  This contains data recorded at 500 MHz.  Data recorded
at 800 MHz will be put in a directory called 'dataset_1-b'.
        * Created a directory for the data recorded at 800 MHz and put
a readme file explaining its origin.
        * Added the relaxation dispersion dataset recorded at 800 MHz
in the system-test.  This was kindly provided by Dr Flemming Hansen
(flemming AT pound DOT med DOT utoronto DOT ca) and was previously
published in Hansen, Vallurupalli & Kay (2008) J. Phys. Chem. B, 112,
5898-5904.  The original format was different and two formats were
made ('generic' and 'sparky'), as for the dataset recorded at 500 MHz.
        * Renamed the directories containing the sample datasets
provided by Flemming Hansen.  The names are now more obvious as to
their content...  This was proposed by Ed in a post at
https://mail.gna.org/public/relax-devel/2009-01/msg00056.html.
        * Added an 'unresolved' file to the 800 MHz data and moved
(and modified) some files (sequence and readme) so there is only one
copy for the 500 and 800 MHz data.  This prevents duplicated files.
        * Changed the object names so they are lower case as they
should be, based on the rest of the code.  Made the equivalent change
in the function assemble_param_vector() to allow the system-test to go
further..  This was spotted by Ed in a post at
https://mail.gna.org/public/relax-devel/2009-01/msg00058.html.
        * Corrected capitalisation issues for param names.  These were
spotted by Ed in a thread starting at
https://mail.gna.org/public/relax-devel/2009-01/msg00059.html.
        * Rearranged commands in the scripts.  The experiment type and
exchange regime will have to be input before the cpmg pulse train
delay T.
        * Introduced a RelaxError when chosing 'r1rho' as experiment
type as this won't be implemented now.  Efforts will be concentrated
on the CPMG code first, then on the R1rho code.
        * Added tests, print statements and other code to the
relaxation dispersion specific functions.  Tests were proposed by Ed
in a post at https://mail.gna.org/public/relax-devel/2009-01/msg00065.html.
        * Started to implement a function for calculating the
effective transversal relaxation rate (R2eff).  This follows a thread
at https://mail.gna.org/public/relax-devel/2009-01/msg00067.html.
        * Converted the function linear_constraints() for relaxation
dispersion needs.
        * Started to implement the scaling matrix for scaling the
'R2eff' values.  This might change in the future as other possible
curve fitting parameters ('R2', 'Rex', 'kex', 'R2A', 'kA', 'dw') might
need some scaling.
        * Completed the scaling matrix code.  This follows a thread at
https://mail.gna.org/public/relax-devel/2009-01/msg00073.html.
        * Imported relaxation dispersion in grace user functions.
        * Added a missing quote which prevented the user manual to be
sconstructed.  This was discussed in a thread starting at
https://mail.gna.org/public/relax-devel/2009-01/msg00082.html.
        * Started to implement a function for reading 'R2eff' values
directly.  This is as proposed in a post at
https://mail.gna.org/public/relax-devel/2009-01/msg00020.html.  The
function does not contain code yet.
        * Started to put equations and references in the user function
docstrings and also corrected a small typo.  This was proposed by Ed
in a post at https://mail.gna.org/public/relax-devel/2009-01/msg00028.html.
        * Corrected the way the scaling matrix is assembled.  This is
as proposed by Ed in a post at
https://mail.gna.org/public/relax-devel/2009-01/msg00079.html.  The
scaling values are now based on the default values for the different
parameters which were slightly modified.  The only parameter for which
the average is still used (as for intensities in the 'relax_fit.py'
code) is 'R2eff'.
        * Continued to implement the user function calc_r2eff().  This
follows a discussion at
https://mail.gna.org/public/relax-devel/2009-01/msg00067.html.
        * Copied 'test_relax_fit.py' to 'test_relax_disp.py'.  This
will allow the design of a few unit tests for the relaxation
dispersion code.
        * Added two unit tests for the relaxation dispersion code and
fixed errors in the corresponding code.  More unit tests will be added
soon to help debugging and developing.
        * Added two more unit tests.
        * One more unit test.
        * One more unit test for the relaxation dispersion code.
        * Added more unit tests and tried to debug what was uncovered
by these tests.  Still more work is needed for debugging...
        * A few fixes based on the unit tests problems.
        * Changed the default value for 'int_cpmg' to avoid an
impossible mathematical situation: ln(0).
        * Fixed a bug where the 'id' argument was not set.  This was
proposed by Ed in a post at
https://mail.gna.org/public/relax-devel/2009-01/msg00127.html.
        * Started to make changes for multiple field relaxation
dispersion analysis.  This seems necessary, so maybe we should not
support single field analysis of relaxation dispersion at all.  ->
Kovrigin et al. (2006) JMagRes, 180: 93-104.  The changes made here
are only a first draft and may not work.  In particular, maybe the
spectrum.read_intensities(), relax_disp.cpmg_frq(),
spectrum.replicated(),  spectrum.error_analysis(), and deselect.read()
functions will need to know the magnetic field to which the particular
dataset is associated...  In fact, the different datasets should be
input first and their R2eff calculated independently.  In a second
step, the actual relaxation dispersion curve fitting should be made
with all data.
        * Fixed a bug which prevented the manual pdf to be compiled.
The problem was caused by a ':' character in the references (after the
volume number, as usual).  This was changed for a '.' character.
Equations were fine..  Moreover, a better formatting was done by
adding ':' characters after the word 'are' before enumerations.
        * Fixed the unit tests.  This is as proposed by Ed in a post
at https://mail.gna.org/public/relax-devel/2009-01/msg00132.html.
        * Started to implement the reading of 'r2eff' by
relax_data.read() by first writing a system test.
        * Updated a few dosctrings and tried to improve the system test.
        * Removed the obsolete function 'relax_disp.r2eff_read()'.
R2eff values will be read directly by 'relax_data.read()'.
        * Reordered a few functions for alphabetical reasons.
        * A small fix to the system test.  However, is this fix the
solution or is there something wrong with the reading of data (such as
'R2eff') by relax_data.read()?  Shouldn't the data, for example
'R2eff', be available in 'cdp.mol[0].res[0].spin[0].R2eff_val[0]' or
'cdp.mol[0].res[0].spin[0].R2eff[0]' for the 1st spin of the 1st
residue in the 1st molecule?
        * Fixed an import (as well as a few comments).  This however
introduces an error concerning the 'chi2' being undefined in the C
module for relaxation dispersion...
        * Solved an issue created during the merge process concerning
the 'return_data_name_doc' call.  The solution is based on the code in
'specific_fns/relax_fit.py'.
        * Brought the relaxation dispersion branch into sync with the
1.3 line.  There were many design changes within the 1.3 line that
required that the old relaxation dispersion code be updated.
        * Fixes for the relaxation dispersion system tests.  The
install path is now in the status object, and not in __main__.
        * GPLv3 license updates for all files not found in the trunk.
        * Import fixes for the specific_analyses.relax_disp due to the
recent trunk package layout redesign.
        * Made the non-API methods of the
specific_analyses.relax_disp.Relax_disp class private.
        * Improvements for the GUI representation of the relax_disp
user functions.
        * More import fixes for the new package layout.
        * Fix for the relax_data.read user function call in the
Relax_disp.test_read_r2eff system test.  The column numbers must be
supplied.
        * Some more fixes to make the Relax_disp.test_read_r2eff
system test pass.  These are again changes needed due to the trunk now
being very different.
        * The cpmg_frq argument of the relax_disp.cpmg_frq user
function can now be None.
        * The cpmg_frq argument of the relax_disp.cpmg_frq user
function can now be an integer as well as a float.
        * Updates for the relaxation dispersion system test scripts
for the newer design of relax.  A number of changes were required as
the code was quite old.
        * Created the lib.dispersion.equations module.  This is a
translation of Sebastien Morin's C code in the old relax_disp branch.
        * Created a very basic initial target function class for
relaxation dispersion.  This code is a translation of Sebastien
Morin's C code in the old relax_disp branch.
        * The relaxation dispersion specific analysis code now uses
the Python target function rather than the C.
        * Fix for the Relax_disp.test_curve_fitting_cpmg_fast system
test variable names.
        * Added the model argument to the dispersion target function
class to select between different equations.
        * The relaxation dispersion target function class now imports
the equations from lib.dispersion.equations.
        * The relaxation dispersion target function class raises a
RelaxError when the model is not implemented.
        * Modified all the relaxation dispersion test data Sparky
files at 800 MHz.  The last three lines of the files were not properly
formatted.
        * Converted all of the raising of RelaxErrors in the
specific_analyses.relax_disp to the new standard.  This is for Python
3 support.
        * Converted all print statements in
specific_analyses.relax_disp to function calls.  This is for Python 3
compatibility.
        * Converted the prompt unit tests for relaxation dispersion to
the current relax design.
        * Updated the target_functions package __all__ list for the
relax_disp module.
        * Another fix for the prompt argument unit tests of the
relax_disp user functions.
        * Big changes to the front end of the relax_disp.select_model
user function.  The model strings have been changed and are now
programmatically added to the user function documentation.  The main
text has also been redesigned.  And the new model 'exp_fit' has been
added which allows just the exponential curves to be fit.
        * Python 3 import fix for the specific_analyses.relax_disp module.
        * Updated the documentation in specific_analyses.relax_disp to
use the user_functions package design.  The
user_functions.objects.Desc_container and
user_functions.data.Uf_tables objects are now used to construct the
relaxation dispersion documentation.
        * The relax_disp.select_model backend now handles the 'exp_fit' model.
        * Removed all aliasing of the current data pipe in
specific_analyses.relax_disp as this is in __builtin__.
        * The specific_analyses.relax_disp module now uses the
parameter list object to define parameters.  This allows the now
unused methods data_names(), default_value(), return_data_name(), and
return_grace_string() to be deleted and their contents copied into the
parameter definitions in the class __init__() method.
        * Alphabetical arrangement of methods in the
specific_analyses.relax_disp module.
        * Docstring cleanups for the specific_analyses.relax_disp module.
        * The relaxation dispersion specific analysis now aliases API
base methods for a number of methods.
        * Import cleanup in the specific_analyses.relax_disp module.
        * The relaxation dispersion specific analysis module is now
using the base _data_init_spin() method.  This is aliased to
data_init() and replaces the old non-functional method.
        * Created the relax_disp.spin_lock_field user function.  This
is used to set the spin-lock field strength of a given R1rho spectrum.
        * Created the relax_disp.relax_time user function.  This is
almost a direct copy of the relax_fit.relax_time user function, but
has been modernised.
        * Fix for the printout from the relax_disp.relax_time user
function - the time is no longer divided by 1k.
        * Expanded the dispersion model parameters to include the
exponential curve parameters.
        * Clean up of some of the old relax_disp user functions - many
argument types are now numbers rather than floats.
        * Unit test fixes for the prompt relax_disp user function
argument checks.
        * Added the specific_analyses.relax_disp module to the unit
test checking of the specific API.
        * Big cleanup of the relaxation dispersion code to match the
analysis specific API.  All methods not belonging to the API have been
made private.  The arguments and keyword arguments for the API methods
now match the API.
        * Completely redesigned the minimisation parts of the
specific_analyses.relax_disp module.  Instead of dealing with the
optimisation of individual spins, groups of spins are now optimised
together.  This allows for the clustering analysis of relaxation
dispersion.  The method _block_loop() has been created to loop over
spin blocks, but it currently only returns individual spins.  However
with the rest of the code designed to handle this loop, only this
function needs to be modified to enable clustering.  The method
_param_num() has also been added to determine the total parameter
number per spin block.  The data structures sent into the Dispersion
target function class have also been redesigned to handle spin blocks
instead of individual spins.
        * Modified the relax_disp.cpmg_frq user function to match
relax_disp.spin_lock_field.  Both the front and back ends now use the
same logic as the relax_disp.spin_lock_field user function and will
allow some sanity to the analysis specific code.
        * The relax_disp.cpmg_frq and relax_disp.spin_lock_field user
functions now create cdp.curve_count.  This is an integer which
indicates the number of exponential curves which are to be optimised
per spin block.
        * The relaxation dispersion analysis specific _param_num()
method now takes the number of curves into account.
        * Better setup checking for the relaxation dispersion specific
analysis minimise() method.
        * Renamed cdp.curve_type to cdp.model to better explain the variable.
        * Fixes for the dispersion specific analysis separating R2eff
from R2.  There is one R2eff parameter per exponential curve, but only
one R2 per model.  The code now better handles this.
        * The dispersion specific methods now handle one R2eff and I0
parameter per exponential curve.
        * Better management of the global relaxation dispersion data.
The user functions relax_disp.cpmg_frq, relax_disp.spin_lock_nu1, and
relax_disp.relax_time now maintain data structures in the current data
pipe of the unique frequencies, fields, and times (sorted) as well as
the number of frequencies, fields, and times.  This data is used by
the minimise user function back end to set up the target function, and
will be required by many other parts of the analysis.
        * The dispersion specific _assemble_param_vector() method now
handles multiple R2eff and I0 values.  These spin structures are
dictionaries holding multiple values.
        * Created the dispersion specific _exp_curve_loop() method for
looping over each exponential curve.  This yields the index and key
for each curve, simplifying the handling of this data.
        * Expanded the relax_disp.select_model user function
documentation to cover R2eff and I0.  These parameters and how they
are optimised are now better described.
        * Updated the relaxation dispersion target function class to
handle the recent changes.
        * First attempt at a target function for fitting exponential
curves for relaxation dispersion.
        * Added some synthetic data to test the 'exp_fit' relaxation
dispersion model fitting.  These are just basic synthetic exponential
curves.  R2eff and I0 should be very easy to find.
        * The lib.software.sparky.read_list_intensity() function can
now handle lowercase in the residue names.
        * Created the Relax_disp.test_exp_fit system test for checking
the relaxation dispersion 'exp_fit' model.
        * The specific_analyses.relax_disp module is now using minfx
correctly.  The minfx grid search is no longer part of
generic_minimise() and must be called separately.
        * The relax_disp function _grid_search_setup() now operates in
the same way as the relax_fit code.  This function originates from the
'relax_fit' specific analysis code, but that code has since evolved.
The 'relax_disp' code now mimics the new code, returning lists of grid
search increments and upper and lower limits.
        * The scaling flag is now initialised in the relaxation
dispersion target function class.
        * Created the lib.curve_fit package and associated unit tests.
 This will be used for holding modules such as for exponential
curve-fitting required for the relaxation dispersion analysis.
        * Created the new lib.curve_fit.exponential module for
exponential curve-fitting.  This contains the single
exponential_2param_neg() function which will be used for the
relaxation dispersion target functions.  This is based on Sebastien
Morin's function exp_2param_neg in maths_fns.exponential.c in his
dormant inversion-recovery branch.
        * Typo fix for the new
lib.curve_fit.exponential.exponential_2param_neg() function.
        * The relaxation dispersion func_exp_fit() target function now
uses exponential_2param_neg().  This is from the
lib.curve_fit.exponential module.
        * Fix for the relaxation dispersion specific
_assemble_scaling_matrix() method.  The values were all inverted - the
matrix should hold values on the same order as the parameter values.
        * Fix for the func_exp_fit() relaxation dispersion target
function.  The parameter index was not correctly calculated.
        * The 'exp_fit' relaxation dispersion model now uses the
minfx.grid sparseness argument.  This is used to skip all parts of the
grid search belonging to a different exponential curve or different
spin.  If the number of curves is N and the number of spins M, the
grid size decreases from inc**(2*N*M) to (inc**2)*N*M.  For lots of
spins and curves, this is a huge decrease.
        * The relaxation dispersion specific
_disassemble_param_vector() method is now functional.  This should
allow the minimise user function to complete.
        * Fixes for the dispersion specific _assemble_param_vector()
method.  The R2eff and I0 spin dictionary structures are now checked
for their keys before pulling the value out.
        * Fix for the relaxation dispersion grid search.  The lower
and upper bounds are no longer continually scaled with each
optimisation.
        * Increased the speed of the Relax_disp.test_exp_fit system
test by using a smaller grid search.
        * The relaxation dispersion target function class back_calc
variable now matches the values variable.  Instead of being a
temporary structure which is overwritten for each spin and each
exponential curve, the structure now matches the dimensions of the
values variable and hence is persistent per function call.  This
allows external code to access the structure - for example for data
back calculation in the relaxation dispersion specific analysis
module.
        * Fixes for the dispersion specific _back_calc() method.  This
method still has a long way to go before it is of any use.
        * Created a custom base_data_loop() method for the relaxation
dispersion analysis.  This defines the base data as the peak
intensities of a single exponential curve and yields the spin
container and exponential curve key identifying the individual curves.
        * Activated Monte Carlo simulations for the relaxation
dispersion analysis.  This required a bit of work.  The key parts were
renaming _block_loop() to the API method model_loop() as that is
exactly what the model_loop() method is supposed to do, converting a
bunch of API common spin-based methods to handle dispersion
clustering, and to modify existing methods from Seb's original branch
to handle the base_data_loop() method.  The following methods have
been added or modified.  _back_calc():  This method has been modified
to handle clustering and the returning of peak intensities from only
one exponential curve.  _exp_curve_index_from_key():  This new method
is used to convert exponential curve key into the corresponding index.
 _intensity_key():  This new method is for converting an exponential
curve key and relaxation time into the corresponding intensity key.
create_mc_data():  This method is now functional and handles the data
from the base_data_loop() method.  return_error():  This method now
handles the data from the base_data_loop() method.
set_selected_sim():  This new method has been modified from the common
_set_selected_sim_spin() method but modified for the model_loop()
method.  sim_pack_data():  This method now handles the data from the
base_data_loop() method.  sim_return_param():  This new method has
been modified from the common _sim_return_param_spin() method to suit
the model_loop().  sim_return_selected():  This new method has been
modified from the common _sim_return_selected_spin() method again to
suit the model_loop().
        * Modified the Relax_disp.test_exp_fit system test to be
faster and not create plots which it cannot.
        * The Relax_disp.test_exp_fit system test now checks some of
the final results.
        * The relaxation dispersion parameter errors from Monte Carlo
simulations are now stored.  Previously MC simulations could run, but
the errors were not being calculated and stored.  The
sim_return_param() method was empty.  This method is now complete.  In
addition the set_error() method has been created for setting the
parameter errors.  And the _exp_curve_key_from_index() and
_param_index_to_param_info() auxiliary methods added to facilitate
data access.
        * Expanded the checking in the Relax_disp.test_exp_fit system test.
        * Converted all relaxation dispersion parameters to lowercase.
 This is so the variable names match the parameter names identically,
avoiding problems with some of the shared methods of the specific
analysis API.
        * The spin parameters are now set up last by the
relax_disp.select_model user function back end.
        * Added 'spin_lock_nu1' as a dictionary type parameter of the
relaxation dispersion specific analysis.
        * Rearrangements of the 2 system tests of Fleming Hansen's
CPMG data.  The system tests are now called
Relax_disp.test_hansen_cpmg_data_fast_2site and
Relax_disp.test_hansen_cpmg_data_slow_2site, and the system test
scripts are now all in test_suite/system_tests/scripts/relax_disp/.
        * Created a basic initial auto-analysis script for relaxation
dispersion.  This currently only supports the optimisation of the
'exp_fit' diffusion model, but has all of the infrastructure set up to
make it easy to add other models.
        * Added the relaxation dispersion module to the auto_analyses
package __all__ list.
        * The relaxation dispersion system test class now imports the
auto-analysis.  This fixes an import order error.
        * The Relax_disp.test_exp_fit system test now uses the
auto_analyses.relax_disp analysis.
        * Fix for the relaxation dispersion auto-analysis.  The
exponential fit model is now selected prior to optimisation.
        * Removed the relax_disp.select_model user function call from
the exp_fit dispersion system test script.  This is performed by the
auto-analysis and not during setup.
        * Added testing for spin clustering to the
Relax_disp.test_exp_fit system test.  This includes calls to the new
relax_disp.cluster user function and the checking of pipe variables
holding the clustering information.
        * Fix for the spin ID string for the relax_disp.cluster user
function.  This is for the exp_fit.py relaxation dispersion system
test script.
        * Implemented the relax_disp.cluster user function.  This is
for clustering spins together for a dispersion analysis.
        * Clustering is now enabled for relaxation dispersion.  The
model_loop() analysis specific API method now loops over the spin
clusterings, allowing a cluster of spins to be optimised
simultaneously to one set of model parameters.
        * Fixes for the spin clustering for relaxation dispersion.
Both optimisation and Monte Carlo simulations were affected by these
bugs.
        * Speed up of the Relax_disp.test_exp_fit system test by
cutting the grid size down to 3 increments.
        * Expanded the write_results() method of the relaxation
dispersion auto-analysis.  More Grace graphs are now being produced,
and the Rex file creation is now model dependent.
        * Fix for the relax_disp.cluster user function.  The 'free
spins' category is now not deleted when empty.
        * Created an icon set for relaxation dispersion.
        * Renamed the relaxation dispersion test suite data directory
to 'dispersion'.
        * Changed the relax_disp.cpmg_frq user function id argument to
spectrum_id.  All the relax_disp user functions now operate with the
spectrum IDs instead of experiment IDs.
        * The relax_disp.cpmg_delayT user function backend now uses
the spectrum ID rather than experiment ID.
        * Expanded the relax_disp.exp_type user function to include
the fixed period CPMG experiments.
        * The relax_disp.cpmg_delayT backend can now handle the 'cpmg
fixed' experiment type.
        * The relax_disp.cpmg_frq user function can now handle values
of None.  The float function is no longer used if the value of None is
encountered.
        * Updated the dispersion system test script for Flemming
Hansen's data.  This script should now be close to the final form for
a relaxation dispersion analysis of CPMG data with a fixed relaxation
time period.
        * Combined all the system test scripts of Flemming Hansen's
fixed time period CPMG data.  For details of this data, see
http://thread.gmane.org/gmane.science.nmr.relax.devel/3790/focus=3827.
        * Fixes for the renaming of the relaxation dispersion test
suite shared data directory.
        * Started to redesign how R2eff is handled in the relaxation
dispersion analysis.  Instead of being part of the optimisation of the
dispersion model, it will itself be the model named 'R2eff' (converted
from the 'exp_fit' model).  This model will either use the calc user
function to determine R2eff when the fixed relaxation period
experiment is selected, or fit exponential curves using the relax_fit
C module for the variable relaxation period experiments.  The R2eff
values will then be copied over for each dispersion model in the
auto-analysis using the value.copy user function.
        * Created the relax_disp.plot_exp_curves user function.  This
is to be used to create 2D graphs of the exponential curves
(relaxation time verses peak intensity) as the grace.write user
function plots are not very nice - the curves from each spectrometer
field strength and dispersion point are mixed into one curve.
        * The relaxation dispersion auto-analysis is now created plots
of the exponential curves.
        * The R2eff model now works for the variable time relaxation
period and exponential curve-fitting.
        * The relax_disp.select_model user function now checks for the
compiled C module when required.
        * Expanded the new analysis wizard in the GUI to accommodate
the relaxation dispersion auto-analysis.  Now the buttons are a matrix
of 4x2 with the NOE, R1, R2, and model-free analyses at the top and
two new blank buttons have been added to the bottom.  One will be used
for the dispersion analysis.
        * Created some basic graphics for the relaxation dispersion
analysis fur use in the GUI.
        * Added the correct sized graphic for the relaxation
dispersion button in the new analysis wizard.
        * Created the relaxation dispersion button in the new analysis wizard.
        * Created the initial version of the relaxation dispersion
auto-analysis GUI frame.  This is built from copying lots of code from
the NOE, R1, and R2 analyses.  The dispersion specific parts will be
added later.
        * The relaxation dispersion GUI analysis now has an element
for selecting the models to be optimised.
        * Removed some unneeded checks in the relax_disp.exp_type user 
function.
        * Added a GUI element to the relaxation dispersion
auto-analysis for selecting the experiment type.
        * The relax_disp.exp_type user function has been shifted to
the new analysis wizard.  Instead of being one of the elements on the
relaxation dispersion analysis frame, it is now placed between the
analysis selection page and the data pipe page of the new analysis
wizard.  The user function execution is delayed until the set up of
the frame, just after the execution of the pipe.create user function.
This will allow the frame to be set up differently for each experiment
type.
        * Extended the tooltip for the experiment type GUI element in
the relaxation dispersion frame.
        * Improvements to the tooltips in the relaxation dispersion
analysis frame of the GUI.
        * Changed the peak intensity wizard for the relaxation
dispersion frame to match the other analyses.
        * Unused import removal from the gui.analyses.auto_relax_disp module.
        * Missing import in the gui.analyses.auto_relax_disp module.
        * Added support for all the relaxation dispersion user
functions in the Peak_intensity_wizard object.
        * Modified how the fixed time period is specified in the
Flemming Hansen data system test.  Instead of using
relax_disp.cpmg_delayT user function, the relax_disp.relax_time user
function will be used.  The functionality is duplicated and
relax_disp.cpmg_delayT is not needed.
        * Modified the Spectra_list GUI element to handle relaxation
dispersion data.
        * The relaxation dispersion GUI analysis now uses the
dispersion parts of the peak intensity elements.  This includes
activating the dispersion parts of the Spectra_list GUI element for
displaying the spectrum ID with associated metadata and the dispersion
parts of the Peak_intensity_wizard for loading the data.
        * The relaxation dispersion auto-analysis is now correctly
executed from the GUI.  The GUI data gathering is also now complete in
the assemble_data() method.
        * Added some more module variables to
specific_analyses.relax_disp for the experiment types.
        * The relaxation dispersion auto-analysis now performs the
peak intensity error analysis.  This is essential for when the GUI is
used.
        * More Unicode characters are now used in the relaxation
dispersion GUI analysis frame.  The model parameter lists have also
been improved.
        * Removed the spectrum.error_analysis user function call in
the exp_fit.py dispersion system test script.  This is now performed
by the auto-analysis.
        * Fixed for the error_analysis() method of the relaxation
dispersion auto-analysis.  The method can now handle missing
spectrometer field strength data.
        * More fixed for the peak intensity error analysis method of
the relaxation dispersion auto-analysis.  The fixed relaxation time
period type experiments can now be handled.
        * Elimination of the relax_disp.cpmg_delayT user function.
This user function is not necessary as the relax_disp.relax_time user
function serves the same purpose.  The use of relax_disp.relax_time
instead allows for code sharing between the fixed and variable time
period relaxation dispersion experiment types.
        * Elimination of the relax_disp.calc_r2eff user function.
This user function, which is non-functional anyway, is not needed.
The calculation of the R2eff values will occur with the optimisation
of the 'R2eff' model (with a call to the calc user function for the
fixed time period experiment types) so direct calculation through a
specific user function is not needed.
        * Improvements to the GUI text subscripting in the relaxation
dispersion analysis frame.
        * Removed the temporary relaxation dispersion SVG graphic for
the GUI analysis.
        * Redesign of the graphic for the relaxation dispersion
analysis.  This is a modification of the r1.svg graphic to show
roughly the graphic as in "Protein NMR Spectroscopy, Principles and
Practice" by Cavanagh, Fairbrother, Palmer and Skelton.
        * Editing of the relaxation dispersion analysis graphic.
        * Added the relaxation dispersion graphic to all of the
dispersion GUI user functions missing a graphic.
        * Redesign of the relaxation dispersion models in the
relax_disp.select_model user function front-end.  The models have been
renamed and better defined based on the experiment type (CPMG or
R1rho).
        * The relaxation dispersion scaling matrix assembly now uses
lib.mathematics.round_to_next_order().  This allows the printed out I0
values for the optimisation of the exponential curves to be easier to
scale back to the real value.
        * The Relax_disp.test_hansen_cpmg_data_fast_2site system test
now uses the R2eff model.  The equivalent slow exchange system test
also uses the model.  This model will be used to find the R2eff values
from the fixed relaxation time period data.
        * Fix for some RelaxError printouts in the relaxation
dispersion specific code.
        * The relaxation dispersion class variables for the experiment
types are now used for all comparisons.  This should avoid random
bugs.
        * Fix for the calculation part of the relaxation dispersion
auto-analysis.  This is for the fixed relaxation period data types.
        * The 2D Grace plots of the exponential curves are now skipped
for the fixed relaxation period data types.  This is in the relaxation
dispersion auto-analysis.
        * Started to implement the relaxation dispersion analysis
specific calculate() method.  This will be used to calculate the
R2eff/R1rho values for the fixed relaxation time period data types and
is equivalent to Sebastien Morin's relax_disp.calc_r2eff user function
which was deleted (see
http://thread.gmane.org/gmane.science.nmr.relax.scm/17336).
        * Converted the specific_analyses.relax_disp module into its
own package.  This is to allow the code to be broken up into separate
modules to simplify the analysis.
        * Shifted out all of the variables and dispersion data
specific code into separate modules.  The dispersion data private
methods have been converted into functions of the
specific_analyses.relax_disp.disp_data module.  The package variables
have also been shifted into the specific_analyses.relax_disp.variables
module to avoid circular imports.
        * Alphabetical ordering of the functions of the
specific_analyses.relax_disp.disp_data module.
        * Created the
specific_analyses.relax_disp.disp_data.loop_all_data() function.  This
is to loop over all possible base relaxation dispersion data
(spectrometer frequencies then dispersion points).
        * Updates for the dispersion user functions for the changes in
specific_fns.relax_disp.
        * Typo fix in the new loop_all_data() function.
        * Created the lib.dispersion.calc_two_point_r2eff() function.
This is for calculating the R2eff/R1rho value for the fixed relaxation
time data.
        * Improvements to the specific_analysis.relax_disp.disp_data
module.  The function loop_all_data() has been expanded to include the
relaxation time period into the loop.  The functions
return_intensity() and return_key() have been added to return peak
intensities and the key corresponding to the data returned by
loop_all_data().
        * Fixes for some latent bugs in the
specific_analyses.relax_disp.disp_data module.  The checks for the
CPMG-data type in a number of functions now uses the CPMG_EXP list
instead of fixed strings.
        * Completed the relaxation dispersion calculate() method.
This allows the R2eff/R1rho values to be calculated for the fixed
relaxation time period experiments through the calc user function.
        * Created a script for running a full relaxation dispersion
analysis on Flemming Hansen's data.  This is located in the shared
data directories and is not part of the test suite as a full analysis
will take far too long.
        * Updated the models in the script for the full relaxation
dispersion analysis of Hansen's data.
        * Updated the backend of the relax_disp.select_model to handle
the new model names.
        * Spun out a number of dispersion methods into the new
specific_analyses.relax_disp.parameters module.  This is a module of
functions relating to the parameters of the relaxation dispersion
models.
        * More spacing before the sectioning printouts in the
relaxation dispersion auto-analysis.
        * Modified the printouts of the relax_disp.select_model user function.
        * Fix for the relaxation dispersion auto-analysis.  The data
pipes created for each model optimised are now switched to prior to
any operations on the pipe.
        * Changed the phi_ex parameter in the LM63 model back to rex.
        * Changed the Grace string for the rex parameter to be phi_ex.
        * Converted all of the specific_analyses.relax_disp.parameters
module to handle different models.  The R2eff and I0 parameters are
now only part of the 'R2eff' model and all other standard parameters
belong to all of the other models.
        * Shifted all of the constant relaxation dispersion variables
into the specific module.  All of the dispersion code now uses the
variables of specific_analyses.relax_disp.variables.
        * Renamed the lib.dispersion.equations.fast_2site() function
to r2eff_LM63().  The number of relaxation times has also been
replaced by the number of dispersion points.
        * Added the return_cpmg_frqs() and return_spin_lock_nu1()
functions to specific_analyses.relax_disp.disp_data.
        * Updates to the relaxation dispersion auto-analysis.  The
Grace plots created are now more dependent on the current model, so
that dispersion curves are only created for the 'R2eff' model.  The
specific_analyses.relax_disp.variables module is now also being used.
        * Started to redesign the relaxation dispersion target
function class.  The input data is now expected to be R2eff/R1rho data
and all mentions of exponential curves have been eliminated.  The
func_exp_fit() target function has been deleted as it is not used - as
now the _minimise_r2eff() method in the dispersion specific analysis
class is used instead.  And the func_fast_2site() target function has
been renamed to func_LM63().
        * Redesigned the optimisation code of the dispersion analysis
specific class for the new target functions.  This includes the
assembling of R2eff/R1rho values instead of peak heights, and a number
of small fixes.
        * Shifted the LM63 dispersion model functions into the new
lib.dispersion.lm63 module.
        * The reference spectrum is now not included when counting the
number of dispersion points.
        * Fix for the lib.dispersion.lm63 module and parameters of
zero are now gracefully handled.
        * Fixes for the func_LM63() dispersion target function.
        * Shifted the R2eff/R1rho value and error assembly into
specific_analyses.relax_disp.disp_data.  This is in the new
return_r2eff_arrays() function.  The code has also been debugged and
made functional.
        * Added support for handling missing data in the relaxation
dispersion analysis.  This support was mentioned in the post
http://thread.gmane.org/gmane.science.nmr.relax.devel/3835.
        * Added a FIXME to a comment about the hardcoded Bootstrap
number for relaxation dispersion.
        * Started to add support for Monte Carlo simulations for the
relaxation dispersion models.  This is for all models except 'R2eff'.
The changes are extensive but incomplete.  The new functions
disp_point_key_from_index() and disp_point_index_from_key() have been
added to the specific_analyses.relax_disp.disp_data module, but the
disp_point_index_from_key() function still needs work.  The
_back_calc() method of the specific_analyses.relax_disp.Relax_disp
class has been redesigned, as well as base_data_loop() method and all
methods which depend on it.
        * Updated the relaxation dispersion system tests of the Hansen
CPMG data for the new models.  The models are now 'LM63' and 'CR72',
and the tests have been renamed to
Relax_disp.test_hansen_cpmg_data_LM63 and
Relax_disp.test_hansen_cpmg_data_CR72.
        * Update of the specific_analyses.relax_disp package docstring.
        * Fix for the linear constraints setup of the 'R2eff'
relaxation dispersion model.  There are no constraints, so the
specific_analyses.relax_disp.parameters.linear_constraints() function
now returns A and b values of None.
        * Basic fix for the _back_calc_r2eff() relaxation dispersion
method.  A variable was misnamed.
        * Major redesign of the relaxation dispersion data model in
the relax data store.  The data model now revolves around the three
concepts of the spectrometer frequency, the dispersion points, and the
relaxation times.  Peak intensity data is now handled through
averaging using the new
specific_analyses.relax_disp.disp_data.average_intensity() function.
R2eff/R1rho values are now referenced by a key generated from the
spectrometer frequency and nu_CPMG frequency or nu1 spin-lock field
strength.  All of the specific_analyses.relax_disp package has been
standardised around these concepts.  This simplifies all of the
modules of the package and removes a large number of latent bugs.
        * A number of fixes to partly enable Monte Carlo simulations
for the non 'R2eff' dispersion models.
        * Finally Monte Carlo simulations for the relaxation
dispersion models now work.  This was a simple fix for the
specific_analyses.relax_disp.parameters.param_index_to_param_info()
function.
        * Created truncated data files of the Hansen CPMG data.  This
consists of residues 70 and 71 and will be used to massively speed up
the system tests.
        * The truncated Hansen CPMG data is now in the form of Sparky
peak lists.
        * Now all of the Hansen CPMG data is present as truncated
Sparky peak lists.
        * Speedup for the relaxation dispersion system tests which use
Flemming Hansen's CPMG data.  The system test script now reads the
truncated data files (of only residues 70 and 71) to minimise the time
required to read the data and store it in the relax data store.
        * Added a script to the test suite shared data for analysing
the truncated Hansen CPMG data.
        * Fixes for the LM63 dispersion CPMG model.  The 'r2' model
parameter is now an array as there is one R2 value per magnetic field
strength.  And the 'rex' parameter has been renamed to 'phi_ex' and is
scaled quadratically with the field strength within the optimisation
target function.
        * Fix for the setup of the relaxation dispersion GUI analysis.
 The base method add_execute_relax() has been renamed to
add_execute_analysis().
        * Added support for interfacing with Art Palmer's CPMGFit
program.  The two new user functions relax_disp.cpmgfit_input and
relax_disp.cpmgfit_execute have been created to interface with
CPMGFit.  The first creates the per spin system CPMGFit input files as
well as a batch script for executing CPMGFit with all the input files.
 The second bypasses the batch script and allows CPMGFit to be
executed from within relax.  This mimics the palmer and dasha user
functions.  The back end code is in the new
specific_analyses.relax_disp.cpmgfit module.
        * Created the Relax_disp.test_hansen_cpmgfit_input system
test.  This is for checking the operation of the
relax_disp.cpmgfit_input user function conversion of Flemming Hansen's
CPMG R2eff values into input files for CPMGFit.  A relax state file
containing the results of an analysis of an 'R2eff' model analysis of
the truncated data has been added to the test suite data to speed up
the test and to check the loading of dispersion state files.
        * Created a directory for the results of the CPMGFit program
using Hansen's truncated CPMG data.  The script 'cpmgfit.py' has been
added to create the input files for CPMGFit and execute the program.
The input and batch files have been added to the repository as well.
        * Added the results from NESSY of the analysis of Flemming
Hansen's truncated CPMG data.  This is only for the truncated data of
residues 70 and 71.  All files, except for the PNG graphics, have been
added to the repository.  The 'summary' file has been created to hold
the data from NESSY's summary tab, as this is not stored in the NESSY
saved state and is permanently lost after closing NESSY.
        * A dispersion saved state from the prompt or script UI can
now be associated with a GUI analysis.
        * Created the Relax_disp.test_hansen_trunc_data GUI test for
checking the GUI dispersion auto-analysis.  This checks the full
operation of the relaxation dispersion GUI analysis, without checking
the final results (to be added later).
        * Fixes for the change to the new spectrometer.frequency user
function and associated data structures.
        * Removed the preview button from the file selection GUI
element of the CPMGFit user functions.  These are the
relax_disp.cpmgfit_execute and relax_disp.cpmgfit_input user
functions.
        * The relaxation dispersion specific code now uses the changes
of the spectrometer.frequency user function.  This simplifies the
handling of magnetic field strength data.
        * More fixes to the relax_disp branch for the changes of the
spectrometer.frequency user function.
        * Changes to the CPMGFit input files due to the new
spectrometer.frequency user function.
        * The relax_disp.cpmgfit_execute user function now correctly
calls CPMGFit.  The -grid command line option has been added and the
output for each spin is sent to a special output file.
        * Updated the input files and added the output files for the
CPMGFit program with Hansen's CPMG data.  This is for the data
truncated to residues 70 and 71.
        * Fixes for the relax_disp branch for the
spectrometer.frequency user function changes.
        * Fix for the Relax_disp.test_hansen_cpmgfit_input system
test.  This is for the recent spectrometer.frequency user function
changes.
        * The specific_analyses.relax_disp.disp_data.loop_frq()
function can now handle missing data.  This allows the loop to yield a
single value of None when the spectrometer information has not been
loaded and enables R1rho analyses at a single field strength.
        * Fix for the LM63 dispersion model target function - the
scaled Phi_ex value is now used for the R2.
        * Fixes for the relaxation dispersion auto-analysis for the
LM63 model.  The Rex parameter is now the phi_ex parameter.
        * Added printouts of the optimised parameters to the
Relax_disp.test_hansen_cpmg_data_LM63 system test.  This includes the
conversion to the equivalent CPMGFit parameters.
        * Massively increased the precision of the R2eff error
analysis.  The hard-coded simulation number variable is now set to
100000.  This appears to be necessary for reliably reproducing results
in the subsequent dispersion models.
        * Created the
specific_analyses.relax_disp.disp_data.spin_has_frq_data() function.
This is for determining if a spin has peak intensity for the given
spectrometer field strength.
        * Updates some scripts for the spectrometer.frequency user
function change.
        * Created a script to calculate the R2eff rate errors
extremely precisely for Hansen's CPMG data.  This uses 1 million
Bootstrap simulations for calculating the errors.  The
'r2eff_values.bz2' is saved after deleting the spin specific r2eff_sim
structures so that the file drops from 388 Mb in size to 7.3 kb.
        * The CPMGFit script for Hansen's CPMG data now starts with
the high precision error r2eff_values.bz2 file.  This ensures
consistency between comparisons between relax, NESSY, CPMGFit, etc.
        * Removed the '_trunc' part of the nessy_results directory
from the NESSY final save file.
        * The relaxation dispersion loop_point() function can now
return the reference point.  This is enabled via the skip_ref
argument.
        * Created the relax_disp.nessy_input user function front and
backends.  This user function takes the data in the relax data store
and creates a NESSY save file to be opened within NESSY.  The backend
is the new specific_analyses.relax_disp.nessy module.  For the GUI
frontend, graphics for icons and the wizard have been taken from the
NESSY repository file pics/nessy_new.png@r1088 in the trunk.
        * A script has been added to create the NESSY input for
Flemming Hansen's CPMG data.
        * Updated the NESSY results for Flemming Hansen's CPMG data
for the R2eff values with high precision errors.  A file containing
the log or printouts from NESSY has been added for reference.
        * Updated the NESSY log from the Hansen CPMG data of residue
70 to remove the NESSY errors.  These were removed with the commit
r1090 to the NESSY trunk.
        * Split up the r2eff_values.bz2 save file into the results
files for each data pipe.  This is for Flemming Hansen's CPMG data
truncated to residues 70 and 71.  This is to simplify the system tests
which use this data.
        * Large simplification of the Relax_disp system tests using
Hansen's CPMG data.  Instead of calculating the R2eff values in the
test, these are read from the high error precision results files in
test_suite/shared_data/dispersion/Hansen.  This allows the model
parameters to be consistently found and to be identical between
different runs of the test.
        * Added a file which compares the results for the LM63 model
with Hansen's CPMG data between all programs.  This currently includes
relax, NESSY and CPMGFit.
        * Added a printout to the
specific_analyses.relax_disp.cpmgfit.translate_model() function.
        * The dispersion system test script for Hansen's CPMG data can
now run stand-alone.
        * The log barrier constraint algorithm is now used for the
relaxation dispersion optimisation.  This is to allow constraints in
the absence of gradient target functions.  The constraints have been
turned on by default in the auto-analysis.
        * Changed the dispersion GUI tab to use the model names from
specific_analyses.relax_disp.variables.
        * The spectrum wizard now uses the spectrometer.frequency user
function rather than frq.set.  The frq.set user function is now called
spectrometer.frequency.
        * An upper limit of 200 rad/s has been added to the linear
constraints for the R2 dispersion parameters.
        * Fixes for the checking in the
Relax_disp.test_hansen_cpmgfit_input system test.
        * The relaxation dispersion auto-analysis now calls the
relax_disp.plot_disp_curves user function.  This user function is not
implemented yet, but will be used to create plots of the dispersion
curves.
        * Implemented a basic graph for the
relax_disp.plot_disp_curves user function.  This simply plots out the
nu_CPMG value or spin-lock field verses the R2eff/R1rho values from
the experiment.  The graph of the back calculated R2eff/R1rho values
from the model fit is still to be added.
        * Fix for the linear constraints for the 'R2eff' model.  The A
and b matrices are no longer set to None, as this kills the
auto-analysis or any analysis when constraints are turned on.  Now the
constraints 0 <= R2eff <= 200 and I0 >= 0 are used.
        * Fixes for the peak intensity loading wizard for the frq.set
to spectrometer.frequency user function change.
        * Fixes for the backend of the relax_disp.plot_exp_curves user
function.  This code needed to be updated for the major changes in the
relax_disp branch.
        * Fixes for the checks in the Relax_disp.test_exp_fit system
test.  The r2eff and i0 spin data structure keys are now strings.
        * Two class variables have been added to the dispersion
auto-analysis for fast optimisation.  This includes variables for the
function tolerance and maximum number of iterations, and matches those
of the model-free auto-analysis of the dauvergne_protocol module.
These will be used to speed up the test suite.
        * Speed up of the system tests using Flemming Hansen's CPMG
data.  The grid search increments, function tolerance and maximum
number of iterations have all been made looser.
        * Added parameter checks to the
Relax_disp.test_hansen_cpmg_data_LM63 system test.
        * Fix for the phi_ex dispersion parameter scaling - the
scaling was in the wrong direction.
        * Added a directory of relax results for the truncated
high-precision Hansen CPMG R2eff values.  This uses the base_pipe.bz2
and r2eff_pipe.bz2 files with the high-precision R2eff errors, and
hence can be compared to the NESSY and CPMGFit results.
        * Added the residue :71 results to the lm63_comparison file.
This is a summary of the optimisation results using the high-precision
R2eff error results for the different dispersion softwares.
        * Changes to the dispersion auto-analysis write_results()
method.  This is to output more of the dispersion parameters to text
files and 2D grace plots.
        * Created a directory and script in preparation for the
relax_disp.sherekhan_input user function.
        * Created the relax_disp.sherekhan_input user function.  This
includes an icon for the GUI, and the full front and backends.
        * Added a wizard graphic for the relax_disp.sherekhan_input
user function.
        * Shifted the core of the model_loop() dispersion method into
its own function.  The new function
specific_analyses.relax_disp.disp_data.loop_cluster() can now be used
by other parts of relax.  The model_loop() method now yields the data
that loop_cluster() yields.
        * Redesign of the relax_disp.sherekhan_input user function to
handle spin clustering.
        * Added the ShereKhan results for the high-precision R2eff
data for Hansen's CPMG data.
        * Converted the readme file for Flemming Hansen's CPMG data
directory to uppercase.
        * Updated the LM63 model comparison table.
        * Modified the dispersion calculate() method for the R2eff
values to use the analytic equation.  For the R2eff/R1rho values
calculated for the fixed time period dispersion experiments via the
calc user function, the very slow and tedious bootstrapping approach
has been replaced by the very quick direct error calculation.  The two
techniques produce the same results as the bootstrap simulation number
approaches infinity.
        * Bug fix for the peak intensity error analysis in the
dispersion auto-analysis.  Now the error analysis is split based on
the magnetic field strength.  Previously the analysis was a mess with
the split often being individual spectra.
        * The proper experiment type is now set for the
Relax_disp.test_hansen_trunc_data GUI test.
        * Updated the relax_disp.exp_type user function to be more
specific an include more experiment types.
        * Updated the specific_analyses.relax_disp.variables module
for the relax_disp.exp_type changes.
        * The relax_disp.relax_time page is now always shown in the
peak intensity wizard for the dispersion GUI.  This number is needed
for the fixed time period experiments as well to calculated the
R2eff/R1rho values and errors.
        * Fix for the dispersion auto-analysis write_results() method.
 The i0 parameter text file and 2D Grace file are now only produced
for the 'R2eff' model with the exponential curve base data types.
        * Simplified the Relax_disp.test_hansen_trunc_data GUI test.
The 'CR72' model is now deactivated and the grid search sized
decreased from the default of 21 to 4.
        * Big speed ups of the Relax_disp.test_hansen_trunc_data GUI
test.  The optimisation function tolerance and maximum number of
iterations are now set to the same low precision as the system tests.
This involves adding hidden variables to the dispersion GUI analysis.
        * Removed the data pipe name check from the
Relax_disp.test_hansen_trunc_data GUI test.  This makes no sense as
this analysis generates a data pipe for each model (similar to the
model-free analysis).
        * Fix for the relax_disp.exp_type call in the
Relax_disp.test_exp_fit system test script.
        * Better formatting of the references for the dispersion
analytic model equations.
        * Updated the relax_disp.select_model user function frontend
for the CR72 dispersion model.  This includes fixing the parameter
list and the equations presented to the user.
        * Removed the commented out junk model code from the
relax_disp.select_model user function frontend.
        * Added the CR72 model equations to the relax library.  This
is for the Carver and Richards 1972 2-site exchange model covering all
time scales.
        * Initial implementation of the CR72 target function.
        * Import fix for the lib.dispersion.cr72 module.
        * Fixes to the specific_analyses.relax_disp modules to add
support for the CR72 dispersion model.  The parameters for the CR72
model are now both correct and correctly handled.
        * Fix for the spin container list of parameters for the CR72 model.
        * The CR72 dispersion model equations are now more robust
against math domain errors.  This is for the trigonometric functions
which cannot handle certain input values.
        * Renamed the file for comparing different dispersion software
with Flemming Hansen's CPMG data.
        * Added the initial results of the CR72 model in relax for
Flemming Hansen's truncated CPMG data.
        * Simplified the pA >= pB constraint in the dispersion
linear_constraints() function.
        * Fixes for the dispersion linear_constraints() function.  The
indices were being incorrectly handled - the i and k index should be
one and the same parameter index.
        * Added support for the 'CR72' or 'Full_CPMG' model to the
relax_disp.cpmgfit_input user function.
        * Added the results for the CR72 model optimisation in CPMGFit
using Flemming Hansen's truncated CPMG data.
        * Added the CR72 model results to the software comparison
document for Hansen's CPMG data.
        * Improvements for the phi_ex and dw relaxation dispersion
model parameters.  These are now stored with the units of ppm^2 and
ppm respectively.  The conversion to (rad/s)^2 and rad/s units
respectively now is spin specific, allowing mixed spin types (1H, 13C,
15N, etc.) to be analysed simultaneously.
        * Updated the relax results for Hansen's CPMG data for the
recent phi_ex and dw changes.
        * Fixes for the CPMGFit results in the software comparison
table for Hansen's CPMG data.
        * Fix for the grid search setup for the pA dispersion
parameter.  As pA > pB, then the region from 0.0 to 0.5 does not need
to be searched.
        * The back calculated R2eff values are now stored for
dispersion analysis after minimisation.
        * Fix for the CR72 model equation in
lib.dispersion.cr72.r2eff_CR72().  The eta scaling factor was
incorrect.
        * Updated the relax results for the truncated CPMG data from
Flemming Hansen.  This is for the recent fixes of the CR72 model
equations.  Now relax produces identical results to ShereKhan for the
LM63 and CR72 models.
        * Created a directory for holding relaxation dispersion sample 
scripts.
        * Added the model for no chemical exchange relaxation to the
dispersion analysis.
        * Updated the NESSY log file for its improved printouts.
These printouts allow the R20 values to be accessed.
        * Another update of the NESSY log for the improved and more
detailed printouts.
        * And again, another update of the NESSY log.
        * Added the relax results for the 'No Rex' model.
        * Updated the software comparison tables for the model of no
exchange.  This is for Flemming Hansen's truncated CPMG data.
        * Fix for the Relax_disp system tests using Flemming Hansen's
truncated CPMG data.  The nuclear isotope is now being set.
        * Increased the grid size for the hansen_data.py system test
script.  This is needed to allow the parameters to be reliably found.
        * Fixes for the checks and printouts of the
Relax_disp.test_hansen_cpmg_data_LM63 system test.
        * Updated some NESSY results in the software comparison document.
        * Fix for the CPMGFit batch file creation.  The command line
options are now correct and output is redirected to output files.
        * Updated the CPMGFit batch file.
        * Created the Relax_disp.test_hansen_cpmg_data_auto_analysis
system test.  This is designed to fully test the dispersion
auto-analysis for CPMG-type data.
        * Fix for the Relax_disp.test_hansen_cpmgfit_input system
test.  This is for the recent CPMGFit batch file changes.
        * Better checking of optimisation in the Relax_disp system
tests.  This affects the Relax_disp.test_hansen_cpmg_data_LM63 and
Relax_disp.test_hansen_cpmg_data_CR72 system tests.  Instead of using
the auto-analysis, these tests now set the initial parameters close to
the minimum, skip the grid search, and perform a low precision
optimisation to reach the minimum.  This is important because the low
quality grid search and optimisation can not always find the real
minimum.
        * Created the
lib.dispersion.equations.calc_two_point_r2eff_err() function.  This
complements the lib.dispersion.equations.calc_two_point_r2eff()
function and is used by the dispersion calculate() method to abstract
the mathematics.
        * Updated the relax_disp.select_model user function docstring
for the R2eff error analysis.  This properly describes how the
R2eff/R1rho errors are calculated for the fixed relaxation time period
experiments.
        * Docstring fixes for the lib.dispersion.equations module.
        * Expanded the number of model list variables in
specific_analyses.relax_disp.variables.  This is to include lists
which are specific to CPMG-type and R1rho-type experiments.
        * Added the new 'M61' model to the
specific_analyses.relax_disp.variables module.  This is the Meiboom
1961 model for 2-site fast exchange for R1rho-type experiments.
        * Added the M61 model to the relax_disp.select_model user
function frontend.  This is the Meiboom 1961 model for 2-site fast
exchange for R1rho-type experiments.
        * Added the M61 model equations to the relax library.  This is
for the Meiboom 1961 2-site fast exchange model for R1rho-type
experiments.
        * Created the M61 2-site fast exchange dispersion model target
function.  This is for the Meiboom 1961 model for 2-site fast exchange
for R1rho-type experiments.  The code for the func_M61() method was
copied without modification from the func_LM63() method.
        * Added support for the R1rho-type experiments to the
relaxation dispersion analysis in the GUI.  This involves using a
different model list for these experiments compared to the CPMG-type
experiments.
        * Updated the relaxation dispersion GUI to handle the current
set of experiment types.
        * Fix for the Relax_disp.test_hansen_cpmg_data_auto_analysis
system test.  The correct model list is now being used - the
R1rho-type experiments should not be included.
        * Fix for the missing import of the
lib.dispersion.equations.calc_two_point_r2eff_err() function.
        * Added support for the M61 model to the
relax_disp.select_model user function back end.  This is for the
Meiboom 1961 2-site fast exchange model for R1rho-type experiments.
        * Another fix for the
Relax_disp.test_hansen_cpmg_data_auto_analysis system test.  The
correct model list is finally being used.
        * Fix for the
lib.dispersion.equations.calc_two_point_r2eff_err() function.  The
variables were incorrectly named.
        * Added support for setting the spin isotope information in
the dispersion GUI.  A new Text_ctrl element has been added just after
the spin system GUI element.  This displays a list of all the spin
isotopes currently defined and is updated after every GUI user
function call.  The button of the element launches the spin.isotope
user function.  The spin isotope information is now checked for prior
to executing the GUI analysis and added to the missing list to present
to the user when blocking the execution of the analysis.  The
dispersion GUI test has been updated to use this new element.
        * Added support for model selection to the relaxation
dispersion specific analysis package.  This involved redesigning the
model_loop() method.  Instead of yielding both the spin containers and
the spin IDs, now only spin IDs are yielded.  This is important as the
model loop is used independently of the data pipes.  Hence the spin
containers cannot be yielded as multiple pipes are compared within the
model loop.  The auxiliary method _spin_ids_to_containers(spin_ids)
has been added to obtain the list of spin containers from the list of
spin IDs.  To support model selection, the methods duplicate_data(),
model_desc() and model_statistics() have been added, and model_type()
aliased to the common _model_type_local() method.
        * Expanded the relaxation dispersion auto-analysis.  A final
step of model selection has been added to select between the different
models for each spin cluster.  This is stored in the 'final' data
pipe, and its results output via the write_results() method.
        * The model selection technique can now be changed in the
dispersion auto-analysis.
        * The error when selecting a non-existent model using
relax_disp.select_model is now more informative.
        * Model selection in the dispersion auto-analysis is only
performed if 2 or more models are present.  Excluding the 'R2eff'
model, if only 0 or 1 models are optimised, then model selection is
skipped and a warning is given.  This avoids tracebacks in the
model_selection user function.
        * Added some synthetic on-resonance R1rho data to the test
suite.  This is in the form of Sparky peak list files containing two
spin systems.
        * Expanded the synthetic on-resonance R1rho test suite data.
The data now consists of a full set of dispersion curves for the M61
model.
        * Added a reference to the synthetic on-resonance R1rho test
suite data.  The first ncyc1 data point now has a relaxation time
period of zero, hence it can be used as the reference for a fixed time
period experiment.
        * The reference spectra can now be set in the
relax_disp.spin_lock_field user function.  By setting the field to
None, the reference spectrum for a fixed relaxation time period
experiment type can now be specified.  This mimics the behaviour of
the relax_disp.cpmg_frq user function.
        * Added some error checking to the
specific_analyses.relax_disp.disp_data.average_intensity() function.
This is for better feedback to the user in case they have not set up
their data correctly.
        * The relax_disp.select_model user function now operates
without the spectrometer frequency being set.  The special loop_frq()
function is now used as this can handle missing spectrometer frequency
information.
        * The find_intensity_keys() function can now handle the
reference spectrum.  This function in the
specific_analyses.relax_disp.disp_data module was failing if the
relaxation time period for the reference spectrum was missing.  Time
information shouldn't be needed for the reference, so is no longer
checked.
        * The dispersion specific optimisation methods can now handle
missing spectrometer information.
        * The return_index_from_frq() now handles missing frequency
information.  This is in the specific_analyses.relax_disp.disp_data
module.
        * Better support for missing frequency information in the
specific_analyses.relax_disp.disp_data module.  This is in the
return_index_from_frq() function which now returns an index of 0, and
in return_r2eff_arrays() which skips calculating the frequency
information.
        * The dispersion disassemble_param_vector() function now
handles missing spectrometer information.  The loop_frq() function
replaces direct looping over cdp.spectrometer_frq_count.
        * Variable renaming in the lib.dispersion.m61 module.  The
variable names are now more suited to R1rho-type data, rather than
CPMG-type data.
        * Fix for the M61 model target function.  The spin-lock fields
need to be used, not the CPMG frequencies.
        * Created the Relax_disp.test_r1rho_on_res_fixed_time_m61
system test.  This checks the R1rho-type experiment with a fixed
relaxation time period using the 'R2eff' and 'M61' models.  It uses
the auto-analysis for this, and the 'r1rho_on_res' synthetic
relaxation data.
        * Created the Relax_disp.test_r1rho_on_res_exponential_m61
system test.  This is identical to the
Relax_disp.test_r1rho_on_res_fixed_time_m61 system test except that
the full exponential curves are used rather than the 2-point fixed
time approach.
        * Python 3 fixes for the relaxation dispersion parameter Grace 
strings.
        * Python 3 fixes for the modules of the
specific_analyses.relax_disp package.
        * Fix for a bug preventing the optimisation of the dispersion models.
        * Fixes for the file permission setting on the CMPGFit batch
script.  The correct file mode is now set for Unix-based systems.
        * Python 3 fixes for the relax_disp.cpmg_frq and
relax_disp.spin_lock_field user functions.  The sorting of lists with
None is not supported by Python 3, so this has to be carefully
handled.
        * Removed the grid search size check from the dispersion
_grid_search_setup() method.  This is performed by minfx anyway, and
the code was incompatible with Python 3.
        * Fix for the Relax_disp.test_hansen_cpmgfit_input system
test.  The frequencies for the CPMGFit input files now are only
written to 10 places.  This is for Python 2 vs. 3 consistency.
        * Python 3 fix for the relax_disp.cluster user function.
        * Fix for the Grace plots created by the
relax_disp.plot_disp_curves user function.  The data set from each
frequency is now a separate set in the G0 graph.
        * Improvements to the relax_disp.plot_disp_curves user
function.  The back-calculated R2eff/R1rho values are now included in
the plot as separate sets.  In addition, the residuals have also been
added to allow for a visual statistical comparison.
        * More improvements to the relax_disp.plot_disp_curves user
function.  The data sets now have labels, and the residuals have
errors set to those of the R2eff/R1rho data.
        * More improvements to the relax_disp.plot_disp_curves user
function.  The graph axes maximum is now set to a reasonable value for
the given data.
        * Added the 'No Rex' model to the relax script for optimising
Flemming Hansen's CPMG data.
        * The isotope type is now set in the relax script for
optimising Flemming Hansen's CPMG data.
        * Shifted the _spin_ids_to_containers() method to the
disp_data.spin_ids_to_containers() function.
        * Fix for the relax_disp.sherekhan_input user function.  The
loop_cluster() function no longer returns spin containers.
        * Fix for the r2eff_calc.py script for calculating R2eff
values from Flemming Hansen's CPMG data.
        * Added a check to the dispersion specific minimise() function
for the spectrometer field strength.  This is essential in all
dispersion models to convert between ppm and rad/s units, or ppm^2 and
(rad/s)^2 for the phi_ex parameter.
        * The r1rho_on_res_m61.py dispersion system test script now
sets the spectrometer frequency information.
        * Removed cdp.model as this makes no sense - a different model
can be used per spin cluster.  Now the variable cdp.model_type is used
to identify the 'R2eff' model.  For all other dispersion models this
variable is set to 'Disp'.
        * Added a log file for the data generation script for the
r1rho_on_res dispersion data.
        * Fixes for the parameter checks in the system tests for the
r1rho_on_res synthetic data.  This includes both the
Relax_disp.test_r1rho_on_res_fixed_time_m61 and
Relax_disp.test_r1rho_on_res_exponential_m61 tests.
        * Fixes for the lib.dispersion.m61.r2eff_M61() function.
        * Increased the precision of the Sparky peak lists for the
r1rho_on_res dispersion test data.  All peak intensities are now 1000
bigger.  As the values are integers in the Sparky files, the previous
values were too truncated for the system tests to properly optimise
and find the original parameters.
        * Speed up of the r1rho_on_res_m61.py system test script.  The
optimisation precision is now much lower.  And the peak intensity
errors now have been scaled by 1000 just as the base data was in the
previous commit.
        * Improvements for the parameter checks in the system tests
for the r1rho_on_res synthetic data.  This includes both the
Relax_disp.test_r1rho_on_res_fixed_time_m61 and
Relax_disp.test_r1rho_on_res_exponential_m61 tests.
        * Clustering was accidentally turned off in the
r1rho_on_res_m61.py system test script.
        * Created the
specific_analyses.relax_disp.disp_data.count_frq() function.  This is
for determining the number of spectrometer frequencies present, even
if not data has been defined.
        * Loosened the checks for the
Relax_disp.test_hansen_cpmg_data_CR72 system test.
        * Completely redesigned how parameters are handled in the
relaxation dispersion analyses.  The key concept is that everything
revolves around the new loop_parameter() function.  This is a
generator function which loops over the parameters of a given cluster,
yielding all the information required to access the parameter.  The
other functions of the parameters module use loop_parameter() to
sequentially handle each parameter.  This allows for huge
simplifications of these functions.
        * Fixes for the Relax_disp.test_hansen_cpmg_data_auto_analysis
system test.  One of the models for one spin now optimises completely
and the checks have all been loosened.
        * Fixes for the dispersion specific model_statistics() method.
 This now handles spin clustering correctly.
        * Updated the results of relax's analysis of the truncated
CPMG data from Flemming Hansen.
        * Updates for the model variable docstrings.
        * Added the 'M61 skew' model to the
specific_analyses.relax_disp.variables module.  This is the Meiboom
1961 model for skewed populations (pA >> pB).  This commit follows
step 1 of the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added the 'M61 skew' model to the relax_disp.select_model
user function frontend.  This is the Meiboom 1961 model for skewed
populations (pA >> pB).  This commit follows step 2 of the relaxation
dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Fixes for the spacing after some equations in the
relax_disp.select_model docstring.
        * Simplifications and comment fixes in the
lib.dispersion.m61.r2eff_m61() function.
        * Renamed the lib.dispersion.m61.r2eff_M61() function to r1rho_M61().
        * Added the M61 skew model equations to the relax library.
This is the Meiboom 1961 on-resonance 2-site model for skewed
populations (pA >> pB).  This commit follows step 3 of the relaxation
dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Created the M61 skew model target function.  This is the
Meiboom 1961 on-resonance 2-site model for skewed populations (pA >>
pB).  This commit follows step 4 of the relaxation dispersion model
addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added support for the skewed condition (pA >> pB) to the
specific_analyses.relax_disp.parameters module.  This is currently
done by constraining pA to be greater than 0.85.
        * Added support for the M61 skew model to the
relax_disp.select_model user function back end.  This is the Meiboom
1961 on-resonance 2-site model for skewed populations (pA >> pB).
This commit follows step 6 of the relaxation dispersion model addition
tutorial (http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Big speeds ups of the lib.dispersion modules.  Many
replicated calculations have been shifted outside of the dispersion
point loop, as these only need to be calculated once per function
call.  Some if statements have consequently been simplified.
        * Renamed the lib.dispersion.equations module to
lib.dispersion.two_point.
        * Renamed the r1rho_on_res dispersion test suite data
directory to r1rho_on_res_m61.
        * Created test data for the 'M61 skew' R1rho model.  This is
the Meiboom 1961 on-resonance 2-site model for skewed populations (pA
pB).  This commit follows step 7 of the relaxation dispersion model
addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Created the Relax_disp.test_r1rho_on_res_fixed_time_m61b
system test.  This is for the Meiboom 1961 on-resonance 2-site model
for skewed populations (pA >> pB).  This commit follows step 7 of the
relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Small simplification of the lib.dispersion.m61b module.
        * Fix for the
specific_analyses.relax_disp.disp_data.return_value_from_frq_index()
function.  This cdp.spectrometer_frq_list list structure rather than
the cdp.spectrometer_frq dictionary should be used.
        * Added a printout at the end of the optimisation of the final
dispersion parameter values.
        * Modified the optimisation printout for better formatting.
        * Increased the precision of the hansen_data.py relaxation
dispersion system test script.  This actually speeds up the test, as
the Monte Carlo simulations are significantly speed up when the CR72
model optimises to the solution.
        * Updates for the pA dispersion parameter optimisation
constraints.  The parameter is now limited to be between pB and 1.  In
the case of the limit pA >> pB, then instead the constraint is between
0.85 and 1.
        * Updated the Relax_disp system tests.  This is for the recent
precision change and constraint changes.
        * Fixes for the grid search for the 'M61 skew' dispersion
model.  The pA parameter search is now between 0.85 and 1.
        * Fixes for the func_M61b() dispersion target function.  This
is the Meiboom 1961 on-resonance 2-site model for skewed populations
(pA >> pB).
        * Small changes to the r1rho_on_res_m61b dispersion test data.
 One R20 rate has been increased.
        * Completed the lib.dispersion.m61.r1rho_M61() function.  Now
the R1 relaxation rate and rotating frame tilt angle are correctly
handled.  This is not used in the target functions as support for the
R1 and offset is not yet implemented.
        * Added the 'DPL94' model to the
specific_analyses.relax_disp.variables module.  This is the David,
Perlman and London 1994 R1rho 2-site fast exchange model.  This commit
follows step 1 of the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added the 'DPL94' model to the relax_disp.select_model user
function frontend.  This is the David, Perlman and London 1994 R1rho
2-site fast exchange model.  This commit follows step 2 of the
relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Updates to the Relax_disp.test_r1rho_on_res_fixed_time_m61b
system test.
        * Added the DPL94 model equations to the relax library.  This
is the David, Perlman and London 1994 R1rho 2-site fast exchange
model.  This commit follows step 3 of the relaxation dispersion model
addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Created the DPL94 model target function.  This is the David,
Perlman and London 1994 R1rho 2-site fast exchange model.  This commit
follows step 4 of the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added support for the DPL94 model to the
relax_disp.select_model user function back end.  This is the David,
Perlman and London 1994 R1rho 2-site fast exchange model.  This commit
follows step 6 of the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Created the Relax_disp.test_r1rho_on_res_fixed_time_dpl94
system test.  This is the David, Perlman and London 1994 R1rho 2-site
fast exchange model.  This commit follows step 7 of the relaxation
dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added the 'IT99' model to the
specific_analyses.relax_disp.variables module.  This is the Ishima and
Torchia 1999 2-site model for all timescales with pA >> pB.  This
commit follows step 1 of the relaxation dispersion model addition
tutorial (http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added the 'IT99' model to the relax_disp.select_model user
function frontend.  This is the Ishima and Torchia 1999 2-site model
for all timescales with pA >> pB.  This commit follows step 2 of the
relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Updated the model lists of the dispersion analyses GUI
element.  This adds the IT99 CPMG-type model and the DPL94 and M61B
R1rho-type models.
        * Fixes for the IT99 model description in the
relax_disp.select_model user function.  This is the Ishima and Torchia
1999 2-site model for all timescales with pA >> pB.  This commit
follows step 2 of the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added the IT99 model equations to the relax library.  This
is the Ishima and Torchia 1999 2-site model for all timescales with pA
pB.  This commit follows step 3 of the relaxation dispersion model
addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added the it99 module to the lib.dispersion package __all__
list.  This is the Ishima and Torchia 1999 2-site model for all
timescales with pA >> pB.  This commit follows step 3 of the
relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Created the IT99 model target function.  This is the Ishima
and Torchia 1999 2-site model for all timescales with pA >> pB.  This
commit follows step 4 of the relaxation dispersion model addition
tutorial (http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Fix for the lib.dispersion.it99 module.  This is the Ishima
and Torchia 1999 2-site model for all timescales with pA >> pB.  This
commit follows step 3 of the relaxation dispersion model addition
tutorial (http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added the support for the pA.dw^2 parameter 'padw2' to the
dispersion specific analysis.  This is needed for the Ishima and
Torchia 1999 2-site model for all timescales with pA >> pB.  This
commit follows step 5 of the relaxation dispersion model addition
tutorial (http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added support for the IT99 model to the
relax_disp.select_model user function back end.  This is the Ishima
and Torchia 1999 2-site model for all timescales with pA >> pB.  This
commit follows step 6 of the relaxation dispersion model addition
tutorial (http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added the support for the tex parameter (tex = 1/(2kex)) to
the dispersion specific analysis.  This is needed for the Ishima and
Torchia 1999 2-site model for all timescales with pA >> pB.  This
commit follows step 5 of the relaxation dispersion model addition
tutorial (http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added support for the IT99 model to the
relax_disp.cpmgfit_input user function.  This is the Ishima and
Torchia 1999 2-site model for all timescales with pA >> pB.
        * Fix for the relax_disp.cpmgfit_input user function for when
no directory is given.  This was causing tracebacks.
        * Fix for the LM63 model for the relax_disp.cpmgfit_input user
function.  The grid search was incorrectly set up - the parameter is
Tau, not tex.
        * Fixes for the IT99 model for the relax_disp.cpmgfit_input
user function.
        * Changed the CPMGFit grid search options for the IT99 model
in the relax_disp.cpmgfit_input user function.
        * Fix for the setup of the relaxation dispersion target
functions for the IT99 model.
        * Added the relax optimisation results for the IT99 model
applied to Flemming Hansen's CPMG data.
        * Removed an unnecessary calculation from the
lib.dispersion.it99.r2eff_IT99() function.
        * Added the IT99 model to the software comparison table for
Hansen's CPMG data.  This includes only the results from relax (and
possibly not fully debugged results at that).
        * Replaced '-' with 'N/A' if the software is missing the
model.  This is for the software comparison table using Flemming
Hansen's CPMG data.
        * Updated the CPMGFit results for the IT99 model using
Flemming Hansen's CPMG data.
        * Fixed the scaling of the parameter tex.
        * Fixes for the lib.dispersion.it99 module.  This is mainly
because the omega_1eff parameter was not being correctly converted
from the nu_cpmg values.
        * Updated the relax results for Flemming Hansen's CPMG data
for the IT99 model fixes.
        * Fixes for the relax_disp.cpmgfit_input user function for the
IT99 model grid search options.
        * Updated the CPMGFit results for the IT99 grid search fixes
of the last commit.
        * Basic fix for the checks of the
Relax_disp.test_hansen_cpmgfit_input user function.  The 'tex'
parameter is now set as 'Tau'.
        * Disabled the Relax_disp.test_r1rho_on_res_fixed_time_m61b
system test as the 'M61b' model is rubbish.The model cannot be
properly optimised as the parameters are not independent of each
other.
        * Fixes for the dispersion specific code.  The Grace graph
code of lib.software.grace no longer accepts the axis min and max
arguments.
        * Created the Relax_disp.test_bug_20889_multi_col_peak_list
system test to catch bug #20889.  The report is
https://gna.org/bugs/?20889.
        * Fixes for the Relax_disp.test_bug_20889_multi_col_peak_list GUI 
test.
        * Fixes for the checks of the
Relax_disp.test_bug_20889_multi_col_peak_list GUI test.  Intensity
errors will not have been calculated yet, and the structure is called
baseplane_rmsd anyway.
        * Fix for the Relax_disp.test_bug_20889_multi_col_peak_list
GUI test.  The peak intensity wizard _ok() method is now called to
terminate the wizard.  Otherwise this causes the subsequent GUI test
which tries to access the peak intensity wizard to fail.
        * Created the Relax_disp.test_hansen_cpmg_data_IT99 system
test.  This is for testing the Ishima and Torchia 1999 2-site model
for all timescales with pA >> pB.  This commit follows step 7 of the
relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Initialised the relaxation dispersion chapter in the relax manual.
        * Added 600x600 pixel version of the relaxation dispersion
analysis graphic.  This is for use in the relax manual.
        * Fix for the definition of the \Ronerho LaTeX command for the
relax manual.
        * Added EPS versions of the nessy and relax_disp 128x128 icons
for the relax manual.
        * Added icons of all the sizes for ShereKhan.
        * Updated the relaxation dispersion 128x128 EPS icons to be
the correct size and colour.
        * Updated the relaxation dispersion analysis EPS graphic to be
the correct size and colour.
        * Copied the tutorial for adding dispersion modes to relax
into the manual.  This was copied from
http://article.gmane.org/gmane.science.nmr.relax.devel/3907.
        * Editing of the tutorial for adding dispersion models in the
relax manual.
        * Edits of the relax_disp.select_model user function docstring.
        * Added all of the contents of the relax_disp.select_model
user function docstring to the manual.
        * The relaxation dispersion parameters are now defined in the
main manual LaTeX file.
        * Added a couple of sentences about bit rot to the dispersion
chapter of the relax manual.  This is to the test suite part of the
tutorial on adding new dispersion models.
        * The dispersion auto-analysis now saves the final program
state before terminating.
        * Shifted the dispersion specific Grace plotting code into
specific_analyses.relax_disp.disp_data.  The private
_plot_disp_curves() and _plot_exp_curves() methods of the analysis
specific object are now public functions of the
specific_analyses.relax_disp.disp_data module.
        * Removed the state.save user function calls from the relax
scripts for Hansen's CPMG data.
        * Updated the model lists for the relax scripts for Flemming
Hansen's CPMG data.
        * Added a sample script for the relaxation dispersion analysis
of CPMG-type data.
        * Added a preliminary icon set for spin clustering.
        * The relax_disp.cluster user function GUI menu entry now uses
the cluster icon.
        * Created a very basic GUI element for the dispersion analysis
for clustering.  This is simply to make this feature more obvious.
The button just launches the relax_disp.cluster user function.
        * Modified the experiment type descriptions in the dispersion GUI.
        * Shifted the spin cluster GUI element to be just after the
spin system GUI element.  This is simply a more logical placement.
        * Modified the title of the dispersion auto-analysis GUI
element, removing the 'Setup for' text.
        * Removed some unused imports from the CPMG dispersion
analysis sample script.
        * Added the CPMG dispersion analysis sample script to the relax 
manual.
        * Epydoc docstring fixes for all of the modules of the
lib.dispersion package.
        * Alphabetical ordering of imports.
        * Shifted the core of the relaxation dispersion API object
into its own api module.  This is to simplify the relax import cascade
- by removing the code from the
specific_analyses/relax_disp/__init__.py file, the import of the
package no longer results in the imports of other relax modules and
packages.
        * Expanded the modelling of dispersion data section of the
relax user manual.
        * Expansion of the modelling of dispersion data section of the
relax user manual.
        * The relaxation dispersion auto-analysis now outputs text and
Grace files for all parameters.  This is in response to bug #20917
(https://gna.org/bugs/?20917) submitted by Troels Linnet
(https://gna.org/users/tlinnet).
        * The Monte Carlo simulations now generate parameter errors
for the relaxation dispersion analysis.  The simulation index was
being ignored, hence the input data was never the randomised data and
all errors were zero.
        * Removed many decimal points from the MHz value in the Grace
plots from relax_disp.plot_disp_curves.
        * Added support for converting between kex and tex, and pA and
pB for the dispersion analysis.  This is performed by the new
specific_analyses.relax_disp.parameters.param_conversion() function.
For this, most of the code from the assemble_param_vector() function
has been shifted into get_value(), and most of
disassemble_param_vector() into set_value().  The dispersion analysis
now also has a custom sim_init_values() method to handle these
parameters.
        * Added support for calculating auxiliary parameter errors for
the dispersion analysis.  This is via the monte_carlo.error_analysis
user function.  The errors for the parameter pairs kex-tex and pA-pB
for the non-model parameter are now calculated as well.
        * Fix for the dispersion auto-analysis - pA and pB parameters
are no longer output for the IT99 model.  These are not parameters of
this model.
        * Updated the relax results for Flemming Hansen's truncated
CPMG data for all the recent changes.
        * Fix for bug #20916, (https://gna.org/bugs/?20916) -
Suggestion for Python script for PNG/EPS/SVG conversion of grace
files.  Troels Linnet provided this patch, and was discovered during
work on a Windows 7 system.  This patch will provide a grace2images.py
file in each folder where a call to
specific_analyses/relax_disp/disp_data.py is called.  It is called in
plot_disp_curves(dir=None, force=None) and call the function
lib.software.grace.script_grace2images().  The conversion script can
be executed in Linux and Windows, if the PATH to xmgrace has been
specified.  It will look in a folder for grace files of ending *.agr
and by default convert to PNG.  One can also convert to EPS and SVG.
Probably more options could be added, as PDF.  The conversion depends
on xmgrace compilation, and so PNG conversion is for fast inspection
of graphs in folder, and EPS for further external conversion to PDF
etc.  The patch, the output file, and small script to test is
attached.  I miss to make the file executable in relax, so the script
can be executed directly in Linux.
        * Mac OS X bug fix for the new analysis GUI wizard.  The blank
button is now using the blank_150x150.png file instead of no image,
preventing nasty wxPython bugs from appearing on that system.
        * Fix for bug #20917 (https://gna.org/bugs/?20917).  The
problem is that the Grace files for each spin system are not created
by the relax_disp.plot_disp_curves user function as the ':' character
cannot be placed in a file name in MS Windows.  All of the file name
from the ':' onwards is lost.  The solution is to replace each of the
characters '#:@' in the spin ID string with '_'.
        * Another update of the relax results for Flemming Hansen's
truncated CPMG data.  This includes the grace2images.py script
creation contributed by Troels Linnet (https://gna.org/users/tlinnet)
and the change of the file name of the per-spin dispersion curves.
        * The value checks in the
Relax_disp.test_hansen_cpmg_data_auto_analysis system test are now
less precise.  This is to allow the tests to pass on certain MS
Windows systems.
        * Fix for the setting of the execute permissions on the
grace2images.py scripts.  The problem was identified in the post at
http://thread.gmane.org/gmane.science.nmr.relax.devel/3953/focus=4000.
 This is within the relax_disp.plot_disp_curves user function after
the grace2images.py script has been created.  The commit matches the
changes from trunk for the Modelfree4 batch script.
        * Shifted from argparse to optparse in the grace2images.py
scripts from relax_disp.plot_disp_curves.  This is associated with bug
#20916 (https://gna.org/bugs/?20916) and the change suggested in the
post http://thread.gmane.org/gmane.science.nmr.relax.devel/3953/focus=4000.
 The argparse module is only available from for Python 2.7.3 (the
version with many Python 3 features backported) and Python >= 3.2.
The module has been replaced with the similar optparse module as used
by relax, and which available in all Python version supported by
relax.
        * Updated the grace2images.py scripts created by the
relax_disp.plot_disp_curves user function.  This was discussed in bug
#20916 (https://gna.org/bugs/?20916) and the change suggested in the
post http://thread.gmane.org/gmane.science.nmr.relax.devel/3953/focus=4000.
 Improved that both small and big letters for image types can be used
on the command line.
        * Converted the relaxation dispersion chapter of the user
manual to the lstlisting environment.  This matches the changes
occurring within the trunk.
        * Added an EPS version of the 128x128 cluster icon for the user 
manual.
        * Renamed the LaTeX file for the relaxation dispersion chapter
of the user manual.
        * Completed the script UI section of the relaxation dispersion
chapter of the user manual.  The sample script is now fully explained.
        * Added a demonstration of why the Ishima and Torchia 2005
error formula is incorrect.  The script
test_suite/shared_data/dispersion/error_testing/simulation.py has been
added to simulate the fixed relaxation time period error propagation.
This produces the
test_suite/shared_data/dispersion/error_testing/error_plot.agr Grace
graph.  The formula, graph and a description has been added to the
relax manual explaining everything.
        * Fix of the two-point dispersion error formula in the docs.
This includes the relax_disp.select_model user function docstring and
the relax manual.
        * Loosened a parameter check in the
Relax_disp.test_hansen_cpmg_data_IT99 system test to pass on certain
Linux systems.
        * Small edit of the legend of the relaxation dispersion figure
showing the Ishima & Torchia 2005 being wrong.
        * Added Paul Schanda's code for the numerical solution to the
Bloch-McConnell equations for 2-sites.  This is specifically code
which uses complex conjugate matrices.  The code was submitted at
http://thread.gmane.org/gmane.science.nmr.relax.devel/4132.
        * Made the lib.dispersion.ns_2site_star module importable in
the absence of Scipy.
        * Polished the lib.dispersion.ns_2site_star module docstring.
        * Added some code missing from the
lib.dispersion.ns_2site_star module.  This code was accidentally not
copied from http://thread.gmane.org/gmane.science.nmr.relax.devel/4132.
        * Significant speed ups of the
lib.dispersion.ns_2site_star.r2eff_ns_2site_star() function.
Replicated calculations have been minimised.
        * Added the 'NS 2-site star' model to the
specific_analyses.relax_disp.variables module.  This is the model of
the numerical solution for the 2-site Bloch-McConnell equations using
complex conjugate matrices.  This commit follows step 1 of the
relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added the lib.dispersion.ns_2site_star module name to the
package __all__ list.
        * Updated the lib.dispersion.ns_2site_star module with
additional information from Paul Schanda.  The details come from
http://thread.gmane.org/gmane.science.nmr.relax.devel/4132/focus=4135.
 The exchange-free R2 value parameter names have been changed to match
the convention of the other lib.dispersion modules.
        * Added the 'NS 2-site star' model to the
relax_disp.select_model user function frontend.  This is the model of
the numerical solution for the 2-site Bloch-McConnell equations using
complex conjugate matrices.  This commit follows step 2 of the
relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Fix for the non-ASCII character '\xe2' in the
lib.dispersion.ns_2site_star module.
        * Created the 'NS 2-site star' model target function.  This is
the model of the numerical solution for the 2-site Bloch-McConnell
equations using complex conjugate matrices.  This commit follows step
4 of the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added support for the R2B parameter as required by the 'NS
2-site star' model.  This is the model of the numerical solution for
the 2-site Bloch-McConnell equations using complex conjugate matrices.
 This commit follows step 5 of the relaxation dispersion model
addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added support for the 'NS 2-site star' model to the
relax_disp.select_model user function back end.  This is the model of
the numerical solution for the 2-site Bloch-McConnell equations using
complex conjugate matrices.  This commit follows step 6 of the
relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Better support for the R2A and R2B relaxation rate
parameters in the relaxation dispersion analysis.  This includes a
number of fixes to allow these two parameters to be handled correctly.
        * Added parameter conversions to go from pA and kex to kge and
keg.  This is for the 'NS 2-site star' numerical model.  The
conversions have been added to the start of the target function to
minimise mathematical operations to speed up the code.
        * Added the missing mpower() function as
lib.linear_algebra.matrix_power.square_matrix_power().  This is needed
by the lib.dispersion.ns_2site_star module.  The function comes from
the 'fitting_main_kex.py' file attached to comment 3 of task #7712
(https://gna.org/task/?7712#comment3,
https://gna.org/support/download.php?file_id=18263).  The mpower()
function was copied and modified to suite relax's coding conventions.
        * Added a module docstring to lib.linear_algebra.matrix_power.
        * Created the lib.dispersion.ns_matrices module.  This module
contains a collection of functions for generating the relaxation
matrices for the numerical solutions to the Bloch-McConnell equations
for relaxation dispersion.  The code comes from the
'fitting_main_kex.py' file attached to
https://gna.org/task/?7712#comment3(https://gna.org/support/download.php?file_id=18263).
        * Docstring fix for the lib.dispersion.ns_matrices.rcpmg_2d() 
function.
        * Added the functions for creating the X-axis pi-pulse
rotation matrices in lib.dispersion.ns_matrices.  The code comes from
the 'fitting_main_kex.py' file attached to
https://gna.org/task/?7712#comment3(https://gna.org/support/download.php?file_id=18263).
        * Huge amounts of documentation added to the
lib.dispersion.ns_2site_star module.  This comes from Paul Schanda's
(https://gna.org/users/pasa) post at
http://thread.gmane.org/gmane.science.nmr.relax.devel/4132/focus=4152
        * Spacing fixes for the lib.dispersion.ns_2site_star module as
determined by the 2to3 program.  This is the Python 2 to 3 conversion
program.
        * Docstring fix for the
lib.dispersion.ns_2site_star.r2eff_ns_2site_star() function.
        * Comment updates in the lib.dispersion.ns_2site_star module.
        * Completed the conversion of the ground and excited states
(G, E) to the A and B states.  This follows from
http://thread.gmane.org/gmane.science.nmr.relax.devel/4132/focus=4154.
        * Fixes for the construction of the complex conjugate matrix
in lib.dispersion.ns_2site_star.
        * The chemical shift difference is now passed into
lib.dispersion.ns_2site_star.  This is currently set to the fA
parameter, though it is not yet clear if this is correct.
        * Basic fix for the
lib.linear_algebra.matrix_power.square_matrix_power() function.
        * The fixed relaxation time period is now sent into the 'NS
2-site star' dispersion model.
        * Fix for the state G+E to A+B conversion in
lib.dispersion.ns_2site_star.
        * The 'NS 2-site star' model is now more robust against math
domain failures.  This includes the failure of the logarithmic of zero
matrices.
        * Speed ups of the 'NS 2-site star' dispersion model
optimisation.  The relaxation and magnitisation data structures are
now initialised with the target function initialisation, rather than
being created at each target function call.  The Rex and M0 matrices
are now updated at the base of the target function rather than in the
lib.dispersion.ns_2site_star module to minimise the number of
mathematical operations per target function call.  And the M0 matrix
has changed shape and a dot product is used in
lib.dispersion.ns_2site_star to create Moft instead.
        * Shifted to using the faster numpy.linalg.matrix_power()
function in lib.dispersion.ns_2site_star.  This was originally using
the lib.linear_algebra.matrix_power.square_matrix_power() function,
however the numpy equivalent is faster.
        * More speed ups of the 'NS 2-site star' dispersion model.  A
number of calculations have been shifted to the target function
initialisation code, avoiding unnecessary repetitive mathematical
operations.
        * Improvement of the error handling in the 'NS 2-site star'
model.  The fA and pB parameters are no longer being checked.  Instead
a Mgx value of 0.0 is being checked for.  This catches additional
problems.  And now instead of the R2eff value being set to zero, it is
set to 1e99.  This is because log of zero is -inf, and then multiplied
by a negative constant gives positive inf.
        * Docstring completion for
lib.dispersion.ns_2site_star.r2eff_ns_2site_star().  Epydoc text was
missing for some of the function arguments.
        * Changed 'numerical integration' to 'numerical solutions' in
the dispersion chapter of the manual.
        * Reworked the dispersion chapter of the manual for the recent
support of numerical models.  This includes better sectioning and
section labelling and referencing, and the addition of the 'NS 2-site
star' numerical model.  The model and parameter tables have been
updated as well.
        * Added the 'NS 2-site star red' model to the
specific_analyses.relax_disp.variables module.  This is the model of
the numerical solution for the 2-site Bloch-McConnell equations using
complex conjugate matrices, whereby the simplification R20A = R20B is
assumed.  This commit follows step 1 of the relaxation dispersion
model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Rewrote the relax_disp.select_model user function
documentation.  All of the detailed model information has been removed
as it is now in the relax user manual.  The model lists have been
modified to match the analytic-numeric sectioning of the manual.
        * Added the 'NS 2-site star red' model to the
relax_disp.select_model user function frontend.  This is the model of
the numerical solution for the 2-site Bloch-McConnell equations using
complex conjugate matrices, whereby the simplification R20A = R20B is
assumed.  This commit follows step 2 of the relaxation dispersion
model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Docstring fix for the
lib.dispersion.ns_2site_star.r2eff_ns_2site_star() function.
        * Created the 'NS 2-site star red' model target function.
This is the model of the numerical solution for the 2-site
Bloch-McConnell equations using complex conjugate matrices, whereby
the simplification R20A = R20B is assumed.  The code in common with
the 'NS 2-site star' model has been shifted into the new
calc_ns_2site_star_chi2() method.  This commit follows step 4 of the
relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added support for the 'NS 2-site star red' model to the
relax_disp.select_model user function back end.  This is the model of
the numerical solution for the 2-site Bloch-McConnell equations using
complex conjugate matrices, whereby the simplification R20A = R20B is
assumed.  This commit follows step 6 of the relaxation dispersion
model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added the 'NS 2-site star red' model to the relax user
manual.  This is the model of the numerical solution for the 2-site
Bloch-McConnell equations using complex conjugate matrices, whereby
the simplification R20A = R20B is assumed.  This commit follows step 2
of the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Fix for the Monte Carlo simulations for the numeric
dispersion models.  The back-calculation method was not correctly
initialising the target function class.
        * Added the 'CR72 red' model to the
specific_analyses.relax_disp.variables module.  This is the Carver and
Richards 1972 analytic model with the simplification R20A = R20B.  The
current 'CR72' makes the same assumption, but that model will be
expanded to support R20A and R20B later.  This commit follows step 1
of the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added the 'CR72 red' model to the relax_disp.select_model
user function frontend.  This is the Carver and Richards 1972 analytic
model with the simplification R20A = R20B.  The current 'CR72' makes
the same assumption, but that model will be expanded to support R20A
and R20B later.  This commit follows step 2 of the relaxation
dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Created the 'CR72 red' model target function.  This is the
Carver and Richards 1972 analytic model with the simplification R20A =
R20B.  The current 'CR72' makes the same assumption, but that model
will be expanded to support R20A and R20B later.  The code in common
with the CR72 model has been shifted into the new calc_CR72_chi2()
method.  This commit follows step 4 of the relaxation dispersion model
addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added support for the 'CR72 red' model to the
relax_disp.select_model user function back end.  This is the Carver
and Richards 1972 analytic model with the simplification R20A = R20B.
The current 'CR72' makes the same assumption, but that model will be
expanded to support R20A and R20B later.  This commit follows step 6
of the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added the 'CR72 red' model to the relax user manual.  This
is the Carver and Richards 1972 analytic model with the simplification
R20A = R20B.  The current 'CR72' makes the same assumption, but that
model will be expanded to support R20A and R20B later.  This commit
follows step 2 of the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * LaTeX improvements for the 'NS 2-site star red model'
section of the dispersion chapter of the manual.
        * Expanded the CR72 model to handle both the R20A and R20B
parameters.  The 'CR72 red' model now functions as the old CR72 model
where R20A = R20B = R20.  All parts of the code have been modified.
The lib.dispersion.cr72.r2eff_CR72() function has been expanded to
support the full Carver and Richards 1972 equations, dropping back to
the simplified form if R20A = R20B.
        * Fix for the dispersion specific loop_parameters() method for
the R20A and R20B parameters.  The frequency index is now correctly
returned for these and the R20 parameter.
        * Better printouts of the R20A and R20B parameters at the end
of minimisation.
        * Documentation fix for the lib.dispersion.cr72 module.
        * Small speed up for the lib.dispersion.cr72 module for the
R20A != R20B case.  Replicated calculations have been minimised.
        * Added support for model nesting in the relaxation dispersion
auto-analysis.  This involves copying the parameters from the simpler
nested model rather than performing a full grid search.  This is
currently used to handle all models with R20A and R20B parameters
where a simpler model with the single R20 parameter is optimised
first.
        * Improvements for the write_results() method of the
dispersion auto-analysis.  The parameter value and Grace files are now
correctly created for all the recent models.
        * Fix for the Relax_disp.test_hansen_cpmg_data_auto_analysis
system test for model name change.  This is for the change from the
'CR72' model to 'CR72 red' model.
        * Added the 'NS 2-site' model to the
specific_analyses.relax_disp.variables module.  This is the model of
the numerical solution for the 2-site Bloch-McConnell equations.  It
originates as optimization function number 1 from the
fitting_main_kex.py script from Mathilde Lescanne, Paul Schanda, and
Dominique Marion (see
http://thread.gmane.org/gmane.science.nmr.relax.devel/4138,
https://gna.org/task/?7712#comment2 and
https://gna.org/support/download.php?file_id=18262).  This commit
follows step 1 of the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added the 'NS 2-site' model to the relax_disp.select_model
user function frontend.  This is the model of the numerical solution
for the 2-site Bloch-McConnell equations.  It originates as
optimization function number 1 from the fitting_main_kex.py script
from Mathilde Lescanne, Paul Schanda, and Dominique Marion (see
http://thread.gmane.org/gmane.science.nmr.relax.devel/4138,
https://gna.org/task/?7712#comment2 and
https://gna.org/support/download.php?file_id=18262).  This commit
follows step 2 of the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added the 'NS 2-site' R2eff calculating function to the
relax library.  This is the model of the numerical solution for the
2-site Bloch-McConnell equations.  It originates as optimization
function number 1 from the fitting_main_kex.py script from Mathilde
Lescanne, Paul Schanda, and Dominique Marion (see
http://thread.gmane.org/gmane.science.nmr.relax.devel/4138,
https://gna.org/task/?7712#comment2 and
https://gna.org/support/download.php?file_id=18262).  This commit
follows step 3 of the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Updates and fixes for the lib.dispersion.ns_2site module.
The function has been renamed, and the R1 arguments default to 0.0.
The flip angle for the from the pulse.
        * Created the 'NS 2-site' model target function.  This is the
model of the numerical solution for the 2-site Bloch-McConnell
equations.  It originates as optimization function number 1 from the
fitting_main_kex.py script from Mathilde Lescanne, Paul Schanda, and
Dominique Marion (see
http://thread.gmane.org/gmane.science.nmr.relax.devel/4138,
https://gna.org/task/?7712#comment2 and
https://gna.org/support/download.php?file_id=18262).  This commit
follows step 4 of the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Converted the 'NS 2-site' model to 'NS 2-site 3D' to be more
specific.  This might change again in the future.
        * Added support for the 'NS 2-site 3D' model to the
relax_disp.select_model user function back end.  This is the model of
the numerical solution for the 2-site Bloch-McConnell equations.  It
originates as optimization function number 1 from the
fitting_main_kex.py script from Mathilde Lescanne, Paul Schanda, and
Dominique Marion (see
http://thread.gmane.org/gmane.science.nmr.relax.devel/4138,
https://gna.org/task/?7712#comment2 and
https://gna.org/support/download.php?file_id=18262).  This commit
follows step 6 of the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Lots of fixes for the relaxation dispersion target function
module for the 'NS 2-site 3D' model.
        * Improvements to the nesting() method of the relaxation
dispersion auto-analysis.  The use of the parameters of the simpler
model in a nested pair now only works if the simpler model is in the
model list.
        * Converted the pi-pulse propagator matrices to numpy array
format.  This is to enable the use of the much faster numpy.dot()
function for performing the dot products.
        * Speed ups for the 'NS 2-site 3D' model.  The pi-pulse
propagator is created only once upon target function initialisation
rather than for each function call, each spin cluster, each magnetic
field strength, each dispersion point, and each CPMG block.
        * Modified the df, fA, and fB parameters to match the relax
omega conventions of dw, wA, and wB.  This follows from Paul Schanda's
confirmation at
http://thread.gmane.org/gmane.science.nmr.relax.devel/4132/focus=4159.
        * Speed up for the lib.dispersion.ns_matrices.rcpmg_3d()
function.  The pA and pB parameters are now sent into the function
rather than being recreated by the function.
        * More changes to the numerical solution dispersion code to
match relax's conventions.  This includes the changes of df->dw,
fA->wA, fB->wB, and Mgx->Mx.
        * Added the 'NS 2-site 3D red' model to the
specific_analyses.relax_disp.variables module.  This is the 'NS 2-site
3D' model with R20A = R20B = R20.  This commit follows step 1 of the
relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added the 'NS 2-site 3D red' model to the
relax_disp.select_model user function frontend.  This is the 'NS
2-site 3D' model with R20A = R20B = R20.  This commit follows step 2
of the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Created the 'NS 2-site 3D red' model target function.  This
is the 'NS 2-site 3D' model with R20A = R20B = R20.  This commit
follows step 4 of the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added support for the 'NS 2-site 3D red' model to the
relax_disp.select_model user function back end.  This is the 'NS
2-site 3D' model with R20A = R20B = R20.  This commit follows step 6
of the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Updated all of the numerical model sections of the
dispersion chapter of the manual.  This includes additions for the 'NS
2-site 3D' and 'NS 2-site 3D red' models.
        * Updated the 'NS 2-site 3D' and 'NS 2-site 3D red' models in
the dispersion chapter of the relax manual.  The models are now
included in the tables and in the introduction.
        * Added support for nesting to the relaxation dispersion
auto-analysis for the 'NS 2-site 3D*' models.
        * Added the 'NS 2-site expanded' model to the
specific_analyses.relax_disp.variables module.  This is the numerical
model for the 2-site Bloch-McConnell equations expanded using Maple by
Nikolai Skrynnikov.  This commit follows step 1 of the relaxation
dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added the 'NS 2-site expanded' model to the
relax_disp.select_model user function frontend.  This is the numerical
model for the 2-site Bloch-McConnell equations expanded using Maple by
Nikolai Skrynnikov.  This commit follows step 2 of the relaxation
dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added the 'NS 2-site expanded' R2eff calculating function to
the relax library.  This is the numerical model for the 2-site
Bloch-McConnell equations expanded using Maple by Nikolai Skrynnikov.
It originates as optimization function number 5 from the
fitting_main_kex.py script from Mathilde Lescanne, Paul Schanda, and
Dominique Marion (see
http://thread.gmane.org/gmane.science.nmr.relax.devel/4138,
https://gna.org/task/?7712#comment2 and
https://gna.org/support/download.php?file_id=18262).  This commit
follows step 3 of the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Fix for the
lib.dispersion.ns_2site_expanded.r2eff_ns_2site_expanded() function.
The pg variable should have been pA and it needs to be sent into the
function.
        * Created the 'NS 2-site expanded' model target function.
This is the numerical model for the 2-site Bloch-McConnell equations
expanded using Maple by Nikolai Skrynnikov.  It originates as
optimization function number 5 from the fitting_main_kex.py script
from Mathilde Lescanne, Paul Schanda, and Dominique Marion (see
http://thread.gmane.org/gmane.science.nmr.relax.devel/4138,
https://gna.org/task/?7712#comment2 and
https://gna.org/support/download.php?file_id=18262).  This commit
follows step 4 of the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added support for the 'NS 2-site expanded' model to the
relax_disp.select_model user function back end.  This is the numerical
model for the 2-site Bloch-McConnell equations expanded using Maple by
Nikolai Skrynnikov.  It originates as optimization function number 5
from the fitting_main_kex.py script from Mathilde Lescanne, Paul
Schanda, and Dominique Marion (see
http://thread.gmane.org/gmane.science.nmr.relax.devel/4138,
https://gna.org/task/?7712#comment2 and
https://gna.org/support/download.php?file_id=18262).  This commit
follows step 6 of the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Fix for the relax_disp.select_model user function for the
'NS 2-site expanded' model.  There is only one R20 parameter as R20A =
R20B in this model.
        * Added the 'NS 2-site expanded' model to the relax user
manual.  This is the numerical model for the 2-site Bloch-McConnell
equations expanded using Maple by Nikolai Skrynnikov.  It originates
as optimization function number 5 from the fitting_main_kex.py script
from Mathilde Lescanne, Paul Schanda, and Dominique Marion (see
http://thread.gmane.org/gmane.science.nmr.relax.devel/4138,
https://gna.org/task/?7712#comment2 and
https://gna.org/support/download.php?file_id=18262).  This commit
follows step 2 of the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Large renaming of the relaxation dispersion models.  This
includes both the analytic and numerical models.  All of the models
with separate R20A and R20B parameters now have ' full' added to the
end of the model name.  And all of the corresponding reduced models
whereby R20A = R20B = R20 have had the trailing ' red' removed.  All
descriptions and variable names have been updated to match.
        * Updated the dispersion auto-analysis write_results() method
for the recent model changes.
        * Import fix for the 'NS 2-site expanded' dispersion model
target function.
        * Fix for the lib.dispersion.ns_2site_expanded module for the
missing sqrt() function import.
        * Simplified the test_hansen_cpmg_data_*() system tests by
shifting most shared code into setup_hansen_cpmg_data().
        * Created the Relax_disp.test_hansen_cpmg_data_CR72_full
system test for checking the 'CR72 full' model.
        * Expanded the dispersion target function class docstring to
include all current dispersion models.
        * Updated the parameter checks in the
Relax_disp.test_hansen_cpmg_data_CR72_full system test.
        * Fixes for all of the definitions of the k_AB and k_BA
exchange parameters.  These were inverted in all parts of relax.  The
changes only affect the numerical dispersion models.
        * Created the Relax_disp.test_hansen_cpmg_data_ns_2site_3D
system test.  This checks the 'NS 2-site 3D' numerical dispersion
model against some truncated CPMG data from Flemming Hansen.
        * Created the
Relax_disp.test_hansen_cpmg_data_ns_2site_3D_full system test.  This
checks the 'NS 2-site 3D full' numerical dispersion model against some
truncated CPMG data from Flemming Hansen.  The parameter checks have
not been updated as there appears to be a bug.
        * Created system tests for the rest of the numerical
dispersion models.  These include
Relax_disp.test_hansen_cpmg_data_ns_2site_expanded,
Relax_disp.test_hansen_cpmg_data_ns_2site_star and
Relax_disp.test_hansen_cpmg_data_ns_2site_star_full.  This checks the
'NS 2-site expanded', 'NS 2-site star', and 'NS 2-site star full'
numerical dispersion models against some truncated CPMG data from
Flemming Hansen.  The parameter checks have not been updated for the
'NS 2-site expanded' and 'NS 2-site star full' models as there appears
to be bugs.
        * Fixes for the Relax_disp.test_hansen_cpmg_data_auto_analysis
system test.  The checks for the 'CR72 red' model are now against the
'CR72' model.  And the models optimised only now include 'No Rex',
'LM63', 'CR72', and 'IT99', massively speeding up the test.
        * Fixes for the lib.dispersion.ns_2site_expanded module.
These problems were identified using the
Relax_disp.test_hansen_cpmg_data_ns_2site_expanded system test.  They
correspond to the issues with the original fitting_main_kex.py program
identified by Mathilde Lescanne in her post at
http://thread.gmane.org/gmane.science.nmr.relax.devel/4144.
        * The Relax_disp.test_hansen_cpmg_data_ns_2site_expanded
system test now passes.  The test has been set up to match
Relax_disp.test_hansen_cpmg_data_CR72.  This allows the efficiency of
each method to be compared by running the tests with the --time flag.
        * Fix for the model nesting method of the relaxation
dispersion auto-analysis for deselected spins.
        * Added an upper constraint of 2e6 rad/s for the kex
dispersion parameter.  This is to prevent slow optimisation to values
in the order of 1e20 for models which fail.
        * Updated the model lists for the relax scripts for optimising
Flemming Hansen's CPMG data.  The model lists now include the numeric
models and the 'CR72 full' model.
        * The lib.software.grace.write_xy_header() can now set the
legend fill pattern and font size.
        * The relax_disp.plot_disp_curves user function backend now
sets clear legend boxes with smaller text.
        * Fix for the Grace string for the dw dispersion parameter.
        * Updated the parameter value checks in the
Relax_disp.test_hansen_cpmg_data_CR72 system test.  The low precision
parameters are slightly different because of the new upper constraint
on kex, simply because optimisation is terminated early rather than
optimisation giving different results.
        * Updated the rest of the dispersion system tests to check the
correct parameter values.  It is currently assumed that the 'full'
dispersion models are correct as there is currently no way of testing
if they are not.  So the
Relax_disp.test_hansen_cpmg_data_ns_2site_3D_full and
Relax_disp.test_hansen_cpmg_data_ns_2site_star_full system tests have
been updated to pass.
        * Modified how the relaxation dispersion auto-analysis handles
Monte Carlo simulations.  Now there is a flag which allows per-model
simulations to be enabled.  By default, simulations are now only
performed at the end.  This is to allow for massive speed ups in the
auto-analysis.
        * Modified the dispersion GUI analysis to not include all
dispersion models.
        * Added Mathilde Lescanne to the copyright notices of the
numeric dispersion code in the relax library.  The dates must still be
checked and updated correctly.
        * Added support for the mc_sim_all_models flag for the
dispersion auto-analysis in the GUI.  The new boolean auto-analysis
GUI input element is being used for this purpose.
        * All of the numeric dispersion models are now much more
robust.  The real part of the magnetization vector for the A state
could, for some parameter combinations, be either negative or NaN.
These situations are now caught, and the R2eff value set to a very
large number.
        * Sectioning improvements for the relaxation dispersion
chapter of the relax user manual.
        * Added DOI numbers to a number of bibliography entries for
quick links in the relax user manual.
        * Added the 'LM63 3-site' model to the
specific_analyses.relax_disp.variables module.  This is the Luz and
Meiboom 1963 analytic model for three exchanging sites.  This commit
follows step 1 of the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added the 'LM63 3-site' model to the relax_disp.select_model
user function frontend.  This is the Luz and Meiboom 1963 analytic
model for three exchanging sites.  This commit follows step 2 of the
relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added the 'LM63 3-site' model to relaxation dispersion
chapter of the relax user manual.  This is the Luz and Meiboom 1963
analytic model for three exchanging sites.  This commit follows step 2
of the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added the 'LM63 3-site' R2eff calculating function to the
relax library.  This is the Luz and Meiboom 1963 analytic model for
three exchanging sites.  This commit follows step 3 of the relaxation
dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Fixes for the 'LM63 3-site' model equations in the
relaxation dispersion chapter of the user manual.
        * Created the 'LM63 3-site' model target function.  This is
the Luz and Meiboom 1963 analytic model for three exchanging sites.
This commit follows step 4 of the relaxation dispersion model addition
tutorial (http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added support to the relaxation dispersion analysis for the
'LM63 3-site' model parameters.  This is the Luz and Meiboom 1963
analytic model for three exchanging sites.  This commit follows step 3
of the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added support for the 'LM63 3-site' model to the
relax_disp.select_model user function back end.  This is the Luz and
Meiboom 1963 analytic model for three exchanging sites.  This commit
follows step 6 of the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added support for the 'LM63 3-site' parameters to the
specific_analyses.relax_disp.parameters module.  This is the Luz and
Meiboom 1963 analytic model for three exchanging sites.  This commit
follows step 5 of the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added the 'LM63 3-site' model to the dispersion scripts for
Flemming Hansen's CPMG data.
        * The relaxation dispersion auto-analysis can now resume if it
has been interrupted.
        * Some fixes for the 'LM63 3-site' dispersion model.  The
library code was not accepting the correct arguments and it was
referencing a non-existent parameter, and the grid search setup was
failing.
        * Added support for optimising the 'LM63 3-site' dispersion
model with Art Palmer's CPMGFit.  This is for the
relax_disp.cpmgfit_input user function.  This model in CPMGFit is
called '3-site_CPMG'.
        * Python 3 fixes for the specific_analyses.relax_disp.disp_data 
module.
        * Fixes for the relax_disp.cpmgfit_execute user function
backend.  This would hang if CPMGFit produced error messages.
Hopefully this is now fixed.
        * Updated the CPMGFit results for the 'LM63 3-site' model.
This is for the truncated CPMG data from Flemming Hansen.
        * Speed ups for the 'LM63 3-site' target function.  Some
mathematical operations have been shifted from the library code into
the target function so that is only calculates once per function call.
        * Updated the relax results for Flemming Hansen's truncated
CPMG data for the 'LM63 3-site' model.
        * The dispersion auto-analysis now outputs files for the kB,
kC, phi_ex_B, and phi_ex_C parameters.  This is in the write_results()
method and is for creating text files and Grace plots for the 'LM
3-site' model.
        * Created some synthetic test data for the 'LM63 3-site'
dispersion model.  This will be used to test CPMGFit and relax's
implementations.
        * Updated the 'LM63 3-site' dispersion model test data.  The
CPMG frequencies are now more realistic.
        * Removed the old Sparky peak lists for the 'LM63 3-site'
dispersion model test data.
        * Added the new Sparky peak lists for the 'LM63 3-site'
dispersion model test data.
        * Updated the reference Sparky peak lists for the 'LM63
3-site' dispersion model test data.
        * Missing import of the
specific_analyses.relax_disp.variables.MODEL_LM63_3SITE variable.
        * Added scripts for calculating the R2eff values for the 'LM63
3-site' dispersion model test data.
        * Created the Relax_disp.test_r2eff_fit_fixed_time system test
to show a failure in the auto-analysis.  This shows a failure of the
R2eff fitting in the dispersion auto-analysis due to Monte Carlo
simulations being run when the calc() function should be called.
        * Removed some parts of the
Relax_disp.test_r2eff_fit_fixed_time system test.  The last lines were
non-functional.
        * Fix for the dispersion auto-analysis if not enough models
have been input for a final run.  The final model selection, Monte
Carlo simulation, and results writing stage of the auto-analysis now
only occurs when enough models are present for model selection.
        * Fix for the dispersion auto-analysis for when only the
single R2eff model is optimised.  This is for the case of exponential
curve fitting, and allows Monte Carlo simulations to proceed even when
the mc_sim_all_models flag is False.
        * Removed some unused parts of the r2eff_calc.py script and
added the results file.
        * Made the 'LM63 3-site' dispersion model test data more
realistic.  Previously all the rates were within a few decimal places
of the R20 values.  Now the dispersion is much more significant.
        * Modified the 'LM63 3-site' dispersion model test data again.
 This time the data has been changed to be that of two residues rather
than two spins.
        * Another update of the 'LM63 3-site' dispersion model test
data.  This data now makes CPMGFit happy.
        * Added the CPMGFit results for the 'LM63 3-site' dispersion
model test data.
        * Added the relax results for the 'LM63 3-site' dispersion
model test data.
        * Added a warning not to use the 'LM63 3-site' model to the
dispersion chapter of the user manual.
        * Added the 'LM63 3-site' dispersion model to the model list
in the GUI.  It is not selected by default.
        * Updated the Noe.test_noe_analysis system test.  These were
the changes to the lib.software.grace.write_xy_header() function.
        * Fix for the model equivalence setup in the nesting() method
of the dispersion auto-analysis.  This is the use of the analytic CR72
model parameters for the numeric models to avoid the grid search.
        * Removed a double full stop in the relax_disp.select_model docstring.
        * Updates for the test suite data script for optimising
Flemming Hansen's CPMG data.  The model list has been shorted to the
useful models, and the grid search size is now reasonable.
        * Updated the software_comparison file for the numeric model
results from relax.  This is the file comparing the results for
residues 70 and 71 from Flemming Hansen's CPMG data.
        * Updated the numeric model results for the software_comparison file.
        * Updated the relax results for Flemming Hansen's truncated
CPMG data.  This includes the 'CR72 full' model and all the numeric
models (excluding the *full models).
        * Added Dominique Marion to the copyright notices of all the
lib/dispersion/ns_*.py files.  This is in response to Paul Schanda's
message at 
http://thread.gmane.org/gmane.science.nmr.relax.devel/4225/focus=4226.
        * Small fix for the relax_disp.cluster documentation.
        * Added the new pre_run_dir argument to the relaxation
dispersion auto-analysis.  This is to enable clustered optimisation.
This specifies a directory containing a completed analysis.  The
parameters from this previous run will be used as the starting point
for optimisation of the clustered analysis.
        * Fix for the Monte Carlo simulations for the dispersion
auto-analysis failing under certain conditions.  The wrong variable
was being checked to see if more than two models were being optimised.
        * The dispersion minimisation() method now skipped deselected
spin clusters.  This is defined as all spins of the cluster being
deselected.
        * Implemented the new relax_disp.parameter_copy user function.
 This is used to copy relaxation dispersion parameters from one data
pipe to another, taking cluster averaging into account.  It is used by
the dispersion auto-analysis to handle clustering.
        * Added an element to the dispersion GUI analysis for
specifying the directory of previous results.  This is used for the
pre_run_dir argument for the dispersion auto-analysis.
        * Reactivated Monte Carlo simulations for the 'R2eff' model
for exponential data curves.  This is within the optimise() method of
the dispersion auto-analysis.
        * Updated the intro chapter of the user manual for the now
supported dispersion analysis.  This is no longer listed as a future
to be implemented feature.
        * Updated the screenshot of the analysis selection wizard to
include the dispersion analysis.  This new figure has been updated in
the intro chapter of the relax user manual as well.
        * Renamed an instance of 'numerical simulation' in the
dispersion chapter of the manual.
        * Fix for the final data pipe in the dispersion auto-analysis.
 The final data pipe is now placed in the data pipe bundle.  This is
needed to allow the final state file to be opened in the GUI with an
associated GUI analysis tab.
        * Fixes for the clustering display in the GUI.  This is for
the relaxation dispersion GUI analysis tab.
        * Updated the README file for Dr. Flemming Hansen's CPMG data
in the test suite.
        * Added Martin Tollinger to the copyright of the
lib.dispersion.ns_2site_expanded module.  This follows Martin's post
at http://article.gmane.org/gmane.science.nmr.relax.devel/4276.
        * Added links to all of the copyright licensing agreements for
the lib.dispersion.ns_2site_expanded module.
        * Added Nikolai Skrynnikov to the copyright notice of the
lib.dispersion.ns_2site_expanded module.
        * Added the 'TP02' model to the
specific_analyses.relax_disp.variables module.  This is the Trott and
Palmer 2002 R1rho analytic model for 2-site exchange.  This commit
follows step 1 of the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added the 'TP02' model to the relax_disp.select_model user
function frontend.  This is the Trott and Palmer 2002 R1rho analytic
model for 2-site exchange.  This commit follows step 2 of the
relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added the 'TP02' model to relaxation dispersion chapter of
the relax user manual.  This is the Trott and Palmer 2002 R1rho
analytic model for 2-site exchange.  This commit follows step 2 of the
relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added the 'TP02' R1rho' calculating function to the relax
library.  This is the Trott and Palmer 2002 R1rho analytic model for
2-site exchange.  This commit follows step 3 of the relaxation
dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).  The
Matlab code from Skrynnikov and Tollinger has not been converted to
Python code yet.  This is to allow the Matlab->Python conversion to be
followed.
        * Fix for the 'M61 skew' dispersion model indexing in the user manual.
        * Added the 'NS 2-site expanded' model to the CPMG dispersion
sample script.
        * Added the 'NS 2-site expanded' and 'TP02' models to the
script in the manual.  This is in the script section of the dispersion
chapter of the user manual.
        * Converted the lib.dispersion.tp02 module from Matlab code to
Python.  The code has also been made fail-safe and repetitive
calculations have been shifted outside of the loop to speed things up.
        * Fixes for the TP02 model section of the dispersion chapter
of the manual.
        * Created the 'TP02' model target function.  This is the Trott
and Palmer 2002 R1rho analytic model for 2-site exchange.  This commit
follows step 4 of the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added support for the 'TP02' model to the
relax_disp.select_model user function back end.  This is the Trott and
Palmer 2002 R1rho analytic model for 2-site exchange.  This commit
follows step 6 of the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * The spectrometer frequency information is now checked for
the TP02 model.
        * Started to create a script to create synthetic data for the
TP02 dispersion model.  This still needs a lot of work.
        * Added the tp02 module to the lib.dispersion package __all__ list.
        * Created the synthetic data for the TP02 dispersion model.
The Sparky peak lists have been created and added to the repository.
        * Modified the synthetic data for the TP02 dispersion model.
The data is more closely mimics that from the paper, and should now be
in the slow exchange regime.
        * Updated the M61 R1rho model conditions in the table in the
user manual.
        * Updated the TP02 R1rho model conditions in the table in the
manual.  This cannot be fast exchange.
        * Started to create the
Relax_disp.test_r1rho_off_res_fixed_time_tp02 system test.
        * A fix for older numpy versions, as the numpy.add() function
argument 'out' is relatively new.
        * Added the new 'TSMFK01' model to the
specific_analyses\relax_disp\variables.py module.  This is the
Tollinger/Kay model for the 2-site very-slow exchange model for
CPMG-type experiments, which cover the range of microsecond to second
time scale.  Paper by M. Tollinger, N.R. Skrynnikov, F.A.A. Mulder,
J.D.F. Kay and L.E. Kay (2001).  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * lib/dispersion/lm63.py is copied to tsmfk01.py as part of
the implementation of the TSMFK01 model equation.  Progress sr #3071:
https://gna.org/support/index.php?3071 -Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Added the TSMFK01 model to the user_functions/relax_disp.py
select_model user function frontend.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Created the TSMFK01 model target function for 2-site
very-slow exchange model, range of microsecond to second time scale.
Progress sr #3071: https://gna.org/support/index.php?3071 -
Implementation of Tollinger/Kay dispersion model (2001).  Following
the guide at: 
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Added the TSMFK01 model equations to the relax library
lib/dispersion/tsmfk01.py.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * The chemical shift of each spin is now taken into account
for the synthetic data for the TP02 dispersion model.  The data now
properly reflects the spin lock offset.
        * Updated all of the dispersion system tests for the
spectrum.read_intensities user function changes.  The arguments
heteronuc and proton have been replaced with 'dim'.
        * Improved the error message for when peak intensity data
cannot be found in a dispersion analysis.  This is to better aid the
user to track down what they did wrong.
        * More error message improvements for when peak intensity data
cannot be found in a dispersion analysis.
        * Created the relax script for the
Relax_disp.test_r1rho_off_res_fixed_time_tp02 system test.
        * Changed the synthetic data file names for the TP02 dispersion model.
        * Updated the Relax_disp.test_r1rho_off_res_fixed_time_tp02
system test script for the new file names.
        * Added a new user function to the
Relax_disp.test_r1rho_off_res_fixed_time_tp02 system test.  This is
the chemical_shift.read user function which currently does not exist.
Chemical shifts are needed to interpret off-resonance R1rho data.
        * Copyright of Sebastien Morin and Edward d'Auvergne
re-inserted, since tsmfk01 is an alteration of lm63.py and m61.py in
same directory.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Fix for converting dw from ppm to rad/s.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Added support for the TSMFK01 model to the
relax_disp.select_model user function back end.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Fix for the reading of chemical shifts in the
Relax_disp.test_r1rho_off_res_fixed_time_tp02 system test.
        * Added the Trott and Palmer, 2002 bibtex reference for the user 
manual.
        * Added preliminary support for chemical shifts to the
dispersion target functions.
        * Modified the GUI behaviour for a dispersion analysis when
the C modules are not compiled.  Previously a user was blocked from
performing any dispersion analysis in the GUI is the modules were not
compiled.  Now instead, although an error is still thrown, the
analysis will be initialised.
        * A new check blocking exponential curve fitting in the
dispersion analysis when the C modules are not compiled.
        * Changed how chemical shifts are handled in the dispersion
target function class.  The chemical shifts in ppm are accepted and
they are converted to rad/s inside the __init__() method.  A structure
for rotating frame tilt angles is now also accepted.
        * Added a relax_disp.spin_lock_offset user function call to
Relax_disp.test_r1rho_off_res_tp02.  This is the
Relax_disp.test_r1rho_off_res_tp02 system test and the user function
does not exist yet.
        * Implemented the relax_disp.spin_lock_offset user function.
This includes both the front end and the back end
specific_analyses.relax_disp.disp_data.spin_lock_offset() function.
        * The offset is now set for all spectra in the
Relax_disp.test_r1rho_off_res_fixed_time_tp02 system test.  Previously
only the reference was set.
        * Fixed a typo in the dispersion chapter of the user manual.
This was identified by Troels Linnet at
http://thread.gmane.org/gmane.science.nmr.relax.devel/4410.
        * Fix for the relax_disp.spin_lock_offset user function.  The
cdp.dispersion_points structure was being updated when it should not
be touched - a remnant of the relax_disp.spin_lock_field backend which
this code was copied from.
        * Added some more arguments to the dispersion target function
class for off-resonance R1rho models.  This is the structure for the
spin-lock offsets and the tilt angles for each spin.
        * Fix for the Relax_disp.test_r1rho_off_res_fixed_time_tp02
system test.  The correct spectrum ID is now used for the
relax_disp.spin_lock_offset user function calls in the script.
        * The dispersion specific optimisation code is now assembling
chemical shift related data.  The
specific_analyses.relax_disp.disp_data.return_offset_data() function
has been written to return structures for the chemical shifts,
offsets, and tilt angles.  These are then used by the optimisation
functions by passing them into the target function code.
        * The TP02 model code is now in a semi functional state.  The
lib.dispersion code has been fixed to properly handle the data it
receives and the target function code has been updated to pass in the
correct data.
        * The TP02 model R1rho off-resonance test data creation script
now creates files of the R1 relaxation data.  These files are needed
for the system tests, as R1 data needs to be read.
        * The dispersion target function class now handles R1
relaxation data.  This data is essential for the off-resonance R1rho
models.
        * The Relax_disp.test_r1rho_off_res_fixed_time_tp02 system
test script now reads the R1 relaxation data.  This data is essential
for the model optimisation.
        * The dispersion specific code is now assembling the R1 data
and passing it to the target function.  The new
specific_analyses.relax_disp.disp_data.return_r1_data() function
creates a data structure holding all the R1 data.  This is used in the
off-resonance R1rho experiments.
        * Added checks to the
specific_analyses.relax_disp.disp_data.return_r1_data() function.
This is to help indicate to the user when data is missing.
        * Fix for the Relax_disp.test_bug_20889_multi_col_peak_list
GUI test.  The spectrum.read_intensities user function no longer has
'heteronuc' and 'proton' arguments.
        * Fix to allow R1 data to be randomised for Monte Carlo
simulations for off-resonance R1rho data.  This is a temporary kludge
for the dispersion analysis and needs to be replaced by a cleaner
solution via the base_data_loop() method.
        * Fix for the synthetic data for the TP02 dispersion model.
The nitrogen chemical shift was not converted from ppm to rad/s before
being used to calculate the offsets.
        * Fixes for the parameter checks in the
Relax_disp.test_r1rho_off_res_fixed_time_tp02 system test.  The
parameter values had not been updated from when the test was copied
from one of the other tests.
        * Turned off clustering in the
Relax_disp.test_r1rho_off_res_fixed_time_tp02 system test.  This
speeds the test up by more than half.
        * Fix for the TP02 dispersion model.  The rotating frame tilt
angle for this model is calculated from the population averaged
chemical shift and not the equal weighted average.
        * Attempt at fixing bug #21080 (https://gna.org/bugs/?21080).
This was reported by Troels Linnet.  The problem is a standard GUI
problem.  The text from a wxPython GUI is a Unicode string.  But relax
requires standard strings.  Therefore the gui.string_conv.gui_to_str()
function needs to be used on the return value of the GUI element
GetValue() method, but this call was forgotten.
        * Fix for the synthetic data for the TP02 dispersion model.
The chemical shift is being set to that of state A, the major species,
rather than the non-weighted chemical shift average.  This could also
have been set to the population weighted average.
        * The TP02 dispersion model now assumes the chemical shift is
that of the major population A.  Previously the linear chemical shift
average was assumed.
        * Increased the grid search size in the
Relax_disp.test_r1rho_off_res_fixed_time_tp02 system test.
        * The self.field_pre_run_dir GUI element is now deactivated
with the execution lock.
        * Many fixes and improvements for all of the R1rho dispersion
models in the user manual.  The equations are now correct and the
parameter table updated with new parameters and equations.
        * Removed the unused theta and R1 arguments for the
lib.dispersion.m61.r1rho_M61() function.  These off-resonance
parameters are not used in the on-resonance model.
        * Updated the r1rho_on_res_m61 dispersion on-resonance data
for off-resonance models.  The chemical shifts are now the same for
all spins, to force perfect on-resonance, and the two spins are now
different residues.
        * Added an R1 data file to r1rho_on_res_m61, by copying from
the r1rho_off_res_tp02 test suite data.
        * Updated the Relax_disp.test_r1rho_on_res_fixed_time_dpl94
system test for off-resonance data.  The offsets, R1 data, and
chemical shifts are now setup or read by the script.
        * Fixes for the DPL94 model to make it truly off-resonance.
The tilt angles and R1 data are now used by the target function.
        * Fixes for the r1rho_on_res_m61.py system test script.  The
spins are now different residues.  This fixes two system tests.
        * Renamed all of the current numeric dispersion models in
relax to be specific to CPMG-type data.  This is in preparation for
adding R1rho numeric models.  It was proposed at
http://thread.gmane.org/gmane.science.nmr.relax.devel/4461.
        * Added the 'NS R1rho 2-site' model to the
specific_analyses.relax_disp.variables module.  This is the numerical
model for the 2-site Bloch-McConnell equations for R1rho data.  This
commit follows step 1 of the relaxation dispersion model addition
tutorial (http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added the 'NS R1rho 2-site' model to the
relax_disp.select_model user function frontend.  This is the numerical
model for the 2-site Bloch-McConnell equations for R1rho data.  This
commit follows step 2 of the relaxation dispersion model addition
tutorial (http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added the 'NS R1rho 2-site' R1rho calculating function to
the relax library.  This is the numerical model for the 2-site
Bloch-McConnell equations for R1rho data.  This code originates from
the Skrynikov & Tollinger code (the sim_all.tar file
https://gna.org/support/download.php?file_id=18404 attached to
https://gna.org/task/?7712#comment5).  Specifically the funNumrho.m
file.  This commit follows step 3 of the relaxation dispersion model
addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Fix for the function name in the
lib.dispersion.ns_r1rho_2site module and removed misplaced copyrights.
        * Created the 'NS R1rho 2-site' model target function.  This
is the numerical model for the 2-site Bloch-McConnell equations for
R1rho data.  The code originates from the funNumrho.m file from the
Skrynikov & Tollinger code (the sim_all.tar file
https://gna.org/support/download.php?file_id=18404 attached to
https://gna.org/task/?7712#comment5).  This commit follows step 4 of
the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added support for the 'NS R1rho 2-site' model to the
relax_disp.select_model user function back end.  This is the numerical
model for the 2-site Bloch-McConnell equations for R1rho data.  The
code originates from the funNumrho.m file from the Skrynikov &
Tollinger code (the sim_all.tar file
https://gna.org/support/download.php?file_id=18404 attached to
https://gna.org/task/?7712#comment5).  This commit follows step 6 of
the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Added the 'NS R1rho 2-site' model to the relax user manual.
This is the numerical model for the 2-site Bloch-McConnell equations
for R1rho data.  The code originates from the funNumrho.m file from
the Skrynikov & Tollinger code (the sim_all.tar file
https://gna.org/support/download.php?file_id=18404 attached to
https://gna.org/task/?7712#comment5).  This commit follows step 2 of
the relaxation dispersion model addition tutorial
(http://thread.gmane.org/gmane.science.nmr.relax.devel/3907).
        * Rearrangement of the model sections in the dispersion
chapter of the user manual.  These are now better separated into
different categories.
        * Created a save file for the r1rho_off_res_tp02 dispersion
data optimised to the R2eff model.  This will be used for faster
system tests.
        * Created the Relax_disp.test_r1rho_ns_r1rho_2site_to_tp02
system test for the new 'NS R1rho 2-site' model.  This tests the 'NS
R1rho 2-site' model against the R1rho off-resonance test data from the
'TP02' model.
        * A number of fixes for the 'NS R1rho 2-site' dispersion
model.  The model should now be fully functional.  The chemical shift
and R1 related data are now assembled for this model, and the data
correctly passed from the target function to the lib.dispersion
module.
        * The Relax_disp.test_r1rho_ns_r1rho_2site_to_tp02 system test
now passes.  The optimised values have been hard-coded into the system
test.  They do not match the TP02 results, but are close.
        * Renamed many of the Relax_disp system tests to bring some
order to the naming.
        * Alphabetical ordering of all of the Relax_disp system tests.
        * Created a system test to catch bug #21081
(https://gna.org/bugs/?21081).  This uses a truncated version of Troel
Linnet's save state attached to the bug report (the data pipes not
used in the model selection have been manually deleted as well as all
by the first 3 spins in the remaining 2 data pipes).
        * Fix for bug #21081 (https://gna.org/bugs/?21081) - the
failure of a dispersion cluster analysis.  The problem was that the
specific_analyses.relax_disp.disp_data.loop_cluster() generator method
was not taking the spin.select flag into account.  Now all deselected
spins are excluded from the spin clusters and the free spins.
        * Better support for off-resonance R1rho data in the
dispersion GUI.  A new row of buttons has been added to the dispersion
GUI, just above the Peak list GUI element.  The first button is for
the spin.isotope user function and replaces the old GUI element.  Two
new buttons for loading R1 data and chemical shifts have also been
added, as required for off-resonance R1rho data.
        * Changed the chemical shift icon to that of the chemical
shift in ppm units - the delta symbol.
        * The chemical shift icon now has a transparent background.
        * Small changes to the tooltips of the R1 and chemical shift buttons.
        * Used far more Unicode for superscript, subscript and Greek
letters for the model parameters.  This is for the model list elements
in the dispersion GUI tab.
        * Added the 'TP02' and 'NS R1rho 2-site' models to the R1rho
model list in the dispersion GUI.  These models were missing from the
list.
        * Fix for the 'NS R1rho 2-site' model description in the
relax_disp.select_model user function.
        * The relax_disp.select_model GUI wizard combo element now
uses Unicode for the dispersion parameters.  This is for all the
models.  The 'LM63 3-site' model parameter list has also been fixed to
match the current set.
        * The CPMGFit input and output file names for relaxation
dispersion are now MS Windows compatible.  This is needed to allow the
files in the test suite to exist on Windows systems, as the
'#:@'symbols cause problems.  The same logic as used for the
relax_disp.plot_disp_curves is used to replace these characters with
an underscore.
        * CPMGFit file name fixes for MS Windows.  The '#:@'
characters have all been replaced by underscores.
        * Fix for the Relax_disp.test_hansen_cpmgfit_input system
test.  The '#:@' characters are no longer used in the file names.
        * Updates to the Relax_disp system tests for the lower
precision of MS Windows.  These fixes allow the tests to pass on MS
Windows.
        * Renamed ka parameter to kA, to be consistent with naming
conventions.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Fix for r20 should be called r20a.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Fix for unpacking the parameters correctly.  Progress sr
#3071: https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Added the k_AB and k_BA parameters to the table of all
dispersion parameters.
        * Proper ordering of all the dispersion models.  See the
thread at http://thread.gmane.org/gmane.science.nmr.relax.devel/4498
for details.
        * Added the 'NS R1rho 2-site' model to the dispersion auto-analysis.
        * Added the 'TP02' model to the dispersion auto-analysis.
        * The tutorial for adding dispersion models in the user manual
has been simplified.  Most of the text from the dispersion model
addition tutorial in the dispersion chapter of the manual has been
removed.  Instead a link to the tutorial on the wiki is given as this
is a much better place for such information
(http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax).
        * Moved the ordering of the model TSMF.  Ordering conventions
mentioned in this post
http://article.gmane.org/gmane.science.nmr.relax.devel/4500.  Progress
sr #3071: https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Added the relax_disp.spin_lock_offset user function to the
peak intensity wizard of the GUI.  This is only for R1rho-type data
and allows off-resonance data to be analysed in the GUI.
        * Data provided for the implementation of the slow-exchange
analytic model of the Tollinger/Kay (2001).  This model were used for
fitting in the paper
http://www.ncbi.nlm.nih.gov/pmc/articles/PMC1458987.
        * Created the Relax_disp.test_tp02_data_to_tp02 GUI test.
This is based on the system test of the same name.  This GUI test
checks that an off-resonance R1rho analysis is functional in the GUI.
        * Python 3 space fixes for the
lib.software.grace.script_grace2images() function.  As the script is
encoded by strings, the 2to3 program cannot fix this script.
Therefore the changes were made by hand.
        * Unicode strings in the dispersion GUI elements is now set up
with the compat.u() function.
        * Fix for the y-axis in the per spin dispersion curve plots.
This fix follows from the thread
http://thread.gmane.org/gmane.science.nmr.relax.devel/4512.  The test
for CPMG-type data was incorrect and should use the CPMG_EXP variable.
        * Added setup function for the system test of
KTeilum_FMPoulsen_MAkke_2006 data.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Fixed a spelling mistake in a number of file names.  This is
for the test suite data located at
test_suite/shared_data/dispersion/KTeilum_FMPoulsen_MAkke_2006.
        * Fixes for the units in the dispersion parameter table in the
user manual.  The units for dw are rad.s^-1 when used in the
equations, but it is stored internally as ppm.
        * Truncated the dataset to only one residue L61.  The
truncated dataset will be expanded later.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Modified the script file for saving of a truncated base_pipe
state file.  Progress sr #3071: https://gna.org/support/index.php?3071
- Implementation of Tollinger/Kay dispersion model (2001).  Following
the guide at: 
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Added script files for generating a saved state file with
R2eff values.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Added the first system test for model CR72 for the
kteilum_fmpoulsen_makke_cpmg_data.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Fix trailing spaces.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Fix epydoc HTML markup code.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Added some MQ dispersion data taken from the GUARDD program.
        * Modified the Relax_disp.test_dpl94_data_to_dpl94 system test
for a relax_disp.exp_type change.  This is so that the
relax_disp.exp_type user function associates the experiment types with
a spectrum ID.  This follows from
http://thread.gmane.org/gmane.science.nmr.relax.devel/4530.
        * Clean up and expansion of the dispersion experiment type variables.
        * Another change to the dispersion experiment type variables.
        * Fixes for the changes to the dispersion experiment type
variables throughout the dispersion code.
        * Redesigned the relax_disp.exp_type user function to be
associated with spectrum IDs.  This follows from
http://thread.gmane.org/gmane.science.nmr.relax.devel/4530, the thread
about supporting multiple data types such as SQ+MQ data
simultaneously.  The user function backend has been moved from
specific_analyses.relax_disp.api to
specific_analyses.relax_disp.disp_data.  A few temporary code
additions have been made to keep the user function functional with the
current dispersion code.
        * Fixes for the relaxation dispersion system tests for the
relax_disp.exp_type changes.
        * The relaxation dispersion system tests requiring the
compiled C modules are now skipped when not compiled.
        * Created the
specific_analyses.relax_disp.disp_data.loop_exp*() functions.  This
follows from http://thread.gmane.org/gmane.science.nmr.relax.devel/4530,
the thread about supporting multiple data types such as SQ+MQ data
simultaneously.  The methods added are loop_exp(), loop_exp_frq(),
loop_exp_frq_point() and loop_exp_frq_point_time().
        * Removed the relax_disp.exp_type user function page from the
new analysis wizard.
        * Modified the dispersion GUI analysis to handle the
relax_disp.exp_type user function changes.  This follows from
http://thread.gmane.org/gmane.science.nmr.relax.devel/4530, the thread
about supporting multiple data types such as SQ+MQ data
simultaneously.  The experiment type GUI element has been removed, the
CPMG and R1rho model lists merged into one, and much code for the
experiment type removed.  The peak analysis wizard will need to be
heavily modified for the changes.
        * Added the relax_disp.exp_type user function to the peak
intensity loading wizard.
        * Added the experiment type to the spectrum list GUI element.
This is only activated if the exp_type_flag argument is True.
        * The CPMG frequency and spin-lock field strength columns are
merged in the spectrum list GUI element.  The column is now for the
dispersion point data, and allows different experiment types to be
mixed.
        * The spectra list GUI element in the dispersion auto-analysis
now shows all columns.
        * Removed the temporary FIXMEs from the relax_disp.exp_type
user function backend.  This is needed to enable the mixed experiment
type code to be developed further, but means that the relax_disp
branch will be broken for a while.
        * The specific_analyses.relax_disp.disp_data.loop_point()
function now requires the exp_type argument.  The exp_type can no
longer be determined within the loop_point() function.  Therefore it
must be specified using a function argument.  The rest of the module
has been updated for this change.
        * Updated specific_analyses.relax_disp.parameters.param_num()
for the relax_disp.exp_type changes.
        * Fix for the Relax_disp.test_dpl94_data_to_dpl94 system test.
 The experiment type is now set for the reference spectrum.
        * Created the new specific_analyses.relax_disp.checks module.
This contains many check_*() functions for raising RelaxErrors to tell
the user when something is wrong.  This will be used to simplify, make
more consistent, and fix cdp.exp_type errors in the dispersion code.
        * Added a number of auxiliary functions to
specific_analyses.relax_disp.disp_data.  These are get_curve_type(),
has_exponential_exp_type(), and has_fixed_time_exp_type() and will be
used to simplify the dispersion code.
        * Fixes for the specific_analyses.relax_disp.api module for
the relax_disp.exp_type change.  This follows from
http://thread.gmane.org/gmane.science.nmr.relax.devel/4530, the thread
about supporting multiple data types such as SQ+MQ data
simultaneously.  The loop_exp*() functions are now being used
throughout the module.  The
specific_analyses.relax_disp.checks.check_*() functions are also used
to simplify the code and fix changes to cdp.exp_type.  And some
auxiliary functions from specific_analyses.relax_disp.disp_data are
being used as well.
        * Added some functions to
specific_analyses.relax_disp.disp_data for checking if certain
experiments exist.  These are the has_cpmg_exp_type() and
has_r1rho_exp_type() functions.
        * The dispersion auto-analysis no longer references
cdp.exp_type.  This follows from
http://thread.gmane.org/gmane.science.nmr.relax.devel/4530, the thread
about supporting multiple data types such as SQ+MQ data
simultaneously.
        * Fix for the new loop_exp_frq() dispersion function.
        * A few fixes for the relax_disp.exp_type user function
changes.  This follows from
http://thread.gmane.org/gmane.science.nmr.relax.devel/4530, the thread
about supporting multiple data types such as SQ+MQ data
simultaneously.
        * Fixes for the
specific_analyses.relax_disp.disp_data.find_intensity_keys() function.
 This is for the cdp.exp_type changes.
        * Fixes for the relax_disp.plot_disp_curves user function
backend for the cdp.exp_type changes.
        * A number of fixes for the relax_disp.exp_type user function
changes.  This follows from
http://thread.gmane.org/gmane.science.nmr.relax.devel/4530, the thread
about supporting multiple data types such as SQ+MQ data
simultaneously.
        * Updated the Hansen CPMG data relax save files for the
cdp.exp_type changes.
        * Fix for the Relax_disp.test_hansen_cpmgfit_input system test
for a new set of errors.  The Hansen R2eff values have been
recalculated and the errors are now slightly different.
        * More fixes due to the cdp.exp_type change.  This follows
from http://thread.gmane.org/gmane.science.nmr.relax.devel/4530, the
thread about supporting multiple data types such as SQ+MQ data
simultaneously.
        * Updated the r1rho_off_res_tp02 dispersion system test data
for the cdp.exp_type changes.
        * Some more fixes for the cdp.exp_type now being dependent on
the spectrum ID.  This follows from
http://thread.gmane.org/gmane.science.nmr.relax.devel/4530, the thread
about supporting multiple data types such as SQ+MQ data
simultaneously.
        * Changes so that the target function will handle multiple
experiment types.  This follows from
http://thread.gmane.org/gmane.science.nmr.relax.devel/4530, the thread
about supporting multiple data types such as SQ+MQ data
simultaneously.  The data structures from return_r2eff_arrays() now
have an additional dimension.  The new first dimension is that of the
experiment type.  This affects the values, errors, and missing data
structures.  This dimension is stripped in the dispersion target
function class for the single experiment type models, but will be
preserved for the combined models to be added in the future.
        * The spectrum list GUI element is now more robust to missing
data.  The cdp.spectrum_ids data structure no longer needs to exist.
        * The peak intensity wizard requires more than 10 pages.  The
hardcoded limit of a maximum of 10 wizard pages has been increased to
15.  Due to the non-linearity for the wizard pages, not all are seen,
but many pages are required.
        * The spectrum list GUI element can now handle the
cdp.exp_type data structure not existing.
        * Fixes for all of the
specific_analyses.relax_disp.disp_data.has_*_exp_type() functions.
They now operate when no experiment types have been specified.
        * Redesigned the peak intensity loading GUI wizard for
handling multiple experiment types.  This follows from
http://thread.gmane.org/gmane.science.nmr.relax.devel/4530, the thread
about supporting multiple data types such as SQ+MQ data
simultaneously.  The logic for the page ordering needed to be changed
to be more dynamic.  The CPMG and R1rho pages need to be shown only if
the corresponding experiment type exists in the current data pipe.
Hence the has_cpmg_exp_type() and has_r1rho_exp_type() dispersion
functions are now used by the new methods
wizard_page_after_relax_time() and wizard_page_after_cpmg_frq().  A
number of now useless flags have also been removed.
        * Added some sanity checks to the dispersion target function
class.  R1rho models cannot be used with CPMG-type experiments, and
CPMG models cannot be used with R1rho-type experiments.
        * Fixes for all of the GUI dispersion tests for the changes to
cdp.exp_type.  This follows from
http://thread.gmane.org/gmane.science.nmr.relax.devel/4530, the thread
about supporting multiple data types such as SQ+MQ data
simultaneously.
        * Large speed up of the Relax_disp.test_tp02_data_to_tp02 GUI
test.  By minimising the number of times the peak intensity wizard
pages are regenerated, the test time decreased on one system from ~32s
to ~12s.
        * Simplified the code of the Relax_disp.test_hansen_trunc_data GUI 
test.
        * The GUI now warns if the user choses inappropriate models.
When clicking on 'Execute', an error message appears if R1rho models
are selected for CPMG data and vice versa.  This is simply for more
intuitive user feedback.
        * Fix for the relax_disp.exp_type pop up menu entry in the
spectrum list GUI element.  This was calling relax_fit.exp_type rather
than relax_disp.exp_type.
        * Fix for the relax_disp.cpmg_frq pop up menu entry in the
spectrum list GUI element.  The method associated with the menu entry
action_relax_disp_cpmg_frq() was buggy.
        * Fix for the relax_disp.spin_lock_field pop up menu entry in
the spectrum list GUI element.  Another action method bug - the same
as in the last commit.
        * Added two functions for determining if a spectrum ID
corresponds to a CPMG or R1rho experiment.  These are functions in
specific_analyses.relax_disp.disp_data and they are called
is_cpmg_exp_type() and is_r1rho_exp_type().
        * Big redesign of the spectrum list GUI element for the
dispersion analysis.  This follows from
http://thread.gmane.org/gmane.science.nmr.relax.devel/4530, the thread
about supporting multiple data types such as SQ+MQ data
simultaneously.  The popup menu must be generated on the fly, as the
CPMG frequency and spin-lock field strength menu entries should only
be shown for the appropriate experiment type.  Therefore the new
generate_popup_menu() method has been added to the
gui.components.base_list GUI element.  The flags sent into the
spectrum list GUI element have also been completely changed to now
indicate the analysis type directly.
        * Expanded the Relax_disp.test_hansen_trunc_data GUI test to
check the spectrum list GUI element.  The popup menu is now tested
with the Fake_right_click() trick.  And the actions of a number of the
menu items, the action*() methods, are tested to see if the user
functions are correctly called.
        * Modified many of the spectrum list GUI element action_*()
methods for the GUI tests.  These now take the 'item' keyword argument
which overrides the ListCtrl.GetFirstSelected() call.  This ListCtrl
call cannot be reliably simulated on all operating systems, so the
item keyword argument can be used to explicitly select list items.
        * Fix for setting the relaxation time in the spectrum list GUI
element for the dispersion analysis.  The popup menu item was calling
the relax_fit.relax_time user function and not relax_disp.relax_time.
        * Fix for the action_relax_disp_cpmg_frq() method of the
spectrum list GUI element.  The relax_disp.cpmg_frq user function was
being incorrectly called.  This was identified via the
Relax_disp.test_hansen_trunc_data system test.
        * Modified the Relax_disp.test_tp02_data_to_tp02 GUI test to
check the spectrum list GUI element.  The popup menu is now tested in
the same way as in the Relax_disp.test_hansen_trunc_data GUI test.
        * Modified the spectrum list GUI element
action_relax_disp_spin_lock_field() method for the GUI tests.  This
now accepts the optional 'item' keyword argument like the other
action_*() methods.
        * Bug fix for the spectrum list GUI element popup menu
relax_disp.spin_lock_field entry.  This was calling the
relax_disp.spin_lock_field user function incorrectly.  The bug was
identified by the Relax_disp.test_tp02_data_to_tp02 system test.
        * Fix for the Mf.test_auto_analysis GUI test due to the
spectrum list GUI element changes.  The Fake_right_click() class now
needs a GetPosition() method.
        * Moved the experiment type setting into per spectra settings.
 Progress sr #3071: https://gna.org/support/index.php?3071 -
Implementation of Tollinger/Kay dispersion model (2001).  Following
the guide at: 
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Fixed typo.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Added the truncated test data for system test: relax -s
Relax_disp.test_kteilum_fmpoulsen_makke_cpmg_data_to_cr72.  Progress
sr #3071: https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Created a relax save file with just R2eff values for the
r1rho_on_res_m61 dispersion system tests data.
        * Created 3 new dispersion system tests.  These are for
checking a new function that doesn't exist yet.  The get_curve_type()
function will be used to determine if the experiment corresponding to
the given ID consists of exponential curves or of fixed time data.
        * Fixed values for system test: relax -s
Relax_disp.test_kteilum_fmpoulsen_makke_cpmg_data_to_cr72.  The test
now passes.  The values are compared to a relax run with 500 Monte
Carlo simulations.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Added "CR72 full" test suite for
kteilum_fmpoulsen_makke_cpmg_data.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Added file which setup a truncated spin system.  Progress sr
#3071: https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Changed the initialization script to use the truncated spin
system.  Progress sr #3071: https://gna.org/support/index.php?3071 -
Implementation of Tollinger/Kay dispersion model (2001).  Following
the guide at: 
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Changed the saved states to the truncated spin system.
Progress sr #3071: https://gna.org/support/index.php?3071 -
Implementation of Tollinger/Kay dispersion model (2001).  Following
the guide at: 
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Fix for the residue index in the test suite when using the
truncated spin system.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * The R2eff result save file for the r1rho_on_res_m61
dispersion data now contains the full data set.  The previous file did
not contain the full exponential curves.
        * The get_curve_type() function now works with the spectrum
ID.  This specific_analyses.relax_disp.disp_data.get_curve_type()
function already existed but it operated on all the loaded data.  Now
it can handle a single spectrum ID.  The count_relax_times() function
has been added to aid get_curve_type().
        * The get_curve_type() function is now imported into the
dispersion system test module.
        * Modified the Relax_disp.test_dpl94_data_to_dpl94 system
test.  This is in preparation for another relax_disp.exp_type change -
the fixed and exponential parts will be dropped as this can be
determined automatically by relax.
        * Changed the relax_disp.exp_type user function front end.
The supported types will now be 'CPMG' and 'R1rho', as the fixed time
verses full exponential curve can be automatically determined by relax
from what the user inputs.
        * Started a system test for model TSMFK01.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Modified the script for the full analysis of all models of
CPMG type.  Progress sr #3071: https://gna.org/support/index.php?3071
- Implementation of Tollinger/Kay dispersion model (2001).  Following
the guide at: 
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Simplified the dispersion experiment type classes.  The
supported types will now be 'CPMG' and 'R1rho', as the fixed time
verses full exponential curve can be automatically determined by relax
from what the user inputs.  The EXP_TYPE_* dispersion variables have
all changed and many have now been lost.  To support the changes, the
new specific_analyses.relax_disp.disp_data.loop_spectrum_ids()
function has been created.  This is a loop over all spectrum IDs
whereby the experiment type, magnetic field strength, dispersion
point, or relaxation time can be specified to isolate ID subsets.
Many of the specific_analyses.relax_disp.checks.check_*() has also
been modified as their logic no longer works.  The auxiliary
get_times() function has been added to create a per-experiment
dictionary of relaxation times so that the checks can be independent
of the other dispersion modules.
        * Updated much of the dispersion test data.  The experiment
type has been changed in all the scripts and the relax save files
updated.
        * Fixed expydoc formatting.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Created some more
specific_analyses.relax_disp.checks.check_*() functions.  This is for
better checking of the dispersion data.  The check_spectra_id_setup()
is useful for checking that all of the spectrum information is set up.
        * The checks prior to minimisation of the dispersion models is
now more comprehensive.
        * Bug fixes for the
specific_analyses.relax_disp.checks.get_times() function.  The
function is now more tolerant if certain data has now been set up yet.
        * Fixes for some of the R1rho dispersion system test scripts.
The relaxation time must be set for the reference spectrum.
        * Fixes for the Relax_disp.test_exp_fit system test - the
spectrometer frequency is now set.  This information is now
compulsory.
        * Converted references of ka and kA to k_AB.  Progress sr
#3071: https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Updated the CPMG dispersion analysis sample script for the
relax_disp.exp_type user function changes.
        * Updated the user manual for the relax_disp.exp_type user
function changes.  The script in the prompt/script UI section of the
dispersion chapter needed to be updated.
        * Referencing fixes for the dispersion chapter of the user manual.
        * Updated the scripts and save files for the
KTeilum_FMPoulsen_MAkke_2006 dispersion data.  This is for the recent
relax_disp.exp_type user function changes and this allows the tests to
pass.  Information on how to run the scripts and tee the output to
logs has been added, and the logs added to the repository.
        * Added k_AB to parameters.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * More fixes for the relax_disp.exp_type user function changes.
        * The relaxation dispersion GUI elements now use the
lib.text.gui module for Unicode strings.
        * Some Unicode text fixes in the dispersion GUI analysis for
older MS Windows versions.
        * Updated the Grace string for the k_AB parameter - it was
being shown as kA.
        * Fix for the model list in the GUI - the TSMFK01 model entry
was broken.
        * Increased the size of the dispersion model list GUI window
so that all models fit without scrolling.
        * Refinement of the dispersion model list in the GUI.
Descriptions have been added and the fixed window size adjusted to the
best fit.
        * Modified system test after inclusion of 1M GuHCl dataset.
Progress sr #3071: https://gna.org/support/index.php?3071 -
Implementation of Tollinger/Kay dispersion model (2001).  Following
the guide at: 
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Moved files into folder which is specific for the
experiment.  Progress sr #3071: https://gna.org/support/index.php?3071
- Implementation of Tollinger/Kay dispersion model (2001).  Following
the guide at: 
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Changed scripts after moving data.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Re-run of data after movement of scripts.  Progress sr
#3071: https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Added dataset experiment in 1.01 M GuHCl (guanidine
hydrochloride).  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Added to the README file for the 1.01 M GuHCL experiment.
Progress sr #3071: https://gna.org/support/index.php?3071 -
Implementation of Tollinger/Kay dispersion model (2001).  Following
the guide at: 
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Modified doc string for the script analysing all models for
residue L61.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Added the output from relax after analysis of all models.
Progress sr #3071: https://gna.org/support/index.php?3071 -
Implementation of Tollinger/Kay dispersion model (2001).  Following
the guide at: 
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Removed the size variable from the dispersion model list GUI
window as it is no longer used.
        * Added the k_AB and k_BA conversion equations to the
dispersion parameter table in the user manual.
        * Changed reference to Tollinger et al. instead of
Tollinger/Kay.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Fixes for the dispersion GUI tests for the changes to the
model list GUI element.
        * Added the button for the interatom.define user function in
preparation for the MQ dispersion data.  This is in the dispersion tab
of the GUI.
        * The return_cpmg_frqs() and return_spin_lock_nu1() functions
now return numpy arrays.  These are functions from
specific_analyses.relax_disp.disp_data.
        * Speed ups for the optimisation of all of the R1rho
dispersion models.  The spin-lock field strength data structure is now
converted from Hz to rad.s^-1 in the dispersion target function
initialisation.  Previously the conversion was happening multiple
times per target function call.  This has a noticeable effect on the
test suite timings.
        * Some small speed ups for the TP02 R1rho dispersion model
optimisation.  Some unneeded calculations and aliases were removed.
        * Added the write-out of 'dw' and 'k_AB' for model TSMFK01,
when performing auto-analysis.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Added to calculate the tau_cpmg times when model is TSMFK01.
 Progress sr #3071: https://gna.org/support/index.php?3071 -
Implementation of Tollinger/Kay dispersion model (2001).  Following
the guide at: 
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Optimized the target function for model TSMFK.  Progress sr
#3071: https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Added the conversion to k_AB from kex and pA.  k_AB = kex *
(1.0 - pA).  Progress sr #3071: https://gna.org/support/index.php?3071
- Implementation of Tollinger/Kay dispersion model (2001).  Following
the guide at: 
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Some more speed ups for the R1rho dispersion models.  For
many models, the square of the spin-lock field strength is a part of
the equations.  Therefore this is now pre-calculated when the target
function is initialised.
        * Added the relaxation dispersion documentation to all of the
value user function documentation.
        * Fix for the CPMG dispersion sample script - the numeric
solution model name was not correct.
        * Fix for the dispersion model list in the GUI - the R1rho
models were mixed up.
        * Added a sample script for an off-resonance R1rho dispersion 
analysis.
        * Created the empty specific_analyses.relax_disp.optimisation
module.  This will contain functions and other objects relating to the
optimisation of the dispersion models.
        * Fixed bug, where kex to k_AB where not possible if the model
does not contain parameter 'pA'.  The conversion is now skipped.
Progress sr #3071: https://gna.org/support/index.php?3071 -
Implementation of Tollinger/Kay dispersion model (2001).  Following
the guide at: 
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Added the conversion to k_BA from kex and pA.  Progress sr
#3071: https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Added system test for testing conversion to k_BA from kex
and pA.  Progress sr #3071: https://gna.org/support/index.php?3071 -
Implementation of Tollinger/Kay dispersion model (2001).  Following
the guide at: 
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Fix for passing system test on Windows with Python 32.
Precision lowered by 2 decimals.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Added system tests for conversion of kex to k_AB/k_BA for
models where kex and pA is present.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Modified headers for scripts producing analysis for data
which is full or truncated.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Created the dispersion default_value_doc object.  This table
is needed for the value.set user function.
        * Huge speed win for the relaxation dispersion analysis -
optimisation now uses the multi-processor.  The relaxation dispersion
optimisation has been parallelised at the level of the spin
clustering.  It uses Gary Thompson's multi-processor framework.  This
allows the code to run on multi-core, multi-processor systems,
clusters, grids, and anywhere the OpenMPI protocol is available.
Because the parallelisation is at the cluster level there are some
situations, whereby instead of optimisation being faster when running
on multiple slaves, the optimisation will be slower.  This is the case
when all spins being studied in clustered into a small number of
clusters.  It is also likely to be slower for the minimise user
function when no clustering is defined, due to the overhead costs of
data transfer (but for the numeric models, in this case there will be
a clear win).  The two situations where there will be a huge
performance win is the grid_search user function when no clustering is
defined and the Monte Carlo simulations for error analysis.
        * Decreased the number of grid increments in the dispersion
sample scripts from 21 to 11.  This is a much easier optimisation
problem than the other analyses in relax, so 21 increments is an
overkill.  It also takes far too long for some of the models due to
the high number of parameters.
        * Removed a tonne of unused imports from the modules of the
specific_analyses.relax_disp package.
        * Deselected most of the default dispersion models from the
dispersion GUI model list.  Now only one analytic and numeric model is
selected per experiment type.  This is to hint to the user that maybe
they shouldn't just use all models.
        * Added desc. item for model TSMFK01.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Added TSMFK01 to model overview table.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Added subsection with TSMFK01 model.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Fix for adding TSMFK01 to sample scripts.  Progress sr
#3071: https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Updated the relax_disp_trunc.py script for Flemming Hansen's
CMPG test data.
        * Started to create the relax_disp.catia_input user function.
The frontend has been written and a stub of a function for the
backend.  The new specific_analyses.relax_disp.catia module has been
created for this.
        * Created the Relax_disp.test_hansen_catia_input system test.
This is to check the output of the relax_disp.catia_input user
function.
        * The relax_disp.catia_input user function now creates the
main CATIA input file and all R2eff data files.
        * Created a script for converting Flemming Hansen's data into
CATIA input files.  This is for checking the relax_disp.catia_input
and relax_disp.catia_execute user functions.
        * Fix for the CATIA main execution file created by
relax_disp.catia_input.  The CATIA DataDirectory needs a '/' at the
end.
        * Improvements to the relax_disp.catia_input user function.
On top of general improvements, the global parameter and parameter set
files are now created.
        * More improvements for the relax_disp.catia_input user
function.  The output directory for CATIA results is now an argument
for the main backend function.  This directory is now also created, as
required by CATIA.
        * Implemented the relax_disp.catia_execute user function.
This is modelled on the palmer.execute user function.
        * The relax_disp.catia_input user function now has a GUI icon
associated with it.
        * Added the CATIA input files generated by relax for Flemming
Hansen's truncated CPMG data set.
        * Rearranged the numeric CPMG models in the dispersion model
list in the GUI.
        * The main CATIA input file requires the chemical shifts and
R1 values to be fixed, even when missing.  This is for the
relax_disp.catia_input user function.
        * Added Tollinger reference.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Added Tollinger model TSMFK01 to sample scripts.  Progress
sr #3071: https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Fixed several typo errors of "Is it selected"->"It is
selected".  A copy-paste error which has spread.  Progress sr #3071:
https://gna.org/support/index.php?3071 - Implementation of
Tollinger/Kay dispersion model (2001).  Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.
        * Spacing fixes for the Tollinger01 Bibtex entry for the
author initials.
        * Removed some strange characters from the Tollinger01 Bibtex 
abstract.
        * Fix for some inline references in the dispersion chapter of
the user manual.
        * Enabled the parallelisation of Monte Carlo simulations for
the relaxation dispersion analysis.
        * Created a set of scripts for testing out the multi-processor
abilities of the dispersion analysis.
        * Added Remco Sprangers' truncated ClpP data to
test_suite/shared_data/dispersion/Spranger_ClpP.  This is the data
attached to https://gna.org/task/?7712#comment6, and it will be used
for testing the implementation of the 'MQ NS 2-site' model, when added
to relax.
        * Concatenated the peak intensity files.
        * Created a relax script for analysing Remco Sprangers' ClpP
data with the 'MQ NS 2-site' model.  This currently does not work, as
the model is absent.
        * Modified the dispersion auto-analysis to check if peak
intensity errors have been pre-calculated.  This allows the user to
perform custom analyses and the auto-analysis will then not overwrite
these values.
        * Bug fixes for the averaging of peak intensity errors in the
dispersion analysis.  This is in the
specific_analysis.relax_disp.disp_data.average_intensity() function.
        * Fix for the docstring formula in
lib.dispersion.two_point.calc_two_point_r2eff_err().
        * Updated the relax script for analysing Remco Sprangers' ClpP
data with the 'MQ NS 2-site' model.  The error analysis has been
removed as it is identical to what the auto-analysis does.
        * Renamed the directory of Remco Sprangers' CPMG dispersion
data to correctly spell his name.
        * Updated the script for Remco Sprangers' MQ CPMG data.
        * Created the
Relax_disp.test_sprangers_cpmg_data_auto_analysis system test.  This
checks the 'MQ NS 2-site' model against Remco Sprangers' MQ CPMG data
using the auto-analysis.
        * Fixes for the checks of the new
Relax_disp.test_sprangers_cpmg_data_auto_analysis system test.  The
'MQ NS 2-site' model checks were still set up to those of the
Relax_disp.test_hansen_cpmg_data_auto_analysis system test.
        * Added the 'MQ NQ CPMG 2-site' model to the dispersion
variables.  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 new dispersion variable MODEL_MQ_NS_CPMG_2SITE has been added.  As
this is a new data type, multi-quantum CPMG, the new
MODEL_LIST_MQ_CPMG and MODEL_LIST_MQ_CPMG_FULL lists have been
created.
        * Rearranged the documentation for the relax_disp.select_model
user function to simplify the text.
        * Created the lib.text.gui.dwH Unicode string for use with the
'MQ NS 2-site' dispersion model.
        * Added the 'MQ NS CPMG 2-site' model to the
relax_disp.select_model user function frontend.  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
Two new sections were added to the user function docstring for the MQ
CPMG and MQ R1rho experiment types.
        * Added support for the 'MQ NS CPMG 2-site' model to the
relax_disp.select_model user function back end.  This is the numeric
solution for 2-site exchange for multi-quantum CPMG-type data.  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_back_end.
        * Added support for the new 'dwH' dispersion parameter.  This
is needed for the 'MQ NS CPMG 2-site' model support.  This follows the
tutorial for adding relaxation dispersion models at
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Adding_support_for_the_parameters.
        * Improved the RelaxError from the relax_disp.exp_type user
function when an invalid experiment type is set.
        * Added the multi-quantum CPMG and R1rho experiment types to
the dispersion variables.  This is needed for the 'MQ NS CPMG 2-site'
model.  This follows the tutorial for adding relaxation dispersion
models at 
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Creating_a_new_experiment_type.
        * Added relaxation dispersion model lists for the MQ R1rho
models.  These are stubs as no MQ R1rho models are yet supported by
relax.
        * Added support for the MQ dispersion data type to the
specific_analyses.relax_disp.disp_data module.  This is needed for the
'MQ NS CPMG 2-site' model.  This follows the tutorial for adding
relaxation dispersion models at
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Creating_a_new_experiment_type.
        * Added support for the MQ dispersion data types to the rest
of relax.  This is needed for the 'MQ NS CPMG 2-site' model, and the
changes affect the dispersion data checks and the dispersion target
functions.  This follows the tutorial for adding relaxation dispersion
models at 
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Creating_a_new_experiment_type.
        * Updated the
Relax_disp.test_sprangers_cpmg_data_auto_analysis system test for 'MQ
CPMG' data.  This also affects the script in the shared_data test
suite directory.  The relax_disp.exp_type user function exp_type
argument has been changed from 'CPMG' to 'MQ CPMG'.
        * Updated the relax_disp.exp_type user function for the new
'MQ CPMG' and 'MQ R1rho' experiment types.  This is needed for the 'MQ
NS CPMG 2-site' model.  This follows the tutorial for adding
relaxation dispersion models at
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Creating_a_new_experiment_type.
        * Created the 'MQ NS CPMG 2-site' model target function.  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.
        * Added the 'MQ NS CPMG 2-site' R1rho calculating function to
the relax library.  This is the 2-site numeric solution for
multi-quantum CPMG-type data.  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_library.
        * Updated the 'MQ NS CPMG 2-site' model target function to
match the function in the relax library.
        * Decreased the grid increments in the
Relax_disp.test_sprangers_cpmg_data_auto_analysis system test.  This
is to speed up this test.
        * Some small changes for the script for optimising Sprangers'
ClpP MQ CPMG data.
        * Added the 'MQ NS CPMG 2-site' model to the dispersion
auto-analysis.  This is the 2-site numeric solution for multi-quantum
CPMG-type data.  This follows the tutorial for adding relaxation
dispersion models at
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#The_auto-analysis.
        * Added the 'MQ NS CPMG 2-site' model to the GUI model list.
This is the 2-site numeric solution for multi-quantum CPMG-type data.
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.
        * Rearranged the 'Implemented models' subsection of the
dispersion chapter of the manual.
        * Fixed the 'MQ NS CPMG 2-site' model description in the
relax_disp.select_model user function.  The magnitisation vector is
2D, not 3D.
        * Added a latex definition for the dwH dispersion parameter
and added the 'MQ' abbreviation.
        * Added the 'MQ NS CPMG 2-site' model to the relax user
manual.  This is the 2-site numeric solution for multi-quantum
CPMG-type data.  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.
        * Simplified the 'MQ NS CPMG 2-site' model code in lib.dispersion.
        * Fixes for the 'MQ NS CPMG 2-site' model equations in the user 
manual.
        * Rearrangements of the tables in the dispersion chapter of
the user manual.  The tables have been shifted out into their own
LaTeX files, and all dispersion model tables have been concatenated
into one.
        * Edited the MQ abbreviation in the user manual.
        * Fixed some bad referencing in the dispersion chapter of the manual.
        * Docstring fix for the
lib.dispersion.mq_ns_cpmg_2site.populate_matrix() function.
        * Fix for a bug in the
specific_analyses.relax_disp.disp_data.loop_point() function
introduced at r21060.
        * Speed ups for the
Relax_disp.test_sprangers_cpmg_data_auto_analysis system test.  This
test does not pass yet, but this should allow the test to complete in
under an hour.
        * Added some value.set user function calls to the script for
Sprangers' ClpP data.
        * Added some value.set calls to the
Relax_disp.test_sprangers_cpmg_data_auto_analysis system test.  These
user function calls will be used to test a new concept of fixing
parameters in the grid search.  The dw and dwH parameters are fixed to
the experimental values, as described in the README file from Remco
Sprangers (in test_suite/shared_data/dispersion/Sprangers_ClpP).
        * Changed the operation of the grid search for the relaxation
dispersion analysis.  If a parameter is a simple floating number type
and it already has a value, then the grid search over that dimension
is fixed.  The grid increments are set to 1, and the upper and lower
bounds set to the parameter value.  This allows parameters to be
pre-set, if known from experiment.  They will nevertheless be
optimised via the minimise user function.
        * Added a printout for the pre-set dispersion parameter
skipping in grid search.
        * Updated the dispersion grid search function to user the
loop_parameters() function.  This is an important fix as the
specific_analyses.relax_disp.optimisation.grid_search_setup() function
was not matching the rest of the dispersion code, hence the parameters
of the grid increments and bounds were not matching the parameter
vector, scaling matrix, target function parameter depacking, etc.
        * A bit of help for some of the R1rho dispersion model system
tests.  These now fail after a fundamental fix.  The problem is only
due to the very coarse grid search size - a finer grid search allows
the solution to be correctly found.  However as this is far too slow,
instead the kex parameter is set to be close to the solution to skip a
grid search dimension.
        * Some basic fixes for the Relax_disp.test_hansen_catia_input
system test.  The relax_disp.catia_input user function is not
complete, but this allows the Relax_disp system tests to pass.
        * The dispersion multi-processor optimisation code now prints
out its own simulation messages.  This is to fix bug #21190
(https://gna.org/bugs/?21190).  The memo object now is feed in the
spin IDs of the cluster and stores this as the cluster_name variable.
This is used by the results object run() method, which is run on the
master at the end, to print out a message along the lines of
"Simulation X, cluster yyy".  Therefore the message is only printed
out once the calculation of that slave command is complete and
returned to the master.
        * Replaced all usage of scipy.linalg.expm() with
lib.linear_algebra.matrix_exponential.matrix_exponential().  This is
for the functions of the lib.dispersion package used for the
relaxation dispersion numeric solution models.  The change eliminates
a bug in the scipy function which uses the Pade approximation which
fails horribly for the complex part of the matrix.  The real part
looks good, but the complex part looks to have nasty truncation
artefacts which is propagated and amplified through the
Bloch-McConnell equations.
        * Modified the
Relax_disp.test_sprangers_cpmg_data_auto_analysis system test so the
models are programatically changed.
        * Changes to the Sprangers ClpP data analysis script.
        * Simplified the
Relax_disp.test_sprangers_cpmg_data_auto_analysis system test script.
The pA and kex parameters are now also pre-set to speed things up.
        * Added a script and results files for the base 'R2eff' model
for Remco Sprangers' ClpP data.
        * Fixes for the R2eff data files for Sprangers ClpP data.
        * Artificially increased the errors in Sprangers ClpP data to
match the publication.  The R2eff errors are simply multiplied by 5,
as the errors from the paper cannot be replicated.
        * Converted the
Relax_disp.test_sprangers_cpmg_data_auto_analysis system test to not
use the auto-analysis.  The test has been renamed to
Relax_disp.test_sprangers_data_to_mq_ns_cpmg_2site.  The optimisation
is now for the cluster and has been severely cut back.  The 'MQ NS
CPMG 2-site' model appears to be rubbish anyway - it looks to be
indeterminate with multiple solutions, and possibly infinite lines of
solutions.  The test now passes, and quickly.
        * Created the Relax_disp.test_sprangers_data_to_mq_cr72 system
test.  This was copied from the
Relax_disp.test_sprangers_data_to_mq_ns_cpmg_2site system test and the
model changed to 'MQ CR72'.  This follows the tutorial for adding
relaxation dispersion models at
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#The_test_suite.
        * Added the 'MQ CR72' model to the dispersion variables.  This
is the Carver and Richards (1972) 2-site model expanded for MQ CPMG
data by Korzhnev et al., 2004.  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 the 'MQ CR72' model to the relax_disp.select_model
user function frontend.  This is the Carver and Richards (1972) 2-site
model expanded for MQ CPMG data by Korzhnev et al., 2004.  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 support for the 'MQ CR72' model to the
relax_disp.select_model user function back end.  This is the Carver
and Richards (1972) 2-site model expanded for MQ CPMG data by Korzhnev
et al., 2004.  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_back_end.
        * Created the 'MQ NS CPMG 2-site' model target function.  This
is the Carver and Richards (1972) 2-site model expanded for MQ CPMG
data by Korzhnev et al., 2004.  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.
        * Added the 'MQ CR72' R2eff calculating function to the relax
library.  This is the Carver and Richards (1972) 2-site model expanded
for MQ CPMG data by Korzhnev et al., 2004.  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_library.
 The corresponding target function was updated to input the correct
arguments.
        * Added the 'MQ CR72' model to the dispersion auto-analysis.
This is the Carver and Richards (1972) 2-site model expanded for MQ
CPMG data by Korzhnev et al., 2004.  This follows the tutorial for
adding relaxation dispersion models at
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#The_auto-analysis.
        * Added the 'MQ CR72' model to the GUI model list.  This is
the Carver and Richards (1972) 2-site model expanded for MQ CPMG data
by Korzhnev et al., 2004.  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.
        * A number of fixes for the lib.dispersion.mq_cr72 module.
        * The lib.dispersion.mq_cr72 module now more closely resembles
the cr72 module in syntax.
        * Added a relax script for the 'MQ CR72' model optimised using
Flemming Hansen's CPMG data.  This is to demonstrate, though not
exactly successfully, that the 'MQ CR72' model can collapse to the
'CR72' model.  The imperfection might be due to truncation artefacts
in the sin ratio in the mD and mZ factors.  The results files and
output log file from the script have been added to the repository as
well.
        * Updates for the script and results for the 'MQ CR72' model
optimised using Flemming Hansen's CPMG data.
        * Added a script and results files for optimising Sprangers'
ClpP MQ CPMG data to the 'MQ CR72' model.
        * Bug fix for the dispersion specific loop_parameters()
function for the multiple quantum models.  The dw and dwH parameters
were being interleaved rather than all dw for all spins first and then
all dwH.  The result was that these parameters were being mixed up in
the MQ model target functions when clustering was activated, causing
total failure of the MQ models.
        * Added a script and results files for optimising Sprangers'
ClpP MQ CPMG data to the 'MQ CR72' model.  This is with all spins
clustered.  It complements the files which are used for the pre-run
results of the auto-analysis.
        * Better spacing in the model table of the relaxation
dispersion chapter of the relax manual.
        * Added the Tollinger et al., 2001 reference for the 'NS CPMG
2-site expanded' model.  This reference was communicated in a private
email.
        * Improvements for the LaTeX maths commands used in the
dispersion chapter of the user manual.
        * Added Skrynnikov and Tollinger to the copyright notice in
lib/dispersion/ns_cpmg_2site_star.py.  I can now see that the code
derives from the funNumcpmg.m of the sim_all.tar file
(https://gna.org/support/download.php?file_id=18404) attached to
https://gna.org/task/?7712#comment5.  This sim_all.tar file is the
original code of Nikolai and Martin.
        * Modified the relaxation dispersion auto-analysis to take
nesting of MQ models.  This is specifically the nesting of the
analytic 'MQ CR72' model and the 'MQ NS CPMG 2-site' models.  The
analytic solution is now used as the optimisation starting point for
the numeric model.
        * Used the \imath LaTeX symbol for complex numbers in the
dispersion chapter of the manual.
        * Added scripts and results for optimising Sprangers' ClpP MQ
CPMG data to the 'MQ NS CPMG 2-site' model.  This includes two scripts
for non-clustered followed by clustered analysis using the 'MQ CR72'
model in the auto-analysis so its parameters will be used as the
optimisation starting point for the 'MQ NS CPMG 2-site' model.  The
results files for both scripts have been added to the repository.
        * Added the 'MQ CR72' model to the relax user manual.  This is
the Carver and Richards (1972) 2-site model expanded for MQ CPMG data
by Korzhnev et al., 2004.  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.
        * Modified the dwH symbol in the relax user manual.
        * Created a 'TODO' section in the dispersion chapter of the
relax user manual.  This lists all of the features and models
currently missing from the dispersion analysis in relax.
        * Added the original Maple script to the
lib.dispersionns_cpmg_2site_expanded module docstring for reference.
This was sent by Nikolai in a private communication.
        * More expansion of the lib.dispersionns_cpmg_2site_expanded
module docstring for reference.  The link
https://gna.org/task/?7712#comment8 to the p3.analytical script in the
Gna! tasks has been added and the contents of the sim_all.tar file
funNikolai.m has been copied into the docstring as well.
        * Epydoc docstring fixes to allow the API documentation to be
properly compiled.
        * Python 3 fix for the lib.dispersion.mq_ns_cpmg_2site module.
 The numpy.linalg.matrix_power requires an integer power, but Python 3
was creating a floating point number for the 'fact' variable.
        * Updated the Relax_disp.test_sprangers_data_to_mq_cr72 system
test so it passes.  The parameters found in the analysis located in
the directory 
test_suite/shared_data/dispersion/Sprangers_ClpP/mq_cr72_analysis_clustered
have been used as the starting point.
        * A number of Python 3 fixes.
        * Python 3 fixes for the dispersion data key generation and
the data assembly.  The
specific_analyses.relax_disp.disp_data.return_param_key_from_data()
function was generating different keys for Python 2 and 3.  This has
been fixed.  The return_r2eff_arrays() function has also been modified
to correctly check for these keys.
        * Removed an insanely large log file from the Flemming Hansen
dispersion data directories.  This is the log file for the CPMGFit
analysis.
        * A large number of fixes for the relaxation dispersion system
tested needed for the fix which changed the format of the keys by
which the R2eff/R1rho data is accessed.
        * Updated the
Relax_disp.test_sprangers_data_to_mq_ns_cpmg_2site system test to
allow it to pass.
        * Created the new
Relax_disp.test_hansen_cpmg_data_auto_analysis_numeric system test.
This will be used to test a new feature whereby pure numeric models
will be used in the auto-analysis.
        * Added the model_class variable to the relaxation dispersion
auto-analysis class.
        * Changed the new dispersion auto-analysis class variable
model_class to the numeric_only flag.
        * Created list variables of all analytic and numeric
dispersion models.  These are the MODEL_LIST_ANALYTIC and
MODEL_LIST_NUMERIC lists in the module
specific_analyses.relax_disp.variables.
        * Fix for the hansen_data.py dispersion auto-analysis script
used for a number of system tests.  The numeric_only flag was not
being handled correctly.
        * Implemented the numeric only option for the dispersion
auto-analysis.  If the numeric_only flag is set to True, then no
analytic models will be used in the final model selection.
        * Completed the
Relax_disp.test_hansen_cpmg_data_auto_analysis_numeric system test.
This now checks all the optimised parameter values and makes sure that
no 'CR72' model was selected.
        * Added a new button to the button bar in the relaxation
dispersion GUI analysis tab.  This is a button used to launch the
value.set user function to allow the user to pre-set certain
parameters so that they are not used in the grid search.
        * Created a GUI element for the numeric_only flag of the
auto-analysis for the dispersion GUI tab.  This defaults to false to
allow all model types to be used.
        * Loosened the
Relax_disp.test_sprangers_data_to_mq_ns_cpmg_2site system test to
allow it to pass on Mac OS X.
        * Fixes to allow the Mf.test_mf_auto_analysis system test to
pass on Mac OS X.  The simulated event.GetPosition() method in the
Fake_right_click class the file test_suite/gui_tests/model_free.py
must return a wx.Point object and not a Python tuple.  The
gui.components.base_list.Base_list.on_right_click() method has also
been modified with a wx.Yield() call to allow the test to pass.
        * Loosened some of the relaxation dispersion system tests to
allow them to pass on MS Windows.
        * Commented out some checks of the
Relax_disp.test_hansen_cpmg_data_auto_analysis_numeric system test.
This is to allow this test to pass on 32-bit GNU/Linux systems.  The
numeric model optimisation is incomplete but different between the
32-bit and 64-bit systems.
        * Fix for the relaxation dispersion system test tearDown()
method.  The rmtree function is no longer user, rather the
test_suite.clean_up.deletion() function is being used to handle the
issue of MS Windows not releasing the file in time.
        * Fix for the test_suite.clean_up.deletion() method for
another MS Windows problem.  Sometimes the failed rmtree() call
actually deletes the files and throws the WindowsError error.
Therefore the second rmtree() call will throw another WindowsError for
the missing files.  This is now caught.
        * Elimination of the relaxation dispersion system test
tearDown() method.  The functionality is fully covered by the base
system test method.
        * Shifted all of the numerical dispersion code to use the
internal matrix power function.  Instead of using the
numpy.linalg.matrix_power() function, the relax
lib.linear_algebra.square_matrix_power() function is being used
instead.  This allows the code to run on many older systems, as the
numpy function is relatively new.
        * Updated the
Relax_disp.test_hansen_cpmg_data_to_ns_cpmg_2site_star_full system
test.
        * Fix for the lib.dispersion.cr72 module for early Python
versions.  For Python 2.5 and earlier, the math.acosh() function does
not exist.  Therefore the numpy equivalents are now being used.
        * Loosened the checks for the
Relax_disp.test_hansen_cpmg_data_to_ns_cpmg_2site_star_full system
test.  This is to allow the test to pass on 32-bit Linux systems.
        * Caught a divide by zero in the
specific_analyses.relax_disp.disp_data.return_offset_data() function.
This was identified by turning all numpy warnings to errors.
        * More loosening of the
Relax_disp.test_hansen_cpmg_data_to_ns_cpmg_2site_star_full system
test.  This is now for 64-bit Mac OS X to pass.
        * The dispersion GUI analysis cluster_update() method is now
thread safe.  This removes many error messages when running the
dispersion analysis in the GUI, especially for Mac OS X systems.
        * The dispersion data return_cpmg_frqs() and
return_spin_lock_nu1() functions are now safer.  These
specific_analyses.relax_disp.disp_data module functions can now be
called when no data is present.
        * Fixes for the calc user function for the dispersion
analysis.  This now does something logical for the non-R2eff models.
The chi-squared value is now being calculated and stored.  Previously
this was only calculating the R2eff/R1rho values for fixed relaxation
time period data for the 'R2eff' model and failing for all others.
Now the pre-existing _back_calc_r2eff() method is used to
back-calculate and store the chi-squared value.
        * Redesigned the
Relax_disp.test_hansen_cpmg_data_to_ns_cpmg_2site_star_full system
test.  The R2A and R2B rates cannot be distinguished for this data,
therefore there was no unique solution.  This resulted in too much
variability between 32 and 64-bit systems as well as different
operating systems.  Instead a single calc user function call is used
to determine the chi-squared value for a fixed set of parameters.
        * Loosened the
test_hansen_cpmg_data_to_ns_cpmg_2site_star_full system test for Mac
OS X.  Even the calc user function does not help, the results are
quite different between different systems.
        * The specific API calculate_r2eff() method for the dispersion
analysis is now private.  This is not part of the API, so it must be
made private for the test suite to pass.
        * Fix for the Mf.test_mf_auto_analysis system test on MS
Windows.  The Fake_right_click.GetPosition() method now returns a
valid position.  This is the original (10, 10) position.
        * Fix for a bug introduced earlier - the call to the
calculate_r2eff() must also be made private.
        * Fixes for 2 Relax_disp GUI tests to match the previous
model-free fixes.  The Fake_right_click.GetPosition() method now
returns a wx.Point object.
        * Added test data where both the spin-lock time, the spin lock
offset and the spin lock field is varied.  The data is published in
"Kjaergaard, M., Andersen, L., Nielsen, L.D. & Teilum, K. (2013).  A
Folded Excited State of Ligand-Free Nuclear Coactivator Binding Domain
(NCBD) Underlies Plasticity in Ligand Recognition.  Biochemistry, 52,
1686-1693" with experimental conditions that "off-resonance R1rho
relaxation dispersion experiments on 15N were recorded at 18.8 T and
31 C." and "using the pulse sequence of Mulder et al. with spin-lock
field strengths from 431 to 1649 Hz and offsets ranging from 0 to
10000 Hz."
        * Shifted the 'NS CPMG 2-site expanded' model to the top of
the CPMG numerical solutions in the manual.  This is because this is
the default model which should be used in most cases.
        * A 20-25% speed increase for the 'NS CPMG 2-site expanded'
dispersion model.  Many repetitive mathematical operations have been
eliminated and the equations have been changed to optimise the
calculation speed.
        * Modified settings script for R1rho test dataset.
        * Fix for the amsmath LaTeX package in the user manual.  It
needs to be after the hyperref package, as hyperref clobbers a number
of amsmath features.
        * Added all of the equations for the 'NS CPMG 2-site expanded'
dispersion model to the relax manual.  These are essentially the
source code modified to look good in LaTeX.
        * Fix for the 'NS CPMG 2-site expanded' model equations in the manual.
        * Better section spacing in the dispersion chapter of the
manual.  Each model section is now on a new page.
        * Fix for the display of the spin-lock nu1 values in the
dispersion GUI tab.  This was reported by Troels at
http://thread.gmane.org/gmane.science.nmr.relax.devel/4708.  The GUI
spectrum element at gui.components.spectrum was at fault, the
add_disp_point() method was buggy.
        * Fix for the right click pop up menu entry "Set the spin-lock
field" in the dispersion GUI tab.  This is for the spectra list
relax_disp.spin_lock_field user function call.  The reference spectra
are now detected and the field value set to None.  This fix has been
propagated to the relax_disp.cpmg_frq user function menu entry as
well.
        * Correcting the R1rho settings script for the right
calculation of the spin-lock offset, omega_rf, in ppm when offset
values are provided in Hz.
        * Added ZQ and DQ data to the TODO list in the dispersion
chapter of the manual.
        * Fix for the relaxation dispersion specific private
_cluster_ids() method.  This was identified at
http://thread.gmane.org/gmane.science.nmr.relax.devel/4716.  The
cluster data structure was not being referenced correctly.
        * Added some lines to the end of the script UI section of the
dispersion chapter about custom protocols.
        * Added a new section to the dispersion chapter of the manual
for comparing different dispersion software.  This is an expansion of
the table in the paper draft.
        * Updates for the dispersion software comparison section of
the user manual.
        * Bug fix for the 'MQ NS CPMG 2-site' model.  This was found
with the aid of private feedback from Dmitry Korzhnev and him emailing
his cpmg_fitd9 program.  The problem is that he defines the 'n'
parameter as half of a CPMG block.  The code was however assuming that
'n' is a full CPMG block.
        * Added ZZ exchange as a missing feature to the dispersion
chapter of the manual.
        * Added Dmitry Korzhnev's Fyn SH3 domain data for Asp 9 to the
repository.  This is from Dmitry M. Korzhnev, Philipp Neudecker,
Anthony Mittermaier, Vladislav Yu. Orekhov, and Lewis E. Kay (2005)
Multiple-site exchange in proteins studied with a suite of six NMR
relaxation dispersion experiments: An application to the folding of a
Fyn SH3 domain mutant.  127, 15602-15611 (doi:
http://dx.doi.org/10.1021/ja054550e).  It consists of the 1H SQ, 15N
SQ, ZQ, DQ, 1H MQ and 15N MQ data for residue Asp 9 of the Fyn SH3
domain mutant.
        * Added the results from Korzhnev's cpmg_fit program for the
Asp9 Fyn SH3 dispersion data.
        * Created a relax state for the R2eff SQ data of Korzhnev et al., 
2005.
        * Added printouts for the overfit_deselect() specific API
method for the dispersion analysis.  This is to inform the user
whenever spins are deselected and why.  This is to help avoid user
confusion.
        * Started to add some preliminary dispersion results for the
Korzhnev data.
        * Started the conversion of the 'MQ NS CPMG 2-site' model to
'MMQ 2-site'.  This follows from the post at
http://article.gmane.org/gmane.science.nmr.relax.devel/4734.
        * Renamed all of the 'MQ NS CPMG 2-site' modules and functions
for the change to 'MMQ 2-site'.  This follows from the post at
http://article.gmane.org/gmane.science.nmr.relax.devel/4734.
        * Added the ZQ and DQ CPMG experiment types to the dispersion
variables.  This is needed for the 'MQ NS CPMG 2-site' model change to
'MMQ 2-site' and follows from the post at
http://article.gmane.org/gmane.science.nmr.relax.devel/4734.  This
follows the tutorial for adding relaxation dispersion models at
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Creating_a_new_experiment_type.
        * Created two new dispersion variables - EXP_TYPE_LIST_CPMG
and EXP_TYPE_LIST_R1RHO.  This will be used to simplify identifying
CPMG vs. R1rho data types.
        * Added support for the ZQ and DQ CPMG data type to the
specific_analyses.relax_disp.disp_data module.  This is needed for the
'MQ NS CPMG 2-site' model change to 'MMQ 2-site' and follows from the
post at http://article.gmane.org/gmane.science.nmr.relax.devel/4734.
This follows the tutorial for adding relaxation dispersion models at
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Creating_a_new_experiment_type.
        * Completed the support for ZQ and DQ CPMG experiment types in
relax.  This is needed for the 'MQ NS CPMG 2-site' model change to
'MMQ 2-site' and follows from the post at
http://article.gmane.org/gmane.science.nmr.relax.devel/4734.  This
follows the tutorial for adding relaxation dispersion models at
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Creating_a_new_experiment_type.
        * The 'MMQ 2-site' model target function can now handle
multiple CPMG data types.
        * Added dispersion curve plotting to the relax script for
Korzhnev et al., 2005 MMQ data.
        * Turned off the dw, dwH > 0 constraint for the 'MMQ 2-site' model.
        * Added a page reference back to the intro chapter in the
scripting section of the dispersion chapter.  This is to help the user
work out how to run a relax script.
        * Fix for the sqrt() function in the dispersion parameter table.
        * Added a section to the dispersion chapter about spin clustering.
        * Removed most of the \clearpage commands in the dispersion
chapter of the manual.  There was far too much whitespace.
        * Added a 600x600 pixel graphic for the spin cluster for use
in the user manual.
        * Added the cluster graphic to the cluster section of the
dispersion chapter and improved the text.
        * Proper handling of the back-calculated dispersion data for
the new 'MMQ 2-site' model.
        * Shifted the optimisation printouts for the dispersion
analysis out of the memo.  This improved the ordering of the printed
out messages when running on a cluster.  Instead of having multiple
optimisation printouts followed by a list of the corresponding
optimised values, now they are interleaved as they should be.
        * Changed the definition of tex thanks to feedback from
Nikolai Skrynnikov.  This was previously defined as tex = 1/(2kex) to
be compatible with CPMGFit, but has now been changed to tex = 1/kex.
        * Converted the 'IT99' dispersion model parameters to pA and
dw.  This is thanks to feedback from Nikolai Skrynnikov.  I have no
idea why the phi_ex and pA.dw^2 parameters were being used in the
first place.  The model results after the change are identical.
        * Fix for the optimised parameter printout - the parameters
are now scaled.  This problem was only recently introduced.
        * The dispersion sample scripts now have the NUMERIC_ONLY
boolean variable defined.
        * Decreased the number of models presented to the user in the
dispersion sample scripts.
        * The model type is now being written to file for the final
run of the dispersion auto-analysis.
        * Added the model_type spin variable to the dispersion
analysis specific PARAMS data object.
        * Updated the text and Grace files output for the 'IT99' model
in the dispersion auto-analysis.
        * Fixes for the output of the selected mode in the dispersion
auto-analysis.  The correct variable is now used.
        * Proper fix for the printout of the optimised dispersion
parameters.  The loop_parameters() dispersion function is no longer
used, avoiding all requirements on the current data pipe existing.
This allows for proper printouts on a MPI cluster.
        * Added a page reference to the multi-processor section in the
script section of the dispersion chapter.
        * Added residue 4 to the truncated CPMG data from Flemming
Hansen for another test system.
        * Updated the CPMGFit results for Flemming Hansen's CPMG data
truncated to 3 spins.
        * Updated the README file explaining how to convert the
CPMGFit parameters to those of other software.
        * Updated the relax results for Flemming Hansen's CPMG data
for the recent changes.
        * Updated the NESSY results for Flemming Hansen's data.  A
number of improvements have been added to NESSY including being able
top optimise residues with missing data sets.  A number of bugs have
also been eliminated.
        * Updated the NESSY log for the bug fix of r1105 (in the NESSY
repository).
        * Updated the ShereKhan results to include residue :4 and the
ShereKhan numeric results.  The numeric model in ShereKhan was
previously buggy and did not return results.  This has been fixed
after I sent feedback to the authors.
        * Updated the software comparison document for a subset of
Flemming Hansen's CPMG data.  This now includes residue 4, the changes
in results for all software, new NESSY results due to fixes I made in
NESSY, and the new results for numeric model in ShereKhan.
        * Added all of the new NESSY plots for the truncated Hansen CPMG data.
        * Fixes for all of the system tests using Flemming Hansen's
CPMG data subset.  The errors are now different and the new residue 4
has to be deselected and ignored.
        * Created the new relax_disp.insignificance user function.
This will be used to deselect all spins whereby the maximum difference
in all its dispersion curves is below a certain cutoff.
        * Improvements for the relax_disp.insignificance user
function.  Text is now printed out when a spin is deselected.  And all
spins set to the 'R2eff' model are skipped.
        * The relaxation dispersion auto-analysis now accepts the
'insignificance' argument.  This is then used in the
relax_disp.insignificance user function prior to the optimisation of
each model, so that spins with insignificant dispersion curves are not
optimised.  The 'R2eff' and 'No Rex' models are skipped for obvious
reasons.
        * Created an INSIGNIFICANCE variable for the relaxation
dispersion sample scripts.  This is to allow the user to eliminate
insignificant models.
        * Added the insignificance dispersion auto-analysis argument
to the Hansen CPMG data optimisation script.
        * Updated script UI section of the dispersion chapter of the
user manual.  This is for the recent changes to the sample scripts
including the addition of the RESULTS_DIR and INSIGNIFICANCE
variables.
        * Added the 'No Rex' model to the R1rho_analysis.py sample script.
        * A number of fixes for the script UI section of the
dispersion chapter of the manual.  The NUMERIC_ONLY variable is now
explained and the R1rho MODEL list has been changed to a set of
reasonable models.
        * A GUI element for the insignificance level for the
dispersion auto-analysis has been added.  This defaults to 1.0.  The
user can input any number they wish.  Checks were added for
non-numerical input.
        * Updated the insignificance argument docstring for the
dispersion auto-analysis.
        * The dispersion analysis GUI element now uses the float GUI
element for the insignificance level.  This makes sure that the user
can only enter a number.
        * Created the Relax_disp.test_r2eff_read and
Relax_disp.test_r2eff_read_spin system tests.  These check the
operation of the currently non-existent relax_disp.r2eff_read and
relax_disp.r2eff_read_spin user functions.
        * Modified the Relax_disp.test_r2eff_read system test.  A new
disp_frq argument has been added for the relax_disp.r2eff_read user
function.
        * Renamed specific_analyses.relax_disp.disp_data.exp_type() to
set_exp_type().  This is to avoid classes with the 'exp_type' function
arguments.
        * Small fix for the printout from
specific_analyses.relax_disp.disp_data.set_exp_type().
        * Improved printout from the
specific_analyses.relax_disp.disp_data.set_exp_type() function.
        * Improved printout for the relax_disp.cpmg_frq user function.
        * Improved printout for the relax_disp.spin_lock_field user function.
        * Implemented the relax_disp.r2eff_read user function.  Bot
the frontend and backend have been implemented and are functional.
        * Created the
Relax_disp.test_hansen_cpmg_data_auto_analysis_r2eff system test.
This is to test the full dispersion auto-analysis on Flemming Hansen's
CPMG data using the original R2eff data rather than the derived peak
heights.
        * Changes for the
Relax_disp.test_hansen_cpmg_data_auto_analysis_r2eff system test.  The
file paths have been changed.
        * Created files of R2eff values and errors for Flemming
Hansen's CPMG data.
        * File path fixes for the script of the
Relax_disp.test_hansen_cpmg_data_auto_analysis_r2eff system test.
        * The error analysis is now skipped in the dispersion
auto-analysis if the 'R2eff' model is not given.  It is then assumed
that R2eff/R1rho data has already been loaded into the base data pipe
and hence the error analysis is not needed.  This avoids fatal errors.
        * The specific_analyses.relax_disp.disp_data.loop_time()
function can now handle no relaxation times being set.
        * The relax_disp.r2eff_read user function now prints out all
the data which has been read.  This feedback is useful for the user to
know what has or has not been read into relax.
        * Fix for the dispersion auto-analysis if R2eff data already
exists.  The data is no longer copied from the non-existent 'R2eff'
data pipe.
        * Fixes for the dispersion specific overfit_deselect() method
for when R2eff data is read.  This now no longer checks for intensity
data but rather R2eff data, as intensity data will not be present if
R2eff data is directly read rather than peak intensities.
        * Fixes for the Relax_disp.test_hansen_cpmg_data_auto_analysis
system test.  The setup of the auto-analysis could be simplified as
the base data pipe can now contain R2eff data.  The R2eff data in the
'R2eff' data pipe was no longer being read.
        * Some small fixes to allow the optimisation of dispersion
models when no peak intensity data has been read.  This is for when
R2eff data has been read instead.
        * The relax_disp.insignificance user function can now handle
selected spins with no R2eff/R1rho data.
        * Fixes for the Monte Carlo simulations in the dispersion
analysis when R2eff data has been read.  As peak intensity data has
not been read, the relaxation time period will not have been set.  The
_back_calc_r2eff() method can now handle this.
        * Improved the R2eff errors for Flemming Hansen's CPMG data.
The errors are now calculated using the data from all spins rather
than a truncated subset.  The errors will therefore be much more
accurate.
        * Fix for return_index_from_disp_point() for when R2eff/R1rho
data is loaded rather than intensities.  This
specific_analyses.relax_disp.disp_data.return_index_from_disp_point()
function was always subtracting 1 from the dispersion point index to
take the reference spectrum into account.  This however fails if
R2eff/R1rho data is loaded instead.
        * Fixes for the
Relax_disp.test_hansen_cpmg_data_auto_analysis* system tests.  The
Relax_disp.test_hansen_cpmg_data_auto_analysis system test needed
updating due to the more accurate R2eff errors.  The
Relax_disp.test_hansen_cpmg_data_auto_analysis_r2eff system test also
needed this change.  It also no longer has a spin system for residue
4.
        * Fixes for all of the Relax_disp system tests which use
Flemming Hansen's CPMG data.  These are needed due to the improved
error estimates in the data files.
        * Fix for a duplicated line typo in the
Relax_disp.test_hansen_cpmgfit_input system test.
        * Fixed a typo in the user function name in the
Relax_disp.test_r2eff_read_spin system test.
        * Fixes for the Relax_disp.test_r2eff_read_spin system test.
        * Implemented the relax_disp.r2eff_read_spin user function.
This allows R2eff/R1rho files for each spin to be read.
        * Fixed a docstring talking about RDC data in the dispersion analysis.
        * Fix for the
Relax_disp.test_hansen_cpmg_data_auto_analysis_numeric system test for
32-bit Linux.  The 'NS CPMG 2-site expanded' model checks have been
turned off again for residue 71 as these results are far to variable.
        * Another fix for the
Relax_disp.test_hansen_cpmg_data_auto_analysis_numeric system test.
The selected model is no longer checked for residue 71.
        * Loosened the checks for a number of Relax_disp system tests
to allow them to pass on 32-bit Linux.
        * Loosened a check for the
Relax_disp.test_hansen_cpmg_data_to_ns_cpmg_2site_star system test for
Mac OS X.
        * Loosened a check for the
test_hansen_cpmg_data_to_ns_cpmg_2site_star system test for MS
Windows.
        * Added some polish to the relax_disp.exp_type user function frontend.
        * Created the MODEL_LIST_CPMG_NUM dispersion list variable.
This is for defining in one place the list of models which require the
number of CPMG blocks.
        * The dispersion optimisation code now checks for the
relaxation time period being set for certain models.  This is for the
models which require the number of CPMG blocks, calculated via the
relaxation time and nu_CPMG.
        * The dispersion target function setup now uses the new
MODEL_LIST_CPMG_NUM variable.
        * The dispersion specific check_exp_type() function now
accepts the id argument to check individual IDs.
        * Redesigned the relax_disp.r2eff_read and
relax_disp.r2eff_read_spin user functions.  These now no longer set
the metadata (spectrometer frequency and experiment type) themselves.
Instead an experiment ID string must be supplied.  The
spectrometer.frequency and relax_disp.exp_type user functions will
therefore need to be called before these R2eff functions.
        * Fixes for the
Relax_disp.test_hansen_cpmg_data_auto_analysis_r2eff system test.
This is for the changes in the relax_disp.r2eff_read user function.
        * Fixes and completion of the Relax_disp.test_r2eff_read and
Relax_disp.test_r2eff_read_spin system tests.  These now handle the
new user function design and now also check all of the global and spin
data.
        * A number of fixes for the dispersion analysis for all the
recent changes.
        * Better MMQ data support for the dispersion specific
loop_cluster() function.  For the models using proton-heteronuclear
multi-multiple quantum data, proton spin containers are now skipped as
all the data will be analysed from the perspective of the
heteronucleus.
        * Conversion of the format of the relaxation dispersion
R2eff/R1rho data structures.  These are now lists of lists of lists of
numpy arrays instead of pure numpy rank-4 arrays.  This only affects a
number of related data structures in the dispersion target function
class.  The main purpose is to prepare to have a different number of
dispersion points per experiment, per spin, and per spectrometer
frequency.
        * The return_cpmg_frqs() and return_spin_lock_nu1() dispersion
functions now return lists of lists of arrays.  The dispersion data
structures are now experiment and spectrometer frequency dependent.
Therefore the number of dispersion points can now be different for
each.
        * The dispersion target function num_disp_points structure is
now variable.  The number of points can now be different for each
experiment type and each magnetic field strength.
        * Added a header comment to the grace2images.py script to
explain its dependence on Grace.  This is thanks to feedback from
Nikolai Skrynnikov.
        * Better organisation of the models by data type in the
dispersion software comparison table in the manual.
        * Added Dmitry Korzhnev's cpmg_fit software to the dispersion
chapter of the manual.  This is in the last section of that chapter
and in the software comparison table.
        * Added the chemex software to the dispersion chapter of the
user manual.
        * Updated the GLOVE details in the dispersion software
comparison table in the manual.
        * Updates for the TODO section of the dispersion chapter of
the user manual.  Some of the entries were rubbish.
        * Readded the accidentally deleted \clearpage command to keep
the dispersion software table nicely formatted.
        * Added the scripting interface for cpmg_fit to the dispersion
software comparison table in the manual.
        * Added constrained optimisation and Monte Carlo simulations
to the dispersion software comparison table.  This is for the user
manual.
        * Added a section on open source licencing to the dispersion
software comparison table.  This is for the dispersion chapter of the
user manual.
        * Updated the GUARDD details in the dispersion software
comparison table of the manual.
        * Added a section about programming language to the dispersion
software comparison table of the manual.
        * Added a page break for better formatting of the dispersion
software comparison table of the manual.
        * Removed a now unneeded midrule from the dispersion software
comparison table.
        * Editing and expansion of the dispersion software comparison
table in the manual.  The optimisation algorithms are now listed,
where known.  A number of entries and sections have also been
rearranged.
        * More updates for the dispersion software comparison in the manual.
        * Updates for the grid search and GLOVE in the dispersion
software comparison table in the manual.
        * More updates for the dispersion software comparison table in
the manual.
        * Updated the dispersion software comparison table in the
manual for GUARDD.  This is based on feedback from Ian Kleckner.
        * A bit more editing of the dispersion software comparison
table of the manual.
        * Expanded the abbreviations of the user manual for many
relaxation dispersion terms.
        * Update for NESSY in the dispersion software comparison table
of the manual.
        * Added more R1rho model references to the bibliography file
for the manual.  This includes the Trott and Palmer 2004 N-site and
the Miloushev and Palmer 2005 2-site models.  The Trott and Palmer
2002 R1rho model reference has been expanded to include all details.
        * Added the TP04 and MP05 R1rho dispersion models to the
manual.  These are not implemented in relax, or any of the software in
the software comparison section, but are included for completeness.
This was pointed out by Art Palmer.
        * Added the Korzhnev et al., 2005 reference to the
bibliography file for the manual.
        * Fixes for a number of page numbers in the bibtex file for
the user manual.
        * Expanded the numeric dispersion models to include the linear
and branched 3-site models in the manual.
        * Removed a typo from the dispersion model table.
        * Rearranged the sections of the dispersion chapter of the manual.
        * Improvements for the supported dispersion model table in the
manual.  Footnotes have been added to indicate which models are not
implemented yet.
        * Updated the TODO section of the dispersion chapter of the
manual for the newly listed models.
        * Fix for the figure labelling in the dispersion chapter of the 
manual.
        * Small LaTeX layout changes to the dispersion chapter file.
        * Updated the dispersion software comparison table for the
optimisation in GUARDD.  I have added the 'MATLAB interior-point black
magic' algorithm as MATLAB is not kind enough to explain what
algorithm it is really using.
        * The Arrhenius analysis is also performed by cpmg_fit.  This
is for the dispersion software comparison table in the manual.
        * Added the TAP03 model to the dispersion chapter of the user manual.
        * Updated some ShereKhan language details in the dispersion
software comparison table of the manual.
        * The dispersion GUI analysis now uses graphics.fetch_icon()
for all icons.  The gui.paths module no longer exists.
        * Created the Relax_disp.test_tp02_data_to_mp05 system test.
This was copied from the Relax_disp.test_tp02_data_to_tp02 system
test.  The r1rho_off_res_tp02.py system test script was modified to
handle both tests by allowing the list of models to optimise to be set
via the ds.models variable.  This follows the tutorial for adding
relaxation dispersion models at
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#The_test_suite
        * Added the 'MP05' model to the dispersion variables.  This is
the Miloushev and Palmer 2005 R1rho analytic model for 2-site
off-resonance exchange.  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 the 'MP05' model to the relax_disp.select_model user
function frontend.  This is the Miloushev and Palmer 2005 R1rho
analytic model for 2-site off-resonance exchange.  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 support for the 'MP05' model to the
relax_disp.select_model user function back end.  This is the Miloushev
and Palmer 2005 R1rho analytic model for 2-site off-resonance
exchange.  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_back_end
        * Created the 'MP05' model target function.  This is the
Miloushev and Palmer 2005 R1rho analytic model for 2-site
off-resonance exchange.  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
        * Added the 'MP05' R2eff calculating function to the relax
library.  This is the Miloushev and Palmer 2005 R1rho analytic model
for 2-site off-resonance exchange.  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_library.
 Just in case git-svn does not preserve the file copying history, the
lib/dispersion/mp05.py file was copied from the tp02.py file.
        * Debugging of the 'MP05' dispersion model - optimisation is
now setup correctly.  This is the Miloushev and Palmer 2005 R1rho
analytic model for 2-site off-resonance exchange.  This follows the
tutorial for adding relaxation dispersion models at
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.html#Debugging
        * Fixes and improvements to the
Relax_disp.test_tp02_data_to_mp05 system test.  The MP05 model values,
which are almost the same as the TP02 model parameters, are now being
checked.  The optimised parameters are now being printed out to aid in
debugging.  This follows the tutorial for adding relaxation dispersion
models at 
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.html#Debugging
        * Speed ups of the Relax_disp.test_tp02_data_to_tp02 and
Relax_disp.test_tp02_data_to_mp05 system tests.  The optimisation
precision and number of Monte Carlo simulations have both been
dropped.
        * Added the 'MP05' model to the GUI model list.  This is the
Miloushev and Palmer 2005 R1rho analytic model for 2-site
off-resonance exchange.  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 'MP05' model to the dispersion auto-analysis.
This is the Miloushev and Palmer 2005 R1rho analytic model for 2-site
off-resonance exchange.  This follows the tutorial for adding
relaxation dispersion models at
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#The_auto-analysis.
        * Added the 'MP05' model to the relax user manual.  This is
the Miloushev and Palmer 2005 R1rho analytic model for 2-site
off-resonance exchange.  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.
 The 'MP05' model was already partly in the manual, however it was
listed as unimplemented.  All of the tables and the dispersion chapter
text has been updated for the model.
        * Modified the R1rho_analysis.py sample script to use the
'MP05' model.  This is the Miloushev and Palmer 2005 R1rho analytic
model for 2-site off-resonance exchange.  This follows the tutorial
for adding relaxation dispersion models at
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#The_sample_scripts
        * The limitations of the 'TP03' dispersion model are now
listed in the user manual.
        * The 'MP05' and 'NS R1rho 2-site' are now nested in the
dispersion auto-analysis.  As the 'MP05' model is valid across all
times scales and does not require skewed populations, its optimised
parameters can be used as the starting point of optimisation of the
'NS R1rho 2-site' numeric model.  This results in huge speed ups of
the numeric model as previously a grid search was being performed.
        * Removed all remnants of the MQ R1rho data type.  This data
type does not exist and was mostly removed, but some small bits
remained.
        * Created the Relax_disp.test_tp02_data_to_tap03 system test.
This is the Trott et al, 2003 R1rho analytic model for 2-site
off-resonance exchange.  This follows the tutorial for adding
relaxation dispersion models at
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#The_test_suite
This was copied from the Relax_disp.test_tp02_data_to_mp05 system
test.
        * Added the 'TAP03' model to the dispersion variables.  This
is the Trott, Abergel and Palmer 2003 R1rho analytic model for 2-site
off-resonance exchange.  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 the 'TAP03' model to the relax_disp.select_model user
function frontend.  This is the Trott, Abergel and Palmer 2003 R1rho
analytic model for 2-site off-resonance exchange.  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 support for the 'TAP03' model to the
relax_disp.select_model user function back end.  This is the Trott,
Abergel and Palmer 2003 R1rho analytic model for 2-site off-resonance
exchange.  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_back_end.
        * Created the 'TAP03' model target function.  This is the
Trott, Abergel and Palmer 2003 R1rho analytic model for 2-site
off-resonance exchange.  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.
        * Added the 'TAP03' R2eff calculating function to the relax
library.  This is the Trott, Abergel and Palmer 2003 R1rho analytic
model for 2-site off-resonance exchange.  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_library.
        * Debugging of the 'TAP03' dispersion model - optimisation is
now setup correctly.  This is the Trott, Abergel and Palmer 2003 R1rho
analytic model for 2-site off-resonance exchange.  This follows the
tutorial for adding relaxation dispersion models at
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.html#Debugging.
        * Debugging of the 'TAP03' dispersion model.  Removed a
Unicode character from the lib.dispersion.tap03 module docstring to
allow it to be used in Python 2.  This follows the tutorial for adding
relaxation dispersion models at
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax.html#Debugging.
        * The lib.dispersion.tap03 module can now handle negative
gamma values.  This avoids fatal errors during optimisation.
        * Many fixes for the lib.dispersion.tap03 module to match the
original equations.  The 'TAP03' model solution is now similar to
those of 'TP02' and 'MP05'.
        * Updated the Relax_disp.test_tp02_data_to_tap03 system test
numbers to match the optimised values.  These were so close to the
MP05 model values that the test was passing anyway.
        * Added the 'TAP03' model to the GUI model list.  This is the
Trott, Abergel and Palmer 2003 R1rho analytic model for 2-site
off-resonance exchange.  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 'TAP03' model to the dispersion auto-analysis.
This is the Trott, Abergel and Palmer 2003 R1rho analytic model for
2-site off-resonance exchange.  This follows the tutorial for adding
relaxation dispersion models at
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#The_auto-analysis.
        * Added the 'TAP03' model to the relax user manual.  This is
the Trott, Abergel and Palmer 2003 R1rho analytic model for 2-site
off-resonance exchange.  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.
 The 'TAP03' model was already partly in the manual, however it was
listed as unimplemented.  All of the tables and the dispersion chapter
text has been updated for the model.
        * Added the 'TAP03' and 'MP05' models to the abbreviations in
the user manual.
        * Improvements to all of the R1rho model descriptions in the
dispersion chapter of the manual.
        * Added a placeholder for the relaxation dispersion citation
to the citation chapter of the manual.  The bibtex entry for this will
need to be updated later once the citation is published.
        * Added support for 1H SQ CPMG data for the MMQ-type
dispersion models.  The key is to skip the protons in the spin cluster
loops and to instead find the proton spin containers attached to the
heteronuclei of the spins of the cluster.  The EXP_TYPE_PROTON_SQ_CPMG
and EXP_TYPE_PROTON_MQ_CPMG experiment type variables have been
created to aid this.  The MODEL_LIST_MMQ list variable has also been
created to more consistently identify the MMQ-type dispersion models.
The has_disp_data() function has been created to simplify the finding
of dispersion data for a given cluster, experiment type, spectrometer
frequency and dispersion point.  The has_proton_sq_cpmg() and
has_proton_mq_cpmg() are used to determine if there is proton
dispersion data for the given heteronucleus.  The loop_exp() function
has been modified to yield the proton SQ and MQ data if present.
Similarly the num_exp_types() and return_index_from_exp_type()
functions exhibit different behaviour if this data is present.  The
return_r2eff_arrays() function now assembles all of the proton data on
top of the heteronuclear data by fetching the protons attached to the
heteronuclei and aliasing the correct spin for the given experiment
type.
        * Updated the relaxation dispersion target functions.  The
input data structures have changed type.
        * Implemented the 'MMQ 2-site' CPMG model equations from the
Korzhnev et al., 2005 reference.  The paper reference is "Dmitry M.
Korzhnev, Philipp Neudecker, Anthony Mittermaier, Vladislav Yu.
Orekhov, and Lewis E. Kay (2005).  Multiple-site exchange in proteins
studied with a suite of six NMR relaxation dispersion experiments: An
application to the folding of a Fyn SH3 domain mutant.  J. Am. Chem.
Soc., 127, 15602-15611.  (doi:  http://dx.doi.org/10.1021/ja054550e)".
 The original code from Mathilde Lescanne and Dominique Marion has
only slightly been modified for this change as the MQ data treatment
in the Korzhnev et al., 2004 reference is the same as in the 2005
reference, but using a different notation.  This has been renamed to
r2eff_mmq_2site_mq().  The new r2eff_mmq_2site_sq_dq_zq() function has
been added to the lib.dispersion.mmq_2site module to allows the SQ,
DQ, and ZQ R2eff data to be calculated.  This function follows the
notation of the 2005 paper.  The populate_matrix() function has been
modified to only accept one combined chemical shift difference value.
It can now also accept different values for R20A and R20B, though the
mmq_2site module defaults to R20A=R20B.
        * The r2eff_mmq_*() functions of lib.dispersion.mmq_2site now
accept different R20A and R20B arguments.  These are set to the same
thing within the dispersion target function.
        * Converted the spin specific 'r2', 'r2a', and 'r2b'
dispersion parameters from lists to dictionaries.  The new parameter
keys are based on the experiment type and the spectrometer frequency.
These keys are supported by the generate_r20_key() and
decompose_r20_key() pair of functions in the
specific_analyses.relax_disp.disp_data module.  This enables support
for different R20 parameters for each experiment type - a key piece of
infrastructure for the MMQ models.  The relax_disp.select_model user
function backend was modified so the parameter list only contains one
instance for each of the 'r2', 'r2a', or 'r2b' strings.  The
specific_analyses.relax_disp.parameters.loop_parameters() function was
modified so that the R20key rather than frequency index is returned
for the R20 parameters.  Many other code changes were required.
        * The R20 values are now correctly handled in the dispersion
target function for MMQ-type data.
        * Simplified the 'MMQ 2-site' dispersion model target
function.  The r2eff_mmq_2site_sq_dq_zq() and r2eff_mmq_2site_mq()
functions from lib.dispersion.mmq_2site are now aliased by the
experiment_type_setup() target function method.  Both functions now
have matching arguments.
        * Change of the base relaxation dispersion experiment types.
The base CPMG-type experiment has been changed from "CPMG" to "SQ
CPMG".  This is for better combined proton-heteronuclear SQ, ZQ, DQ,
and MQ (MMQ) data support.  The relax_disp.exp_type user function now
also as the proton SQ and MQ CPMG-types available to select from
rather than the previous behaviour of relax automatically determining
the type from the spin type.  All of the CPMG experiment type
variables in specific_analyses.relax_disp.variables have been renamed
for better ordering.  Many changes were therefore required.
        * Fix for the
specific_analyses.relax_disp.disp_data.num_exp_types() function.  This
needed updating after the change in the relaxation dispersion
experiment type variables.
        * Different relaxation time periods for each experiment is now
taken into account in the dispersion code.  Previously only the first
relaxation time period was being used.  This was fine for single data
type models, but was preventing the MMQ-type models from working.  Now
the return_r2eff_data() function of the
specific_analyses.relax_disp.disp_data module assembles and returns
the relax_times data structure which has two dimensions - the
experiment type and the magnetic field strength.
        * Added a relax script to optimise just the 15N SQ CPMG data
from Korzhnev et al., 2005.  The corresponding log file has also been
added to the repository.
        * Created the Relax_disp.test_korzhnev_2005_15N_sq_data system
test.  This is used to check the optimisation of the 15N SQ CPMG data
using the 'MMQ 2-site' model.
        * Fixes for the dispersion optimisation
Disp_result_command.run() method.  The dispersion point loop is fixed
over all dispersion points, but the 'missing' data structure has a
variable length.
        * Big redesign of the dispersion point returning and loop_*()
functions.  These are the functions in the
specific_analyses.relax_disp.disp_data module.  The return_cpmg_frqs()
and return_spin_lock_nu1() functions now no longer take the spins and
spin_ids arguments.  Instead they determine if a dispersion point
exists for the given experiment and spectrometer frequency using the
intensity keys and data in the base of the data pipe.  The
specific_analyses.relax_disp.disp_data.loop_*() functions now accept
the return_indices argument which if True will cause all of the
relevant experiment type, spectrometer frequency, dispersion point,
and relaxation time indices to be returned.  The behaviour of the
loop_point() method is now different.  Instead of looping over all
possible dispersion points, it only loops over those points present
for the given experiment and spectrometer frequency.  This change
allows for many simplifications and latent bug fixes in the dispersion
analysis.
        * Added cmpg_fit input and results files for the 15N SQ CPMG
data from Korzhnev et al., 2005.
        * Added cmpg_fit input and results files for all single CPMG
data combinations from Korzhnev et al., 2005.
        * Updated the cpmg_fit results for the Korzhnev et al., 2005
single data sets.  The starting point for optimisation is now the
solution for using all data together.  This allows a much better
solution to be found for each script.
        * Created 5 more system tests for checking the optimisation of
single sets of Korzhnev et al., 2005 data.  These are
Relax_disp.test_korzhnev_2005_15n_dq_data,
Relax_disp.test_korzhnev_2005_15n_mq_data,
Relax_disp.test_korzhnev_2005_15n_zq_data,
Relax_disp.test_korzhnev_2005_1h_mq_data, and
Relax_disp.test_korzhnev_2005_1h_sq_data.  These should individually
test out all parts of the 'MMQ 2-site' dispersion model.
        * The cpmg_fit script for the Korzhnev et al., 2005 15N ZQ
CPMG data now starts at the relax solution.  This is to try to find
better solutions for dw and dwH, thought it was not so successful.
        * Updated the Relax_disp.test_korzhnev_2005_15n_zq_data system
test.  It now starts at the relax solution and the test passes as it
seems to reasonably match the cpmg_fit results.
        * Reintroduced the F vector into r2eff_mmq_2site_mq() to
calculate the magnetisation.
        * Added the cpmg_fit results for optimisation all of the
Korzhnev et al., 2005 CPMG data.  This is for the 2-site model.  It
includes all proton-nitrogen SQ, ZQ, DQ, and MQ data.
        * Updated the cpmg_fit results for all Korzhnev et al., 2005 data.
        * Shifted the relax results for the 15N SQ Korzhnev 2005 CPMG
data to its own directory.  The relax save state and grace curve have
been added to the repository as well.
        * Created a Grace plot of the failed cpmg_fit results.  This
is for the Korzhnev et al., 2005 data, using all data sets.
        * Fixes for the cpmg_fit results for all of the data from
Korzhnev et al., 2005.  The dwH value must start negative, otherwise
optimisation will fail to find the correct minimum.
        * Created a Grace graph for the 1H SQ data fitting of cpmg_fit.
        * The dispersion specific overfit_deselect() method now
handles the MMQ-type models better.
        * The 'MMQ 2-site' dispersion model can now be optimised if no
heteronuclear R2eff data is loaded.
        * Many more fixes for the MMQ-type dispersion models for the
proton spin data.
        * Added many new relax results for the CPMG data form Korzhnev
et al., 2005.
        * The R2eff data key has been changed in the dispersion
analysis.  The experiment type has been added to the key so that R2eff
data is not mixed up when data from multiple experiments is present.
        * Updated the synthetic 'TP02' model data for the recent changes.
        * Fix for the dispersion base_data_loop() method for
deselected spins.  A recent change broke this function when spins were
deselected.
        * Updated the truncated CPMG data set from Flemming Hansen to
include residue :4.  This is deselected in the test suite, but allows
the comparison in the shared_data directory to use all four spins (:4,
:70, :71).
        * Changed the current data pipe in the relax saved states for
Flemming Hansen's truncated CPMG data.
        * Another change of the base relax files of the truncated CPMG data.
        * Bug fix for the relax_disp.cpmgfit_input user function.  The
nu_CPMG values need to be doubled and then divided by 1e3 to obtain
the 1/tau_CPMG values in ms.
        * Fix for the relax_disp.sherekhan_input user function for the
recent changes.
        * Updated all of the results for the truncated CPMG data from
Flemming Hansen in the test suite.  The results are now different as
the errors are now much more precise as they come from all spin
systems rather than just the truncated set of :4, :70, and :71.
        * Bug fix for the Ishima and Torchia 1999 dispersion model.
Their value of omega_1eff is defined in terms of nu_CPMG, hence it is
missing the radian unit.  This is clearly a mistake, but is probably
compensated by their stated rather than derived definitions.
        * Updated all of the relax results for the IT99 model fix.
        * Added the new relax IT99 model results to the
software_comparison file.  This is for the truncated CPMG data from
Flemming Hansen.
        * Fix for the LM63 dispersion model equation in the manual.
        * The CR72 dispersion model descriptions now emphasise the
fact that it is not accurate on all time scales.  This is for the
dispersion chapter of the user manual.
        * Modified the relax_disp.select_model user function CR72
model descriptions.  Instead of saying all time scales, the 'CR72',
'CR72 full', and 'MQ CR72' model descriptions instead now say most
time scales.
        * Minor equation improvement in the dispersion chapter of the manual.
        * Fix for the relax_disp.plot_disp_curves user function in the
GUI.  The directory argument was incorrectly set to the 'dir' type
rather than 'dir sel' type so it was not shown in the GUI.
        * Created the relax_disp.write_disp_curves user function.
This is based on feedback from Nikolai Skrynnikov.  The user function
will generate one file per spin system and dump all of the R2eff
values (measured, back calculated, and errors) into the file.
        * The relax_disp.write_disp_curves user function is now called
from the dispersion auto-analysis.
        * Another bug fix for the IT99 model.  This was pointed out by
Nikolai Skrynnikov that the omega_1eff definition is incorrect and
instead it should be omega_1eff = 4 * sqrt(3) * nu_CPMG.
        * Updated the Relax_disp.test_hansen_cpmg_data_to_it99 system
test for the IT99 model fixes.
        * Updated the relax results for the truncated CPMG data from
Flemming Hansen.  This is needed as the IT99 model has been fixed and
the new relax_disp.write_disp_curves user function introduced.
        * Fix for the relax_disp.write_disp_data user function.  The
spectrometer frequency in the output files is now in MHz.
        * A small output formatting change for the
relax_disp.write_disp_curves user function.
        * The relax_disp.write_disp_curves user function is now more
robust for when data is missing.
        * Fix for the setup of the
Relax_disp.test_korzhnev_2005_1h_mq_data system test.
        * Fixes for the Relax_disp.test_hansen_cpmgfit_input system
test.  These are needed as the relax_disp.cpmgfit_input user function
has been fixed resulting in different files being produced.
        * Bug fix for the relaxation dispersion model selection.
Deselected spins in the current pipe were being skipped, so for model
selection between different data pipes that results in spins not being
used when they should be.
        * Bug fix for the dispersion specific model_information()
method.  This can now handle deselected spins with no data.
        * Bug fixes for the model_loop() method no longer skipping
deselected spins.  This is needed for model selection when the spins
from all data pipes are deselected.
        * One last fix for the dispersion analysis for the changes of
the model_loop() method.
        * Updated the relax script for optimising Flemming Hansen's CPMG data.
        * Better support for the MMQ-type data dispersion models for
the end of the optimisation.  The back calculated R2eff values are now
handled correctly for the attached proton in the spin system.
        * Updated the Relax_disp.test_korzhnev_2005_15n_dq_data system
test so it passes.  The optimised values are very similar to that from
cpmg_fit, so the code must be functioning correctly.
        * Improvement for the file names in the
relax_disp.plot_disp_curves user function.  The '_' character is now
used between the experiment name and the rest of the file name.
        * Bug fix for the
specific_analyses.relax_disp.disp_data.find_intensity_keys() function.
 This function was not handling multiple experiment types correctly.
        * Created the Relax_disp.test_korzhnev_2005_all_data system
test for checking the 'MMQ 2-site' model.  This checks against all six
data types, 1H SQ, 15N SQ, DQ, ZQ, 1H MQ, and 15N MQ.  This is
currently set to the values found by cpmg_fit.  As this is the true
solution, relax should find similar parameter values.
        * Created a Grace plot of the 15N MQ CPMG data fitting from cpmg_fit.
        * Bug fix for the multiple quantum relaxation dispersion
models.  These require both the heteronuclear and proton chemical
shift differences.  But the proton difference was being scaled by the
heteronuclear Larmor frequency and not the proton frequency.
        * The relaxation dispersion calculate user function now stores
the back calculated R2eff values.  A number of changes were required
for this.  The code from the end of the Disp_result_command.run()
method was converted to the function
specific_analyses.relax_disp.disp_data.pack_back_calc_r2eff().  This
allows the back calculation R2eff unpacking code to be shared.  The
new has_proton_mmq_cpmg() function has also been created to simplify
the code.
        * Bug fix for the dispersion calculate user function.
        * Created a script to compare the cpmg_fit and relax solutions
for the 'MMQ 2-site' dispersion model.
        * Clean ups and speed ups of the 1H MMQ flag calls.
        * Large improvements to the relax_disp.plot_disp_curves user
function including MMQ model support.  This user function now handles
multiple dispersion data sets better by placing each into a new graph.
 All graphs have also been improved by matching the colours of the
sets for each field strength and using different symbols and line
styles to emphasize the data.
        * Fixes for the relax_disp.plot_exp_curves user function for
the lib.software.grace changes.
        * The relax_disp.plot_disp_curves now shows the experiment
type as part of the Y-axis label.  This is to allow for easy
identification of the experiment when more than one is present.
        * Bug fix for the 'MMQ 2-site' dispersion model target
function.  The relaxation time was being taken as that of the first
experiment for all experiments.  This is a relic from the code being
copied from a single experiment type model.
        * Converted the 'MQ CR72' dispersion model to handle MMQ data.
 This model can now handle proton-heteronuclear SQ, ZQ, DQ, and MQ
CPMG-type data.  Some debugging might still be required.
        * Fix for the 'MQ CR72' model for MQ-type data.  The check to
prevent acos of a number less than 1 has been changed to switch the
sign rather than to set the back calculated R2eff to 1e99.
        * Another bug fix for the 'MQ CR72' dispersion model.  The
nu_CPMG value rather than the relaxation time was being used to
calculate the R2eff values as the division by 'n' was missing.
        * The relax_disp.plot_disp_curves user function can now handle
values of NaN.  These are simply replaced by 0.0 to allow Grace to
open the file.
        * Fixes for the 'MQ CR72' dispersion model target function.
        * Removed a latent bug in the 'MMQ 2-site' dispersion model.
This was not being seen but might have caused problems in the future.
        * Fix for the 'MQ CR72' dispersion model target function.  The
correct R20 values are now extracted from the parameter vector.
        * Improvements for the 'CR72' and 'MQ CR72' dispersion model
R2eff calculating functions.  The numpy.arccosh() function can handle
all input values when complex, therefore the checks for the real part
being above 1 are not necessary.
        * General improvement for the optimisation of many target
functions.  For those models which use the tau_CPMG value, this is now
recalculated.  This means that if a user inputs truncated nu_CPMG
values, these are corrected when calculating tau_CPMG so that full
precision values will be used for the optimisation.
        * Changed the sign of the delta_omega frequency for the ZQ
data in the 'CR72' and 'MQ CR72' models.
        * Last fix for the 'MQ CR72' dispersion model.  The wrong
value was being subtracted from the first eigenvalue - the value of
log(Q)/relax_T should not be divided by the number of CPMG blocks.
        * Simplified the first 'MQ CR72' dispersion model formula in the 
manual.
        * Created a relax script to compare the 'MQ CR72' dispersion
model results to cpmg_fit.  The cpmg_fit solution is used as the input
parameters for relax, and then a calc user function call is used to
back calculate the R2eff values.  These values are then plotted to
show the perfect match.
        * Bug fixes for the 'MMQ 2-site' dispersion model.  The matrix
power factor must be found with the Python math.floor() function and
not int() as the later will sometimes round up.
        * Updated all of the relax vs. cpmg_fit comparison files in
the shared data directory.  These now show the perfect match between
the programs.  The cpmg_fit source code was modified to improve the
accuracy of the gyromagnetic ratio values.
        * Updated the cpmg_fit results for the CPMG data of Korzhnev
et al., 2005.  This is using a modified binary wherein the
gyromagnetic ratio and optimisation tolerances and maximum number of
iterations are far more accurate (to the same level as relax).  The
cpmg_fit output has also been made more accurate by writing out the
values to much higher precision.
        * Fixes for the relaxation dispersion system tests for the
changed behaviour of the 'CR72' model.  The optimisation is slightly
different as values are now always passed into the numpy.arccosh()
function.
        * Eliminated the MODEL_LIST_CPMG_NUM variable.  This was far
too specific and its misuse caused a bug in the target function of a
number of dispersion models.
        * Fixes for a number of dispersion system tests due to the
higher accuracy of the tau_CPMG values.  This is required as the
tau_CPMG values have been corrected to eliminate user input truncation
artifacts.
        * The Relax_disp.test_korzhnev_2005_all_data system test no
longer dumps files in the current directory.
        * Updated all of the cpmg_fit results to use the numeric
2-site CPMG model.  This also uses the modified cpmg_fit binary with
higher accuracy.
        * Updated the Relax_disp.test_sprangers_data_to_mq_cr72 system
test to pass.  The 'MQ CR72' model is now much more accurate due to a
number of recent bug fixes.
        * Fixes for all of the Relax_disp.test_korzhnev_2005_*_data
system tests.  These now start optimising at the solution found by
cpmg_fit.  All tests now pass.
        * Fix for the legends in the Grace graphs produced by the
relax_disp.plot_disp_curves user function.
        * The grid search for the MMQ-type models now looks for
negative chemical shift differences.
        * Converted the dispersion api method _back_calc_r2eff() into
a function of the optimisation module.
        * Updated the spin-lock field strength data structures to be
experiment and field specific.  This allows different spin-locks to be
used as different field strengths, or different experiments.  It
brings the structures in line with those for CPMG-type experiments.
        * Updates for the dispersion auto-analysis system tests using
Flemming Hansen's data.  The grid search increments have been
increased by one to make sure the solution is always found.
        * Increased the range of chemical shift differences in the
grid search for the dispersion models.  The range was too narrow.
        * Fix for the Relax_disp.test_hansen_cpmg_data_auto_analysis
system test.  The kex value check needed to be scaled back.
        * The relax_disp.plot_disp_curves user function now produces
interpolated dispersion curves.  For this the new 'num_points' and
'extend' arguments have been added to the user function to give the
user better control of this plotting.  The interpolated curve is
disabled from the numeric CPMG models as these do not support
interpolation, and the 'R2eff' model as interpolation is not needed.
To support this, the
specific_analyses.relax_disp.optimisation.back_calc_r2eff() function
has been extended to support the CPMG frequencies or spin-lock field
strengths been supplied instead of retrieved.  This allows a set of
custom dispersion points to be used in the back calculation.  The
dispersion target function setup was modified to prevent the
recalculation of tau_CPMG values when asked, as interpolation is not
compatible with this.
        * The relax_disp.plot_disp_curves user function now places the
X-axis at zero.  This is for better visualisation of the residuals.
        * Interpolated curves are now produced for the numeric
CPMG-type models.  This if for the relax_disp.plot_disp_curves user
function.  The resolution of these are limited to the frequency of a
single CPMG block in the relaxation time period.  Therefore the plots
are produced slightly differently.  To enable this functionality, the
new count_exp() and return_relax_times() functions have been added to
the specific_analyses.relax_disp.disp_data module.
        * Improved the text for the relax_disp.plot_disp_curves user function.
        * Fix for the interpolation for the numeric CPMG-type models
in relax_disp.plot_disp_curves.
        * Updated the relax results files for the CPMG data from
Korzhnev et al., 2005.
        * Improvements to the data-type labelling in the dispersion
chapter of the user manual.
        * The dispersion model GUI window is now set to a reasonable
size for most screens.  The scrolled panel now allows all contents to
be shown while having the window smaller than its contents.  The
height of 750 pixels should be visible on the majority of computer
monitors.  According to Google Analytics, ~13% of visits to
http://www.nmr-relax.com have screen resolutions of 1366x768,
therefore the dispersion model list window should now not be bigger
than their screens.
        * Merged the 'MQ CR72' dispersion model into the MMQ data type
sections in the tables of the manual.
        * Implemented model elimination for the relaxation dispersion
analysis.  This currently uses the pA limits of 0.501 < pA < 0.999 to
determine if a model has failed.  To implement this, the dispersion
API methods deselect(), eliminate(), get_param_names() and
get_param_values() were written.  These were copied from the
model-free analysis and modified as needed.
        * Model elimination is now activated in the dispersion auto-analysis.
        * The relaxation dispersion target function class can now
handle cpmg_frqs arguments of None.  This is useful for R1rho models.
        * Bug fix for the recently added dispersion API eliminate
method.  This was accidentally always eliminating the model.
        * Created a new section in the dispersion chapter of the
manual covering optimisation.  This describes the auto-analysis, the
chi-squared function, the grid search values, how optimisation is
implemented, the linear constraints used, the diagonal scaling, model
elimination, and the use of OpenMPI.  It absorbs the clustering
section.
        * Improvements for the dispersion API eliminate() method.
        * Added text about the relax_disp.insignificance user function
to the dispersion chapter of the manual.
        * Updates for the 'MMQ 2-site' model equations in the manual.
        * Added the tex > 1.0 model elimination rule for the
dispersion analysis.
        * Updated the description of the dispersion auto-analysis in the 
manual.
        * Added a MC simulation elimination section to the dispersion
chapter of the manual.
        * Fix for the new analysis GUI wizard - two model-free
analysis buttons were present.  This is due to an imperfect merge of
the relax_disp branch back to trunk.
        * Fixes for the lib.software.grace for an imperfect merger of
the relax_disp branch.
        * Fix for the Noe.test_noe_analysis system test.  The old
Grace file was turning the legend first off and then on, but now this
is fixed.
        * Fixes for the Relax_disp.test_tp02_data_to_tp02 GUI test.
This should have been fixed in the relax_disp branch.
        * Fix for the Wiz_window.setup_page() method.  The user
function SetValue() methods are no longer called but instead the
Uf_page.SetValue() method is used to set up user function arguments.
This is important as this later method can properly handle the free
file format arguments and other special arguments whereas the former
cannot.
        * Attempts at fixing and improving the
Relax_disp.test_hansen_trunc_data GUI test.  These changes have
uncovered a spin ID updating problem in the relax data store after
calling the residue.delete user function.
        * Fix for two system tests to prevent relax save files from
being dumped in the installation directory.  This would have been
fatal for the tests suite on systems with relax installed as root.
        * Fix for the GUI tests for a wxPython 2.9 ListCtrl.HitTest()
bug.  This only affects the relax test suite.  The suite should now
pass on all systems.
        * Shifted the dispersion chapter of the user manual to its
correct position.  Somehow during the relax_disp branch merger, this
chapter was shifted into the "Advanced Topics" partition of the
manual.
        * API documentation fix for
test_suite.system_tests.relax_disp.Relax_disp.setup_korzhnev_2005_data().
        * Limited the optimisation time in the
N_state_model.test_populations system test.  This test can take a huge
amount of time on Mac OS X and MS Windows (~6 seconds on Linux, ~360
seconds on Mac OS X, and ~120 seconds on MS Windows, all on similar
hardware).  Now the minimise user function max_iter argument is set to
2000 to speed the test up.
        * Increased the speed of the N_state_model.test_populations
system test again.  The maximum number of iterations for the minimise
user function is now set to 500.
        * Fix for the N_state_model.test_populations system test on
Mac OS X.  The optimisation on Macs is not as precise as on Linux, so
the test was loosened.
        * Fix for the Relax_disp.test_m61_exp_data_to_m61 system test
on 32-bit Mac OS X.  The optimisation precision was not great enough
to find the minimum, so the grid search increments have been increased
from 3 to 4.
        * Loosened all of the Relax_disp.test_korzhnev_2005_*_data
system tests to pass on Mac OS X.  This should hopefully fix the tests
for MS Windows as well.
        * More loosening of the Relax_disp.test_korzhnev_2005_*_data
system tests to pass on Mac OS X.  These problems were identified on a
different test machine.
        * Loosened all checks of the N_state_model.test_populations
system test.  This is needed for the woeful optimisation capabilities
of Mac OS X (and partly MS Windows as well).
        * Avoided some wxPython 2.9.4.1 in the Relax_disp GUI tests.
wxPython is quite buggy, so certain checks and tests cannot be
performed.
        * Fix for the
specific_analyses.relax_disp.optimisation.back_calc_r2eff() function.
The R2eff error data structure when the cpmg_frqs or spin_lock_nu1
argument is supplied was all zeros, whereas it should all be ones.
This was causing many divide by zero numpy warnings to appear on
certain operating systems (Mac OS X).
        * The relax system test base tearDown() method should now be
fail proof.  Most code is now warped in a 'try: except: pass' block to
catch all failures.
        * Improvements in the test_suite.clean_up.deletion() function.
 It is now more fail safe on Python 3 by completely avoiding the
WindowsError checking.


    Bugfixes:
        * Bug fixes for a number of broken Oxygen icon lookups in the GUI.
        * Bug fixes for the molecule.delete, residue.delete and
spin.delete user functions.  The molecule, residue, and spin metadata
in the relax data store was not being updated correctly after these
user function calls so that any subsequent operations on this data was
failing.  This metadata problem was not noticed before as it
disappears if the state is saved and reloaded into relax after a
restart.



Related Messages


Powered by MHonArc, Updated Thu Nov 28 23:00:03 2013