relax 2.2.4

From relax wiki
Jump to: navigation, search

Official relax releases
relax logo
relax version 2.2.4
Previous version Next version
← relax 2.2.3 relax 2.2.5 →

Keywords Python 3, RMSD, test suite, user functions
Release type Major bugfix
Release date 10 December 2013

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


This is a major bugfix release. System and unit test bugs in the Mac OS X application have been eliminated, the RMSD related functions for systems with old Numpy versions installed have been fixed, the system information printout when the relax path contains spaces now works, Python 3 fixes have been made throughout, problems with the last steps of the model-free auto-analysis under certain conditions have been resolved, and the value.write and value.display user functions no longer present a list of zero values when very small number are encountered (for example the field-strength independent Rex values from a model-free analysis). Upgrading is recommended.


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 2.2.4
(17 March 2013, from /trunk)



  • Updated the release checklist document to include the correct instructions for minfx and bmrblib. These are the packages bundled with relax ( and
  • Improvements for Python 2 and 3 compatibility. Much of the Python 2 verses 3 compatibility, as well as different Python 2 version compatibility and different Python 3 version compatibility, code has been shifted into the compat module. The different parts of relax now import from the compat module for modules/packages with different import semantics for different Python versions. In addition the different handling of the bz2 and gzip module for reading and writing files has been shifted from 'relax_io' into 'compat'.
  • Updated the 2to3 checklist document to include multiple threads for faster operation.
  • Eliminated the os.devnull import flag dep_check.devnull_import. This is not needed as the compat relax module defines os.devnull for Python ≤ 2.3. The devnull module is no longer part of the relax information printout.
  • Added a more informative error message if the platform module is missing. This is for Python ≤ 2.2. The file from can simply be copied into the lib/pythonX.X/ directory to fix this.
  • Slight change to the message printed if the platform module is missing.
  • Modified the script for running the relax test-suite on multiple Python versions. The pre-2.2 Python versions are now commented out as well as the abortive Python 3.0.
  • Created the Mf.test_bug_20613_auto_mf_diff_tensor_pdb system test to catch bug #20613. This was reported by Angelo Miguel Figueiredo <am dott figueiredo att fct dot unl dot pt>. This test is a direct copy of the Mf.test_bug_20563_missing_ri_error system test. The only change is that the local tm global model results file (in the local_tm/aic/ directory) has been modified. This results were read into relax, the file test_suite/shared_data/structures/Ap4Aase_res1-12.pdb loaded into the data pipe, and the results saved again. This triggers the bug as the problem is the presence of structural data with the local tm global model being selected in the auto-analysis.
  • Shifted all of the model-free specific analysis class documentation variables to the top. This is simply for better organisation of the code.
  • Created the model-free write_doc class variable talking about the field strength independent Rex value. This has been added to the value.display and value.write user functions to explain that Rex values are very small and that the user needs to scale them up.
  • Shifted all of the documentation variables to the top of the specific API_base class. This is for better organisation.
  • Added the write_doc class variable to the specific analysis API class as a empty string. This is to fix the unit tests.
  • Created the front end for the new structure.create_rotor_pdb user function. This will be used to create a PDB representation of a rotor motional model.
  • Added file, directory and overwrite force arguments to the structure.create_rotor_pdb user function.
  • Started to implement the backend of the structure.create_rotor_pdb user function.
  • The internal structural object MolContainer.add_atom() method now returns the index of the new atom.
  • Created the internal structural object MolContainer.last_residue() method.
  • Fully implemented the structure.create_rotor_pdb user function. For this, the generic_fns.structure.geometric.create_rotor_propellers() function was created.


  • Fix for the system tests in the Mac OS X application binary. The Mf.test_bug_20563_missing_ri_error system test fails in the Mac OS X application binary. The problem is that the py2app extension used to build the Mac application decides that empty directories are not to be included in the app, so naturally the test fails when checking for these. Now empty results files have been added to these directories to trick py2app to include them.
  • Fixes for the unit test package __all__ list checking. Now only *.py files and directories are checked. In some cases other files could be present in the packages, for example the object files when compiling the C modules. These would cause the unit tests to fail unnecessarily.
  • Fixes for the unit test __all__ list checking for the lib package for the Mac OS X application. For some reason the py2app extension which creates the app merges the Python installation directory Resources/lib/python2.7 and the relax lib package into Resources/lib. Now 'python2.7' is blacklisted when checking the lib package so that the parasitic Python install location is ignored.
  • Bug fix for the structure RMSD function for when old numpy versions are present. Older numpy versions do not have the ddof argument for the std() standard deviation function,therefore relax now catches this, calculates the biased standard deviation formula, and then multiplies the value by a correction factor to obtain the non-biased estimator.
  • Bug fix for the info relax system information module for when spaces are present in the relax path. If relax is placed into a directory containing spaces, then the determination of the architecture of the compiled C modules fails.
  • Python 3 fixes for the model-free analysis specific code. This was causing errors "AttributeError: 'dict_values' object has no attribute 'sort'".
  • Python 3 updates and fixes using the 2to3 program.
  • Bug fix for the external Scientific Python Geometry package. This is a strange Python 3 issue only triggered when the epydoc Python package is installed.
  • Fix for bug #20613, the failure of the diffusion tensor PDB creation. This was reported by Angelo Miguel Figueiredo <am dott figueiredo att fct dot unl dot pt>. The problem was that the diffusion tensor PDB representation structure.create_diff_tensor_pdb user function was being called even when the local tm global model was selected. This naturally failed as there is no global diffusion tensor. Now this user function is avoided for the local tm global model.
  • Fix for the value.write user function for very small parameter values (Rex for example). This was reported by Martin Ballaschk <ballaschk att fmp-berlin dott de> in the thread and by by Angelo Miguel Figueiredo <am dott figueiredo att fct dot unl dot pt> in the unrelated bug report at The formatting string "20.15f" has been changed to "20.15g" to allow Python to decide if the normal decimal or exponential form of the number should be printed.
  • Fix for a strange and extremely rare typo bug in the model-free specific analysis code. This was identified by Manish Chaubey <manish dott chaubey att tuebingen dott mpg dott de> in the message at This only occurs if a relaxation data error of zero is encountered and is a bug in the RelaxError message explaining the problem with the data.


For reference, the following links are also part of the announcement for this release:


If you would like to receive announcements about new relax versions, please subscribe to the relax-announce mailing list using the relax-announce info page. This list only receives ~10 emails per year. It is archived at Gmane (thread, blog, NNTP, RSS), in the local archives, in The Mail Archive, and in the MARC (Mailing list ARChives).

See also