relax 4.1.1

From relax wiki
Jump to: navigation, search

Official relax releases
relax logo
relax version 4.1.1
Previous version
← relax 4.1.0

Keywords Dispersion, GUI
Release type Major bugfix
Release date 8 March 2019

The PDF version of the relax 4.1.1 user manual The relax 4.1.1 user manual


This is a major bugfix release. The release fixes multiple issues with the relax GUI and with the relaxation dispersion analyses. Please see the notes below for details.


The new relax versions can be downloaded from 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,


Version 4.1.1
(8 March 2019, from master)


  • N/A.



  • Fix for bug #2, the failure of the 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 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 lib.arg_check.validate_arg() function and are checked based on their user function definitions.
  • Fix for bug #4, the relax controller in the GUI not displaying text when required. Calls to the captured IO stream flush() 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 help→licence 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 'atomic' argument for the structure.rmsd user function.
  • Fix for bug #5, the incorrect numpy version check in the relaxation dispersion auto-analysis. The dep_check.version_comparison() function is now used for the version comparisons.
  • Dispersion: Fix for bug #7, the model list containing 'No Rex' twice. The 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 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 lib.dispersion.variables module lists PARAMS_R1, PARAMS_GLOBAL, and PARAMS_SPIN. By removing the parameter names from other parts of relax, the 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 bug #8, the accidental modification of the hardcoded variables. The MODEL_PARAMS lists in lib.dispersion.variables were accidentally being modified by the Model_class class in the 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 'r1' parameter pre-pended to it if that parameter is optimised for a model, and hence the lib.dispersion.variables list would be permanently modified. Now copy.deepcopy() is being used for all variables to avoid this issue. This bug was uncovered in the unit tests as the _specific_analyses._relax_disp.test_model tests were causing 'r1' to be added, and then the later _specific_analyses._relax_disp.test_parameters tests would fail as 'r1' 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 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 bug #11, the missing pC calculation for the 3-site R 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.
  • Dispersion: Fix for bug #10, the 3-site model failure of setting pC for Monte Carlo simulations. For this, the sim_init_values() function of the relaxation dispersion specific API has been completely rewritten. The specific_analyses.relax_disp.parameters.param_conversion() function is now called at the start to generate initial non-model parameters, and at the end to populate the simulation structures. The rest of the function has been stripped down and significantly simplified.


For reference, the announcement for this release can also be found at following links:

Softpedia also has information about the newest relax releases:


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