Open main menu

Changes

Relax 3.3.1

5,424 bytes added, 13:50, 9 October 2014
Lots of links to the API documentation.
* Fix for raising error when calling showApod, and subprocess module not available.
* Fix for the dependency check for showApod in systemtests.
* 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 [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.
* 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.
* 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].
* 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.
* Created a simple script for printing out the names of all user functions.
* 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].
* 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 the Gimp XCF file for the logo of the relax wiki (http://wiki.nmr-relax.com).
* 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.
* 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 [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 [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].
* 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 [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 [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 [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.
* 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 [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].
* 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].
* 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].
* 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.
* Even more improvements to the shell command for finding missing copyrights.
* 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.
* 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.
* 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 [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 [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].
* 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 [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.
* Fixes for the new structural object Internal_selection object. The atom indices are not stored via the molecule index.
* 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 [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 [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 [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 [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 [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.
* 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 [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 [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 [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.
* 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 [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.
* 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 [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].
* 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].
* 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.
* 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 [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 [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.
* 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 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].
* 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.
* 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.
* 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 [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.
* 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].
* 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.
* 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 [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].
* 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].
* 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].
* 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 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].
* 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.
* 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 [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.
* 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.
* Modified the example data, after issue with parameters was fixed.
<section end=changes/>
 
== Bugfixes ==
* 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.
* 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 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 [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.
* 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.
* 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 [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].
* 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.
<section end=bugfixes/>
Trusted, Bureaucrats
4,223

edits