relax 1.3.1

From relax wiki
Jump to: navigation, search

Official relax releases
relax logo
relax version 1.3.1
Previous version Next version
← relax 1.3.0 relax 1.3.2 →

Keywords Complete redesign
Release type Major feature
Release date 28 September 2008

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


Finally, it's arrived! The new and improved relax is finally ready for release. It's taken 2 years to get here, 4400 individual changes, and a complete rewrite of almost every last line of code - all in all an impressive team effort. Although the jump from 1.3.0 to 1.3.1 appears small, the changes are so expansive that hardly any code is preserved between these versions. In addition, the release includes all changes which occurred between relax versions 1.2.10 and 1.2.14. For this shiny new version, we have had complete redesign of relax. This started all the way back in October of 2006 with the post This overhaul involves the new molecule-residue-spin data structure and the elimination of the 'run' concept replacing it with the data pipe paradigm.

No longer is relax constrained to handling a single spin type for the entire system, or a single spin per residue. Multiple structures, multiple residues per structure, and multiple spins per residue can be handled, paving the way for using relax with small organic molecules, with RNA and DNA, and for protein systems using not only 15N data but also any data from carbons or other spin types. As for the data pipe concept, this is the next logical step in the evolution of relax. The 'run' had significantly diverged from its original meaning, so now it has been renamed to the pipe. Everything in relax is now associated with a data pipe. These pipes can be created, merged with user functions such as model_selection, branched by copying, and the entire contents preserved at any time into an XML formatted results file - imagination is the only limitation as to what can be done with these pipes. The progress of relax can be considered as the flow of data through these pipes, with each user function modifying or using the contents.

For for identifying and selecting spins, the spin identification string concept has been introduced. The string is composed of three components: the molecule id token beginning with the '#' character, the residue id token beginning with the ':' character, and the atom or spin system id token beginning with the '@' character. Each token can be composed of multiple elements separated by the ',' character and each individual element can either be a number, name, or range of numbers separated by the '-' character. Hence the full id string specification is "#<mol_name> :<res_id>[, <res_id>[, <res_id>, ...]] @<atom_id>[, <atom_id>[, <atom_id>, ...]],". Basic usage of the Boolean operators and ('&') and or ('|') is also supported.

Note that in this version, not all parts of relax are currently functional. Many, such as relaxation curve fitting, model-free analysis, reduced spectral density mapping, consistency testing, etc. are fully functional but if you do uncover a non-operational user function, please submit a bug report or use the stable 1.2.14 version. Conversion of the last parts of relax to the new design will not be too hard, especially if all issues are reported. Note that this is a development line and that scripts written for version 1.3.1 may not work automatically in future 1.3 versions.


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 1.3.1
(28 September 2008, from /1.3)


  • Complete redesign of relax (
  • Extension of the Grace plotting abilities to include series data such as relaxation exponential curves.
  • For easy reference, all physical constants have been shifted to the '' module.
  • Complete overhaul of the handling of structures with the introduction of a structural object API.
  • An internal structural object has been created, complete with PDB reading and writing methods, to optionally replace the Scientific python PDB object.
  • Large improvements to the API documentation by the use of epydoc formatted docstrings.
  • All spins can be looped over simply by using the spin_loop() generator function.
  • Molecules, residues, and spins are now selected by the new syntax of the spin identification string.
  • Improvements and simplifications to the '' script [d'Auvergne and Gooley, 2007][d'Auvergne and Gooley, 2008b] with all user modifiable variables shifted to the top of the script as global variables.
  • Automatic looping until convergence has been added to the '' [d'Auvergne and Gooley, 2007][d'Auvergne and Gooley, 2008b] script to further simplify usage.
  • Setting the type of nucleus is now done with the value.set user function on a spin-by-spin basis. This is important for RNA, small molecules and protein analyses with Ca and N data.
  • A new analysis type, the N-state model for interpreting domain motions using RDC and PCS data, is now supported.
  • The mechanical pivot-CoM analysis of the N-state model and associated cone image construction is included.
  • The consistency testing code has been ported from the 1.2 line.
  • The results file has been converted to the versatile XML format.
  • All analysis types, present and future, are automatically supported through the reading and writing of the XML results file.
  • The XML results file stores floats at full 64 bit precision in an XML attribute using the IEEE-754 byte array.


  • The RelaxError and RelaxWarning systems have been redesigned. The objects are no longer placed into __builtin__ but must now be imported.
  • The unit and system test frameworks have been expanded to 1046 and 55 tests respectively covering most aspects of relax usage.
  • The inclusion of headers in the sample scripts to identify the author and age of the script.
  • Conversion of the relax data storage object into a singleton. Rather than accessing '', the singleton is now imported as needed.
  • Unit tests can now be run individually.
  • The optimisation code has been spun out into its own project, minfx ( This is now a dependency.
  • The Boolean values True and False are now used instead of 1 and 0 for user function arguments.
  • The class methods of the 'generic_fns' package have been converted to module functions for greater API flexibility.
  • Complete redesign of the diffusion tensor object in the relax data store. Many diffusion tensor attributes are calculated on the fly when accessed.
  • The 'specific_fns' package has been redesigned with the API for retrieving analysis specific methods tidied up.
  • The inevitable switch from Numeric python to numpy has occurred.
  • The system tests and unit tests can be run separately.
  • All STDOUT and STDERR output is caught by the test suite and only printed if the test fails.
  • The system tests use the unit test framework to significantly simplify the addition of new tests.
  • User scripts can now be used directly as system tests.
  • All threading code has been eliminated in preparation for replacement by the multi_processor code.
  • The precision of the 15N gyromagnetic ratio input into Art Palmer's Modelfree4 program has been increased.
  • Scientific python is no longer an essential dependency.
  • The 'unselect' user function class has been renamed to 'deselect'.
  • Big updates to the relax manual.
  • PDB files can be specified without the '.pdb' ending.


  • The unit test and system test frameworks are now functional.
  • The failure of reduced spectral density mapping has been identified and fixed (bug #9238, bug #9562).
  • The second set of extended model-free formulae were accessing undefined functions (bug #9189).
  • Docstring fetching issues with Python 2.5 have been fixed (bug #9390).
  • The sample script for placing model-free results into a LaTeX table now works (bug #10189).
  • The default parameter values for relaxation curve fitting were incorrectly set.
  • Security: Replaced the insecure os.tempnam() with tempfile.mktemp().
  • ZeroDivisionError fix for model elimination and Monte Carlo simulation elimination (bug #11004).
  • The handling of spins with missing XH bond vectors has been fixed (bug #11378).
  • The relax_data.display user function is now functional again (bug #11383).
  • MS Windows with Python 2.5 is now supported.


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 announcement mailing list. This list only receives ~10 emails per year. It is archived at the SourceForge archives and in The Mail Archive.


  • [d'Auvergne and Gooley, 2007] ^ 1 2 d'Auvergne, E. J. and Gooley, P. R. (2007). Set theory formulation of the model-free problem and the diffusion seeded model-free paradigm. Mol. BioSyst., 3(7), 483-494. (DOI: 10.1039/b702202f)
  • [d'Auvergne and Gooley, 2008b] ^ 1 2 d'Auvergne, E. J. and Gooley, P. R. (2008). Optimisation of NMR dynamic models II. A new methodology for the dual optimisation of the model-free parameters and the Brownian rotational diffusion tensor. J. Biomol. NMR, 40(2), 121-133. (DOI: 10.1007/s10858-007-9213-3)

See also