relax 5.0.0
relax version 5.0.0 | |||||
| |||||
Keywords | wxPython-Phoenix | ||||
---|---|---|---|---|---|
Release type | Major feature | ||||
Release date | 24 August 2020 | ||||
| |||||
The relax 5.0.0 user manual |
Contents
Description
This is a major feature release that adds initial support for wxPython-Phoenix. It includes a large number of under the hood changes to support more modern Python versions and packages, a lot of polish of the relax text output, improved test suite control, and improved and modernised Travis CI support for automatically checking the integrity of the software.
Download
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 5.0.0
(24 August 2020, from master)
https://sourceforge.net/p/nmr-relax/code/ci/5.0.0/tree/
Features
- Support for wxPython-Phoenix.
- Bmrblib: This Python package is now once again optional and relax can run without it.
- MS Windows builds are now 64-bit by default.
- Major improvements to relax text output.
Changes
- TestSuite: Skipped tests are no longer run when individual tests are supplied on the command line. The RelaxTestLoader.loadTestsFromNames() method has been implemented to gracefully handle the skipping of tests when only a single test is run.
- Travis CI config: Fixes for PyPI numpy no longer being compatible with Python 2.7. Older versions of numpy now need to be manually specified for the Python 2.7 job.
- Travis CI config: Attempt at making the MS Windows build job run again. The Travis CI infrastructure has changed yet again and the Windows job fails in the setup stage. These changes are just a guess to try to make this work again.
- Travis CI config: 2nd attempt at making the MS Windows build job run again. Chocolatey was automatically installing the new Python 3.8.0 but the paths pointed to the 3.7 version. Now the 3.7.4 Python version is explicitly specified.
- SCons: Change for the MS Windows build architecture from the default of 32-bit to 64-bit. Previously the default was 32-bit compilation on all Windows systems, via the
WIN_TARGET_OVERRIDE
flag, as official Python never used to release 64-bit builds for Windows systems. As this is no longer the case, the 32-bit override is now only set for the old Python 2 versions. - Travis CI config: Creation of a job for testing relax on an arm64 CPU. The system Python and its packages are used to avoid timeouts on arm64. Installing the Python packages via pip prior to running causes a Travis CI time out, as most of the 50 minutes allowed are used up by the compilation of SciPy. Despite the successful installation of the wxPython site-package on the system Python3, the GUI tests are not activated as there is a problem with xvfb on the arm64 Travis CI jobs.
- N_state_model.test_populations system test: Loosened two of the checks to allow arm64 to pass.
- wxPython: Added the
dep_check.old_wx
flag for differentiating between Classic and Phoenix. - wxPython-Phoenix: Fix for the
wx.BoxSizer.AddSpacer()
function calls. The old wxPython conversion of the size argument to (size, size) breaks the layout, so that the tuple arguments are essential. However tuple arguments are not allowed in wxPython-Phoenix. Therefore thedep_check.old_wx
flag is used to differentiate the behaviour of the different wxPythons. - wxPython-Phoenix: Fix for the old
wx.Sizer.DeleteWindows()
method. This method no longer exists, so instead theClear()
method with thedeleteWindows
argument (ordelete_windows
in Phoenix) is used instead. - wxPython-Phoenix: Fix for the missing
wx.SystemSettings_GetMetric()
function. This has been switched towx.SystemSettings.GetMetric()
which is present in the original wxPython and Phoenix. - wxPython-Phoenix: Fixes for the relax gui About dialog. The
wx.Frame.Center()
function call only works if the window is shown (i.e. it is broken in the test suite), and thewx.DC.EndDrawing()
function has been dropped in Phoenix. - wxPython-Phoenix: Fixes for the GUI sequence and file input elements. The
wx.Frame.Center()
function call only works if the window is shown (i.e. it is broken in the test suite). - wxPython-Phoenix: Support for the splash screen. The
wx.SplashScreen
and associated variables have shifted intowx.adv
. - wxPython-Phoenix: Support for the relax icon. The
wx.IconBundle.AddIconFromFile()
function have been replaced bywx.IconBundle.AddIcon()
in the current phoenix. - wxPython-Phoenix: Fix for the spin viewer window. The
wx.Window.GetClientSizeTuple()
function does not exist in Phoenix. However this can simply be replaced bywx.Window.GetClientSize()
in the current code. - Deletion hack: The
wx.Bitmap.HasAlpha()
function is missing in current phoenix. - relax GUI: Fix for the window icons.
- wxPython-Phoenix: Switch away from the depreciated
wx.Menu.AppendItem()
function. Classic still requires the calls to this function, but phoenix now useswx.Menu.Append()
instead. - wxPython: Renamed the
dep_check.old_wx
flag to dep_check.wx_classic. - wxPython-Phoenix: Prominent feedback warning the user about using unstable Phoenix versions. This includes both a RelaxWarning on start up and placing the warning text in red in the center of the blank relax GUI main window. Currently all Phoenix versions are labelled as unstable, however this can be changed in the future directly in the dep_check module.
- wxPython-Phoenix: Switch away from the depreciated
wx.ToolBar.AddLabelTool()
function. This is still used for "Classic". For Phoenix, thewx.ToolBar.AddTool()
function is used instead. - wxPython-Phoenix: Switch away from the depreciated
wx.Window.SetToolTipString()
function. Insteadwx.Window.SetToolTip(wx.ToolTip(text))
is used for both "Classic" and Phoenix. - wxPython-Phoenix: Switch from
wx.NamedColour()
towx.Colour()
in the relax controller. "Classic" still uses the old function. - wxPython-Phoenix: Switch from the depreciated
wx.Text.GetSizeTuple()
towx.Text.GetSize()
. This seems to work on "Classic" as well. - wxPython-Phoenix: Switch from the depreciated
wx.TreeCtrl.GetItemPyData()
function. "Classic" is still using this function, but Phoenix is now usingwx.TreeCtrl.GetItemData()
. - wxPython-Phoenix: Switch from the depreciated
wx.TreeCtrl.SetDimensions()
function. InsteadSetSize()
is now being used for Phoenix. - wxPython-Phoenix: Switch from the depreciated
wx.TreeCtrl.SetPyData()
function. "Classic" is still using this function, but Phoenix is now usingwx.TreeCtrl.SetItemData()
. - wxPython-Phoenix: Switch from the depreciated
wx.StockCursor()
wrapper function. The overloadedwx.Cursor
class can be used instead in Phoenix. - wxPython-Phoenix: Switch from the depreciated
wx.EmptyBitmap()
wrapper function. Instead Phoenix versions can simply use the overloadedwx.Bitmap
class with the same arguments. - wxPython-Phoenix: Switch from wrapper to overloaded functions for the
wx.ListCtrl
elements. - Python 3.8 support: The
platform.linux_distibution()
function no longer exists. This is now replaced by the distro site-package. The lib.compat package deals with this difference. - Model-free analysis: Obscure syntax error bug fix for an issue highlighted by Python 3.8. The error in the set_xh_vect() function. This is only encountered when reading an ancient relax 1.2 model-free results file.
- Travis CI config: Changes as suggested by the experimental Travis CI Build Config Explorer. The config text was pasted into https://config.travis-ci.com/explore and changed as suggested.
- Travis CI config: Shifted the OpenMPI required packages into an apt
addons
section. - Travis CI config: Shifted the API doc
build
specific parts into the jobs matrix. This allows an environmental variable to be removed and a simplification of thescript
section. - Travis CI config: Shifted the FSF copyright validation specific parts into the jobs matrix. This allows an environmental variable to be removed and a simplification of the
script
section. - Travis CI config: Removal of the now unused
TEST
environmental variable. - Travis CI config: Simplification of the single processor and OpenMPI execution. The
MPIRUN
andRELAX_ARGS
arguments have been introduced. These are normally unset but, for the OpenMPI jobs, they are set tompirun -np 2
and--multi=mpi4py
respectively. This allows the duplicated entries for the information printout and test suite execution to be collapsed into one. - Travis CI config: Removal of the
pip upgraded package
job. This job does not seem to be necessary for testing relax. - Travis CI config: Conversion of the Ubuntu Xenial job to Ubuntu Bionic.
- Travis CI config: Removal of the
language
key in the jobs matrix when the value ispython
. This is a duplication as the language is set to Python outside of the matrix. - Multi-processor: Shifted the processor type checking into the initial command line parsing. This allows a non-zero error code to be returned to the shell.
- Travis CI config: Shifted the echoing of environmental vars into a new
before_script
section. This allows the echoing to occur for all jobs. - Scons: Improvements to the string formatting and the printout for the C module compilation. This includes showing the target architecture for MS Windows compilation.
- Scons: Document the environmental variables used.
- Information printout: Improved output for Python3 compiled C modules. The bytesteam is now decoded.
- Scons: The MS Windows binary target architecture is now determined by the Python binary arch.
- Test suite: Implementation of a command line option for disabling IO capture. This was previously handled by using the debug command line option which simply prevented IO capture. This type of output is very hard to parse by eye, as the tests are not well separated and the debugging output is very verbose. Now the
--no-capt
or--no-capture
option has been implement to disable the IO capture. The debug command line option no longer disables IO capture, rather it allows for finer control of the test suite in that verbose debugging output is now only shown for tests that do not pass. When IO capture is disabled, extra formatted output is used to provide clear separators, titles, descriptions and endings for each test. - Test suite: Argument reordering and better docstring documentation in the relax test suite runners.
- Test suite: All adjustable widths are now set using the value of
status.text_width
. This include the separators for the tests and the test suite summary lines at the end. - Fix for Python 2.5 support.
- Command line processing: Switch from the depreciated optparse Python module to argparse. The argument parsing code and help text has also been improved.
- Travis CI config: Added the relax
--test
and--version
modes. - Travis CI config: Alphabetical ordering of the environmental variable printouts.
- Help: Improvements to the help printout, including new descriptions for the argument groups.
- Status object: Improved logic for determining the ideal text width for relax.
- Travis CI config: Added testing of the relax
--help
mode. - Test suite: Added text wrapping set to the relax text width for the test description. This is the description shown when running without IO capture.
- Information printout: Improved formatting for MS Windows. The
repr()
function results in\\
for path separators rather than\
, causing the formatting to be out. - Test suite: Addition of a new command line option for listing all of the test names. The new
--list-tests
option will cause the names of the tests to be printed out and not run any tests. - Travis CI config: Try to force a Py2 compatible version of kiwisolver, as needed by matplotlib.
- Travis CI config: The virtual machines with Python2 now seem to require SCons be manually installed.
- Test suite: Fixes for the Palmer.test_palmer_omp system test. The modelfree4 binary type
linux-x86_64-gcc
seems to now produce slightly different results with newer system libraries. The checks in this test have been updated to reflect this.
Bugfixes
- GUI: Bug fix for the deletion of analysis tabs on Python 3. The value of
None
cannot be compared to an integer. This bug appears to only be triggered by another bug - a GUItearDown()
or deletion failure on MS Windows with wxPython-Phoenix and Python 3. - Bug fix: Restoration of the simple user function menus.
Links
For reference, the announcement for this release can also be found at following links:
Softpedia also has information about the newest relax releases:
- Softpedia page for relax on GNU/Linux.
- Softpedia page for relax on MS Windows.
- Softpedia page for relax on Mac OS X.
Announcements
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
- The combined release notes for all relax versions (warning, this is very large).
- The combined release descriptions for all relax versions.
- The combined release metadata for all relax versions.
- The combined release features for all relax versions.
- The combined release changes for all relax versions (warning, this is very large).
- The combined release bugfixes for all relax versions.
- The combined release announcement links for all relax versions.