* Updated the Baldwin 2014 reference in the relax manual. The [http://pybliographer.org/ pybliographic software] was used to format this BibTeX entry. This was updated as volume and page number information is now available.
* Updated the Morin et al, 2014 paper (the relax relaxation dispersion paper) reference in the manual. The paper now has volume and page information.
* Added some more [http://www.nmr-relax.com/api/3.3/user_functions-module.html#uf_translation_table 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].
* Changed the behaviour of the script for showing user function difference between relax versions. The relax versions are now reversed so the oldest version is at the bottom of the difference printout.
* Added the [[relax 1.0.1]] to [[relax 1.2.15]] user function printouts. The diff.log file has also been updated with all of these versions.
* Updated the user_function_changes.txt document. This now lists all changes in the user function naming from relax version [[relax 1.0.1|1.0.1]] all the way to [[relax 3.3.0]].* Added all remaining user function ranamings since [[relax 2.0.0]] to the [http://www.nmr-relax.com/api/3.3/user_functions-module.html#uf_translation_table translation table]. These were taken directly from the docs/user_function_changes.txt document.* Added all user function ranamings since [[relax 1.3.1]] to the [http://www.nmr-relax.com/api/3.3/user_functions-module.html#uf_translation_table translation table]. These were taken directly from the docs/user_function_changes.txt document. Earlier relax versions are far too different, so this will be the earliest relax version for this [http://www.nmr-relax.com/api/3.3/user_functions-module.html#uf_translation_table translation table]. The relax 1.2 and earlier (and [[relax 1.3.0|1.3.0]]) versions used the run argument throughout and the scripting was so different, that telling the user how to upgrade to new user functions is pointless. And the release date of [[relax 1.2.15]], the last of these old designs was in November 2008.
* Changed the order of the two relax versions being compared for user function changes. This is in the diff.py script and log file and the user_function_changes.txt document.
* Changed the organisation of the files in the docs/ directory. A new docs/devel directory has been created and the 2to3_checklist, Mac_framework_build_3way, package_layout, and prompt_screenshot.txt documents shifted into it. This is to hide or abstract away the development documents so that relax users do not see them when looking into docs/. This should make the directory less intimidating.
* Shifted the Release_Checklist document into docs/devel/ to hide it from users.
* Correction for the [http://www.nmr-relax.com/manual/noe_read.html noe.read] to [http://www.nmr-relax.com/manual/spectrum_read_intensities.html spectrum.read_intensities user function] change. This is for the [http://www.nmr-relax.com/api/3.3/user_functions-module.html#uf_translation_table translation table used to catch old user function calls].
* Initial try to implement plotting in the repeated auto 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].
* Added the Gimp XCF file for the logo of the [http://wiki.nmr-relax.com relax wiki].
* Added [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.relax_fit.Relax_fit-class.html#test_curve_fitting_height_estimate_error system test Relax_fit.test_curve_fitting_height_estimate_error()] for the manual and automated analysis of exponential fit. This is to prepare for new methods in the auto analysis protocol.
* In the [http://www.nmr-relax.com/api/3.3/auto_analyses.relax_fit.Relax_fit-class.html auto analysis of exponential fitting], changed the minimisation method from simplex to Newton, to speed-up the fitting. This is for master Monte Carlo simulations.
* In the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.relax_fit.Relax_fit-class.html#test_curve_fitting_height_estimate_error system test Relax_fit.test_curve_fitting_height_estimate_error()], moved the auto-detection of replicated spectra into the manual method. This is to prepare for auto-mated detection of replicates.
* Implemented a method to automatically find duplicates of spectrum in exponential fit. This is to ease the user intervention for error analysis, if this has been forgotten.
* Expanded the wiki instructions in the release checklist document. This includes a number of steps for significantly improving the release notes: External links to the Gna! trackers with full descriptions, external links to the HTML user manual for all user functions, internal links to release notes of other relax versions, internal links to wiki pages for all models from all theories, and HTML formatting of all symbols/parameters/etc.
* Introduction of the model argument to the [http://www.nmr-relax.com/manual/structure_delete.html structure.delete user function]. This argument is passed all the way into the internal structural object, but is not used yet.
* The model argument in the [http://www.nmr-relax.com/manual/structure_delete.html structure.delete user function] is now operational. In the internal object, it has two functions. When the atom_id argument is none, then new [http://www.nmr-relax.com/api/3.3/lib.structure.internal.models.ModelList-class.html#delete_model ModelList.delete_model() function ] is being called to remove the entire model from the list of structural models. When the atom_id argument is supplied, then only the corresponding atoms in the given model will be deleted.
* Expanded the checking in the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_delete_model Structure.test_delete_model system test]. Now a number of structural model loading and deletion scenarios are tested.
* Implemented back-end function to estimate R<sub>x</sub> and I<sub>0</sub> errors from Jacobian matrix. This is to prepare for user function in relax_fit, to estimate errors.
* 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 [http://www.nmr-relax.com/api/3.3/specific_analyses.api_base.API_base-class.html#model_loop model_loop()], [http://www.nmr-relax.com/api/3.3/specific_analyses.api_base.API_base-class.html#covariance_matrix covariance_matrix()], and [http://www.nmr-relax.com/api/3.3/specific_analyses.api_base.API_base-class.html#set_error 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 [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.relax_fit.Relax_fit-class.html#test_curve_fitting_height_estimate_error 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 [http://www.nmr-relax.com/api/3.3/specific_analyses.api_base.API_base-class.html#covariance_matrix 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[http://www.nmr-relax.com/api/3.3/specific_analyses.api_base.API_base-class.html#set_error set_error() API method ] is parameter specific, so a loop over the parameters using the [http://www.nmr-relax.com/api/3.3/specific_analyses.api_base.API_base-class.html#get_param_names 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 the [http://www.nmr-relax.com/api/3.3/lib.structure.internal.object.Internal-class.html#collapse_ensemble internal structural object collapse_ensemble() method]. This allows the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_collapse_ensemble 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 [http://www.nmr-relax.com/api/3.3/test_suite.gui_tests.test_user_functions.User_functions-class.html#test_structure_add_atom 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 [https://gna.org/forum/forum.php?forum_id=2477 newest version handles infinite target function values preventing optimisation from continuing forever]. The [https://gna.org/forum/forum.php?forum_id=2475 1.0.10 version is also useful as there is full support for gradients and Hessians in the log-barrier constraint algorithm].
* 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 [http://www.nmr-relax.com/api/3.2/target_functions.relax_disp-module.html 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 [http://www.nmr-relax.com/api/3.3/lib.structure.internal.object.Internal-class.html#selection 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 [http://www.nmr-relax.com/api/3.3/lib.structure.internal.selection.Internal_selection-class.html Internal_selection object]. This can be used to pre-process the atom ID string to save huge amounts of time.
* The [http://www.nmr-relax.com/api/3.3/lib.structure.internal.object.Internal-class.html#validate_models internal structural object validate_models() method ] now accepts the verbosity argument. This is used to silence printouts.
* Fixes for the new structural object [http://www.nmr-relax.com/api/3.3/lib.structure.internal.selection.Internal_selection-class.html Internal_selection object]. The atom indices are not stored via the molecule index.
* Converted the [http://www.nmr-relax.com/api/3.3/lib.structure.internal.object.Internal-class.html#rotate rotate()] and [http://www.nmr-relax.com/api/3.3/lib.structure.internal.object.Internal-class.html#translate translate()] structural object methods to use the new selection object. The atom_id arguments have been replaced with selection arguments. Therefore all parts of relax which call these methods must first call [http://www.nmr-relax.com/api/3.3/lib.structure.internal.object.Internal-class.html#selection selection()] to obtain the [http://www.nmr-relax.com/api/3.3/lib.structure.internal.selection.Internal_selection-class.html Internal_selection instance].
* Converted all structural object methods to use the selection object rather that atom ID strings. This should have a significant impact on the speed of certain operations within relax. The most obvious effect will be a huge speed up of the [http://www.nmr-relax.com/manual/interatom_define.html interatom.define user function]. There should be speed ups with a number of other user functions relating to structural information. All parts of relax have been updated for the change.
* Implemented the sampling sparseness instead of NI on the graph axis. [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
* Massive speed up of the [http://www.nmr-relax.com/api/3.3/lib.structure.internal.object.Internal-class.html#add_model internal structural object add_model() method]. This speeds up the [http://www.nmr-relax.com/manual/structure_add_model.html structure.add_model user function], as well as many internal relax operations on the structural object. Instead of using the copy.deepcopy() function to duplicate an already existing structural model, now new molecule container objects are created and then the individual elements of the original molecule container data lists are copied one by one. This avoids copying a lot of internal Python junk and hence the copying operation is now orders of magnitude faster.
* Created the new --no-skip relax command line option. This is a debugging option specifically designed for relax developers. It allows all blacklisted tests to be executed, i.e. all blacklists are ignored. These tests would normally be skipped, however this option enables them.
* Fix for the test suite summary printout function for the new --no-skip option. The relax status object was clashing with a variable of the same name.
* 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 [http://www.nmr-relax.com/api/3.3/specific_analyses.model_free.api.Model_free-class.html#bmrb_write 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 [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.bmrb.Bmrb-class.html#test_bug_22703_display_empty Bmrb.test_bug_22703_display_empty system/GUI test ] to catch the [http://www.nmr-relax.com/api/3.3/lib.errors.RelaxNoFrqError-class.html 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.
* Added checks to the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.bmrb.Bmrb-class.html#test_bug_22704_corrupted_state_file Bmrb.test_bug_22704_corrupted_state_file system test]. This is to see if the cdp.exp_info data structure has been correctly restored from the save file.
* Uncommented some checks in the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.bmrb.Bmrb-class.html#test_bug_22704_corrupted_state_file Bmrb.test_bug_22704_corrupted_state_file system test].
* For relaxation dispersion, modified that the Grid grid search and linear constraints for parameter k<sub>AB</sub> is between 0-100. The parameter is only used in the [[TSMFK01]] model. The k<sub>AB</sub> parameter is only for very slow forward exchange rate. The expected values should according to the reference paper: Tollinger, M., Skrynnikov, N. R., Mulder, F. A. A., Forman-Kay, J. D., and Kay, L. E. (2001). Slow dynamics in folded and unfolded states of an sh3 domain. J. Am. Chem. Soc., 123(46), 11341-11352. (10.1021/ja011300z) The paper concerns values of k<sub>AB</sub> in the region 0.1 to 5.0. If the exchange rate is any higher value of this, then another model should be used for the analysis.
* Set the default insignificance value to 0.0 instead of 1.0. [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
* Modified the grid search limits for parameter k<sub>AB</sub> to be between 0.1 and 20.0 rad.s<sup>-1</sup>. This is for the [[TSMFK01]] model, where values much above 10/20 is not expected.
* 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 [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_mean 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 [http://www.nmr-relax.com/api/3.3/lib.structure.internal.object.Internal-class.html#mean 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 [http://www.nmr-relax.com/api/3.3/lib.structure.internal.object.Internal-class.html#mean structural object mean() method].
* Created the [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.structure.Structure-class.html#test_align 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.
* Removed the system test Relax_disp.test_bmrb_sub_cpmg() to be tested in the test-suite. This test will not be implemented, as it requires a large re-write of data structures. [https://gna.org/task/?7858 Task #7858: Make it possible to submit CPMG experiments for BMRB].
* Removed the showing of Matplotlib figures in the test suite. [https://gna.org/task/?7826 Task #7826: Write a Python class for the repeated analysis of dispersion data].
* Implemented [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.relax_disp.Relax_disp-class.html#test_dx_map_clustered system test Relax_disp.test_dx_map_clustered ] to cath catch the missing creation of a point file. [https://gna.org/bugs/?22753 Bug #22753: dx.map does not work when only 1 point is used].
* Inserted a check in [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.relax_disp.Relax_disp-class.html#test_dx_map_clustered system test Relax_disp.test_dx_map_clustered], that a call to [http://www.nmr-relax.com/manual/minimise.calculate.html minimise.calculate] should be the same as the file stored with the clustered χ<sup>2</sup> value. [https://gna.org/bugs/?22754 Bug #22754: The minimise.calculate user function does not calculate χ<sup>2</sup> value for clustered residues].
* Made initial preparation to loop over clustered spins and IDs for the [http://www.nmr-relax.com/manual/minimise.calculate.html minimise.calculate user function ] call. [https://gna.org/bugs/?22754 Bug #22754: The minimise.calculate user function does not calculate χ<sup>2</sup> value for clustered residues].* Implemented looping over spin-clusters when issuing a [http://www.nmr-relax.com/manual/minimise.calculate().html minimise.calculate]. [https://gna.org/bugs/?22754 Bug #22754: The minimise.calculate user function does not calculate χ<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 χ<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 χ<sup>2</sup> value for clustered residues].
* Fix for calling [http://www.nmr-relax.com/api/3.3/specific_analyses.relax_disp.optimisation-module.html#back_calc_r2eff 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 χ<sup>2</sup> value for clustered residues].* Fix for synthetic script calling [http://www.nmr-relax.com/api/3.3/specific_analyses.relax_disp.optimisation-module.html#back_calc_r2eff back_calc_r2eff() ] with old arguments and to use list of spin containers and IDs. [https://gna.org/bugs/?22754 Bug #22754: The minimise.calculate user function does not calculate χ<sup>2</sup> value for clustered residues].* Inserted last test in [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.relax_disp.Relax_disp-class.html#test_dx_map_clusteredtest_dx_map_clustered], to check out the written χ<sup>2</sup> values are as expected. [https://gna.org/bugs/?22754 Bug #22754: The minimise.calculate user function does not calculate χ<sup>2</sup> value for clustered residues].
* Moved the looping over cluster spin IDs into its own function in the API. [https://gna.org/bugs/?22754 Bug #22754: The minimise.calculate user function does not calculate χ<sup>2</sup> value for clustered residues].
* Added the selection string for all the cluster IDs to be parsed back as well. [https://gna.org/bugs/?22754 Bug #22754: The minimise.calculate user function does not calculate χ<sup>2</sup> value for clustered residues].
* Inserted some testing lines for making a dx_map, either global clustered or as a free spin. There is a big difference which dx map you get. It illustrates beautifully the effect of clustering things together. [https://gna.org/bugs/?22754 Bug #22754: The minimise.calculate user function does not calculate χ<sup>2</sup> value for clustered residues].
* Added a BMRB NMR-STAR formatted deposition file for the OMP model-free data for reference. This is because there are no other NMR-STAR formatted files in the relax sources.
* In the [http://www.nmr-relax.com/api/3.3/specific_analyses.relax_disp.api.Relax_disp-class.html#calculate dispersion API calculate()], used the [http://www.nmr-relax.com/api/3.3/specific_analyses.relax_disp.api.Relax_disp-class.html#model_loop API function model_loop() ] to loop over the clusters instead. [https://gna.org/bugs/?22754 Bug #22754: The minimise.calculate user function does not calculate χ<sup>2</sup> value for clustered residues].
* Removed then function loop_cluster_ids() from dispersion API(). This should be implemented elsewhere. [https://gna.org/bugs/?22754 Bug #22754: The minimise.calculate user function does not calculate χ<sup>2</sup> value for clustered residues].
* Updated the [http://www.nmr-relax.com/api/3.3/specific_analyses.relax_disp.api.Relax_disp-class.html#set_param_values API set_param_values() function ] to use [http://www.nmr-relax.com/api/3.3/specific_analyses.relax_disp.api.Relax_disp-class.html#model_loop model_loop() ] to get the spin_ids from the cluster. [https://gna.org/bugs/?22754 Bug #22754: The minimise.calculate user function does not calculate χ<sup>2</sup> value for clustered residues].* Initial try to fix [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 unit test test_value_set_r1_rit()]. The problem is that no spin ID can be generated since the spins are created manually. "AttributeError: 'MoleculeContainer' object has no attribute '_res_name_count' ". [https://gna.org/bugs/?22754 Bug #22754: The minimise.calculate user function does not calculate χ<sup>2</sup> value for clustered residues].* Removed the checking of MODEL_LIST_MMQ, and spin.isotope from [http://www.nmr-relax.com/api/3.3/specific_analyses.relax_disp.optimisation-module.html#back_calc_r2eff optimisation.back_calc_r2eff()], since this check is already covered. [https://gna.org/bugs/?22754 Bug #22754: The minimise.calculate user function does not calculate χ<sup>2</sup> value for clustered residues].* Fix for references to "spin" in [http://www.nmr-relax.com/api/3.3/specific_analyses.relax_disp.optimisation-module.html#back_calc_r2eff optimisation.back_calc_r2eff()]. [https://gna.org/bugs/?22754 Bug #22754: The minimise.calculate user function does not calculate χ<sup>2</sup> value for clustered residues].* Fix for looping performed twice in [http://www.nmr-relax.com/api/3.3/specific_analyses.relax_disp.api.Relax_disp-class.html#model_loop relax_disp API model_loop()]. [https://gna.org/bugs/?22754 Bug #22754: The minimise.calculate user function does not calculate χ<sup>2</sup> value for clustered residues].* Removed unused proton reference in [http://www.nmr-relax.com/api/3.3/specific_analyses.relax_disp.api.Relax_disp-class.html#calculate relax_disp API calculate()]. There is though some problems with these tests (F 1.93 s for Relax_disp.test_korzhnev_2005_15n_dq_data, F 2.01 s for Relax_disp.test_korzhnev_2005_1h_mq_data, F 1.93 s for Relax_disp.test_korzhnev_2005_1h_sq_data). It is unsure where these comes from. [https://gna.org/bugs/?22754 Bug #22754: The minimise.calculate user function does not calculate χ<sup>2</sup> value for clustered residues].
* Fix for epydoc in [http://www.nmr-relax.com/api/3.3/test_suite.system_tests.relax_disp.Relax_disp-class.html#test_dx_map_clustered system test Relax_disp.test_dx_map_clustered].
* Updated all of the Relax_disp.test_korzhnev_2005_*_data system tests. These now have slightly changed parameter values due to the fix of [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].
* 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 [http://www.nmr-relax.com/api/3.3/test_suite.unit_tests.value_testing_base.Value_base_class-class.html 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 [http://www.nmr-relax.com/api/3.3/specific_analyses.relax_disp.api.Relax_disp-class.html#model_loop 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 χ<sup>2</sup> values and, judging from the dispersion graphs, this simply cannot be true.
* Changed bounds for sample scripts to create: 3D iso-surface plot, surface plot and simulation of dispersion curves.
<section begin=bugfixes/>
* Fix for two-point calculation of exponential curve with corrupted data. The two-point calculation is now also skipped, if the measured intensity is 0. This can happen for corrupted intensity files.
* Fix for the [http://www.nmr-relax.com/api/3.3/lib.structure.internal.object.Internal-class.html#get_model 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 [http://www.nmr-relax.com/api/3.3/lib.structure.pdb_write-module.html#_record_validate _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 [http://www.nmr-relax.com/api/3.3/data_store.exp_info.ExpInfo-class.html#from_xml 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 [http://www.nmr-relax.com/api/3.3/data_store.data_classes.RelaxListType-class.html RelaxListType objects ] populated by [http://www.nmr-relax.com/api/3.3/data_store.data_classes.Element-class.html 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.
* 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 χ<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 [http://www.nmr-relax.com/api/3.3/specific_analyses.relax_disp.api.Relax_disp-class.html#set_param_values 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/>