Difference between revisions of "Relax 3.3.1"

From relax wiki
Jump to navigation Jump to search
(Internal links to the dispersion models.)
(Lots of links to the API documentation.)
Line 52: Line 52:
 
* Fix for raising error when calling showApod, and subprocess module not available.
 
* Fix for raising error when calling showApod, and subprocess module not available.
 
* Fix for the dependency check for showApod in systemtests.
 
* Fix for the dependency check for showApod in systemtests.
* Further extended the protocol for repeated dispersion analysis.  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
+
* Further extended the [http://www.nmr-relax.com/api/3.3/auto_analyses.relax_disp_repeat_cpmg.Relax_disp_rep-class.html protocol for repeated dispersion analysis].  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
* Extended the system test for the protocol for repeated dispersion analysis.  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
+
* Extended the system test for the [http://www.nmr-relax.com/api/3.3/auto_analyses.relax_disp_repeat_cpmg.Relax_disp_rep-class.html protocol for repeated dispersion analysis].  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
 
* Added a relaxation dispersion model profiling log file for relax version [[relax 3.3.0|3.3.0]] vs. [[relax 3.2.3|3.2.3]].  This is the output from the dispersion model profiling master script.  These numbers will be used for the [[relax 3.3.0]] release notes.
 
* Added a relaxation dispersion model profiling log file for relax version [[relax 3.3.0|3.3.0]] vs. [[relax 3.2.3|3.2.3]].  This is the output from the dispersion model profiling master script.  These numbers will be used for the [[relax 3.3.0]] release notes.
 
* Fixes for the [[relax 3.3.0]] vs. [[relax 3.2.3|3.2.3]] dispersion model profiling log file.  The numeric model numbers were incorrectly scaled and a factor of 10 too high.
 
* Fixes for the [[relax 3.3.0]] vs. [[relax 3.2.3|3.2.3]] dispersion model profiling log file.  The numeric model numbers were incorrectly scaled and a factor of 10 too high.
Line 63: Line 63:
 
* Added some more user function ranamings to the translation table.  These were identified while preparing the release notes on the wiki (http://wiki.nmr-relax.com/Category:Release_Notes, http://wiki.nmr-relax.com/Release_notes).
 
* Added some more user function ranamings to the translation table.  These were identified while preparing the release notes on the wiki (http://wiki.nmr-relax.com/Category:Release_Notes, http://wiki.nmr-relax.com/Release_notes).
 
* Stored a frequency dependent dictionary with spectrum IDs and repeated PMG frequencies in setup pipe.  This information will progress out through children pipes.  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
 
* Stored a frequency dependent dictionary with spectrum IDs and repeated PMG frequencies in setup pipe.  This information will progress out through children pipes.  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
* Further extended methods in the class for repeated analysis of dispersion data.  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
+
* Further extended methods in the [http://www.nmr-relax.com/api/3.3/auto_analyses.relax_disp_repeat_cpmg.Relax_disp_rep-class.html class for repeated analysis of dispersion data].  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
 
* Updated the release checklist document, including adding a section about cross-linking.  The cross-linking is important for search engine indexing.
 
* Updated the release checklist document, including adding a section about cross-linking.  The cross-linking is important for search engine indexing.
 
* Created a simple script for printing out the names of all user functions.
 
* Created a simple script for printing out the names of all user functions.
Line 92: Line 92:
 
* Small improvement of the matplotlib plotting of data in the repeated analysis protocol.  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
 
* Small improvement of the matplotlib plotting of data in the repeated analysis protocol.  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
 
* Fix for calling correct folder with test intensities.  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
 
* Fix for calling correct folder with test intensities.  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
* For the class of repeated analysis, implemented method to collect peak intensity, and function to plot the correlation.  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
+
* For the [http://www.nmr-relax.com/api/3.3/auto_analyses.relax_disp_repeat_cpmg.Relax_disp_rep-class.html class of repeated analysis], implemented method to collect peak intensity, and function to plot the correlation.  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
 
* Added system test Relax_disp.test_repeat_cpmg to be skipped, if no matplotlib module exists.  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
 
* Added system test Relax_disp.test_repeat_cpmg to be skipped, if no matplotlib module exists.  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
 
* Added the Gimp XCF file for the logo of the relax wiki (http://wiki.nmr-relax.com).
 
* Added the Gimp XCF file for the logo of the relax wiki (http://wiki.nmr-relax.com).
Line 108: Line 108:
 
* Implemented [http://www.nmr-relax.com/manual/error_analysis_covariance_matrix.html user function relax_fit.rx_err_estimate] in relax_fit to estimate R<sub>x</sub> and I<sub>0</sub> errors from the Jacobian Co-variance matrix.
 
* Implemented [http://www.nmr-relax.com/manual/error_analysis_covariance_matrix.html user function relax_fit.rx_err_estimate] in relax_fit to estimate R<sub>x</sub> and I<sub>0</sub> errors from the Jacobian Co-variance matrix.
 
* Extended system test Relax_fit.test_curve_fitting_height_estimate_error() to test the error estimation method from the Co-variance matrix.  The results seems very similar, if increasing to 2000 Monte Carlo simulations.
 
* Extended system test Relax_fit.test_curve_fitting_height_estimate_error() to test the error estimation method from the Co-variance matrix.  The results seems very similar, if increasing to 2000 Monte Carlo simulations.
* Renamed the pipe_control.monte_carlo module to pipe_control.error_analysis.  This is in preparation for the module to handle all error analysis techniques:  Monte Carlo simulations, covariance matrix, Jackknife simulations, Bootstrapping (which is currently via the Monte Carlo functions), etc.  All current functions are now prepended with 'monte_carlo_*()'.
+
* Renamed the [http://www.nmr-relax.com/api/3.2/pipe_control.monte_carlo-module.html pipe_control.monte_carlo module] to [http://www.nmr-relax.com/api/3.3/pipe_control.error_analysis-module.html pipe_control.error_analysis].  This is in preparation for the module to handle all error analysis techniques:  Monte Carlo simulations, covariance matrix, Jackknife simulations, Bootstrapping (which is currently via the Monte Carlo functions), etc.  All current functions are now prepended with 'monte_carlo_*()'.
* Fix for the old relax 1.2 model-free results file reading.  This is due to the pipe_control.monte_carlo to pipe_control.error_analysis module renaming.
+
* Fix for the old relax 1.2 model-free results file reading.  This is due to the [http://www.nmr-relax.com/api/3.2/pipe_control.monte_carlo-module.html pipe_control.monte_carlo] to [http://www.nmr-relax.com/api/3.3/pipe_control.error_analysis-module.html pipe_control.error_analysis] module renaming.
* Implemented the pipe_control.error_analysis.covariance_matrix() function.  This follows from http://thread.gmane.org/gmane.science.nmr.relax.scm/23526/focus=7096.  It will be used by a new [http://www.nmr-relax.com/manual/error_analysis_covariance_matrix.html error_analysis.covariance_matrix user function].  And it calls the specific API methods model_loop(), covariance_matrix(), and set_error() and the relax library lib.statistics.multifit_covar() function do to most of the work.
+
* Implemented the [http://www.nmr-relax.com/api/3.3/pipe_control.error_analysis-module.html#covariance_matrix pipe_control.error_analysis.covariance_matrix() function].  This follows from http://thread.gmane.org/gmane.science.nmr.relax.scm/23526/focus=7096.  It will be used by a new [http://www.nmr-relax.com/manual/error_analysis_covariance_matrix.html error_analysis.covariance_matrix user function].  And it calls the specific API methods model_loop(), covariance_matrix(), and set_error() and the relax library [http://www.nmr-relax.com/api/3.3/lib.statistics-module.html#multifit_covar lib.statistics.multifit_covar() function] do to most of the work.
 
* Modified the Relax_fit.test_curve_fitting_height_estimate_error system test.  The call to relax_fit.rx_err_estimate has been replaced by the yet-to-be implemented [http://www.nmr-relax.com/manual/error_analysis_covariance_matrix.html error_analysis.covariance_matrix user function].
 
* Modified the Relax_fit.test_curve_fitting_height_estimate_error system test.  The call to relax_fit.rx_err_estimate has been replaced by the yet-to-be implemented [http://www.nmr-relax.com/manual/error_analysis_covariance_matrix.html error_analysis.covariance_matrix user function].
 
* Creation of the [http://www.nmr-relax.com/manual/error_analysis_covariance_matrix.html error_analysis.covariance_matrix user function].  This is simply a code rearrangement.  The relax_fit user function module was duplicated and [http://www.nmr-relax.com/manual/error_analysis_covariance_matrix.html relax_fit.rx_err_estimate] renamed to [http://www.nmr-relax.com/manual/error_analysis_covariance_matrix.html error_analysis.covariance_matrix].  References to the specific analysis have been removed.
 
* Creation of the [http://www.nmr-relax.com/manual/error_analysis_covariance_matrix.html error_analysis.covariance_matrix user function].  This is simply a code rearrangement.  The relax_fit user function module was duplicated and [http://www.nmr-relax.com/manual/error_analysis_covariance_matrix.html relax_fit.rx_err_estimate] renamed to [http://www.nmr-relax.com/manual/error_analysis_covariance_matrix.html error_analysis.covariance_matrix].  References to the specific analysis have been removed.
* Created the specific analysis base API method covariance_matrix().  This defines the arguments required and what is returned by the method.  It raises the RelaxImplementError for all analyses which do not implement this method.
+
* Created the [http://www.nmr-relax.com/api/3.3/specific_analyses.api_base.API_base-class.html#covariance_matrix specific analysis base API method covariance_matrix()].  This defines the arguments required and what is returned by the method.  It raises the RelaxImplementError for all analyses which do not implement this method.
* Modified pipe_control.error_analysis.covariance_matrix().  The call to the API covariance_matrix() method now has the model_info argument passed into it.  For the relaxation curve-fitting, this allows the loop over spin systems to be skipped.
+
* Modified [http://www.nmr-relax.com/api/3.3/pipe_control.error_analysis-module.html#covariance_matrix pipe_control.error_analysis.covariance_matrix()].  The call to the API covariance_matrix() method now has the model_info argument passed into it.  For the relaxation curve-fitting, this allows the loop over spin systems to be skipped.
* Shifted the contents of the specific_analysis.relax_fit.estimate_rx_err module into the API.  The estimate_rx_err() function is now the covariance_matrix() method of the specific API.  The code for calculating the covariance matrix and errors are now in the function pipe_control.error_analysis.covariance_matrix(), so this has been removed.  And the error setting is performed by the set_errors() API method, so that code has been deleted as well.
+
* Shifted the contents of the specific_analysis.relax_fit.estimate_rx_err module into the API.  The estimate_rx_err() function is now the [http://www.nmr-relax.com/api/3.3/specific_analyses.relax_fit.api.Relax_fit-class.html#covariance_matrix covariance_matrix() method of the specific API].  The code for calculating the covariance matrix and errors are now in the [http://www.nmr-relax.com/api/3.3/pipe_control.error_analysis-module.html#covariance_matrix function pipe_control.error_analysis.covariance_matrix()], so this has been removed.  And the error setting is performed by the set_errors() API method, so that code has been deleted as well.
 
* Removed the specific_analyses.relax_fit.estimate_rx_err module import.  The module has been merged into the specific API module.
 
* Removed the specific_analyses.relax_fit.estimate_rx_err module import.  The module has been merged into the specific API module.
* Fix for the pipe_control.error_analysis.covariance_matrix() function.  The set_errors() API method is parameter specific, so a loop over the parameters using the get_param_names() API method has been added.
+
* Fix for the [http://www.nmr-relax.com/api/3.3/pipe_control.error_analysis-module.html#covariance_matrix pipe_control.error_analysis.covariance_matrix() function].  The set_errors() API method is parameter specific, so a loop over the parameters using the get_param_names() API method has been added.
* Removed the estimate_rx_err module from the specific_analyses.relax_fit.__all__ list.  This module was deleted after merger into the api module.
+
* Removed the estimate_rx_err module from the [http://www.nmr-relax.com/api/3.3/specific_analyses.relax_fit-module.html specific_analyses.relax_fit.__all__ list].  This module was deleted after merger into the api module.
 
* Improved the plotting of correlation plot for intensity.  Now the intensity to error is plotted, which is the correct measure of this data.  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
 
* Improved the plotting of correlation plot for intensity.  Now the intensity to error is plotted, which is the correct measure of this data.  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
 
* Implemented a correlation plot for R<sub>eff</sub><sup>2</sup> values to be plotted for different pipes.  This has the R<sub>eff</sub><sup>2</sup>/&sigma;<sub>R<sub>eff</sub><sup>2</sup></sub> plotted, which is the best way to represent this data.  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
 
* Implemented a correlation plot for R<sub>eff</sub><sup>2</sup> values to be plotted for different pipes.  This has the R<sub>eff</sub><sup>2</sup>/&sigma;<sub>R<sub>eff</sub><sup>2</sup></sub> plotted, which is the best way to represent this data.  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
Line 144: Line 144:
 
* Fix for the testing of method is finished when called.  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
 
* Fix for the testing of method is finished when called.  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
 
* Turned on minimisation in system test Relax_disp.test_repeat_cpmg().  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
 
* Turned on minimisation in system test Relax_disp.test_repeat_cpmg().  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
* The lib.spectrum.nmrpipe module has been made independent of the relax source code.  This was discussed at http://thread.gmane.org/gmane.science.nmr.relax.scm/23357/focus=7103.  The change allows the software verification tests pass.  The dep_check module cannot be used in the relax lib package.  Only modules from within lib are allowed to be imported into modules of lib.  The fix now allows the full test suite to pass and hence new relax releases are once again possible.
+
* The [http://www.nmr-relax.com/api/3.3/lib.spectrum.nmrpipe-module.html lib.spectrum.nmrpipe module] has been made independent of the relax source code.  This was discussed at http://thread.gmane.org/gmane.science.nmr.relax.scm/23357/focus=7103.  The change allows the software verification tests pass.  The [http://www.nmr-relax.com/api/3.3/dep_check-module.html dep_check module] cannot be used in the [http://www.nmr-relax.com/api/3.3/lib-module.html relax lib package].  Only modules from within lib are allowed to be imported into [http://www.nmr-relax.com/api/3.3/lib-module.html modules of lib].  The fix now allows the full test suite to pass and hence new relax releases are once again possible.
 
* Created a document which explains how missing copyrights can be found.
 
* Created a document which explains how missing copyrights can be found.
 
* Even more improvements to the shell command for finding missing copyrights.
 
* Even more improvements to the shell command for finding missing copyrights.
Line 160: Line 160:
 
* Modified the Structure.test_collapse_ensemble system test to check the initial values.  This is for sanity reasons as the test coverage of the [http://www.nmr-relax.com/manual/structure_add_atom.html structure.add_atom user function] is poor.
 
* Modified the Structure.test_collapse_ensemble system test to check the initial values.  This is for sanity reasons as the test coverage of the [http://www.nmr-relax.com/manual/structure_add_atom.html structure.add_atom user function] is poor.
 
* Implemented the internal structural object collapse_ensemble() method.  This allows the Structure.test_collapse_ensemble system test to pass.
 
* Implemented the internal structural object collapse_ensemble() method.  This allows the Structure.test_collapse_ensemble system test to pass.
* Created a basic text based progress meter in the new lib.text.progress module.  This is taken from the script test_suite/shared_data/frame_order/cam/generate_base.py.
+
* Created a basic text based progress meter in the new [http://www.nmr-relax.com/api/3.3/lib.text.progress-module.html lib.text.progress module].  This is taken from the script test_suite/shared_data/frame_order/cam/generate_base.py.
 
* Modifications to the User_functions.test_structure_add_atom GUI test.  As lists of lists are now accepted by the [http://www.nmr-relax.com/manual/structure_add_atom.html structure.add_atom user function], the operation in the GUI is now significantly different.  Therefore many checks have been removed from the GUI test.
 
* Modifications to the User_functions.test_structure_add_atom GUI test.  As lists of lists are now accepted by the [http://www.nmr-relax.com/manual/structure_add_atom.html structure.add_atom user function], the operation in the GUI is now significantly different.  Therefore many checks have been removed from the GUI test.
* Updated the minimum minfx dependency version number from 1.0.9 to 1.0.11 in the dep_check module.  This newest version handles infinite target function values preventing optimisation from continuing forever (https://gna.org/forum/forum.php?forum_id=2477).  The 1.0.10 version is also useful as there is full support for gradients and Hessians in the log-barrier constraint algorithm (https://gna.org/forum/forum.php?forum_id=2475).
+
* Updated the minimum minfx dependency version number from 1.0.9 to 1.0.11 in the [http://www.nmr-relax.com/api/3.3/dep_check-module.html dep_check module].  This newest version handles infinite target function values preventing optimisation from continuing forever (https://gna.org/forum/forum.php?forum_id=2477).  The 1.0.10 version is also useful as there is full support for gradients and Hessians in the log-barrier constraint algorithm (https://gna.org/forum/forum.php?forum_id=2475).
* Shifted the specific_analyses.relax_disp.variables module into lib.dispersion.  This is both to minimise circular dependencies, as previously the specific_analyses.relax_disp modules import from target_functions.relax_disp and vice-versa, and to allow the relax library functions to have access to these variables.  This follows from a similar change to the frame order analysis in the frame_order_cleanup branch.
+
* Shifted the [http://www.nmr-relax.com/api/3.2/specific_analyses.relax_disp.variables-module.html specific_analyses.relax_disp.variables module] into [http://www.nmr-relax.com/api/3.3/lib.dispersion.variables-module.html lib.dispersion].  This is both to minimise circular dependencies, as previously the [http://www.nmr-relax.com/api/3.3/specific_analyses.relax_disp-module.html specific_analyses.relax_disp modules] import from target_functions.relax_disp and vice-versa, and to allow the relax library functions to have access to these variables.  This follows from a similar change to the frame order analysis in the frame_order_cleanup branch.
* Dependency fix for the auto_analyses.relax_disp_repeat_cpmg module.  This was causing relax to fail.  SciPy is an optional dependence for relax, but this module caused relax to not start if scipy was not installed.  This was detected by testing relax with PyPy.
+
* Dependency fix for the [http://www.nmr-relax.com/api/3.3/auto_analyses.relax_disp_repeat_cpmg-module.html auto_analyses.relax_disp_repeat_cpmg module].  This was causing relax to fail.  SciPy is an optional dependence for relax, but this module caused relax to not start if scipy was not installed.  This was detected by testing relax with PyPy.
 
* Implemented writing out of particular correlation plots to file.  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
 
* Implemented writing out of particular correlation plots to file.  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
* Created a special internal structural object selection object.  This will be used for massively speeding up the internal structural object.  The use of the lib.selection module by the internal structural object is currently very slow as a huge number of calls to re.search() are required.  The idea is to avoid this by using lib.selection once to populate this new selection object, and then reusing this object to loop over molecules and atoms.
+
* Created a special internal structural object selection object.  This will be used for massively speeding up the internal structural object.  The use of the [http://www.nmr-relax.com/api/3.3/lib.selection-module.html lib.selection module] by the internal structural object is currently very slow as a huge number of calls to re.search() are required.  The idea is to avoid this by using [http://www.nmr-relax.com/api/3.3/lib.selection-module.html lib.selection] once to populate this new selection object, and then reusing this object to loop over molecules and atoms.
* Added the selection() method to the internal structural object.  This parses the atom ID string using the lib.selection module, loops over the molecules and atoms, performs matches using re.search() via lib.selection, and populates and returns the new Internal_selection object.  This can be used to pre-process the atom ID string to save huge amounts of time.
+
* Added the selection() method to the internal structural object.  This parses the atom ID string using the [http://www.nmr-relax.com/api/3.3/lib.selection-module.html lib.selection module], loops over the molecules and atoms, performs matches using re.search() via [http://www.nmr-relax.com/api/3.3/lib.selection-module.html lib.selection], and populates and returns the new Internal_selection object.  This can be used to pre-process the atom ID string to save huge amounts of time.
 
* The internal structural object validate_models() method now accepts the verbosity argument.  This is used to silence printouts.
 
* The internal structural object validate_models() method now accepts the verbosity argument.  This is used to silence printouts.
 
* Fixes for the new structural object Internal_selection object.  The atom indices are not stored via the molecule index.
 
* Fixes for the new structural object Internal_selection object.  The atom indices are not stored via the molecule index.
Line 179: Line 179:
 
* Reactivated the Relax_disp.test_m61b_data_to_m61b system test, but blacklisted it.  This will allow the test to be executed if the --no-skip command line option is used.
 
* Reactivated the Relax_disp.test_m61b_data_to_m61b system test, but blacklisted it.  This will allow the test to be executed if the --no-skip command line option is used.
 
* Created the Bmrb.test_bug_22703_display_empty system and GUI test.  This system test catches [https://gna.org/bugs/?22703 bug #22703, the failure of the [http://www.nmr-relax.com/manual/bmrb_display.html bmrb.display user function] with an AttributeError when no data is present].  It is simultaneously a system and GUI test, as the GUI test class inherits directly from the system test class.
 
* Created the Bmrb.test_bug_22703_display_empty system and GUI test.  This system test catches [https://gna.org/bugs/?22703 bug #22703, the failure of the [http://www.nmr-relax.com/manual/bmrb_display.html bmrb.display user function] with an AttributeError when no data is present].  It is simultaneously a system and GUI test, as the GUI test class inherits directly from the system test class.
* Created the pipe_control.spectrometer.check_setup() function.  This follows the design on the wiki page http://wiki.nmr-relax.com/Relax_source_design.  This is for checking if spectrometer information has been set up.
+
* Created the [http://www.nmr-relax.com/api/3.3/pipe_control.spectrometer-module.html#check_spectrometer_setup_func pipe_control.spectrometer.check_setup() function].  This follows the design on the wiki page http://wiki.nmr-relax.com/Relax_source_design.  This is for checking if spectrometer information has been set up.
* Created the RelaxNoFrqWarning warning class for warning that no spectrometer information is present.
+
* Created the [http://www.nmr-relax.com/api/3.3/lib.warnings.RelaxNoFrqWarning-class.html RelaxNoFrqWarning warning class for warning that no spectrometer information is present].
* Renamed the pipe_control.spectrometer.check_setup() function to check_spectrometer_setup().  This is so it can be used without confusion outside of the module.
+
* Renamed the [http://www.nmr-relax.com/api/3.3/pipe_control.spectrometer-module.html#check_spectrometer_setup_func pipe_control.spectrometer.check_setup() function to check_spectrometer_setup()].  This is so it can be used without confusion outside of the module.
* Fix for a broken elif block in the new pipe_control.spectrometer.check_spectrometer_setup() function.
+
* Fix for a broken elif block in the new [http://www.nmr-relax.com/api/3.3/pipe_control.spectrometer-module.html#check_spectrometer_setup_func pipe_control.spectrometer.check_spectrometer_setup() function].
* The model-free bmrb_write() API method now checks for spectrometer information.  This is via a call to the pipe_control.spectrometer.check_spectrometer_setup() function.
+
* The model-free bmrb_write() API method now checks for spectrometer information.  This is via a call to the[http://www.nmr-relax.com/api/3.3/pipe_control.spectrometer-module.html#check_spectrometer_setup_func  pipe_control.spectrometer.check_spectrometer_setup() function].
 
* Modified the Bmrb.test_bug_22703_display_empty system/GUI test to catch the RelaxNoFrqError.
 
* Modified the Bmrb.test_bug_22703_display_empty system/GUI test to catch the RelaxNoFrqError.
* Created a special Check class based on the strategy design pattern.  This is in the new lib.checks module.  The class will be used to simplify and unify all of the check_*() functions in the pipe_control and specific_analyses packages.
+
* Created a special [http://www.nmr-relax.com/api/3.3/lib.checks.Check-class.html Check class based on the strategy design pattern].  This is in the new [http://www.nmr-relax.com/api/3.3/lib.checks-module.html lib.checks] module.  The class will be used to simplify and unify all of the check_*() functions in the pipe_control and specific_analyses packages.
* Converted the pipe_control.spectrometer.check_*() functions to the strategy design pattern.  These are now passed into the lib.checks.Check object, and the original functions are now instances of this class.
+
* Converted the pipe_control.spectrometer.check_*() functions to the strategy design pattern.  These are now passed into the [http://www.nmr-relax.com/api/3.3/lib.checks.Check-class.html lib.checks.Check object], and the original functions are now instances of this class.
* Alphabetical ordering of all functions in the pipe_control.pipes module.
+
* Alphabetical ordering of all functions in the [http://www.nmr-relax.com/api/3.3/pipe_control.pipes-module.html pipe_control.pipes module].
* Changed the design of the Check object in lib.checks.  The design of the checking function to call has been modified - it should now return either None if the check passes or an instantiated RelaxError object if not.  This is then used to determine if the __call__() method should return True (when None is received).  Otherwise if escalate is set to 1, the text from the RelaxError object is sent into a RelaxWarning and False is returned.  And if escalate is set to 2, then the error object is simply raised.
+
* Changed the design of the Check object in [http://www.nmr-relax.com/api/3.3/lib.checks-module.html lib.checks].  The design of the checking function to call has been modified - it should now return either None if the check passes or an instantiated RelaxError object if not.  This is then used to determine if the __call__() method should return True (when None is received).  Otherwise if escalate is set to 1, the text from the RelaxError object is sent into a RelaxWarning and False is returned.  And if escalate is set to 2, then the error object is simply raised.
 
* Updated the pipe_control.spectrometer.check_*_func() functions to use the new design.
 
* Updated the pipe_control.spectrometer.check_*_func() functions to use the new design.
 
* Implemented the writing out of parameter values between comparison of NI level.  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
 
* Implemented the writing out of parameter values between comparison of NI level.  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
* Fixes for the lib.checks.Check object.  The __call__() method keyword arguments **kargs needs to be processed inside the method to strip out the escalate argument.
+
* Fixes for the [http://www.nmr-relax.com/api/3.3/lib.checks.Check-class.html lib.checks.Check object].  The __call__() method keyword arguments **kargs needs to be processed inside the method to strip out the escalate argument.
 
* The default value of the escalate argument of the Check.__call__() method is now 2.  This will cause the calls to the check_*() function/objects to default to raising RelaxErrors.
 
* The default value of the escalate argument of the Check.__call__() method is now 2.  This will cause the calls to the check_*() function/objects to default to raising RelaxErrors.
* Changed the behaviour of the lib.checks.Check object again.  This time the registered function is stored rather than converted into a class instance method.  That way the check_*() function-like objects do not need to accept the unused 'self' argument.
+
* Changed the behaviour of the [http://www.nmr-relax.com/api/3.3/lib.checks.Check-class.html lib.checks.Check object] again.  This time the registered function is stored rather than converted into a class instance method.  That way the check_*() function-like objects do not need to accept the unused 'self' argument.
* The data pipe testing function has been converted to the strategy design pattern of the Check object.  The function pipe_control.pipes.test() has also been renamed to check_pipe().
+
* The data pipe testing function has been converted to the strategy design pattern of the Check object.  The function [http://www.nmr-relax.com/api/3.3/pipe_control.pipes-module.html#check_type pipe_control.pipes.test() has also been renamed to check_pipe()].
 
* Created the Bmrb.test_bug_22704_corrupted_state_file system test.  This is to catch [https://gna.org/bugs/?22704 bug #22704, the corrupted relax state files after setting the relax references via the bmrb.software, bmrb.display, or bmrb.write user functions].
 
* Created the Bmrb.test_bug_22704_corrupted_state_file system test.  This is to catch [https://gna.org/bugs/?22704 bug #22704, the corrupted relax state files after setting the relax references via the bmrb.software, bmrb.display, or bmrb.write user functions].
 
* Implemented getting the statistics for parameters and comparing to init NI.  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
 
* Implemented getting the statistics for parameters and comparing to init NI.  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
Line 206: Line 206:
 
* Created the Structure.test_mean system test.  This is to test the functionality of a planned new feature, the [http://www.nmr-relax.com/manual/structure_mean.html structure.mean user function].  This is an analysis aid that will calculate the mean structure from all loaded models.
 
* Created the Structure.test_mean system test.  This is to test the functionality of a planned new feature, the [http://www.nmr-relax.com/manual/structure_mean.html structure.mean user function].  This is an analysis aid that will calculate the mean structure from all loaded models.
 
* Implemented the [http://www.nmr-relax.com/manual/structure_mean.html structure.mean user function] frontend.  The backend is currently just a stub function.
 
* Implemented the [http://www.nmr-relax.com/manual/structure_mean.html structure.mean user function] frontend.  The backend is currently just a stub function.
* Fixes and simplifications for the pipe_control.pipes.check_pipe() checking object.  One of the RelaxError classes were not initialised and the docstring was incorrect.
+
* Fixes and simplifications for the [http://www.nmr-relax.com/api/3.3/pipe_control.pipes-module.html#check_type pipe_control.pipes.check_pipe() checking object].  One of the RelaxError classes were not initialised and the docstring was incorrect.
* Created the pipe_control.structure.main.check_structure() checking object.  This will be used for providing much more detailed feedback for when structural information is missing.
+
* Created the [http://www.nmr-relax.com/api/3.3/pipe_control.structure.main-module.html#check_structure_func pipe_control.structure.main.check_structure() checking object].  This will be used for providing much more detailed feedback for when structural information is missing.
* Converted all of the pipe_control.structure.main functions to use the check_structure() object.  This standardises and improves all of the checks.
+
* Converted all of the [http://www.nmr-relax.com/api/3.3/pipe_control.structure.main-module.html#check_structure_func pipe_control.structure.main functions to use the check_structure() object].  This standardises and improves all of the checks.
 
* Some fixes and additional checks for the Structure.test_mean system test.
 
* Some fixes and additional checks for the Structure.test_mean system test.
* Implemented the backend of the [http://www.nmr-relax.com/manual/structure_mean.html structure.mean user function].  This primarily occurs within the internal structural object in the new mean() method.  The pipe_control.structure.main.mean() function simply checks if the current data pipe is correctly set up and then calls the structural object mean() method.
+
* Implemented the backend of the [http://www.nmr-relax.com/manual/structure_mean.html structure.mean user function].  This primarily occurs within the internal structural object in the new mean() method.  The [http://www.nmr-relax.com/api/3.3/pipe_control.structure.main-module.html#mean pipe_control.structure.main.mean() function] simply checks if the current data pipe is correctly set up and then calls the structural object mean() method.
 
* Created the Structure.test_align system test.  This will be used to test the yet to be implemented [http://www.nmr-relax.com/manual/structure_align.html structure.align user function].  This user function will be similar to the [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose user function] but will be designed so that structures with different primary and atomic sequences can be superimposed.
 
* Created the Structure.test_align system test.  This will be used to test the yet to be implemented [http://www.nmr-relax.com/manual/structure_align.html structure.align user function].  This user function will be similar to the [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose user function] but will be designed so that structures with different primary and atomic sequences can be superimposed.
 
* Created the frontend of the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function].  This is almost the same as that of the [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose user function] except that the pipes argument has been added and the titles and description changed to indicate the differences.
 
* Created the frontend of the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function].  This is almost the same as that of the [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose user function] except that the pipes argument has been added and the titles and description changed to indicate the differences.
 
* Registered the new user function argument type 'int_list_of_lists' in the prompt UI.  This is to allow for lists of lists of integers, as used for the model argument in the new [http://www.nmr-relax.com/manual/structure_align.html structure.align user function].
 
* Registered the new user function argument type 'int_list_of_lists' in the prompt UI.  This is to allow for lists of lists of integers, as used for the model argument in the new [http://www.nmr-relax.com/manual/structure_align.html structure.align user function].
* Modified the lib.arg_check.is_int_list() function to accept the list_of_lists Boolean argument.  This updates the function to have the same functionality as is_str_list(), allows for lists of lists of int to be checked.
+
* Modified the [http://www.nmr-relax.com/api/3.3/lib.arg_check-module.html#is_int_list lib.arg_check.is_int_list() function] to accept the list_of_lists Boolean argument.  This updates the function to have the same functionality as is_str_list(), allows for lists of lists of int to be checked.
 
* Extended the Structure.test_align system test to throughly check the structural data.  This includes changing the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function] call to use 'fit to first' and carefully checking the new atomic coordinates.
 
* Extended the Structure.test_align system test to throughly check the structural data.  This includes changing the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function] call to use 'fit to first' and carefully checking the new atomic coordinates.
 
* Modified the Structure.test_align system test so that translations and rotations match the algorithm.  This allows the output of the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function] to be checked to see if the rotation matrix and translation vector found match that used to shift the original structures.
 
* Modified the Structure.test_align system test so that translations and rotations match the algorithm.  This allows the output of the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function] to be checked to see if the rotation matrix and translation vector found match that used to shift the original structures.
 
* Implemented the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function] backend.  This is similar to the [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose user function], however the coordinate data structure only contains atoms which are in common to all structures.
 
* Implemented the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function] backend.  This is similar to the [http://www.nmr-relax.com/manual/structure_superimpose.html structure.superimpose user function], however the coordinate data structure only contains atoms which are in common to all structures.
* The pipe_control.structure.main functions translate() and rotate() now accept the pipe_name argument.  This is used to translate and rotate structures in different data pipes, as required by the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function].
+
* The [http://www.nmr-relax.com/api/3.3/pipe_control.structure.main-module.html pipe_control.structure.main] functions [http://www.nmr-relax.com/api/3.3/pipe_control.structure.main-module.html#translate translate()] and [http://www.nmr-relax.com/api/3.3/pipe_control.structure.main-module.html#rotate rotate()] now accept the pipe_name argument.  This is used to translate and rotate structures in different data pipes, as required by the [http://www.nmr-relax.com/manual/structure_align.html structure.align user function].
* The pipe_control.structure.main.check_structure() checking object now accepts the pipe_name argument.  This allows structural data to be checked for in different data pipes without having to switch to them.
+
* The [http://www.nmr-relax.com/api/3.3/pipe_control.structure.main-module.html#check_structure_func pipe_control.structure.main.check_structure() checking object] now accepts the pipe_name argument.  This allows structural data to be checked for in different data pipes without having to switch to them.
 
* Modified the Structure.test_align system test to call the [http://www.nmr-relax.com/manual/structure_write_pdb.html structure.write_pdb user function].  This sets the file name to sys.stdout so that the original structure and the final aligned structures are output to STDOUT for debugging purposes.
 
* Modified the Structure.test_align system test to call the [http://www.nmr-relax.com/manual/structure_write_pdb.html structure.write_pdb user function].  This sets the file name to sys.stdout so that the original structure and the final aligned structures are output to STDOUT for debugging purposes.
 
* Created the Structure.test_delete_atom system test.  This is used to test the deletion of a single atom using the [http://www.nmr-relax.com/manual/structure_delete.html structure.delete user function].
 
* Created the Structure.test_delete_atom system test.  This is used to test the deletion of a single atom using the [http://www.nmr-relax.com/manual/structure_delete.html structure.delete user function].
Line 225: Line 225:
 
* Fix for the new [http://www.nmr-relax.com/manual/structure_align.html structure.align user function].  The translation and rotation of the structures at the end to the aligned positions was being incorrectly performed.
 
* Fix for the new [http://www.nmr-relax.com/manual/structure_align.html structure.align user function].  The translation and rotation of the structures at the end to the aligned positions was being incorrectly performed.
 
* Loosened some checks in the Structure.test_align system test to allow it to pass.  Some self.assertEqual() checks for the atomic coordinates have been replaced by self.assertAlmostEqual() to allow for small machine precision differences.
 
* Loosened some checks in the Structure.test_align system test to allow it to pass.  Some self.assertEqual() checks for the atomic coordinates have been replaced by self.assertAlmostEqual() to allow for small machine precision differences.
* Modified the lib.arg_check.is_str_or_inst() to handle cStringIO objects.  This allows sys.stdout to be used as a file object in the relax test suite.
+
* Modified the [http://www.nmr-relax.com/api/3.3/lib.arg_check-module.html#is_str_or_inst lib.arg_check.is_str_or_inst() function] to handle cStringIO objects.  This allows sys.stdout to be used as a file object in the relax test suite.
* Modified the lib.arg_check.is_str_or_inst() function to work with Python 3.  Instead of checking for cStringIO.OutputType, which does not exist in Python 3, the argument is simply checked to see if it has a write() method.
+
* Modified the [http://www.nmr-relax.com/api/3.3/lib.arg_check-module.html#is_str_or_inst lib.arg_check.is_str_or_inst() function] to work with Python 3.  Instead of checking for cStringIO.OutputType, which does not exist in Python 3, the argument is simply checked to see if it has a write() method.
 
* Print out of the number of all R<sub>eff</sub><sup>2</sup> points, if they are different between analysis.  This can become an issue if a single intensity point has slipped into noise, due to low quality of spectrum reconstruction.  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
 
* Print out of the number of all R<sub>eff</sub><sup>2</sup> points, if they are different between analysis.  This can become an issue if a single intensity point has slipped into noise, due to low quality of spectrum reconstruction.  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
 
* Implemented statistics for R<sub>eff</sub><sup>2</sup> values.  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
 
* Implemented statistics for R<sub>eff</sub><sup>2</sup> values.  [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
Line 244: Line 244:
 
* Made initial preparation to loop over clustered spins and IDs for the minimise.calculate user function call.  [https://gna.org/bugs/?22754 Bug #22754: The minimise.calculate user function does not calculate &chi;<sup>2</sup> value for clustered residues].
 
* Made initial preparation to loop over clustered spins and IDs for the minimise.calculate user function call.  [https://gna.org/bugs/?22754 Bug #22754: The minimise.calculate user function does not calculate &chi;<sup>2</sup> value for clustered residues].
 
* Implemented looping over spin-clusters when issuing a minimise.calculate().  [https://gna.org/bugs/?22754 Bug #22754: The minimise.calculate user function does not calculate &chi;<sup>2</sup> value for clustered residues].
 
* Implemented looping over spin-clusters when issuing a minimise.calculate().  [https://gna.org/bugs/?22754 Bug #22754: The minimise.calculate user function does not calculate &chi;<sup>2</sup> value for clustered residues].
* Made back_calc_r2eff() in optimisation module use the spin and ID list instead.  [https://gna.org/bugs/?22754 Bug #22754: The minimise.calculate user function does not calculate &chi;<sup>2</sup> value for clustered residues].
+
* Made [http://www.nmr-relax.com/api/3.3/specific_analyses.relax_disp.optimisation-module.html#back_calc_r2eff back_calc_r2eff() in optimisation module] use the spin and ID list instead.  [https://gna.org/bugs/?22754 Bug #22754: The minimise.calculate user function does not calculate &chi;<sup>2</sup> value for clustered residues].
 
* Fix for graph plotting functionality to send spins as list of one spins.  [https://gna.org/bugs/?22754 Bug #22754: The minimise.calculate user function does not calculate &chi;<sup>2</sup> value for clustered residues].
 
* Fix for graph plotting functionality to send spins as list of one spins.  [https://gna.org/bugs/?22754 Bug #22754: The minimise.calculate user function does not calculate &chi;<sup>2</sup> value for clustered residues].
 
* Fix for calling back_calc_r2eff with the new argument keywords, and use list of spin and spin IDs.  [https://gna.org/bugs/?22754 Bug #22754: The minimise.calculate user function does not calculate &chi;<sup>2</sup> value for clustered residues].
 
* Fix for calling back_calc_r2eff with the new argument keywords, and use list of spin and spin IDs.  [https://gna.org/bugs/?22754 Bug #22754: The minimise.calculate user function does not calculate &chi;<sup>2</sup> value for clustered residues].
Line 270: Line 270:
 
* Modified the printouts for the unit tests when running with the --time command line option.  The test name is now being processed.  The leading 'test_suite.unit_tests.' text is now stripped out.  And the remaining text is split into the module name and the test name.  This is to allow the unit test module name to be more easily identifiable, so it can then be used as a command line option to allow only a subset of tests to be performed.
 
* Modified the printouts for the unit tests when running with the --time command line option.  The test name is now being processed.  The leading 'test_suite.unit_tests.' text is now stripped out.  And the remaining text is split into the module name and the test name.  This is to allow the unit test module name to be more easily identifiable, so it can then be used as a command line option to allow only a subset of tests to be performed.
 
* Modified the help strings for the test suite options shown when 'relax -h' is run.  The ability to specify individual tests (or modules of tests for the unit tests) is now documented.  The '--time' option help string has also been edited.
 
* Modified the help strings for the test suite options shown when 'relax -h' is run.  The ability to specify individual tests (or modules of tests for the unit tests) is now documented.  The '--time' option help string has also been edited.
* Fix for the Bmrb.test_bug_22704_corrupted_state_file GUI test.  This was failing because the setUp() method in the inherited Bmrb system test module was being overwritten by the default Unittest.setUp() method.  Therefore the system test setUp() method has been copied into the GUI test class.
+
* Fix for the [http://www.nmr-relax.com/api/3.3/test_suite.gui_tests.bmrb.Bmrb-class.html Bmrb.test_bug_22704_corrupted_state_file GUI test].  This was failing because the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.bmrb.Bmrb-class.html#setUp setUp() method in the inherited Bmrb system test module] was being overwritten by the default Unittest.setUp() method.  Therefore the system test [http://www.nmr-relax.com/api/3.3/test_suite.gui_tests.bmrb.Bmrb-class.html#setUp setUp() method has been copied into the GUI test class].
* Fix for the Test_value.test_value_set_r1_rit test of the _pipe_control.test_value unit test module.  This is a general fix for all unit test modules which use the test_suite.unit_tests.value_testing_base.Value_testing_base base class.  After the molecules, residues and spins are manually created, the pipe_control.mol_res_spin.metadata_update() function is called to make sure that all of the private and volatile metadata have been correctly created, so that the other pipe_control.mol_res_spin module functions can operate correctly.
+
* Fix for the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._pipe_control.test_value.Test_value-class.html#test_value_set_r1_rit Test_value.test_value_set_r1_rit test] of the [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests._pipe_control.test_value-module.html _pipe_control.test_value unit test module].  This is a general fix for all unit test modules which use the test_suite.unit_tests.value_testing_base.Value_testing_base base class.  After the molecules, residues and spins are manually created, the [http://www.nmr-relax.com/api/3.3/pipe_control.mol_res_spin-module.html#metadata_update pipe_control.mol_res_spin.metadata_update() function] is called to make sure that all of the private and volatile metadata have been correctly created, so that the other [http://www.nmr-relax.com/api/3.3/pipe_control.mol_res_spin-module.html pipe_control.mol_res_spin module] functions can operate correctly.
 
* Removal of repetitive code in the relaxation dispersion model_loop() API method.  The spin loop does not need to be called twice, instead the if statements have been modified to better direct the code execution.
 
* Removal of repetitive code in the relaxation dispersion model_loop() API method.  The spin loop does not need to be called twice, instead the if statements have been modified to better direct the code execution.
 
* Added script to simulate dispersion profiles at different settings.  This shows that something is wrong.  The back-calculated values in the graphs are not equal to the interpolated values.  There must be something wrong somewhere.  This list shows the &chi;<sup>2</sup> values and, judging from the dispersion graphs, this simply cannot be true.
 
* Added script to simulate dispersion profiles at different settings.  This shows that something is wrong.  The back-calculated values in the graphs are not equal to the interpolated values.  There must be something wrong somewhere.  This list shows the &chi;<sup>2</sup> values and, judging from the dispersion graphs, this simply cannot be true.
Line 278: Line 278:
 
* Modified the example data, after issue with parameters was fixed.
 
* Modified the example data, after issue with parameters was fixed.
 
<section end=changes/>
 
<section end=changes/>
 +
  
 
== Bugfixes ==
 
== Bugfixes ==
Line 285: Line 286:
 
* Fix for the internal structural object get_model() method - it now actually returns the model.
 
* Fix for the internal structural object get_model() method - it now actually returns the model.
 
* Fixes for the [http://www.nmr-relax.com/manual/structure_add_atom.html structure.add_atom user function] to allow for list of lists for the atomic position.  This allows different coordinates to be supplied for each model.
 
* Fixes for the [http://www.nmr-relax.com/manual/structure_add_atom.html structure.add_atom user function] to allow for list of lists for the atomic position.  This allows different coordinates to be supplied for each model.
* Added safety checks for NaN values to the lib.structure.pdb_write module.  This is within the _record_validate() function.  The check prevents the creation of invalid PDB files.
+
* Added safety checks for NaN values to the [http://www.nmr-relax.com/api/3.3/lib.structure.pdb_write-module.html lib.structure.pdb_write module].  This is within the _record_validate() function.  The check prevents the creation of invalid PDB files.
 
* Fix for the experimental information data pipe object when converting to XML state and results files.  This is a partial fix for [https://gna.org/bugs/?22704 bug #22704, the corrupted relax state files after setting the relax references via the bmrb.software, bmrb.display, or bmrb.write user functions].  The names and descriptions for the software, citation and script list objects were incorrectly set.  These have been fixed so that the name of the data structure and the real description is present in the XML state or results file instead of <relax_list desc='relax list container'>.
 
* Fix for the experimental information data pipe object when converting to XML state and results files.  This is a partial fix for [https://gna.org/bugs/?22704 bug #22704, the corrupted relax state files after setting the relax references via the bmrb.software, bmrb.display, or bmrb.write user functions].  The names and descriptions for the software, citation and script list objects were incorrectly set.  These have been fixed so that the name of the data structure and the real description is present in the XML state or results file instead of <relax_list desc='relax list container'>.
 
* Fix for the experimental information data pipe object when converting to XML state and results files.  This is a partial fix for [https://gna.org/bugs/?22704 bug #22704, the corrupted relax state files after setting the relax references via the bmrb.software, bmrb.display, or bmrb.write user functions].  The names and descriptions for the software, citation and script list objects were incorrectly set.  These have been fixed so that the name of the data structure and the real description is present in the XML state or results file instead of <relax_list desc='relax list container'>.
 
* Fix for the experimental information data pipe object when converting to XML state and results files.  This is a partial fix for [https://gna.org/bugs/?22704 bug #22704, the corrupted relax state files after setting the relax references via the bmrb.software, bmrb.display, or bmrb.write user functions].  The names and descriptions for the software, citation and script list objects were incorrectly set.  These have been fixed so that the name of the data structure and the real description is present in the XML state or results file instead of <relax_list desc='relax list container'>.
 
* Fix for the cdp.exp_info.software data structure setup.  This is a partial fix for [https://gna.org/bugs/?22704 bug #22704, the corrupted relax state files after setting the relax references via the bmrb.software, bmrb.display, or bmrb.write user functions].  The Element data container name was being replaced by the software name, making it impossible to restore from the XML.
 
* Fix for the cdp.exp_info.software data structure setup.  This is a partial fix for [https://gna.org/bugs/?22704 bug #22704, the corrupted relax state files after setting the relax references via the bmrb.software, bmrb.display, or bmrb.write user functions].  The Element data container name was being replaced by the software name, making it impossible to restore from the XML.
* Implemented the cdp.exp_info.from_xml() method to correctly restore the experimental info structure.  This fixes [https://gna.org/bugs/?22704 bug #22704, the corrupted relax state files after setting the relax references via the bmrb.software, bmrb.display, or bmrb.write user functions].  This custom ExpInfo.from_xml() method is required to properly recreate the software, script and citation list data structures of the cdp.exp_info data structure, as these are special RelaxListType objects populated by Element objects (both from data_store.data_classes).
+
* Implemented the cdp.exp_info.from_xml() method to correctly restore the experimental info structure.  This fixes [https://gna.org/bugs/?22704 bug #22704, the corrupted relax state files after setting the relax references via the bmrb.software, bmrb.display, or bmrb.write user functions].  This custom ExpInfo.from_xml() method is required to properly recreate the software, script and citation list data structures of the cdp.exp_info data structure, as these are special RelaxListType objects populated by Element objects (both from [http://www.nmr-relax.com/api/3.3/data_store.data_classes-module.html data_store.data_classes]).
 
* Bug fix for the [http://www.nmr-relax.com/manual/structure_delete.html structure.delete user function].  When individual atoms are deleted, the bonded atom data structure is no correctly updated to remove the now non-existent atom.
 
* Bug fix for the [http://www.nmr-relax.com/manual/structure_delete.html structure.delete user function].  When individual atoms are deleted, the bonded atom data structure is no correctly updated to remove the now non-existent atom.
 
* Another bug fix for the [http://www.nmr-relax.com/manual/structure_delete.html structure.delete user function] when deleting individual atoms.  The bonded atom data structure consisting of indices requires all indices after the deleted atom to be decremented by 1.
 
* Another bug fix for the [http://www.nmr-relax.com/manual/structure_delete.html structure.delete user function] when deleting individual atoms.  The bonded atom data structure consisting of indices requires all indices after the deleted atom to be decremented by 1.
 
* Bug fix for the CONECT records created by the [http://www.nmr-relax.com/manual/structure_write_pdb.html structure.write_pdb user function].  The atom numbers inside the structural object were being used for the CONECT records rather than the atom numbers used within the PDB file.
 
* Bug fix for the CONECT records created by the [http://www.nmr-relax.com/manual/structure_write_pdb.html structure.write_pdb user function].  The atom numbers inside the structural object were being used for the CONECT records rather than the atom numbers used within the PDB file.
 
* Fix for writing out point files, when only one point is used.  The code was testing for > 1 points to be present, before writing out point files.  [https://gna.org/bugs/?22753 Bug #22753: dx.map does not work when only 1 point is used].
 
* Fix for writing out point files, when only one point is used.  The code was testing for > 1 points to be present, before writing out point files.  [https://gna.org/bugs/?22753 Bug #22753: dx.map does not work when only 1 point is used].
* Fix for [https://gna.org/bugs/?22563 bug #22563, the NS MMQ 2-site dispersion model running at 32-bit precision and not 64-bit as it should be].  The numpy.complex64 32-bit types have been replaced by numpy.complex128 in the lib.dispersion.ns_mmq_2site module.
+
* Fix for [https://gna.org/bugs/?22563 bug #22563, the NS MMQ 2-site dispersion model running at 32-bit precision and not 64-bit as it should be].  The numpy.complex64 32-bit types have been replaced by numpy.complex128 in the [http://www.nmr-relax.com/api/3.3/lib.dispersion.ns_mmq_2site-module.html lib.dispersion.ns_mmq_2site module].
 
* Critical fix for k<sub>AB</sub> not belonging to list of global parameters.  k<sub>AB</sub> was only changed to the spin of interest, but not for the rest of the cluster.  When the parameter vector is assembled,  "assemble_param_vector(spins=spins)" it takes the global parameter from spin 0.  [https://gna.org/bugs/?22754 Bug #22754: The minimise.calculate user function does not calculate &chi;<sup>2</sup> value for clustered residues].
 
* Critical fix for k<sub>AB</sub> not belonging to list of global parameters.  k<sub>AB</sub> was only changed to the spin of interest, but not for the rest of the cluster.  When the parameter vector is assembled,  "assemble_param_vector(spins=spins)" it takes the global parameter from spin 0.  [https://gna.org/bugs/?22754 Bug #22754: The minimise.calculate user function does not calculate &chi;<sup>2</sup> value for clustered residues].
* Improvements for PDB creation in the relax library for out of bounds structural coordinates.  The lib.structure.pdb_write module atom() and hetatm() functions will now more gracefully handle atomic coordinates which are outside of the PDB limits of [-999.999, 9999.999].  When such coordinates are encountered, instead of producing a too long PDB line which does not pass the validation step, the functions will set the coordinates to the boundary value.  This will at least allow a valid PDB file to be created, despite the warping of the coordinates.
+
* Improvements for PDB creation in the relax library for out of bounds structural coordinates.  The [http://www.nmr-relax.com/api/3.3/lib.structure.pdb_write-module.html lib.structure.pdb_write module] [http://www.nmr-relax.com/api/3.3/lib.structure.pdb_write-module.html#atom atom()] and [http://www.nmr-relax.com/api/3.3/lib.structure.pdb_write-module.html#hetatm hetatm()] functions will now more gracefully handle atomic coordinates which are outside of the PDB limits of [-999.999, 9999.999].  When such coordinates are encountered, instead of producing a too long PDB line which does not pass the validation step, the functions will set the coordinates to the boundary value.  This will at least allow a valid PDB file to be created, despite the warping of the coordinates.
 
* Expanded the list of global dispersion parameters in the set_param_values() API method.  This is a quick expansion of Troels' fix for the k<sub>AB</sub> parameter to allow for the release of [[relax 3.3.1]].  This is a small part of the discussion at http://thread.gmane.org/gmane.science.nmr.relax.scm/23948/focus=7188.
 
* Expanded the list of global dispersion parameters in the set_param_values() API method.  This is a quick expansion of Troels' fix for the k<sub>AB</sub> parameter to allow for the release of [[relax 3.3.1]].  This is a small part of the discussion at http://thread.gmane.org/gmane.science.nmr.relax.scm/23948/focus=7188.
 
<section end=bugfixes/>
 
<section end=bugfixes/>

Revision as of 13:50, 9 October 2014


Description

This is a minor feature and bugfix release. It includes the addition of the error_analysis.covariance_matrix, structure.align, and structure.mean user functions and expanded functionality for the structure.com and structure.delete user functions. Many operations involving the internal structural object are now orders of magnitude faster, with the interatom.define user function showing the greatest speed ups. There are also improvements for helping to upgrade relax scripts to newer relax versions. The numdifftools package is now bundled with relax for allowing numerical gradient, Hessian and Jacobian matrices to be calculated. And the release includes the start of a new protocol for iteratively analysing repetitive relaxation dispersion experiments.


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.1
(9 October 2014, from /trunk)
http://svn.gna.org/svn/relax/tags/3.3.1


Features


Changes


Bugfixes


Links

For reference, the following links are also part of the announcement for this release:


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