Difference between revisions of "Relax 3.3.4"

From relax wiki
Jump to navigation Jump to search
(Extensive links to the API documentation.)
m (Switch to the {{gna link}}, {{gna task link}}, and {{gna task url}} templates to remove dead Gna! links.)
 
(9 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
{{lowercase title}}
 
{{lowercase title}}
  
= Description =
+
{{infobox relax release
 +
| version  = 3.3.4
 +
| prev    = 3.3.3
 +
| next    = 3.3.5
 +
| keywords = Relaxation curve-fitting, state file
 +
| type    = Major feature and bugfix
 +
| date    = 3 December 2014
 +
| manual  = yes
 +
}}
 +
 
 +
== Description ==
  
 
<section begin=description/>
 
<section begin=description/>
Line 7: Line 17:
 
<section end=description/>
 
<section end=description/>
  
= Download =
+
== Download ==
  
 
<section begin=download/>
 
<section begin=download/>
Line 13: Line 23:
 
<section end=download/>
 
<section end=download/>
  
= CHANGES file =
+
== CHANGES file ==
  
 
<section begin=metadata/>
 
<section begin=metadata/>
Line 21: Line 31:
 
<section end=metadata/>
 
<section end=metadata/>
  
== Features ==
+
=== Features ===
  
 
<section begin=features/>
 
<section begin=features/>
Line 31: Line 41:
 
<section end=features/>
 
<section end=features/>
  
== Changes ==
+
=== Changes ===
  
 
<section begin=changes/>
 
<section begin=changes/>
Line 39: Line 49:
 
* Updated all of the [http://www.nmr-relax.com/manual/] links in the [http://www.nmr-relax.com/api/3.3/lib.dispersion-module.html lib.dispersion package].  This is for all of the individual model pages in the HTML manual.
 
* Updated all of the [http://www.nmr-relax.com/manual/] links in the [http://www.nmr-relax.com/api/3.3/lib.dispersion-module.html lib.dispersion package].  This is for all of the individual model pages in the HTML manual.
 
* Improved the description for the [http://www.nmr-relax.com/manual/relax_fit_select_model.html relax_fit.select_model user function].
 
* Improved the description for the [http://www.nmr-relax.com/manual/relax_fit_select_model.html relax_fit.select_model user function].
* A small code rearrangement to create the [http://www.nmr-relax.com/api/3.3/target_functions.relax_fit_wrapper-module.html new target_functions.relax_fit_wrapper module].  This follows from the idea at [https://gna.org/task/?7415#comment6].  The *func_wrapper() functions of the [http://www.nmr-relax.com/api/3.3/specific_analyses.relax_fit.optimisation-module.html specific_analyses.relax_fit.optimisation module] have been shifted out and converted to class methods to create the [http://www.nmr-relax.com/api/3.3/target_functions.relax_fit_wrapper-module.html target_functions.relax_fit_wrapper module].  This will be used to abstract away all of the C code, and will form the infrastructure to allow new exponential curves to be quickly supported.  The modules of the [http://www.nmr-relax.com/api/3.3/specific_analyses.relax_fit-module.html specific_analyses.relax_fit] and [http://www.nmr-relax.com/api/3.3/specific_analyses.relax_disp-module.html specific_analyses.relax_disp] packages now import the [http://www.nmr-relax.com/api/3.3/target_functions.relax_fit_wrapper.Relax_fit_opt-class.html target_functions.relax_fit_wrapper.Relax_fit_opt target function class] and use that instead.
+
* A small code rearrangement to create the [http://www.nmr-relax.com/api/3.3/target_functions.relax_fit_wrapper-module.html new target_functions.relax_fit_wrapper module].  This follows from the idea at {{gna task url|7415|comment=6}}.  The *func_wrapper() functions of the [http://www.nmr-relax.com/api/3.3/specific_analyses.relax_fit.optimisation-module.html specific_analyses.relax_fit.optimisation module] have been shifted out and converted to class methods to create the [http://www.nmr-relax.com/api/3.3/target_functions.relax_fit_wrapper-module.html target_functions.relax_fit_wrapper module].  This will be used to abstract away all of the C code, and will form the infrastructure to allow new exponential curves to be quickly supported.  The modules of the [http://www.nmr-relax.com/api/3.3/specific_analyses.relax_fit-module.html specific_analyses.relax_fit] and [http://www.nmr-relax.com/api/3.3/specific_analyses.relax_disp-module.html specific_analyses.relax_disp] packages now import the [http://www.nmr-relax.com/api/3.3/target_functions.relax_fit_wrapper.Relax_fit_opt-class.html target_functions.relax_fit_wrapper.Relax_fit_opt target function class] and use that instead.
 
* Shifted the C code Jacobian functions into the new [http://www.nmr-relax.com/api/3.3/target_functions.relax_fit_wrapper-module.html target_functions.relax_fit_wrapper module].  This shifts all of the relaxation curve-fitting C code access into the [http://www.nmr-relax.com/api/3.3/target_functions.relax_fit_wrapper-module.html  target_functions.relax_fit_wrapper module] so that the rest of relax does not need to handle the C code.  This will allow for new models to be very easily supported, as they would all be set up in this target function module.
 
* Shifted the C code Jacobian functions into the new [http://www.nmr-relax.com/api/3.3/target_functions.relax_fit_wrapper-module.html target_functions.relax_fit_wrapper module].  This shifts all of the relaxation curve-fitting C code access into the [http://www.nmr-relax.com/api/3.3/target_functions.relax_fit_wrapper-module.html  target_functions.relax_fit_wrapper module] so that the rest of relax does not need to handle the C code.  This will allow for new models to be very easily supported, as they would all be set up in this target function module.
 
* Updated the formula in the description of the [http://www.nmr-relax.com/manual/relax_fit_select_model.html relax_fit.select_model user function].
 
* Updated the formula in the description of the [http://www.nmr-relax.com/manual/relax_fit_select_model.html relax_fit.select_model user function].
 
* Modified the printouts from the [http://www.nmr-relax.com/manual/structure_write_pdb.html structure.write_pdb user function] if models are present.  Instead of printing out 'MODEL', 'ATOM, HETATM, TER' and 'ENDMDL' for each model, the header 'MODEL records' is printed followed by a single '.' character for each model.  For structures with many models, this results in a huge speed up of the user function which is strongly limited by how fast the terminal can display text.
 
* Modified the printouts from the [http://www.nmr-relax.com/manual/structure_write_pdb.html structure.write_pdb user function] if models are present.  Instead of printing out 'MODEL', 'ATOM, HETATM, TER' and 'ENDMDL' for each model, the header 'MODEL records' is printed followed by a single '.' character for each model.  For structures with many models, this results in a huge speed up of the user function which is strongly limited by how fast the terminal can display text.
* Added the synthetic saturation-recovery data in the form of Sparky peak lists to the repository.  These files were created by Andras Boeszoermenyi.  They are attached to [http://gna.org/task/?7415 task #7415] as the [http://gna.org/task/download.php?file_id=22989 Relax_sym.tar.gz file].  They were created for the formula I<sub>0</sub>(1 - e<sup>−R<sub>1</sub>.t</sup>) where I<sub>0</sub> = 1000000000000000.00 and R<sub>1</sub> = 0.5.  These files and the associated relax_sim.py script (which needs to be updated for the latest relax version) could form the basis of a basic system test.  This system test could then be used to implement the saturation-recovery experiment equations in relax.
+
* Added the synthetic saturation-recovery data in the form of Sparky peak lists to the repository.  These files were created by Andras Boeszoermenyi.  They are attached to {{gna task link|7415}} as the {{gna link|url=gna.org/task/download.php?file_id=22989|text=Relax_sym.tar.gz file}}.  They were created for the formula I<sub>0</sub>(1 - e<sup>−R<sub>1</sub>.t</sup>) where I<sub>0</sub> = 1000000000000000.00 and R<sub>1</sub> = 0.5.  These files and the associated relax_sim.py script (which needs to be updated for the latest relax version) could form the basis of a basic system test.  This system test could then be used to implement the saturation-recovery experiment equations in relax.
 
* Updated the [http://www.nmr-relax.com/api/3.3/target_functions-module.html target_functions package] __all__ list to include the relax_fit* modules.
 
* Updated the [http://www.nmr-relax.com/api/3.3/target_functions-module.html target_functions package] __all__ list to include the relax_fit* modules.
 
* Modified the package __all__ list checking unit test to accept *.so C modules.
 
* Modified the package __all__ list checking unit test to accept *.so C modules.
 
* Removal of an unused import in the relax_fit_zooming_grid.py system test script.
 
* Removal of an unused import in the relax_fit_zooming_grid.py system test script.
* Added a system test script for testing the saturation-recovery R<sub>1</sub> experiment.  This was created by Andras Boeszoermenyi.  The file was taken from the [https://gna.org/task/download.php?file_id=22997 saturation_recovery.tar.gaz file] attached to [http://gna.org/task/?7415 task #7415].  The only difference with the original script is that the [http://www.nmr-relax.com/manual/grace_view.html grace.view user function] calls have been removed, as these cannot be used in a system test.
+
* Added a system test script for testing the saturation-recovery R<sub>1</sub> experiment.  This was created by Andras Boeszoermenyi.  The file was taken from the {{gna link|url=gna.org/task/download.php?file_id=22997|text=saturation_recovery.tar.gaz file}} attached to {{gna task link|7415}}.  The only difference with the original script is that the [http://www.nmr-relax.com/manual/grace_view.html grace.view user function] calls have been removed, as these cannot be used in a system test.
 
* Modified the relax_fit_saturation_recovery.py script to work as a system test.  This is the script from Andras Boeszoermenyi.  The change follows from the discussion of [http://thread.gmane.org/gmane.science.nmr.relax.devel/7308/focus=7369].  The status.install_path variable is now used to point to the location of the files.  The relax data store ds.tmpdir variable is used for outputting all files.  And commented out user functions have been deleted.
 
* Modified the relax_fit_saturation_recovery.py script to work as a system test.  This is the script from Andras Boeszoermenyi.  The change follows from the discussion of [http://thread.gmane.org/gmane.science.nmr.relax.devel/7308/focus=7369].  The status.install_path variable is now used to point to the location of the files.  The relax data store ds.tmpdir variable is used for outputting all files.  And commented out user functions have been deleted.
 
* Added a copyright notice for Andras Boeszoermenyi for the newly added saturation-recovery R<sub>1</sub> script.  This change follows the discussion in the message [http://thread.gmane.org/gmane.science.nmr.relax.devel/7308/focus=7369].
 
* Added a copyright notice for Andras Boeszoermenyi for the newly added saturation-recovery R<sub>1</sub> script.  This change follows the discussion in the message [http://thread.gmane.org/gmane.science.nmr.relax.devel/7308/focus=7369].
Line 71: Line 81:
 
* Big bug fix for the [http://www.nmr-relax.com/manual/error_analysis_covariance_matrix.html error_analysis.covariance_matrix user function].  The model_info structure is now being passed into the get_param_names() API method, as required by the API.
 
* Big bug fix for the [http://www.nmr-relax.com/manual/error_analysis_covariance_matrix.html error_analysis.covariance_matrix user function].  The model_info structure is now being passed into the get_param_names() API method, as required by the API.
 
* Another change for the [http://www.nmr-relax.com/api/3.3/specific_analyses.relax_fit.api.Relax_fit-class.html#covariance_matrix relaxation curve-fitting covariance_matrix() API method] to handle all models.  The scaling matrix diagonalised list of 1.0 values now has the same number of elements as there are parameters.
 
* Another change for the [http://www.nmr-relax.com/api/3.3/specific_analyses.relax_fit.api.Relax_fit-class.html#covariance_matrix relaxation curve-fitting covariance_matrix() API method] to handle all models.  The scaling matrix diagonalised list of 1.0 values now has the same number of elements as there are parameters.
* Implemented the target functions for the inversion recovery exponential curve.  In the [http://www.nmr-relax.com/api/3.3/target_functions.relax_fit_wrapper.Relax_fit_opt-class.html target_functions.relax_fit_wrapper.Relax_fit_opt Python target function class Relax_fit_opt], the new [http://www.nmr-relax.com/api/3.3/target_functions.relax_fit_wrapper.Relax_fit_opt-class.html#func_inv func_inv()], [http://www.nmr-relax.com/api/3.3/target_functions.relax_fit_wrapper.Relax_fit_opt-class.html#dfunc_inv dfunc_inv()] and [http://www.nmr-relax.com/api/3.3/target_functions.relax_fit_wrapper.Relax_fit_opt-class.html#d2func_inv d2func_inv()] methods have been created as wrappers for the new C functions.  These are aliased to func(), dfunc() and d2func() in the [http://www.nmr-relax.com/api/3.3/target_functions.relax_fit_wrapper.Relax_fit_opt-class.html#__init__ __init__() method].  The target_functions/exponential_inv.c C file has been created with the functions exponential_inv(), exponential_inv_d0(), exponential_inv_dIinf(), exponential_inv_dR(), exponential_inv_dI02(), exponential_inv_dIinf2(), exponential_inv_dI0_dIinf(), exponential_inv_dR_dI0(), exponential_inv_dR_dIinf() and exponential_inv_dR2() have been created to implement the function, gradient, and Hessian for the equation I(t) = I<sub>&infin;</sub> - I<sub>0</sub>e<sup>-R.t</sup>.  In the target_functions/relax_fit.c file, the functions [http://www.nmr-relax.com/api/3.3/target_functions.relax_fit-module.html#func_inv func_inv()], [http://www.nmr-relax.com/api/3.3/target_functions.relax_fit-module.html#dfunc_inv dfunc_inv()], [http://www.nmr-relax.com/api/3.3/target_functions.relax_fit-module.html#d2func_inv d2func_inv()], [http://www.nmr-relax.com/api/3.3/target_functions.relax_fit-module.html#jacobian_inv jacobian_inv()] and [http://www.nmr-relax.com/api/3.3/target_functions.relax_fit-module.html#jacobian_inv jacobian_chi2_inv()] have been created as duplications of the *_exp() functions, but pointing to the exponential_inv*() functions and adding the I</sub>&infin;<sub> dimension.
+
* Implemented the target functions for the inversion recovery exponential curve.  In the [http://www.nmr-relax.com/api/3.3/target_functions.relax_fit_wrapper.Relax_fit_opt-class.html target_functions.relax_fit_wrapper.Relax_fit_opt Python target function class Relax_fit_opt], the new [http://www.nmr-relax.com/api/3.3/target_functions.relax_fit_wrapper.Relax_fit_opt-class.html#func_inv func_inv()], [http://www.nmr-relax.com/api/3.3/target_functions.relax_fit_wrapper.Relax_fit_opt-class.html#dfunc_inv dfunc_inv()] and [http://www.nmr-relax.com/api/3.3/target_functions.relax_fit_wrapper.Relax_fit_opt-class.html#d2func_inv d2func_inv()] methods have been created as wrappers for the new C functions.  These are aliased to func(), dfunc() and d2func() in the [http://www.nmr-relax.com/api/3.3/target_functions.relax_fit_wrapper.Relax_fit_opt-class.html#__init__ __init__() method].  The target_functions/exponential_inv.c C file has been created with the functions exponential_inv(), exponential_inv_d0(), exponential_inv_dIinf(), exponential_inv_dR(), exponential_inv_dI02(), exponential_inv_dIinf2(), exponential_inv_dI0_dIinf(), exponential_inv_dR_dI0(), exponential_inv_dR_dIinf() and exponential_inv_dR2() have been created to implement the function, gradient, and Hessian for the equation I(t) = I<sub>&infin;</sub> - I<sub>0</sub>e<sup>-R.t</sup>.  In the target_functions/relax_fit.c file, the functions [http://www.nmr-relax.com/api/3.3/target_functions.relax_fit-module.html#func_inv func_inv()], [http://www.nmr-relax.com/api/3.3/target_functions.relax_fit-module.html#dfunc_inv dfunc_inv()], [http://www.nmr-relax.com/api/3.3/target_functions.relax_fit-module.html#d2func_inv d2func_inv()], [http://www.nmr-relax.com/api/3.3/target_functions.relax_fit-module.html#jacobian_inv jacobian_inv()] and [http://www.nmr-relax.com/api/3.3/target_functions.relax_fit-module.html#jacobian_chi2_inv jacobian_chi2_inv()] have been created as duplications of the *_exp() functions, but pointing to the exponential_inv*() functions and adding the I<sub>&infin;</sub> dimension.
 
* More editing of the [http://www.nmr-relax.com/manual/relax_fit_select_model.html relax_fit.select_model user function].  The IR and SR abbreviations have been added, and a lot of text cleaned up.
 
* More editing of the [http://www.nmr-relax.com/manual/relax_fit_select_model.html relax_fit.select_model user function].  The IR and SR abbreviations have been added, and a lot of text cleaned up.
 
* Improvement for the [http://www.nmr-relax.com/manual/relax_fit_select_model.html relax_fit.select_model user function] in the GUI.  Unicode text is now being used to display the parameters as R_x and I_0 and to show an infinity symbol in the I<sub>&infin;</sub> parameter.  The R<sub>x</sub> and I<sub>&infin;</sub> parameters have been added to [http://www.nmr-relax.com/api/3.3/lib.text.gui-module.html lib.text.gui] to allow this.
 
* Improvement for the [http://www.nmr-relax.com/manual/relax_fit_select_model.html relax_fit.select_model user function] in the GUI.  Unicode text is now being used to display the parameters as R_x and I_0 and to show an infinity symbol in the I<sub>&infin;</sub> parameter.  The R<sub>x</sub> and I<sub>&infin;</sub> parameters have been added to [http://www.nmr-relax.com/api/3.3/lib.text.gui-module.html lib.text.gui] to allow this.
Line 102: Line 112:
 
* Epydoc docstring fixes for the [http://www.nmr-relax.com/api/3.3/lib.io-module.html lib.io module] - keyword arguments were not correctly identified.  These were identified by Troels in the post at [http://thread.gmane.org/gmane.science.nmr.relax.scm/24565/focus=7384].
 
* Epydoc docstring fixes for the [http://www.nmr-relax.com/api/3.3/lib.io-module.html lib.io module] - keyword arguments were not correctly identified.  These were identified by Troels in the post at [http://thread.gmane.org/gmane.science.nmr.relax.scm/24565/focus=7384].
 
* Created the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.state.State-class.html#test_bug_23017_ieee_754_multidim_numpy_arrays State.test_bug_23017_ieee_754_multidim_numpy_arrays system test].  This is to catch [https://gna.org/bugs/?23017 bug #23017, the multidimensional numpy arrays are not being stored as IEEE 754 arrays in the XML state and results files].  This test checks a rank-2 float64 numpy array stored in the current data pipe against what the IEEE 754 int list should be for it.
 
* Created the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.state.State-class.html#test_bug_23017_ieee_754_multidim_numpy_arrays State.test_bug_23017_ieee_754_multidim_numpy_arrays system test].  This is to catch [https://gna.org/bugs/?23017 bug #23017, the multidimensional numpy arrays are not being stored as IEEE 754 arrays in the XML state and results files].  This test checks a rank-2 float64 numpy array stored in the current data pipe against what the IEEE 754 int list should be for it.
* Grammar fix for a warning from the [http://www.nmr-relax.com/manual/pymol_display.html pymol.display user function].
+
* Grammar fix for a warning from the [http://www.nmr-relax.com/manual/pymol_frame_order.html pymol.frame_order user function].
 
<section end=changes/>
 
<section end=changes/>
  
== Bugfixes ==
+
=== Bugfixes ===
  
 
<section begin=bugfixes/>
 
<section begin=bugfixes/>
Line 112: Line 122:
 
<section end=bugfixes/>
 
<section end=bugfixes/>
  
= Links =
+
== Links ==
  
 
<section begin=links/>
 
<section begin=links/>
Line 118: Line 128:
  
 
* [http://wiki.nmr-relax.com/Relax_3.3.4 Official release notes on the relax wiki].
 
* [http://wiki.nmr-relax.com/Relax_3.3.4 Official release notes on the relax wiki].
* [https://gna.org/forum/forum.php?forum_id=2483 Gna! news item].
+
* {{gna link|url=gna.org/forum/forum.php?forum_id=2483|text=Gna! news item}}.
 
* [http://article.gmane.org/gmane.science.nmr.relax.announce/62 Gmane mailing list archive].
 
* [http://article.gmane.org/gmane.science.nmr.relax.announce/62 Gmane mailing list archive].
 
* [http://www.mail-archive.com/relax-announce%40gna.org/msg00053.html The Mail Archive].
 
* [http://www.mail-archive.com/relax-announce%40gna.org/msg00053.html The Mail Archive].
 
* [https://mail.gna.org/public/relax-announce/2014-12/msg00000.html Local archives].
 
* [https://mail.gna.org/public/relax-announce/2014-12/msg00000.html Local archives].
* [http://marc.info/?l=relax-announce&m=141686534623579&w=2 Mailing list ARChives (MARC)].
+
* [http://marc.info/?l=relax-announce&m=141773006429004&w=2 Mailing list ARChives (MARC)].
  
 
{{:Softpedia}}
 
{{:Softpedia}}
 
<section end=links/>
 
<section end=links/>
  
= Announcements =
+
== Announcements ==
  
 
{{:relax release announcements}}
 
{{:relax release announcements}}
  
  
= See also =
+
== See also ==
  
 
* [http://www.nmr-relax.com/api/3.3/ The relax 3.3 API documentation]
 
* [http://www.nmr-relax.com/api/3.3/ The relax 3.3 API documentation]
 
{{:relax release see also}}
 
{{:relax release see also}}
 
[[Category:Relaxation dispersion analysis]]
 
[[Category:Relaxation dispersion analysis]]

Latest revision as of 11:22, 16 October 2020


Official relax releases
relax logo
relax version 3.3.4
Previous version Next version
← relax 3.3.3 relax 3.3.5 →

Keywords Relaxation curve-fitting, state file
Release type Major feature and bugfix
Release date 3 December 2014

The PDF version of the relax 3.3.4 user manual The relax 3.3.4 user manual

Description

This is a major feature and bugfix release, finally adding support for the saturation recovery and inversion recovery R1 experiments and including a major bug fix for storing multi-dimensional numpy data structures as IEEE 754 byte arrays in the XML output of the relax state and results files.


Download

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).


CHANGES file

Version 3.3.4
(3 December 2014, from /trunk)
http://svn.gna.org/svn/relax/tags/3.3.4


Features

  • Numerous improvements for the relax_fit.select_model user function.
  • Support for the saturation recovery experiment in the relaxation exponential curve-fitting analysis.
  • Support for the inversion recovery experiment in the relaxation exponential curve-fitting analysis.
  • Added a section to the start of the relaxation curve-fitting chapter of the manual to include descriptions of all supported models.
  • Addition of a button to the R1 and R2 GUI analyses for selecting the desired exponential curve model via the relax_fit.select_model user function.


Changes


Bugfixes

  • Bug fix for the pymol.view user function for when no PDB file exists. The user function would fail with an AttributeError when the currently loaded data does not exist as a PDB file. This is now caught and the non-existent PDB is no longer displayed. A better solution might be to dump all the current structural data into a temporary file and load that, all within a try-finally statement to be sure to delete the temporary file. This solution may not be what the user is interested in anyway.
  • Simple fix for bug #23017, the multidimensional numpy arrays are not being stored as IEEE 754 arrays in the XML state and results files. The problem was a relatively recent regression caused by a change to the is_float_matrix() function of the lib.arg_check module. It was simply that the default dims keyword argument value was changed from None to (3, 3). Therefore any call to the function without supplying the dims argument would fail if the matrix was not of the (3, 3) shape.


Links

For reference, the announcement for this release can also be found at following links:

Softpedia also has information about the newest relax releases:


Announcements

If you would like to receive announcements about new relax versions, please subscribe to the relax announcement mailing list. This list only receives ~10 emails per year. It is archived at the SourceForge archives and in The Mail Archive.


See also