<section begin=changes/>
* Mac OS X distribution file: Fixes for the DMG file generation. The <code>.git </code> directories are no longer bundled (the check in <code>setup.py </code> was for <code>.svn </code> directories), and the <code>sobol_test.py </code> script contained a bug that blocked the image generation.
* Release Checklist: Rewrite for the shift to a git repository and to the SourceForge infrastructure.
* Test suite: Temporary file fix for the Bmrb system and GUI tests. The temporary files normally used by these tests were accidentally removed in a previous commit. The result was temporary files being placed in the current directory.
* <code>log_converter.py </code> development script: Conversion from SVN to git. A number of spacing bugs have also been removed, simplifying the release process.* relax manual: The [http://www.nmr-relax.com/api/4.1/docs.latex.find_replicate_titles-module.html find_replicate_titles.py script] can now handle the presence of latex2html. If latex2html had been set up via the <code>docs/devel/latex2html/setup </code> script, then [http://www.nmr-relax.com/api/4.1/docs.latex.find_replicate_titles-module.html find_replicate_titles.py] would fail due to the presence of <code>*.tex </code> files outside of <code>docs/latex/</code>.
* Update from LaTeX2HTML 2008 to 2019. The instructions now point to the latex2html repository fork at SourceForge (https://sourceforge.net/p/nmr-relax/code-latex2html/ci/master/tree/), with the relax manual specific branches.
* GUI tests: Addition of the [http://www.nmr-relax.com/api/4.1/test_suite.gui_tests.test_user_functions.User_functions-class.html#test_bug_2_structure_read_pdb_failure User_functions.test_bug_2_structure_read_pdb_failure test]. This is to catch [https://sourceforge.net/p/nmr-relax/tickets/2/ bug #2], the failure of the [http://www.nmr-relax.com/manual/structure_read_pdb.html structure.read_pdb user function] in the GUI.
* Unit tests: Test of the [http://www.nmr-relax.com/api/4.1/specific_analyses.relax_disp.api.Relax_disp-class.html#sim_init_values dispersion specific analysis API function sim_init_values()]. This is an attempt at catching [https://sourceforge.net/p/nmr-relax/tickets/10/ bug #10], the failure of the 3-site dispersion models when setting the {{:pC}} parameter for Monte Carlo simulations. The failing test however shows that the [http://www.nmr-relax.com/api/4.1/specific_analyses.relax_disp.api.Relax_disp-class.html#sim_init_values sim_init_values() function] probably needs a complete overhaul.
* Dispersion: Improved handling of deselected spins in the [http://www.nmr-relax.com/api/4.1/specific_analyses.relax_disp.parameters-module.html#loop_parameters loop_parameters() function]. This is from the [http://www.nmr-relax.com/api/4.1/specific_analyses.relax_disp.parameters-module.html specific_analyses.relax_disp.parameters module]. The function can now handle the first spins in the cluster being deselected.
* FSFCV configuration: Skip some false positive copyrights in the <code>docs/CHANGES </code> file.
<section end=changes/>
* Fix for [https://sourceforge.net/p/nmr-relax/tickets/2/ bug #2], the failure of the [http://www.nmr-relax.com/manual/structure_read_pdb.html structure.read_pdb user function] in the GUI. The problem was that the file selection argument was being set up incorrectly as two GUI elements - an inactive file selection element and a normal value setting GUI element. Only the second value input GUI element was active (due to the GUI elements being stored in a dictionary, with the first key value being overwritten by the second).
* Fix for [https://sourceforge.net/p/nmr-relax/tickets/3/ bug #3], the absence of user function argument validation within the GUI. The code for the user function argument validation in the prompt/script UIs was simply copied and slightly modified to fit into the GUI user function window execution. All arguments are now passed into the new [http://www.nmr-relax.com/api/4.1/lib.arg_check-module.html#validate_arg lib.arg_check.validate_arg() function] and are checked based on their user function definitions.
* Fix for [https://sourceforge.net/p/nmr-relax/tickets/4/ bug #4], the relax controller in the GUI not displaying text when required. Calls to the captured IO stream <code>flush() </code> methods are now been made in a number of places to allow the controller to show the text when required. This includes after printing out the intro text, after any captured and GUI handled errors, after clicking on the "<code>help→licence" </code> menu entry, after thread exceptions, and after a number of GUI message dialogs. The bug is only present in [[relax 4.1.0]].* Typo fix in the description of the <code>'atomic' </code> argument for the [http://www.nmr-relax.com/manual/structure_rmsd.html structure.rmsd user function].
* Fix for [https://sourceforge.net/p/nmr-relax/tickets/5/ bug #5], the incorrect numpy version check in the relaxation dispersion auto-analysis. The [http://www.nmr-relax.com/api/4.1/dep_check-module.html#version_comparison dep_check.version_comparison() function] is now used for the version comparisons.
* Dispersion: Fix for [https://sourceforge.net/p/nmr-relax/tickets/7/ bug #7], the model list containing '[[No Rex]]' twice. The [http://www.nmr-relax.com/api/4.1/lib.dispersion.variables-module.html#MODEL_LIST_FULL MODEL_LIST_FULL variable] contained the model '[[No Rex]]' twice. The only manifestation of the bug is a RelaxError message showing the full list of models, when a user selects a non-existent dispersion model.
* Dispersion: Fix for [https://sourceforge.net/p/nmr-relax/tickets/6/ bug #6], the incorrect parameter counting for 3-site models with spin clustering. The issue was that the list of spin-specific parameters was incomplete. To resolve this, the parameter names have been shifted into the [http://www.nmr-relax.com/api/4.1/lib.dispersion.variables-module.html lib.dispersion.variables module] lists <code>PARAMS_R1</code>, <code>PARAMS_GLOBAL</code>, and <code>PARAMS_SPIN</code>. By removing the parameter names from other parts of relax, the [http://www.nmr-relax.com/api/4.1/lib.dispersion.variables-module.html lib.dispersion.variables module] will serve as a single point of failure and hence it will much easier to maintain the relaxation dispersion code when new models with new parameters are added.* Dispersion: Fix for [https://sourceforge.net/p/nmr-relax/tickets/8/ bug #8], the accidental modification of the hardcoded variables. The <code>MODEL_PARAMS </code> lists in [http://www.nmr-relax.com/api/4.1/lib.dispersion.variables-module.html lib.dispersion.variables] were accidentally being modified by the [http://www.nmr-relax.com/api/4.1/specific_analyses.relax_disp.model.Model_class-class.html Model_class class] in the [http://www.nmr-relax.com/api/4.1/specific_analyses.relax_disp.model-module.html specific_analyses.relax_disp.model module]. The list for a given model was being set as the self.params list. This list would then have the <code>'r1' </code> parameter pre-pended to it if that parameter is optimised for a model, and hence the [http://www.nmr-relax.com/api/4.1/lib.dispersion.variables-module.html lib.dispersion.variables] list would be permanently modified. Now <code>copy.deepcopy() </code> is being used for all variables to avoid this issue. This bug was uncovered in the unit tests as the [http://www.nmr-relax.com/api/4.1/test_suite.unit_tests._specific_analyses._relax_disp.test_model-module.html _specific_analyses._relax_disp.test_model tests] were causing <code>'r1' </code> to be added, and then the later [http://www.nmr-relax.com/api/4.1/test_suite.unit_tests._specific_analyses._relax_disp.test_parameters-module.html _specific_analyses._relax_disp.test_parameters tests] would fail as <code>'r1' </code> should not be in those lists. This bug is highly unlikely to be encountered by users of relax. You would need to run two analyses, one after the other without closing relax, and the first analysis would need to have {{:r1}} optimised and the second not.
* Dispersion: Fix for [https://sourceforge.net/p/nmr-relax/tickets/9/ bug #9], the failure of the 3-site dispersion models when {{:pB}} and {{:pC}} are zero. When both are zero, for example during a comprehensive grid search when model nesting is not utilised, a divide by zero error occurs. This is now caught and large values (1e100) are set for the rates instead.
* Dispersion: Fix for [https://sourceforge.net/p/nmr-relax/tickets/11/ bug #11], the missing {{:pC}} calculation for the 3-site {{:R1rho}} models. The models '[[NS R1rho 3-site]]' and '[[NS R1rho 3-site linear]]' were simply missing from the list of models for the {{:pC}} parameter.