Changes

Jump to navigation Jump to search

Relax 3.1.0

333 bytes added, 12:04, 15 October 2020
m
→‎Changes: Switch to the {{relax developer link}} template to remove dead Gna! links.
* 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 [https://gna.org/users/{{relax developer link|username=semor |text=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.
* The cpmg_frq argument of the [http://www.nmr-relax.com/manual/relax_disp_cpmg_frq.html 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 [https://gna.org/users/{{relax developer link|username=semor |text=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 [https://gna.org/users/{{relax developer link|username=semor |text=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.
* 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 [https://gna.org/users/{{relax developer link|username=semor |text=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.
* 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 [https://gna.org/users/{{relax developer link|username=semor |text=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.
* 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 R<sub>2eff</sub>/R<sub>1&rho;</sub> values for the fixed relaxation time period data types and is equivalent to [https://gna.org/users/{{relax developer link|username=semor |text=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.
* 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 [https://gna.org/users/{{relax developer link|username=pasa |text=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 the [[NS CPMG 2-site star|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 [http://thread.gmane.org/gmane.science.nmr.relax.devel/3907 relaxation dispersion model addition tutorial].
* 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 [https://gna.org/users/{{relax developer link|username=pasa |text=Paul Schanda]}}. The details come from http://thread.gmane.org/gmane.science.nmr.relax.devel/4132/focus=4135. The exchange-free R<sub>2</sub> value parameter names have been changed to match the convention of the other lib.dispersion modules.
* Added the [[NS CPMG 2-site star|NS 2-site star]] model to the [http://www.nmr-relax.com/manual/relax_disp_select_model.html 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 [http://thread.gmane.org/gmane.science.nmr.relax.devel/3907 relaxation dispersion model addition tutorial].
* Fix for the non-ASCII character '\xe2' in the lib.dispersion.ns_2site_star module.
* 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 '[https://gna.org/support/download.php?file_id=18263 fitting_main_kex.py]' file attached to https://gna.org/task/?7712#comment3.
* Huge amounts of documentation added to the lib.dispersion.ns_2site_star module. This comes from [https://gna.org/users/{{relax developer link|username=pasa |text=Paul Schanda's] }} 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.
* 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|CR72 red]] model.
* Added the [[NS CPMG 2-site 3D|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, [https://gna.org/users/{{relax developer link|username=pasa |text=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 [http://thread.gmane.org/gmane.science.nmr.relax.devel/3907 relaxation dispersion model addition tutorial].* Added the [[NS CPMG 2-site 3D|NS 2-site]] model to the [http://www.nmr-relax.com/manual/relax_disp_select_model.html 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, [https://gna.org/users/{{relax developer link|username=pasa |text=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 [http://thread.gmane.org/gmane.science.nmr.relax.devel/3907 relaxation dispersion model addition tutorial].* Added the [[NS CPMG 2-site 3D|NS 2-site]] R<sub>2eff</sub> 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, [https://gna.org/users/{{relax developer link|username=pasa |text=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 [http://thread.gmane.org/gmane.science.nmr.relax.devel/3907 relaxation dispersion model addition tutorial].
* Updates and fixes for the lib.dispersion.ns_2site module. The function has been renamed, and the R<sub>1</sub> arguments default to 0.0. The flip angle for the from the pulse.
* Created the [[NS CPMG 2-site 3D|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, [https://gna.org/users/{{relax developer link|username=pasa |text=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 [http://thread.gmane.org/gmane.science.nmr.relax.devel/3907 relaxation dispersion model addition tutorial].
* Converted the [[NS CPMG 2-site 3D|NS 2-site]] model to [[NS CPMG 2-site 3D|NS 2-site 3D]] to be more specific. This might change again in the future.
* Added support for the [[NS CPMG 2-site 3D|NS 2-site 3D]] model to the [http://www.nmr-relax.com/manual/relax_disp_select_model.html 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, [https://gna.org/users/{{relax developer link|username=pasa |text=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 [http://thread.gmane.org/gmane.science.nmr.relax.devel/3907 relaxation dispersion model addition tutorial].
* Lots of fixes for the relaxation dispersion target function module for the [[NS CPMG 2-site 3D|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 CPMG 2-site 3D|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 &delta;&omega;, wA, and wB. This follows from [https://gna.org/users/{{relax developer link|username=pasa |text=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 p<sub>A</sub> and p<sub>B</sub> 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->&delta;&omega;, fA->wA, fB->wB, and Mgx->Mx.
* Added the [[NS CPMG 2-site expanded|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 [http://thread.gmane.org/gmane.science.nmr.relax.devel/3907 relaxation dispersion model addition tutorial].
* Added the [[NS CPMG 2-site expanded|NS 2-site expanded]] model to the [http://www.nmr-relax.com/manual/relax_disp_select_model.html 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 [http://thread.gmane.org/gmane.science.nmr.relax.devel/3907 relaxation dispersion model addition tutorial].
* Added the [[NS CPMG 2-site expanded|NS 2-site expanded]] R<sub>2eff</sub> 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, [https://gna.org/users/{{relax developer link|username=pasa |text=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 [http://thread.gmane.org/gmane.science.nmr.relax.devel/3907 relaxation dispersion model addition tutorial].
* Fix for the lib.dispersion.ns_2site_expanded.r2eff_ns_2site_expanded() function. The pg variable should have been p<sub>A</sub> and it needs to be sent into the function.
* Created the [[NS CPMG 2-site expanded|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, [https://gna.org/users/{{relax developer link|username=pasa |text=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 [http://thread.gmane.org/gmane.science.nmr.relax.devel/3907 relaxation dispersion model addition tutorial].* Added support for the [[NS CPMG 2-site expanded|NS 2-site expanded]] model to the [http://www.nmr-relax.com/manual/relax_disp_select_model.html 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, {{relax developer link|username=pasa|text=Paul Schanda][https://gna.org/users/pasa }}, 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 [http://thread.gmane.org/gmane.science.nmr.relax.devel/3907 relaxation dispersion model addition tutorial].
* Fix for the [http://www.nmr-relax.com/manual/relax_disp_select_model.html relax_disp.select_model user function] for the [[NS CPMG 2-site expanded|NS 2-site expanded]] model. There is only one R<sub>2</sub><sup>0</sup> parameter as R<sub>2A</sub><sup>0</sup> = R<sub>2B</sub><sup>0</sup> in this model.
* Added the [[NS CPMG 2-site expanded|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, [https://gna.org/users/{{relax developer link|username=pasa |text=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 [http://thread.gmane.org/gmane.science.nmr.relax.devel/3907 relaxation dispersion model addition tutorial].
* Large renaming of the relaxation dispersion models. This includes both the analytic and numerical models. All of the models with separate R<sub>2A</sub><sup>0</sup> and R<sub>2B</sub><sup>0</sup> parameters now have ' full' added to the end of the model name. And all of the corresponding reduced models whereby R<sub>2A</sub><sup>0</sup> = R<sub>2B</sub><sup>0</sup> = R<sub>2</sub><sup>0</sup> 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.
* 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 [https://gna.org/users/{{relax developer link|username=pasa |text=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.
* 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 [http://www.nmr-relax.com/manual/chemical_shift_read.html chemical_shift.read user function] which currently does not exist. Chemical shifts are needed to interpret off-resonance R<sub>1&rho;</sub> data.
* Copyright of [https://gna.org/users/{{relax developer link|username=semor |text=Sebastien Morin] }} and [https://gna.org/users/{{relax developer link|username=bugman |text=Edward d'Auvergne] }} re-inserted, since tsmfk01 is an alteration of lm63.py and m61.py in same directory. Progress [https://gna.org/support/?3071 sr #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 &delta;&omega; from ppm to rad/s. Progress [https://gna.org/support/?3071 sr #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 [http://www.nmr-relax.com/manual/relax_disp_select_model.html relax_disp.select_model user function] back end. Progress [https://gna.org/support/?3071 sr #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 [https://gna.org/support/?3071 sr #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 [http://www.nmr-relax.com/manual/value_set.html 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 {{gna relax developer link|urlusername=gna.org/users/varioustoxins|text=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 [http://www.nmr-relax.com/manual/minimise.html 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 [http://www.nmr-relax.com/manual/grid_search.html 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.
Trusted, Bureaucrats
4,228

edits

Navigation menu