* Release checklist document: Updated the text to better match the new release process.
* HTML manual: CSS fix for newer LaTeX2HTML versions. The text width in the HTML appears to now be fixed to a maximum width matching the text dimensions in the PDF. This looks bad together with the wider images and code snippets.
* System tests: Added two tests to catch [https://sourceforge.net/p/nmr-relax/tickets/12/ bug #12, the failure to catch the '#' character when setting the molecule name]. The tests are [http://www.nmr-relax.com/api/4.1/test_suite.system_tests.structure.Structure-class.html#test_bug_12_hash_in_mol_name_via_arg Structure.test_bug_12_hash_in_mol_name_via_arg ] and [http://www.nmr-relax.com/api/4.1/test_suite.system_tests.structure.Structure-class.html#test_bug_12_hash_in_mol_name_via_file Structure.test_bug_12_hash_in_mol_name_via_file]. These cover the two ways a '#' character can enter a molecule name - via the file name or via the set_mol_name argument. Both the [http://www.nmr-relax.com/manual/structure_read_pdb.html structure.read_pdb] and [http://www.nmr-relax.com/manual/structure_read_xyz.html structure.read_xyz] user functions are checked.* Test suite: 2 new system tests to catch the failure of reading newer Bruker DC files. The system tests are [http://www.nmr-relax.com/api/4.1/test_suite.system_tests.bruker.Bruker-class.html#test_bug_13_T1_read_fail Bruker.test_bug_13_T1_read_fail ] and [http://www.nmr-relax.com/api/4.1/test_suite.system_tests.bruker.Bruker-class.html#test_bug_13_T2_read_fail Bruker.test_bug_13_T2_read_fail ] and these catch [https://sourceforge.net/p/nmr-relax/tickets/13/ bug #13].
* User function definitions: Clarifications for the [http://www.nmr-relax.com/manual/bruker_read.html bruker.read] text.
* User manual: Clean up of the bibliography entry titles. Species names are properly italicised with genus names capitalised, nuclear isotopes are superscripted, {{:R1rho}}, {{:R2}}, etc. are properly subscripted, the Perrin articles are translated into English, symbols are now symbols, and unnecessary capitalisation has been removed from the bibtex.
<section begin=bugfixes/>
* relax GUI: wxPython-Phoenix 4.x fix to allow relax to start again. In the later wxPython versions, relax would not be able to start either the GUI or any of the test suite due to a new error "wx._core.PyNoAppError: The wx.App object must be created first!". This was not present in wxPython-Phoenix 3. The [http://www.nmr-relax.com/api/4.1/gui.icons.Relax_icons -class .html Relax_icons class] (a wx.IconBundle derived class) is no longer instantiated on import.* Structure loading: Fix for [https://sourceforge.net/p/nmr-relax/tickets/12/ bug #12, the acceptance of the invalid '#' character in molecule names]. A simple check has not been added to the [http://www.nmr-relax.com/api/4.1/lib.structure.internal.object.Internal-class.html#load_pdb load_pdb() ] and [http://www.nmr-relax.com/api/4.1/lib.structure.internal.object.Internal-class.html#load_xyz load_xyz() ] functions of the [http://www.nmr-relax.com/api/4.1/lib.structure.internal.object-module.html internal structural object in lib.structure.internal.object]. This ensures that the '#' character can never be set as the molecule name, independently if it was taken from a file name or set via the set_mol_name arguments of the [http://www.nmr-relax.com/manual/structure_read_pdb.html structure.read_pdb] or [http://www.nmr-relax.com/manual/structure_read_xyz.html structure.read_xyz] user functions.* Bruker DC: Complete redesign of the backend to support reading newer (or older) file versions. This fixes [https://sourceforge.net/p/nmr-relax/tickets/13/ bug #13, the failure of reading newer Bruker DC files]. The backend has been resigned so that the relax library produces a [http://www.nmr-relax.com/api/4.1/lib.software.bruker_dc.DCObject-class.html complex Python object representation of the Bruker DC results file]. This object now stores all of the data present within the Bruker DC file. The design is more flexible as precise column ordering no longer matters.
* Fix for [https://sourceforge.net/p/nmr-relax/tickets/14/ bug #14, the freezing of user functions in the GUI]. The user functions freeze if an error occurs that is not a RelaxError, with the mouse pointer stuck on the busy cursor. These non-RelaxErrors are now caught and manually dealt with by the GUI interpreter. Like all GUI freezing bugs, this was introduced with the huge GUI speed up prior in [[relax 4.1.0]]. These also only to appear to be a freeze, but it is actually the failure to update and show the relax controller combined with not turning off the busy mouse cursor.
* GUI bug fix: Avoidance of the numpy depreciation of '== None'. This deprecation causes the GUI to fail with recent numpy versions.
* Relaxation dispersion: Protection of all of the MODEL_PARAMS_* variables from modification. These are now only used with copy.deepcopy(). This removes a number of bugs in which the lists, which should be read-only, are permanently modified by the addition of 'r1'. The system tests add 'r1' and then the unit tests subsequently fail. This would also be an issue if an experiment without the 'r1' parameter is analysed after one with that parameter, without restarting relax.
* Relaxation dispersion bug fix: The 'r1' parameter was missing from the nested parameter algorithm. This is the [http://www.nmr-relax.com/api/4.1/specific_analyses.relax_disp.model-module.html#nesting_param nesting_param() function ] of the [http://www.nmr-relax.com/api/4.1/specific_analyses.relax_disp.model -module.html specific_analyses.relax_disp.model module]. The 'r1' parameter must be treated differently from the other model parameters, just as the 'r2*' parameters are.* Dispersion auto-analysis: Bug fix for the plotting of the {{:R1}} parameter. The plotting relied on the insertion of the 'r1' parameter into the read only MODEL_PARAMS_* variables of [http://www.nmr-relax.com/api/4.1/lib.dispersion.variables-module.html lib.dispersion.variables]. Now the [http://www.nmr-relax.com/api/4.1/specific_analyses.relax_disp.model.Model_class-class.html Model_class class ] from [http://www.nmr-relax.com/api/4.1/specific_analyses.relax_disp.models model-module.html specific_analyses.relax_disp.model] is being used to dynamically determine the parameters of the model.
<section end=bugfixes/>