# relax 3.2.3

Lua error: Internal error: The interpreter exited with status 137.

## Description

This is a major bugfix release and the first requiring numpy ≥ 1.6 to allow for faster calculations for certain analyses. There have been improvements to the GUI user functions, the ^[[?1034h escape code is finally suppressed on Linux systems, and the structure.com user function has been added. Bugfixes include the proper handling of R2A0 and R2B0 parameters in the relaxation dispersion models, the IT99 dispersion model tex parameter was incorrectly handled, the LM63 3-site dispersion models had a fatal mistake in its equations, files with multiple extensions (for example *.pdb.gz) are now correctly handled, and closing the free file format window in Mac OS X systems caused the GUI to freeze. Full details can be found below.

For this release, the Mac OS X framework used to build the universal 3-way (ppc, i386, x86_64) binaries for the stand-alone relax application has been updated. The relax application now bundles Python 2.7.8, numpy 1.8.1, scipy 0.14.0, nose 1.3.3, wxPython 2.9.3.1 osx-cocoa (classic), matplotlib 1.3.1, epydoc 3.0.1, mpi4py 1.3.1 and py2app 0.8.1. This should result in better formatted relax state and results files and give access to more advanced packages for power users to take advantage of.

The new relax versions can be downloaded from http://www.nmr-relax.com/download.html. 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, http://www.nmr-relax.com/manual/relax_distribution_archives.html).

## CHANGES file

Version 3.2.3
(1 July 2014, from /trunk)
http://svn.gna.org/svn/relax/tags/3.2.3

### Features

• Improvements for a number of GUI elements used in the user function windows.
• The ^[[?1034h escape code should now no longer be emitted by GNU readline on Linux systems.
• Created the very basic structure.com user function for calculating the centre of mass. This is to simply allow an easy interface to the pipe_control.structure.mass.pipe_centre_of_mass() function.
• Expansion of the REMARK section of the PDB file created for the internal structural object. This is visible when using the structure.write_pdb user function, as well as the many other user functions which create PDB files. The relax version as well as the file creation date are now recorded in the PDB file. This extra information should be very useful. Empty lines in the REMARK section improve the formatting.

### Changes

• Added proper sectioning to the release checklist document.
• Modified the Sequence GUI input element used for the user function list arguments. The first column is now of fixed with when titles are supplied. Previously when supplying titles, the width would be tiny and no text would be visible.
• Added titles for all 3D coordinate user function arguments. This is for the Sequence GUI input element, and affects the frame_order.average_position, n_state_model.CoM and paramag.centre user functions.
• The compilation of the C modules now respects the user defined environment. This is the patch from Justin (https://gna.org/users/jlec) attached to bug #22145. It has been modified to include a comment and remove a double empty line.
• Bug fix for the compilation of the C modules now respects the user defined environment. The problem was that on Mac OS X (as well as other systems), that these environmental variables were not defined and hence the scons commands would all fail with a KeyError and traceback. Now the keys in the os.environ dictionary are being searched for before they are set.
• Fix for the wxPython link in the installation chapter of the manual. This was pointing to the scipy website for some reason.
• Changed the Python readline link for MS Windows in the installation chapter of the manual. This now points to https://pypi.python.org/pypi/pyreadline as the iPython link is broken.
• Implemented system test Relax_disp.test_bug_22146_unpacking_r2a_r2b_cluster. This is to catch the wrong unpacking of R2A0 and R2B0 when performing a clustered full dispersion model analysis. Bug #22146 Unpacking of R2A0 and R2B0 is performed wrong for clustered "full" dispersion models.
• Extended system test Relax_disp.test_bug_22146_unpacking_r2a_r2b_cluster for B14 full model. This is to catch the wrong unpacking of R2A0 and R2B0 when performing a clustered full dispersion model analysis. Bug #22146 Unpacking of R2A0 and R2B0 is performed wrong for clustered "full" dispersion models.
• Extended system test Relax_disp.test_bug_22146_unpacking_r2a_r2b_cluster for NS CPMG 2-site 3D full model. This is to catch the wrong unpacking of R2A0 and R2B0 when performing a clustered full dispersion model analysis. Bug #22146 Unpacking of R2A0 and R2B0 is performed wrong for clustered "full" dispersion models.
• Extended system test Relax_disp.test_bug_22146_unpacking_r2a_r2b_cluster for NS CPMG 2-site star full model. This is to catch the wrong unpacking of R2A0 and R2B0 when performing a clustered full dispersion model analysis. Bug #22146 Unpacking of R2A0 and R2B0 is performed wrong for clustered "full" dispersion models.
• Added synthetic data generator script which created the data to test against. Bug #22146 Unpacking of R2A0 and R2B0 is performed wrong for clustered "full" dispersion models.
• Split system test Relax_disp.test_bug_22146_unpacking_r2a_r2b_cluster up in different tests. A setup function which is: setup_bug_22146_unpacking_r2a_r2b_cluster(self, folder=None, model_analyse=None): And then the tests: test_bug_22146_unpacking_r2a_r2b_cluster_B14 test_bug_22146_unpacking_r2a_r2b_cluster_CR72 test_bug_22146_unpacking_r2a_r2b_cluster_NS_3D test_bug_22146_unpacking_r2a_r2b_cluster_NS_STAR. Bug #22146 Unpacking of R2A0 and R2B0 is performed wrong for clustered "full" dispersion models.
• Modified profiling script to get closer to the implementation in relax. An additional test function is setup to figure out how to reshape the numpy arrays in the target function. Bug #22146 Unpacking of R2A0 and R2B0 is performed wrong for clustered "full" dispersion models.
• Updated profiling text for CR72 model. Now it is tested for 3 fields. This is related to: Task #7807: Speed-up of dispersion models for Clustered analysis.
• Added searching for environment variable PYTHON_INCLUDE_DIR if Python.h is not found in standard Python library. This can be very handsome, if one has a Python virtual environment for multiple users. This relates to the wiki page: http://wiki.nmr-relax.com/Epd_canopy.
• The lib.compat.norm() replacement function for numpy.linalg.norm() now handles no axis argument. This is to allow the function to be used in all cases where numpy.linalg.norm() is used, while providing compatibility with the axis argument and all numpy versions.
• Fix for the scons target for compiling the relax manual when using a repository checkout copy. The method for compiling the relax manual was calling the version.revision() function, however this has been replaced a while ago by the version.repo_revision variable.
• Created two unit tests for the lib.io.file_root() function. The second of the tests demonstrate a failure of the function if multiple file extensions are present.
• Lowered χ2 value test in system test Relax_disp.test_bug_22146_unpacking_r2a_r2b_cluster_NS_STAR. This is due to the data produced on 32 bit machine, and tested on 64 bit machines. The error was: AssertionError: 2.4659455670347743e-05 != 0.0 within 7 places. The reason for this is due to truncation artifacts.
• Fix for wrong path testing of Python.h. Python.h would be in PYTHON_PREFIX/include/pythonX.Y/Python.h and not in PYTHON_PREFIX/include/Python.h.
• Better handling of the control-C keyboard interrupt signal in the relax test suite. This includes two changes. The Python 2.7 and higher unittest.installHandler() function is now called, when present, to terminate all tests using the unittest module control-C handler. The second change is that the keyboard interrupt signal is caught in a try-except statement, a message printed out, and the tests terminated. This should be an improvement for all systems.
• Adding last profiling information for model CR72.
• Added system test for model LM63 3-site. According to results folder in test_suite/shared_data/dispersion/Hansen/relax_results/LM63 3-site. This should pass, but it doesn't.
• Created an initial Relax_disp.test_lm63_3site_synthetic system test. This should have been set up a long time ago. It uses the synthetic noise-free data in the test_suite/shared_data/dispersion/lm63_3site directory which was created for a system test but never converted into one. The test still needs modifications to allow it to pass.
• Modifications for the Relax_disp.test_lm63_3site_synthetic system test. The r2eff_values.bz2 saved state file has been updated, as it was too old to use in the test. The test has also had a typo bug fixed and the data pipe name updated. The test now also checks all of the optimised values.
• Removed system test test_hansen_cpmg_data_to_lm63_3site. This was a temporary implementation and has been replaced with system test Relax_disp.test_lm63_3site_synthetic.
• Fixes for all of the relaxation dispersion system tests which were failing with the new minfx code. Due to the tuning of the log barrier constraint algorithm in minfx in the commit at http://article.gmane.org/gmane.science.mathematics.minfx.scm/25, many system tests needed to be slightly adjusted. Two of the Relax_disp.test_tp02_data_to_* system tests were also failing as the optimisation can no longer move out of the minimum at pA = 0.5 for one spin (due to the low quality grid search in the auto-analysis).
• Updated the release checklist document for the new 1.0.7 release of minfx.
• Fixes for the Relax_disp.test_hansen_cpmg_data_missing_auto_analysis system test. The pA parameter is no longer tested for one spin as it moves to random values on different operating systems and 32 vs. 64-bit systems. This is because this spin experiences no exchange, both Δω and kex are zero.
• Decreased the value checking precision in the Relax_disp.test_hansen_cpmg_data_to_lm63 system test. This is to allow the test to pass on certain operating systems and 32-bit systems.
• Modified the precision of the output from the relax_disp.sherekhan_input user function. This is simply to allow the Relax_disp.test_sod1wt_t25_to_sherekhan_input system test to pass on certain 32-bit systems, as the float output to 15 decimal places is not always the same. This system test has been updated for the change.
• Modified the Relax_disp.test_sprangers_data_to_mmq_cr72 system test to pass on certain systems. This test fails on 32-bit Linux (and probably other systems as well). To fix the test, the kex values are all divided by 100 before checking them to 4 decimal places of accuracy.
• Improved how the relax installation path is determined in the status object. If the path cannot be found, the current working directory is then checked if it is where relax is installed. This is needed when importing modules outside of relax.
• Hack to permanently eliminate the ^[[?1034h escape code being produced on Linux systems. This is produced by importing the readline module. The escape code will be sent to STDOUT every time relax is executed, so it will be present in all log files. The problem is the TERM environmental variable being set to 'xterm'. The hack simply sets TERM to an empty string.
• More hacks for permanently eliminating the ^[[?1034h escape code being produced on Linux systems. This is a nasty feature of the GNU readline library. It is now also turned off in the dep_check module, suppressing ^[[?1034h in Python scripts which import only parts of relax.
• Numpy version 1.6 or higher is now required to be able to run relax. This follows from the series of messages: http://www.mail-archive.com/relax-devel@gna.org/msg06288.html, http://www.mail-archive.com/relax-devel@gna.org/msg06289.html, http://www.mail-archive.com/relax-devel@gna.org/msg06327.html, and http://www.mail-archive.com/relax-devel@gna.org/msg06335.html. If too many users complain, maybe this change can be reverted later. This minimal numpy version is needed for many of the speed ups going in the relaxation dispersion and frame order analyses. It is required for the numpy ufunc out arguments and for the numpy.eigsum() function. These will likely be used in other analyses in the future for improving the speed of relax, so it might affect users of other analyses later on.
• Updated the numpy minimal dependency in the installation chapter of the manual to version 1.6.
• Added better epydoc sectioning to the lib.dispersion.ns_cpmg_2site_expanded module docstring. This is to better separate the original scripts used to document the code evolution.
• Empty lines are now handled by the lib.structure.pdb_write.remark() function. By supplying the remark as None, empty lines can now be created in the REMARK section of a PDB file. This can be used for nicer formatting.
• Fixes for the Diffusion_tensor system tests due to the recent PDB file changes. Prior to the comparison of the generated PDB files, all REMARK PDB lines are now stripped out.
• Fixes for all system tests failing due to the expanded and improved PDB REMARK section. The system tests now remove all REMARK records prior to comparing file contents. The special strip_remarks() system test method has been created to simplify the stripping process.
• Fix for the software verification tests. The recent expansion and improvements of the REMARK records created by the internal structural object PDB writing method imported the relax version to place this information into the PDB files. However this breaks the relax library design, as shown by the verification tests. Instead the relax version information is being taken from the lib.structure.internal.object.RELAX_VERSION variable. This defaults to None, however the version module now sets this variable directly when it is imported so that it is always set to the current relax version when running relax.
• General Python 3 fixes via the 2to3 script.
• Removed the lib.compat.sorted() function which was providing Python2.3 compatibility. For a while now, relax has been unable to run on Python versions less than 2.5. Therefore there is no use for having this replacement function for Python ≤ 2.3 which was being placed into the builtins module.
• Python 3 fixes for the entire codebase using the 2to3 script. The command used was: 2to3 -j 4 -w -f xrange .
• The internal structural object add_molecule() and has_molecule() methods are now model specific. This allows for finer control of structural object.
• Created the new lib.structure.files module. This currently contains the single find_pdb_files() function which will be used to find all *.pdb, *.pdb.gz and *.pdb.bz2 versions of the PDB file in a given path.
• Fix for the breakage of the relax help system. This was reported at http://thread.gmane.org/gmane.science.nmr.relax.devel/6481. The problem was that the TERM environmental variable was turned off to avoid the GNU readline library on Linux systems emitting the ^[[?1034h escape code. See the message at http://thread.gmane.org/gmane.science.nmr.relax.devel/6481/focus=6489 for more details. However the Python help system obviously requires this environmental variable. Now only if the TERM variable is set to 'xterm' will it be reset, and to 'linux' instead of the blank string "". This does not affect any relax releases.