* Temporary changed the lib/dispersion/cr72.py function to unsafe state. This change turns-off all the safety measures, since they have to be re-implemented for higher dimensional structures.
* Altered profiling script to report cumulative timings and save to temporary files. [https://gna.org/task/?7807 Task #7807]: Speed-up of dispersion models for clustered analysis. This indeed shows that the efficiency has gone down.
* Added print out of chi2 χ<sup>2</sup> to profile script. [https://gna.org/task/?7807 Task #7807]: Speed-up of dispersion models for clustered analysis.
* Moved the creation of special numpy structures outside target function. [https://gna.org/task/?7807 Task #7807]: Speed-up of dispersion models for clustered analysis.
* Modified profiling script to calculate correct values when setting up R<sub>2eff</sub> values. This is to test, that the return of chi2 χ<sup>2</sup> gets zero. [https://gna.org/task/?7807 Task #7807]: Speed-up of dispersion models for clustered analysis.
* Removing looping over exp and offset indices in calc_chi2. They are always 0 anyway. This brings a little speed. [https://gna.org/task/?7807 Task #7807]: Speed-up of dispersion models for clustered analysis.
* In profiling script, moved up the calculation of values one level. This is to better see the output of the profiling iterations for CR72.py. [https://gna.org/task/?7807 Task #7807]: Speed-up of dispersion models for clustered analysis.
* Critical fix for the slicing of values in target function. This makes system test: Relax_disp.test_sod1wt_t25_to_cr72 pass. [https://gna.org/task/?7807 Task #7807]: Speed-up of dispersion models for clustered analysis.
* Added self.has_missing keyword in initialization of the Dispersion class. This is to test once, per spin or cluster. This saves a looping over the dispersion points, when collection the data. [https://gna.org/task/?7807 Task #7807]: Speed-up of dispersion models for clustered analysis.
* Created multi dimensional error and value numpy arrays. This is to calculate the chi2 χ<sup>2</sup> sum much faster. Reordered the loop over missing data points, so it is only initiated if missing points is detected. [https://gna.org/task/?7807 Task #7807]: Speed-up of dispersion models for clustered analysis.
* Switch the looping from spin->frq to frq->spin. Since the number of dispersion points are the same for all spins, this allows to move the calculation of p<sub>A</sub> and kex array one level up. This saves a lot of computation. [https://gna.org/task/?7807 Task #7807]: Speed-up of dispersion models for clustered analysis.
* Changed all the creation of special numpy arrays to be of float64 type. [https://gna.org/task/?7807 Task #7807]: Speed-up of dispersion models for clustered analysis.
* Moved the data filling of special numpy array errors and values, to initialization of Dispersion class. These values does not change, and can safely be stored outside. [https://gna.org/task/?7807 Task #7807]: Speed-up of dispersion models for clustered analysis.
* Just a tiny little more speed, by removing temporary storage of chi2 χ<sup>2</sup> calculation. [https://gna.org/task/?7807 Task #7807]: Speed-up of dispersion models for clustered analysis.
* Made copies of numpy arrays instead of creating from new. [https://gna.org/task/?7807 Task #7807]: Speed-up of dispersion models for clustered analysis.
* Added a self.frqs_a as a multidimensional numpy array. [https://gna.org/task/?7807 Task #7807]: Speed-up of dispersion models for clustered analysis.
* Important fix for replacing values if eta_pos > 700 is violated. This fixes system test: Relax_disp.test_sod1wt_t25_to_cr72, which failed after making kex to a numpy float. The trick is to make a numpy mask which stores the position where to replace the values. Then replace the values just before last return. This makes sure, that not all values are changed. [https://gna.org/task/?7807 Task #7807]: Speed-up of dispersion models for clustered analysis.
* Increased the kex speed to 1e7 in clustered unit tests cases. This is to demonstrate where there will be no excange. [https://gna.org/task/?7807 Task #7807]: Speed-up of dispersion models for clustered analysis.
* Added a multi-dimensional numpy array chi2 χ<sup>2</sup> value calculation function. [https://gna.org/task/?7807 Task #7807]: Speed-up of dispersion models for clustered analysis.* Called the newly created chi2 χ<sup>2</sup> function to calculate for multi dimensional numpy arrays. [https://gna.org/task/?7807 Task #7807]: Speed-up of dispersion models for clustered analysis.
* Renamed chi2_ND to chi2_rankN. This is a better name for representing multiple axis calculation. [https://gna.org/task/?7807 Task #7807]: Speed-up of dispersion models for clustered analysis.
* Made special ei, si, mi, and oi numpy structure array. This is for rapid speed-up of numpy array creation in target function. [https://gna.org/task/?7807 Task #7807]: Speed-up of dispersion models for clustered analysis.
* Added missing instances of cleaning the data. [https://gna.org/task/?7807 Task #7807]: Speed-up of dispersion models for clustered analysis.
* Bug fix for model [[LM63 3-site]]. The index si has to be used to extract data to lib function. [https://gna.org/task/?7807 Task #7807]: Speed-up of dispersion models for clustered analysis.
* Temporary added system test: test_korzhnev_2005_all_data_disp_speed_bug. This makes a minimisation with 1 iteration, and so will give the chi2 χ<sup>2</sup> value at the preset parameter values. This is chi2 χ<sup>2</sup> value should give 162.5, but gives 74.7104. [https://gna.org/task/?7807 Task #7807]: Speed-up of dispersion models for clustered analysis.
* Updated documentation on dimensionality of numpy array num_points. They are in dimension [NE][NS][[NM][NO], where oi gives the number of dispersion points at that offset. [https://gna.org/task/?7807 Task #7807]: Speed-up of dispersion models for clustered analysis.
* Fix for system test: test_korzhnev_2005_all_data. The masking for replacing values was wrong. [https://gna.org/task/?7807 Task #7807]: Speed-up of dispersion models for clustered analysis.
* Added the system test: test_cpmg_synthetic_b14_to_ns_star_cluster, to check for the model is still working after change. [https://gna.org/task/?7807 Task #7807]: Speed-up of dispersion models for clustered analysis.
* Started using the newly cR2 variable, extracted from higher dimensional data. This should be okay, but system test test_hansen_cpmg_data_to_ns_cpmg_2site_star, now fails.
* Changes of values to system test test_hansen_cpmg_data_to_ns_cpmg_2site_star. The values are changed, since chi2 χ<sup>2</sup> is lower than before. [https://gna.org/task/?7807 Task #7807]: Speed-up of dispersion models for clustered analysis.
* Moved the costly finding of matrix exponential out of for loops for eR_tcp. [https://gna.org/task/?7807 Task #7807]: Speed-up of dispersion models for clustered analysis.
* Rearranged the code, to properly show the nested matrix exponentials in dot functions. [https://gna.org/task/?7807 Task #7807]: Speed-up of dispersion models for clustered analysis.
* Added function to sort models before auto-analyses. They are sorted in order: exp_type: EXP_TYPE_R2EFF, EXP_TYPE_NOREX, EXP_TYPE_NOREX_R1RHO, EXP_TYPE_CPMG_SQ, EXP_TYPE_CPMG_MMQ, EXP_TYPE_R1RHO; equation: EQ_SILICO, EQ_ANALYTIC, EQ_NUMERIC; Nr of chemical sites: 2 or 3; Year: Newest models first; Nr of parameters. [https://gna.org/support/?3135 Sr #3135]: Optimisation of the R1 relaxation rate for the off-resonance R<sub>1ρ</sub> relaxation dispersion models.
* Added unit test, to test the expected sorting of models for auto-analyses. [https://gna.org/support/?3135 Sr #3135]: Optimisation of the R1 relaxation rate for the off-resonance R<sub>1ρ</sub> relaxation dispersion models.
* Added more models to be tested in system test Relax_disp.test_r1rho_kjaergaard_auto. [https://gna.org/bugs/?22461 Bug #22461]: NS R1rho 2-site_fit_r1 has extremely high chi2 χ<sup>2</sup> value in system test Relax_disp.test_r1rho_kjaergaard_missing_r1. [https://gna.org/support/?3135 Sr #3135]: Optimisation of the R1 relaxation rate for the off-resonance R<sub>1ρ</sub> relaxation dispersion models.
* Implemented the sorting of models, for auto-analyses. [https://gna.org/support/?3135 Sr #3135]: Optimisation of the R1 relaxation rate for the off-resonance R<sub>1ρ</sub> relaxation dispersion models.
* Implemented partial reading of results file. Before reading a results file, it is determined if the file exists. This makes is possible to read a directory with partial results from a previous analysis. This can be handsome, if reading R2eff values in R<sub>1ρ</sub> experiments, and the error estimation has been prepared with a high number of Monte Carlo simulations. [https://gna.org/support/?3135 Sr #3135]: Optimisation of the R1 relaxation rate for the off-resonance R<sub>1ρ</sub> relaxation dispersion models.
* Created a number of system tests to check the diffusion tensor PDB representation. This is to prevent [https://gna.org/bugs/?22502 bugs such as #22502] from ever reappearing. The PDB file contents are hardcoded into the tests and checked. The tests include Structure.test_create_diff_tensor_pdb_ellipsoid, Structure.test_create_diff_tensor_pdb_oblate, Structure.test_create_diff_tensor_pdb_prolate, and Structure.test_create_diff_tensor_pdb_sphere.
* Improved data checking for all of the Structure system tests. Before looping over the structural data, the number of lines in the real file and the newly generated file are compared. This avoids the situation whereby an empty file is produced, accidentally allowing the test to pass.
* Modified following functions (time points are now saved at the [ei][mi][oi][di] index level, at this index level all time points are saved for the R2eff point): interpolate_disp(), to interpolate time points, all time points through the original dispersion points di, are collected and then made unique - this time list can potentially be the largest of all time lists; interpolate_offset(), to interpolate time points, all time points through the original offset points, and then dispersion points di, are collected and then made unique - this time list can potentially be the largest of all time lists; plot_disp_curves_to_file(), to acquire the original relax_times points; return_r2eff_arrays(), to save all time points on the level of [ei][mi][oi][di]. At this index level, it will be a numpy array list with all time values used for fitting. [https://gna.org/bugs/?22461 Bug #22461]: NS R1rho 2-site_fit_r1 has extremely high chi2 χ<sup>2</sup> value in system test Relax_disp.test_r1rho_kjaergaard_missing_r1.* Modified back_calc_r2eff() to accept interpolated time points. [https://gna.org/bugs/?22461 Bug #22461]: NS R1rho 2-site_fit_r1 has extremely high chi2 χ<sup>2</sup> value in system test Relax_disp.test_r1rho_kjaergaard_missing_r1.* Modified target function of relax dispersion, to use the new list of time points, which are of higher dimension. [https://gna.org/bugs/?22461 Bug #22461]: NS R1rho 2-site_fit_r1 has extremely high chi2 χ<sup>2</sup> value in system test Relax_disp.test_r1rho_kjaergaard_missing_r1.* Fix to system test Relax_disp.test_r1rho_kjaergaard_missing_r1(). After the relaxation times have been fixed, this model now return reasonable chi2 χ<sup>2</sup> values. The reported parameters are though quite different from all other models, and it seems something may still be wrong. [https://gna.org/bugs/?22461 Bug #22461]: NS R1rho 2-site_fit_r1 has extremely high chi2 χ<sup>2</sup> value in system test Relax_disp.test_r1rho_kjaergaard_missing_r1.* Fix for system test Relax_disp.test_exp_fit(), where the spin.isotope was not set. The new call to return_r2eff_arrays(), when producing graphs, raise RelaxSpinTypeError() if no isotope is set. [https://gna.org/bugs/?22461 Bug #22461]: NS R1rho 2-site_fit_r1 has extremely high chi2 χ<sup>2</sup> value in system test Relax_disp.test_r1rho_kjaergaard_missing_r1.
* Modified the Relax_disp.test_r1rho_kjaergaard_missing_r1 system test to pass on 64-bit Linux systems. The accuracy of the checks of the optimised values have been decreased.
* Moved the storing of relax time up before check of missing data in return_r2eff_arrays(). [https://gna.org/bugs/?22461 Bug #22461]: NS R1rho 2-site_fit_r1 has extremely high chi2 χ<sup>2</sup> value in system test Relax_disp.test_r1rho_kjaergaard_missing_r1.* Fix for system test not adding spin.isotope to setup information. [https://gna.org/bugs/?22461 Bug #22461]: NS R1rho 2-site_fit_r1 has extremely high chi2 χ<sup>2</sup> value in system test Relax_disp.test_r1rho_kjaergaard_missing_r1.* Fix for looping over data indices, where tilt_angles has the si index. [https://gna.org/bugs/?22461 Bug #22461]: NS R1rho 2-site_fit_r1 has extremely high chi2 χ<sup>2</sup> value in system test Relax_disp.test_r1rho_kjaergaard_missing_r1.
* Added Nikolai's original Matlab code to the lib.dispersion.ns_r1rho_2site module docstring. This is the code taken directly form the original funNumrho.m file, which was the origin of the code in this module.
* Further extended the profiling script for curve fitting. Now profiling is in place for the implemented C code method in relax. A similar code should now be devised for numpy array for comparing. But this profiling shows that when contraints=True, is slowing down this procedure by a factor 10 X.
* Implemented back end for estimating R2eff and errors by exponential curve fitting with scipy.optimize.leastsq. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Documentation fix for new exponential target function. Also added new function to estimate R2eff and i0 parameters, before minimisation. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Small changes to verification scripts, to use chi2 χ<sup>2</sup> function and use the scaling matrix correct. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Split up of system test test_r1rho_kjaergaard_missing_r1, into a verification part. This is to test the new r2eff estimation, which should get the parameter values, as a this 2000 Monto Carlo simulation. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Modified system test Relax_disp.test_estimate_r2eff. This is to compare against errors simulated with 2000 MC. The parameters are comparable, but not equal. Mostly, it seems that the errors from scipy.optimize.leastsq, are twice as high than the Monte Carlo simulations. This affect model fitting, and the calculated chi2 χ<sup>2</sup> value.
* Added system test Relax_disp.test_estimate_r2eff_error(). This is to get insight in the error difference between 2000 Monto Carlo simulations and then scipy.optimize.leastsq.
* Add dependency check for scipy.optimize.leastsq. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Turned off the optimisation constraints for the 'R2eff' model in the dispersion auto-analysis. This follows from http://thread.gmane.org/gmane.science.nmr.relax.scm/22977/focus=6829. This model does not require constraints at all, and the constraints only cause the optimisation to take 10x longer to complete. Therefore the constraint flag has been set to False for the model.
* Initial try to form the Jacobian and Hessian matrix for exponential decay. This can be tried with system test: relax -s Relax_disp.test_estimate_r2eff_error. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Intermediate step in estimate R2eff module. It seems that minfx is minimising in a quadratic space because of the power of chi2χ<sup>2</sup>, while the general input to scipy.optimize does not do this. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Cleaned up target function for leastsq, since arguments to function can be extracted from class. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Tried to implement with scipy.optimize.fmin_ncg and scipy.optimize.fmin_cg, but cannot get it to work. The matrices are not aligned well. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Fix for the test_dfunc_off_minimum() unit test. This is the test class test_suite.unit_tests._target_functions.test_relax_fit.Test_relax_fit. The wrong gradient was being scaled.
* Switched the optimisation algorithm in test_suite/system_tests/scripts/relax_fit.py. This script, used by the Relax_fit.test_curve_fitting_height and Relax_fit.test_curve_fitting_volume system tests, now uses the BFGS optimisation. This is to demonstrate that the exponential curve gradient function dfunc() is implemented correctly and that more advanced optimisation algorithms can be used (excluding those that require the full Hessian d2func() function).
* Got the method of 'Steepest descent' to work properly, by specifying the Jacobian correctly. The Jacobian was derived according to the chi2 χ<sup>2</sup> function. The key point was to evaluate the two derivative arrays for all times points, and then sum each of the two arrays together, before constructing the Jacobian. This clearly shows the difference between minfx and scipy.optimize.leastsq. scipy.optimize.leastsq takes as input a function F(x0), which should return the array of weighted differences between function value and measured values: "1. / self.errors * (self.calc_exp(self.times, *params) - self.values)". This will be an array with number of elements 'i' corresponding to number of elements. scipy.optimize.leastsq then internally evaluates the sum of squares -> sum[ (O - E)**2 ], and minimises this. This is the chi2χ<sup>2</sup>. Minfx requires the function to minimise before hand. So, the "func" should be chi2χ<sup>2</sup>. Then the dfunc, and d2func, should be derivative of chi2χ<sup>2</sup>, but all elements in the array should still be summed together. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Got the Quasi-Newton BFGS to work. This uses only the gradient, this gets the same results as 2000 Monte Carlo with simplex and scipy.optimize.leastsq. Error estimation still not provided. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Removed all code regarding scipy.optimize fmin_cg and fmin_ncg. This problem should soon be able to be solved with minfx. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Changed the relax_fit.py sample script to use Newton rather than Simplex optimisation. This can lead to significantly faster optimisation times, as shown in the commit message http://article.gmane.org/gmane.science.nmr.relax.scm/23081.
* Changed the optimisation description in the relaxation curve-fitting chapter of the manual. The script example has been converted to match the sample script, replacing the Nelder-Mead simplex algorithm with Newton optimisation, and removing the argument turning diagonal scaling off. All the text about only the simplex algorithm being supported due to the missing gradients and Hessians in the C module have been deleted. The text that linear constraints are not supported has also been removed - but this was fixed when the logarithmic barrier constraint algorithm was added to minfx.
* By using minfx, and the reported Jacobian, it is now possible to get the exact same error estimation as scipy.optimize.leastsq. The fatal error was to set the weighting matrix with diagonal elements as the error. There weights are 1/errors**2. There is though some unanswered questions left. The Jacobian used, is the direct derivative of the function. It is not the chi2 χ<sup>2</sup> derivative Jacobian. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Fixed naming of functions, to better represent what they do in module of estimating R2eff. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Implemented the Jacobian of exponential function in Python code. This now also gets the same error as leastsq and C code. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Implemented system test Relax_disp.verify_estimate_r2eff_err_compare_mc for testing R2eff error as function of Monte Carlo simulation. Note, since the name does not start with "test", but with "verify", this test will not be issued in the system test suite. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Converted the periodic table in lib.periodic_table into a dictionary type object. The new Element container has been added for storing the information about each element in the table. The Periodic_table object used the atomic symbol as a key for each Element instance.
* Modified system test test Relax_disp.test_estimate_r2eff_err_methods() to show the difference between using the direct function Jacobian, or the chi2 χ<sup>2</sup> function Jacobian. Added also the functionality to the estimate R2eff module, to switch between using the different Jacobians. The results show, that R2eff can be estimated better.
* Added isotope information to the lib.periodic_table module including mass number and atomic mass. A new Isotope data container has been added to store this information. The Periodic_table._add() method now returns the initialised Element container. This container has the _add_isotope() method which is used to initialise Isotope data containers with the mass number and atomic mass and append it to the list.
* Created a unit test for the Periodic_table.atomic_mass() method. This method is not implemented yet.
* Tried to scale the covariance matrix, as explained here: http://www.orbitals.com/self/least/least.htm. This does not work better. Also replaced "errors" to "weights" to the multifit_covar(), to better determine control calculations. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Added all gyromagnetic ratio information from lib.physical_constants to lib.periodic_table. The Periodic_table.gyromagnetic_ratio() method has been added to allow this value to be easily returned.
* Added to back-end of R2eff estimate module, to be able to switch between the function Jacobian or the chi2 χ<sup>2</sup> Jacobian. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Modified user function 'relax_disp.r2eff_err_estimate', to be able switch between the Jacobians. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Modified system test Relax_disp.verify_estimate_r2eff_err_compare_mc, to try the difference between the Jacobian. The results are: Printing the estimated R2eff error as function of estimation from covariance and number of Monte Carlo simulations. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Started making functions in R2eff estimate module, independent on the informations stored in the Class. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Cleaned up code in R2eff estimate module, by making each function independent of class. This is to give a better overview, how the different functions connect together. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Made the user function, which estimates the R2eff errors, use the Jacobian derived from chi2 χ<sup>2</sup> function. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.* Modified system test verify_estimate_r2eff_err_compare_mc() to first use the direct function Jacobian, and then the chi2 χ<sup>2</sup> derived Jacobian. This shows the result better. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Added digit to printout in R2eff estimate module. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Locked values for system test test_estimate_r2eff_err, to estimate how the R2eff error estimation reflects on fitted parameters. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* More locking of values, when trying to use different methods for estimating R2eff err values. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* More locking of values. This actually shows, that errors should be estimated from the direct Jacobian. Not, the chi2 χ<sup>2</sup> Jacobian. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.* Reverted the logic, that the chi2 χ<sup>2</sup> Jacobian should be used. Instead, the direct Jacobian exponential is used instead. When fitting with the estimated errors from the direct Jacobian, the results are MUCH better, and comparable to 2000 Monte Carlo simulations. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Various precision fixes for different machine precision. This is in: verify_r1rho_kjaergaard_missing_r1 [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* First attempt at properly implementing the target_functions.relax_fit.jacobian() function. This is now the Jacobian of the chi-squared function. A new jacobian_matrix data structure has been created for holding the matrix data prior to converting it into a Python list of lists. The equation used was simply the chi-squared gradient whereby the sum over i has been dropped and the i elements are stored in the second dimension of matrix.
* Parameter precision lowered for Relax_disp.test_estimate_r2eff_err_auto(). This is due to change to C code. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Created the select.display user function. This simply displays the current spin selections of all spins. In the future it can be extended to display the interatomic data container selections, domain selections, etc.
* Fix for system test: test_estimate_r2eff_err_auto(). The Jacobian to estimate the errors has been changed from the direct function Jacobian, to the Jacobian of the chi2 χ<sup>2</sup> function. This changes the R2eff error predictions, and hence parameter fitting. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Implemented the direct Jacobian in Python, to be independent of C code in development phase. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Activated all method try in: system test Relax_disp.test_estimate_r2eff_err_methods. This is to quickly estimate errors from all different methods. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Fix to system test: test_estimate_r2eff_err_auto, which now checks the values for the direct Jacobian. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Increased the number of time points for exponential curve fitting to 3.
* Fix to weight properly according to if minimising with direct Jacobian or chi2 χ<sup>2</sup> Jacobian. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Fix to system test test_estimate_r2eff_err_methods, after modification of weighting. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Switched in estimate_r2eff_err() to use the chi2 χ<sup>2</sup> Jacobian from C code, and Jacobian from Python code. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Removed all references to test values which was received by wrong weighting. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Better error checking in the relaxation dispersion overfit_deselect() API method. The model must be set for this procedure to work, and the method now checks that this is the case.
* Better error checking for the specific_analyses.relax_disp.average_intensity() function. This function would fail with a traceback if a peak intensity error analysis had not yet been performed. Now it fails instead with a clean RelaxError so that the user knows what is wrong.
* Tried implementing getting the chi2 χ<sup>2</sup> gradient, using target_function.chi2.dchi2(). The output seem equal. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.* Replaced the way to calculate the chi2 χ<sup>2</sup> Jacobian, for exponential fit in minfx. This is only for the test class, but reuses library code. This should make it much easier in the future to implement chi2 χ<sup>2</sup> gradient functions to minfx, since it is only necessary to implement the direct gradient of the function, and then pass the direct gradient to chi2 χ<sup>2</sup> library, which turn it into the chi2 χ<sup>2</sup> gradient function which minfx use. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Moved unnecessary function in R2eff error estimate module into experimental class. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Implemented system test: test_bug_negative_intensities_cpmg, to show lack of error message to user. Maybe these spins should be de-selected, or at least show a better warning. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Moved multifit_covar into lib.statistics, since it is an independent module. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Moved "func_exp_grad" into experimental class for different minimisation methods. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Improved documentation to user function relax_disp.r2eff_err_estimate, and removed the possibility to use the chi2 χ<sup>2</sup> Jacobian, as this is rubbish. But the back-end still have this possibility, should one desire to try this. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Moved the argument 'chi2_jacobian' as the last argument in estimate_r2eff_err. This argument is highly likely not to be used, but is kept for future testing purposes. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Fix to experimental class for fitting with different methods. After moving the function into class, 'self' should be added to the function. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Fix to system test test_estimate_r2eff_err, after removing the possibility to use the chi2 χ<sup>2</sup> Jacobian. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Fix for system test test_estimate_r2eff_err_methods. The function was called wrong in experimental class. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Initial try write comments how to generalize the scaling of the covariance according to the reduced chi2 χ<sup>2</sup> distribution. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* First try to make a test script for estimating efficiency on R2eff error calculations. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.
* Added number of simulations to 10,000 in test script, and varied the random number of time point per simulation between 3 and 10. [https://gna.org/task/?7822 Task #7822]: Implement user function to estimate R2eff and associated errors for exponential curve fitting.