relax release bugfixes

From relax wiki
Revision as of 22:43, 4 February 2015 by Bugman (talk | contribs) (Added relax 3.3.6.)
Jump to navigation Jump to search

Version 3 of relax

relax 3.3 series

relax 3.3.6


relax 3.3.5


relax 3.3.4

  • Bug fix for the pymol.view user function for when no PDB file exists. The user function would fail with an AttributeError when the currently loaded data does not exist as a PDB file. This is now caught and the non-existent PDB is no longer displayed. A better solution might be to dump all the current structural data into a temporary file and load that, all within a try-finally statement to be sure to delete the temporary file. This solution may not be what the user is interested in anyway.
  • Simple fix for bug #23017, the multidimensional numpy arrays are not being stored as IEEE 754 arrays in the XML state and results files. The problem was a relatively recent regression caused by a change to the is_float_matrix() function of the lib.arg_check module. It was simply that the default dims keyword argument value was changed from None to (3, 3). Therefore any call to the function without supplying the dims argument would fail if the matrix was not of the (3, 3) shape.


relax 3.3.3


relax 3.3.2


relax 3.3.1


relax 3.3.0


relax 3.2 series

relax 3.2.3


relax 3.2.2

  • Fix for the lib.geometry.lines.closest_point_ax() function for when the two points are the same. If the point on the line and point in the 3D space are the same, then this function used to return an array of NaN values. This situation is now caught and the point in the 3D space is returned.
  • Fix for the heterogen section of the internal structural object write_pdb() method. A number of checks were performed to see if the PDB heterogen records were the same for all structures, but this is meaningless as the structures can of course be different.
  • Fixes for the lib.structure.represent.cone module. The function arguments named 'cone' have been renamed to 'cone_obj' so that they do not clash with the cone() function in the module namespace.
  • Fix for the lib.structure.geometric.generate_vector_residues() function. The atom numbers are no longer read from the internal structural object, as these are not reliable. If another geometric representation exists in the object, then the atom numbers could be None. Or loading structures from multiple PDB files can cause the numbering to be repeated or out of order.
  • Fix for the frame_order.pdb_model user function for the rotor models. The rotor axis is no longer defined by spherical angles and therefore needs to be recreated using the create_rotor_axis_alpha() rather than create_rotor_axis_spherical() function from lib.frame_order.rotor_axis.
  • Partial fix for bug #22100, the rotation argument for the structure.rotate user function cannot be changed in the GUI, as an AttributeError is raised. The append_row() method call has been replaced by the correct add_element() call.
  • Bug fix for the Sequence_2D GUI element. This is used for the user function windows in the GUI for setting lists of lists or matrices. The GUI element GetValue() method will now return None if nothing is set. This prevents a list of lists of None being added to the main user function window.
  • Fixes for the Sequence and Sequence_2D GUI elements for handling invalid input data. These elements used by the user function windows previously raised all sorts of errors if the data was not what they expected (lists or lists of lists respectively). These situations are now caught and the input data is ignored, so blank Sequence and Sequence_2D elements are presented to the user.
  • Bug fix for the Sequence_2D GUI element. This is used for handling list of lists user function arguments in the user function GUI windows. The setting of invalid values directly in the Sequence_2D GUI element is now detected. These values are now replaced with None.
  • Fix for bug #22102, the point argument of the dx.map user function failing in the GUI. The Sequence_2D GUI element used for all list of lists arguments in the user function GUI windows now correctly handles variable length lists. The first column which shows a count of the elements is now properly taken into account in the SetValue(), GetValue() and add_item() methods, via a new self.offset variable. The self.variable_length variable has also been fixed so it is not overwritten by the parent Sequence GUI element.
  • Bug fixes for the Sequence GUI element used for lists in the user function windows. Invalid values input into the Sequence GUI window are now ignored rather than raising different types of error. And invalid input lists for fixed dimension arguments are also ignored. This allows the User_functions.test_structure_add_atom GUI test to pass.
  • Bug fix for the lib.arg_check.is_float_object() function. The dim argument can sometimes be an integer rather than a tuple, but this was not handled by the function. Now integer dim arguments are pre-converted to lists before performing all the checks.
  • Fix for bug #22105, the failure spectrum.read_intensities GUI user function whereby a file name is turned into lists of characters. A few changes were made to allow the Selector_file_multiple GUI element to operate correctly.
  • Critical fix for the math domain catching of model LM63. This was discovered with the added 7 unit tests demonstrating edge case 'no Rex' failures. This follows from the ideas in the post http://article.gmane.org/gmane.science.nmr.relax.devel/5858. This is related to Task #7793 Speedup of dispersion models. This is to implement catching of math domain errors, before they occur.
  • Critical fix for the math domain catching of model B14. This was discovered with the added 7 unit tests demonstrating edge case 'no Rex' failures. This follows from the ideas in the post http://article.gmane.org/gmane.science.nmr.relax.devel/5858. This is related to Task #7793 Speedup of dispersion models. This is to implement catching of math domain errors, before they occur.
  • Critical fix for the math domain catching of model CR72. This was discovered with the added 8 unit tests demonstrating edge case 'no Rex' failures. This follows from the ideas in the post http://article.gmane.org/gmane.science.nmr.relax.devel/5858. This is related to Task #7793 Speedup of dispersion models. This is to implement catching of math domain errors, before they occur. When kex is large, e.g. kex = 1e5, the values of etapos = eta_scale * sqrt(Psi + sqrt_psi2_zeta2) / cpmg_frqs will exceed possible numerical representation. The catching of these occurrences needed to be re-written.
  • Critical fix for the math domain catching of model B14. This was discovered with the added 8 unit tests demonstrating edge case 'no Rex' failures. This follows from the ideas in the post http://article.gmane.org/gmane.science.nmr.relax.devel/5858. This is related to Task #7793 Speedup of dispersion models. This is to implement catching of math domain errors, before they occur. When kex is large, e.g. kex = 1e5, "nan" values where produced, which were replaced with 1e100. The catching of these occurrences needed to be re-written.
  • Critical fix for the math domain catching of model CR72. Removed the test for kex ≥ 1e5. This catching should rather be performed on the math functions instead.
  • Critical fix for the math domain catching of model B14. Removed the test for kex ≥ 1e5. This catching should rather be performed on the math functions instead. In this case, it is the catching of sinh(), not evaluating values above 710.
  • Critical fix for the math domain catching of model MMQ CR72. This was discovered with the added 9 unit tests demonstrating edge case 'no Rex' failures. This follows from the ideas in the post http://article.gmane.org/gmane.science.nmr.relax.devel/5858. This is related to Task #7793 Speedup of dispersion models. This is to implement catching of math domain errors, before they occur.
  • Critical fix for the math domain catching of model IT99. This was discovered with the added 8 unit tests demonstrating edge case 'no Rex' failures. This follows from the ideas in the post http://article.gmane.org/gmane.science.nmr.relax.devel/5858. This is related to Task #7793 Speedup of dispersion models. This is to implement catching of math domain errors, before they occur. The catching of these occurrences needed to be re-written.
  • Critical fix for the math domain catching of model TAP03. This was discovered with the added 8 unit tests demonstrating edge case 'no Rex' failures. This follows from the ideas in the post http://article.gmane.org/gmane.science.nmr.relax.devel/5858. This is related to Task #7793 Speedup of dispersion models. This is to implement catching of math domain errors, before they occur.
  • Critical fix for the math domain catching of model TP02. This was discovered with the added 8 unit tests demonstrating edge case 'no Rex' failures. This follows from the ideas in the post http://article.gmane.org/gmane.science.nmr.relax.devel/5858. This is related to Task #7793 Speedup of dispersion models. This is to implement catching of math domain errors, before they occur.
  • Critical fix for the math domain catching of model TSMFK01. This was discovered with the added 8 unit tests demonstrating edge case 'no Rex' failures. This follows from the ideas in the post http://article.gmane.org/gmane.science.nmr.relax.devel/5858. This is related to Task #7793 Speedup of dispersion models. This is to implement catching of math domain errors, before they occur. The catching of these occurrences needed to be re-written.
  • Critical fix for the math domain catching of model NS CPMG 2-site 3D. This was discovered with the added 8 unit tests demonstrating edge case 'no Rex' failures. This follows from the ideas in the post http://article.gmane.org/gmane.science.nmr.relax.devel/5858. This is related to Task #7793 Speedup of dispersion models. This is to implement catching of math domain errors, before they occur.
  • Fix for bug #22112, the GUI failure when setting list values via the sequence windows, launched from user function windows fails on Mac OS X. The problem was two fold. First the Sequence and Sequence_2D windows from wx.Dialog should not be terminated via the Destroy() method, as wx.Dialog.Destroy() appears to be horribly broken on Macs.
  • Another fix for bug #22112, the GUI failure when setting list values via the sequence windows, launched from user function windows fails on Mac OS X. This change is for the multiple file selection window and matches the previous change by replacing the Mac OS X fatal wx.Dialog.Destroy() call with wx.Dialog.Close().
  • Fix for the relax start up detection of missing Python packages. The dep_check module is now imported first, as it used to be. This is required to check if all required modules are installed and to present understandable messages to the user rather than cryptic ImportError messages with tracebacks.
  • Fix for bug #22033, the inability to use other optimisation algorithms in the dispersion analysis. As mentioned in comment #2, the solution is to raise a RelaxError explaining that only 'simplex' optimisation is possible for the dispersion analysis as the gradients are not derived and implemented in relax.


relax 3.2.1


relax 3.2.0


relax 3.1 series

relax 3.1.7


relax 3.1.6


relax 3.1.5


relax 3.1.4


relax 3.1.3

N/A


relax 3.1.2


relax 3.1.1


relax 3.1.0

  • Bug fixes for a number of broken Oxygen icon lookups in the GUI.
  • Bug fixes for the molecule.delete, residue.delete and spin.delete user functions. The molecule, residue, and spin metadata in the relax data store was not being updated correctly after these user function calls so that any subsequent operations on this data was failing. This metadata problem was not noticed before as it disappears if the state is saved and reloaded into relax after a restart.


relax 3.0 series

relax 3.0.2

  • Fix for bug #21233 - the missing mpi4py multi-processor messages. When multiple commands were being sent to one slave, the captured IO was being overwritten by each executed command. Therefore the slave would only return the printouts from the last command.
  • Fix for a fatal bug in the rarely used structure.add_atom user function. The position argument in the user function definitions was incorrectly defined causing the user function to be non-functional. The 'float_object' argument type is now supported in the GUI.
  • Fix for the N-state model _target_fn_setup() method for when no PCS data is present.
  • Bug fix for the lib.structure.mass.centre_of_mass() function warning when the element is not known. This warning was buggy and resulted tracebacks.


relax 3.0.1


relax 3.0.0

  • Fix for bug #20674 - the failure of the consistency testing analysis. This was reported by Mengjun Xue <mengjun dott xue att mailbox dott tu-berlin dot de>. The problem was that the first residue did not have a single proton 'H' in the PDB file, and therefore the dipolar relaxation interaction was not set up. The overfit_deselect() method of the consistency testing specific API was not checking for this. The method is now much more like that of the model-free specific analysis.
  • Fix for the model-free analysis specific overfit_deselect() method. The tests for the presence of dipolar relaxation was not correct and was non-functional.
  • Fix for the J(ω) mapping analysis matching that for the consistency testing. The overfit_deselect() method is now identical to that of the consistency testing analysis.
  • Fix for bug #20683 - the infinite and NaN data in Bruker DC files. This was reported by Mengjun Xue <mengjun dott xue att mailbox dott tu-berlin dot de>. The model-free specific overfit_deselect() method now checks for infinite relaxation data and deselects the spin if such data is encountered.
  • Fix for the analysis specific API common method _data_init_spin(). The data types are now correctly checked - they are not strings but types.
  • Fix for the relaxation curve-fitting _assemble_scaling_matrix() method. The intensity scaling was never activated before due to a lower vs. uppercase parameter name mismatch. This scaling is now correctly set up as the previous code assumed cdp.relax_times was a list whereas it has been a dictionary since the early 1.3 releases.
  • The grid search bounds for the relaxation curve-fitting are no longer affected by scaling. The parameter scaling recently activated revealed a bug in the lower and upper data structures for the grid search in that these were continuously scaled down.
  • Fix for the target_functions.relax_fit C module - the scaling was incorrectly performed.
  • Fix for the relaxation curve-fitting _back_calc() method for the changes to the C module. The setup() method requires that the scaling matrix is converted to a list of the diagonal elements.
  • Fix for the analysis specific API common _return_value_general() method. The value of None is now handled properly when a simulation value is asked for.
  • Restored the default behaviour of the spin_loop(). The skip_desel flag is now functional and defaults to False.
  • Fix for the relax_times and intensities parameter definitions for specific_analyses.relax_fit. These are dictionaries, not lists.
  • Fix for the spectrum.error_analysis user function for replicated spectra and subsets. A second call to spectrum.error_analysis was removing the results from the first call. This is now avoided.
  • Bug fix for the right click popup menu in the spectra list GUI element. This affects the NOE, R1, and R2 analyses. The actions of the menu items were all mixed up.
  • Fix for the nasty bug #20756. The problem was that the global execution lock was not always released by a relax script when certain errors are raised during the script execution. This does not occur for all types of error though. Now the release of the lock has been shifted into the 'finally' statement to absolutely force lock release.
  • Big bug fix for a memory leak in the relaxation curve-fitting C module. Proper reference counting is used for the temporary 'element' Python objects used in the conversion between Python and C objects. The use of the Py_CLEAR() macro removes the memory leak. However the number of references as seen by sys.gettotalrefcount() in a debugging Python version keeps rising and might be a problem in the future.
  • Big bug fix for the value.copy user function - it is now functional again.
  • Bug fix for the value.copy user function. The user function can now handle parameter errors, and the values are set in the correct data pipe.
  • Bug fix for an incorrect print statement in the N_state_model.test_paramag_centre_fit system test. This is in the script, and was uncovered using WinPython by Troels E. Linnet via the relax system tests at http://thread.gmane.org/gmane.science.nmr.relax.devel/3863. The Python bug was detailed at http://thread.gmane.org/gmane.science.nmr.relax.devel/3863/focus=3867.
  • Fix for the package checking as part of the unit tests. This was identified from the bug report #20820 submitted by Troels E. Linnet. The problem was that on some systems, the full path is required for checking the presence of the directories which are the sub-packages of the main package being checked. The result was that checking for the package in the __all__ list was skipped. Note that this change does not fix the bug reported.
  • Fixes for the Jw.test_calc system test - the spectral density value comparison is now significant.
  • Bug fix for the pipe_control.spectrometer.get_frequencies() function. The units argument was incorrectly referenced.
  • Fix for bug #20820. Solution found - 'software' was not mentioned in __init__.py, and failed at import.
  • Partial fix for bug #20873. The spectrum_id argument for the spectrum.read_intensities user function can now be both a string and a list of strings.
  • Fix for bug #20873. This was reported by Troels E. Linnet. The ability to load multiple peak intensities from a single generic formatted file has been correctly implemented. This involves added checks to make sure that the user supplies reasonable arguments and to then loop over the intensity column argument.
  • Python 3 fixes via the 2to3 program.
  • Bug fix for the value.write user function for list or dictionary type data. This is for the case where the variable of one spin is set to None rather than a list or dictionary type.
  • Bug fix for the Sequence GUI input element. This complete the removal of bug #20873. The problem was that the gui_to_str() function was not failing to convert the string into a string list, so the list was deemed as a single string. Now the first character of '[' or '(' for lists or tuples are now searched for instead of relying on the conversion to trigger an error.
  • Fixes for the value.write user function for simple parameter values of None. This is a recently introduced bug which causes a complete failure of the user function is the parameter for any spin is None.
  • Fix for bug #20888, the autoscaling of Grace graphs. This solution was mentioned in the post at http://thread.gmane.org/gmane.science.nmr.relax.devel/3920/focus=3930. Instead of using minimum and maximum values for the axes in the Grace graphs produced by the lib.software.grace module, which was the old solution for having the graphs scaled to reasonable values, instead the '@autoscale' command is appended to the end of all graphs. This is performed by the write_xy_data() function.
  • Bug fix for the running of the test suite in the relax GUI. The fix of r19727 was extended to apply to the GUI as well. Too many arguments were being sent into TextTestRunner Python class on certain Python versions (3.1 and ≤ 2.6).
  • Big bug fix - the relax execution lock now truly supports nesting. This fixes bug #20891 reported by Troels Linnet. Scripts can now be executed from the GUI. Note that this is a very dangerous fix.
  • Completed the fix for bug #20889. The problem was that the spectrum.read_intensities user function was incorrectly updating the cdp.spectrum_ids list when the spectrum_id argument is set to a list. The list of IDs was being set as a single element of cdp.spectrum_ids, causing problems with the GUI when updating the ComboBox choices and then subsequent setting of the spectrum IDs. This bug and fix is independent of the relax_disp branch, despite being uncovered there and being caught by the Relax_disp.test_bug_20889_multi_col_peak_list GUI test in that branch.
  • Bug fix for the GUI element for the interatom.define user function. The special spin ID GUI elements can not be set to the get_spin_ids() function as then SetValue can no longer work for IDs not in the list.
  • Fixes for the TestCase class names for a number of lib package modules. As the test class name was incorrect, previously the test suite was skipping these silently. This was dangerous.
  • Fixes for the unit tests of the lib.selection module. The contains_*() methods now should be used. And the test_Selection_ful_spin_id() unit test has been completely deleted as this way of checking the selection object is no longer valid.
  • Fix for bug #20910 - the broken grace.write GUI interface. The problem was that the Value GUI input element was not detecting list-type data returned by the wiz_combo_iter method.
  • Fix for [ (https://gna.org/bugs/?20915 bug #2091 - Failure of Grace opening in MS Windows]. Troels E. Linnet provided this patch, and was discovered during work on a Windows 7 system: telinnet aaattt bio_dot_ku_dot_dk. This is a small fix for a wrong call to "raise RelaxMissingBinaryError(binary)", when issuing an external call to xmgrace. The "path_sep" would be equal = [\/], and the RE search would not find(True) the full path specified for the xmgrace file. This is now shifted to python: os.path.isfile http://docs.python.org/2/library/os.path.html. Another fix, is that as a standard the command "xmgrace" is provided. This will work fine through windows cmd, but the true name for program in windows is "xmgrace.exe", and so an additional search for +".exe" is also performed.
  • Fix for the N_state_model.test_absolute_T system test for Mac OS X. The precision of the check needed to be decreased.
  • Fix for bug #20918, the hanging of the data pipe editor. This was reported by Troels Linnet and is an MS Windows only problem. The problem is in the wxMSW part of wxPython, and it may be fixed in newer wxPython versions. The issue is nevertheless now avoided by calling the GUI user function store objects with the arguments wx_wizard_sync=True and wx_wizard_modal=True. This appears to solve the problem.
  • Decreased the precision of the check in the Frame_order.test_rigid_data_to_rigid_model system test. This is to allow the test to pass on a MS Windows 7 test machine.
  • More MS Windows fixes, this time a nasty kludge, for the relax system tests. This is strangely needed for the relax_disp branch and not the trunk for a 64-bit MS Windows 7 test system. The reason why this WindowsError is triggered by the base tearDown() method in the relax_disp branch and not trunk is a total mystery. Actually why Windows refuses to complete the file close() operations of the results.write and state.save user functions before calling the tearDown() method is the greater mystery.
  • Bug fix for the batch file permissions for executing Art Palmer's Modelfree4 program. This was identified in the post http://thread.gmane.org/gmane.science.nmr.relax.devel/3953/focus=4000. The file was set to be executable, but on Unix systems it would end up with the permissions "---x------".
  • Small comment fix in the sample_scripts/consistency_tests.py script.
  • Fix for the scons fetch_docstrings target. The user functions need to be explicitly initialised in the fetch_docstrings script as this is not running through relax.
  • Fix for bug #20921, the GUI tests freezing in MS Windows. The problem was that the dipolar interaction wizard in the model-free auto-analysis GUI element was calling its user functions asynchronously. This can lead to racing conditions. The commit r80084 (http://article.gmane.org/gmane.science.nmr.relax.scm/17840) somehow randomly triggers this racing on MS Windows systems only together with the Mf.test_mf_auto_analysis GUI test. Now all user functions are called synchronously.
  • Fix for the relax GUI splash screen. On certain systems, the GUI was failing due to the splash screen. It is now shown after the main wxPython window has been created.
  • Fix for the new analysis wizard when running the GUI tests. If the create_button() method is called without a function argument, the wizard is still created. This is triggered in the relax_disp branch on certain systems.
  • Bug fix for the spin parameter array always being converted to lowercase. The is in the data_store.mol_res_spin.SpinContainer._back_compat_hook() method. It always calls the _back_compat_hook_mf_data() method which converts the spin 'params' list all to lowercase. Now the _back_compat_hook() method first checks that the data pipe is that of a model-free analysis.
  • Proper bug fix for the spin parameter array always being converted to lowercase. The previous fix was causing failures in certain cases. One system test and one GUI test were failing. Now the spin container is checked for the presence 'equation' variable to determine if this is a model free data pipe.
  • Fix for the relax version file for the relax user manual construction. This was causing 'scons user_manual_pdf' and related targets to fail when a local git repository is used (via git-svn).
  • Bug fix for the page numbers in the index - these were often out by a few pages. The makeindex command was being run too early in the repetitive LaTeX compilation chain, causing the page numbers to be incorrect. It is now run twice to fix the problem.
  • Fix for the spectrum.read_intensities user function in the GUI. The menu string was truncated to spectrum.read.
  • Python 3 fix for the lib.software.nmrpipe.read_list_intensity_seriestab() function. The inbuilt Python filter() function does not return a list in Python 3, as previously, but rather a filter object. Therefore a call to list() is required to properly convert the data.
  • An attempt at better handling MS Windows not releasing the file handle on time in the test suite. The system and unit tests tearDown() method should now be resilient to the strange MS Windows behaviour of not releasing the relax state files. The tearDown() method should now complete even when this error occurs. A delay of 3 seconds has been added when the WindowsError occurs to give the OS some time before attempting to delete the file again. If this fails, then the file deletion operation is skipped.
  • Better handling of temporary file and directory removal in the relax test suite. The new test_suite.clean_up.deletion() function has been created from the recent method of the same name. This is used by the tearDown() method of the system, unit, and GUI tests. It should prevent rare MS Windows errors from appearing due to the OS not releasing a temporary file after a close() call.


Version 2 of relax

relax 2.2 series

relax 2.2.5

  • Fix for a copy and paste error in the Structure.test_read_merge system test.
  • Fixes for all the Ap4Aase truncated PDB files. The atom numbers are now sequential, as defined by the PDB standard.
  • Bug fix for the structural data consistency test in the pack_structs() structural API method. The index was not correct causing failures in certain rare cases.
  • Python 3 fix for an import into the generic_fns.structure.internal module.
  • Python 3 fixes for the relax version information for code checked out from the relax repository. The subversion version.revision() and version.url() functions now handle the Python 3 issue of Popen working with byte arrays instead of normal strings.


relax 2.2.4

  • 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 http://thread.gmane.org/gmane.science.nmr.relax.user/1397/focus=1402 and by by Angelo Miguel Figueiredo <am dott figueiredo att fct dot unl dot pt> in the unrelated bug report at https://gna.org/bugs/?20613. 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 http://thread.gmane.org/gmane.science.nmr.relax.user/1422. 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.


relax 2.2.3

  • Fixes for the structure.delete user function. This can now handle no data being present, the spin and interatomic data containers are now have their structural data properly deleted, and printouts have been added so the user knows what has happened.
  • Bug fix for the arg_check.is_float_matrix() function for when the dimensions are not given.
  • Fix for the structure.add_atom user function for the internal structural object. The atomic positions for each model are now correctly set.
  • Formatting fixes for the generic_fns.structure.pdb_write module.
  • Fix for the classic_style() method of the model-free specific Macro class. This was identified by the new Mf.test_bug_20531_molmol_macro_write_relaxfault system test, but would probably never be encountered by relax users. It is not related to the bug this test is trying to catch. The problem is if spins have model-free parameters set up but there is no model-free model initialised - then the Molmol and PyMOL macro creation would fail.
  • Fix for bug #20531, the RelaxFault during the final stages of the auto_analysis.dauvergne_protocol model-free analysis when the Molmol and PyMOL macros are being created. The problem was caused by model m9 (just the Rex parameter) when trying to determine what the order parameter for fast (< 200ps) motions is. The code was assuming that the model-free model would always contain an order parameter.
  • Fix for the generic_fns.structure.pdb_write.het() function - the record now has trailing whitespace. The PDB records require trailing whitespace to the 80th character position.
  • Fixes for many of the generic_fns.structure.pdb_write functions. The PDB records are now all filled with whitespace up to the 80th character.
  • Fix for the creation of HET PDB records in the internal structural object. The residue name and chain ID were mixed up.
  • Fix for the generic_fns.structure.pdb_write.ter() function. Whitespace to character 80 is now being added to the TER PDB records.
  • Fix for the creation of the FORMUL PDB records by the internal structural object. The component number is now set to the index of the hetrogen plus one. This number should have been a sequential number starting at 1 and is not related to the residue number in any way.
  • Fix for the generic_fns.structure.pdb_write.model() function. The correct amount of whitespace is now added to the end of the record.
  • Fix for the internal PDB reading - the MASTER record was being marked as a molecule. Now this record is checked for and the molecule loop terminated.
  • Bug fix for the XYZ 3D structure file reader. The atom name is now correctly set up for each atom in the file. The element type setting has also been simplified.
  • Fix for bug #20603, the relaxation data right click menu failure. The problem was that there was that the last menu item specified had no contents. This item has been removed.
  • Fix for bug #20563, the end failure of the model-free auto-analysis. This was reported by Stanislava Panova. The problem was related to the Monte Carlo simulations. The generic_fns.monte_carlo.create_data() function is now asking for the errors associated with a certain data point, even if that data point does not exist. The solution was to check if the relaxation data ID string is present in spin.ri_data_err before accessing the key-value pair (in the specific API _return_error_relax_data() common method).
  • Bug fix for the maintenance of the spin ID lookup table metadata. This is important for small molecules. Non-unique IDs were being placed into the lookup table,resulting in incorrect spin containers being sometimes used. Now the molecule container has the _res_name_count and _res_num_count metadata and the residue container the _spin_name_count and _spin_num_count structures. These are updated via metadata_update() and are used by the spin_id_variants() function to create a list of purely unique spin IDs.
  • The spin_id argument to the residue.delete user function is no longer read-only. This allows spin ranges or other complicated IDs to be specified. This is needed for the Bmrb GUI tests to pass.
  • Fix for the package __all__ list checking unit tests - *.pyc files are now skipped.
  • Fix for one of the RelaxError messages from the SpinList.add_item() method.


relax 2.2.2

  • Epydoc documentation fix - a circular import in the GUI code paths has been broken. This affects the API documentation at http://www.nmr-relax.com/api/.
  • Fix for the failed loading of states in the GUI. This problem was caught by the State.test_bug_20480 GUI test. If the loading of a state file fails,sometimes the relax data store can contain partial information from that file. Now if the loading fails in the GUI, relax is reset.
  • Fix for bug #20480, the failure to load a saved relax model-free state in the GUI. This was reported by Stanislava Panova. The problem was that the state file was saved after a RelaxError occurred during the model-free analysis. The GUI data store information states that the active data pipe is called 'final'. But an error occurred prior to the 'final' data pipe being created. The fix was to allow the state to be loaded even if the GUI data store information has been corrupted.
  • Fix for bug #20479 - the failure of non-fully automated model-free analyses in the GUI. This bug was reported by Stanislava Panova. The problem is GUI specific and was when running each diffusion model one after the other. The GUI was setting the base data pipe to the 'final' data pipe, which is a clear error.
  • Fix for bug #20481, the bug where the dauvergne_protocol model-free auto-analysis[d'Auvergne and Gooley, 2007][d'Auvergne and Gooley, 2008] expects the prolate and oblate spheroids and ellipsoid to be optimised. It was caught by the Mf.test_bug_20479_gui_final_pipe GUI test.
  • Bug fix for the diffusion tensor PDB creation in the dauvergne_protocol model-free auto-analysis. The call to the structure.create_diff_tensor_pdb user function now only occurs if structural data is present.


relax 2.2.1

  • Python 3 fix for a print statement in the metal_pos_opt.py N-state model system test script.
  • Python 3 fix for the part of ScientificPython distributed with relax (for the PDB parser).
  • Python 3 import fixes for the GUI.
  • Python 3 fixes for the list sort() method - this has been replaced by the builtin sorted() function.
  • Fix for bug #20464 - the model-free analysis failure with missing relaxation data. The problem was the previously missing data had a value of None whereas now the dictionary element can be missing. Checks have been added to make sure the spin specific relaxation data structures have the key corresponding to the data.
  • Fix for the N_state_model.test_monte_carlo_sims system test. On certain systems, the chi2 check is too stringent.
  • Fix for the bug reported as the support request #2998. CONECT records pointing to non-existent atoms can now be handled.
  • Fix for bug #20469, the failure in reading X-ray PDB files using the ScientificPython parser. The ScientificPython Geometry.Transformation module is now distributed with relax. Some linear algebra imports in the Geometry.TensorModule in newly used code paths have been fixed as well.
  • Fix for bug #20470. The structure.read_pdb user function now accepts the alt_loc argument for specifying the alternate location indicator to read. This is used by the internal PDB reader. The bug was caught by the Structure.test_bug_20470_alternate_location_indicator system test.
  • Fix for bug #20471 - the is_empty() AttributeError when reading BMRB files. The problem was that the data pipe is_empty() method was not handling structural data correctly. The is_empty() method now belongs to the MolContainer objects rather than cdp.structure, and the object cdp.structure is not always present.


relax 2.2.0

  • Scons fix for MS Windows. A bug was introduced in the previous version which causes scons to fail on MS Windows. This has to do with the ctypes.Structure object but strangely led to a AttributeError importing scipy when initialising scons.
  • Another attempt at fixing the scons failure in MS Windows due to scipy and ctypes killing each other.
  • Work around for a numpy bug triggered by scons and the import of Scientific.Visualization.VMD. For details, see the thread started by Jack Howarth (howarth att bromo dot med dot uc dot edu) started at http://thread.gmane.org/gmane.science.nmr.relax.devel/3663 (Message ID:<20121019140023.GA26861@bromo.med.uc.edu>).
  • Fix for a fatal bug in the multi-processor code (https://gna.org/bugs/?20253). The Queue module is now imported as 'queue' for Python 3 support, so the code was referring to the wrong object name.
  • Bugfix for the grid_search user function. The elements of the list of integers can be None to indicate that no grid search in that dimension is to be performed.
  • Fix for model elimination in the modsel.py model-free sample script. The eliminate user function should be applied to each data pipe separately.
  • Fix for the relax_io.write_data() function - it can now handle no data being sent in.
  • Bugfix for the use of pseudo-atoms for RDCs in the N-state model analysis. If the second atom of the pair in the intermolecular data container holding the RDC data was a pseudo-atom, then the N-state model optimisation setup would fail. Now both the first and second atoms being pseudo-atoms is supported.
  • Fix for bug #20335. The global alignment ID data structure now has the RDC or PCS ID string correctly removed.
  • Fix for bug #20338, the new tensor name is now set.
  • Bugfix for the catching of errors in the GUI user functions - the sys module import was missing.
  • Bugfix for the GUI combo_list input element SetValue() method. Values not belonging to the combo lists can now be set. This fixes the spin.create_pseudo user function in the test suite, a bug triggered by the N_state_model.test_absolute_rdc_menthol GUI test.
  • Fixes for the align_tensor.copy user function for when the tensor_to argument is not supplied. Now it is assumed that the new tensor will have the same name as the old. The new tensor is also properly initialised.
  • Bugfix for the N-state model with PCSs and the temperature or spectrometer frequency are not set. Previously the missing value was set to 0 K or 1e-10 Hz, but this was causing optimisation to fail. Now a RelaxError is produced if the value is missing and optimisation is attempted.
  • Fixes for the calculation of RDC and PCS Q factors for when fixed alignment tensors are present. If a tensor is fixed, then there will be no back-calculated data. Therefore instead of returning from the function, a continue statement is used to skip just that alignment.
  • Bugfix for the RelaxNoAlignError error class - the printout statement was broken.
  • Bugfix for the rdc.copy user function - it is now functional. The code was old and untested, and still assumed that the RDC values were held in spin containers rather than the interatomic data containers.
  • Partial fix for bug #20378. The gui_raise() function was operating differently under the command line run test suite and the GUI run test suite. The operation of the function is now consistent, and no RelaxError is raised (unless the raise_flag argument is set).
  • Full fix for bug #20378. As no RelaxError is no longer raised in this Bruker.test_bug_20152_read_dc_file GUI test (well only in the command line operation of the GUI tests), instead the current data pipe is checked to make sure no relaxation data was loaded.
  • Fix for bug #20414. The variable for the number of simulations in the AlignmentTensorList object is now set prior to setting the simulation parameter values.
  • Fix for bug #20417. The backwards compatibility hook for the loading of old relax state and results files can now handle the presence of proton spins. The data structures are now correctly converted to the current data pipe design. This is only the case for old files containing PCS data.
  • Fix for bug #20420. The problem was in the generic_fns.mol_res_spin.create_spin() function. The index_molecule() and index_residue() functions where not taking alternative, non-current data pipes into account.
  • Fix for bug #20421. The loading of relax state files was only updating the spin ID metadata structures for the current data pipe. Now all loaded data pipes are updated.
  • RDC data fix for the _back_compat_hook() method for converting old relax state and results files. The RDC data was not being shifted into the corresponding interatomic data container and remained in the spin containers.
  • Fix for the bug caught by the N_state_model.test_mc_sim_failure system test. If no RDC error is present, then the returned error from the N-state model analysis specific method return_error() is None.
  • Fix for the missing PCS data in the N-state model Monte Carlo simulations. This was caught by the N_state_model.test_mc_sim_failure system test.
  • Fix for the N_state_model.test_mc_sim_failure GUI test - the relax data store was not empty at the start.
  • Bugfix for the loading of PCS data from a file with different spin types in different columns. This was caught by the Pcs.test_load_multi_col_data system test which now passes.
  • Bugfix for generic_fns.mol_res_spin.metadata_prune(). Non-unique molecules and residues are now removed from the spin ID lookup table.
  • Proper bugfix for the spin ID metadata lookup table pruning. The Mol_res_spin.test_prune_metadata system test now passes. The previous fix was not complete, and it should have been in the spin_id_variants_elim() function rather than metadata_prune().
  • Python 3 fix for the Pcs.test_grace_plot system test.
  • Fix for the N-state model _minimise_setup_atomic_pos() method for the paramagnetic centre. The cdp.paramagnetic_centre_sim may not exist prior to Monte Carlo simulations.
  • Fix for the Monte Carlo initialisation of the paramagnetic centre position in the N-state model. The simulation positions are now initialised to the optimised position.
  • Fix for the N-state model Monte Carlo simulations for when the paramagnetic centre is fixed.
  • Bugfix for the N-state model optimisation of populations and paramagnetic position. The gradient from dfunc_standard() is now correctly calculated when both are optimised.
  • Fix for the assembly of the N-state model linear constraints. These were not set up correctly when the populations and paramagnetic position are optimised together.
  • Bugfix for the N-state model Hessian d2func_standard() method. An index variable name was incorrect causing the population model to fail with Newton optimisation.
  • Bugfixes for the _opt_uses_pcs() and _opt_uses_rdc() N-state model methods. These now check that the populations are optimised as well.
  • Fix for a bug caught by the N_state_model.test_metal_pos_opt system test. The problem was that uninitialised probability arrays of None from cdp.probs was always sent into the target function, whereas None should be sent in instead.
  • Big data store clean up fix for the N-state model. The N-state model specific base_data_loop() method now skips deselected interatomic data containers and spins. This prevents a lot of junk data being created in the data pipe, for example back calculated and Monte Carlo simulation RDC and PCS data.
  • Fixes for the relaxation curve-fitting specific return_data() method. Strangely it appears as if this method is never used.


relax 2.1 series

relax 2.1.2

  • Fix for the State.test_load_state_no_gui() GUI test - the data pipe bundle is now given.
  • Another attempt at fixing a nasty circular import in the relax GUI.
  • Fix for the relax user manual compilation. The full path for an icon in the graphics directory was being used.
  • API documentation fix - a circular import has been broken. This was only a circular import when the gui package is imported from an external program like Epydoc.
  • PDB format fix for the atom numbers of zero - the atom number should be consecutive and unique.
  • Big fixes for the running of the GUI tests. The GUI initialisation and termination, when not running in GUI mode, is now preformed outside of the Python unittest framework. The GUI was previously initialised in the setUp() method for all GUI tests, but for some reason this caused abrupt terminations of the GUI_test_runner.run() method. This run method, when finished, would not return to the Test_suite_runner but would cause the Python interpreter to silently die. The result was that the test suite summary would appear not to be printed out.
  • Python 2.3 and earlier fix for the unit test module for the float module. The 'tests' class variable was renamed so that the test suite does not think that it is a unit test.
  • Bug fix for the unit test runner - this restores functionality broken all the way back at r12100. The TEST_SUITE_ROOT constant no longer exists, so the check for it is now skipped. This allows tests to be run directly by the script.
  • Python 2.4 and earlier fixes for the Queuing module. The TaskQueue class from http://code.activestate.com/recipes/475160/ which was added to Python 2.5+ has been added to the compat module. This module is now used for all imports of the Queue class for all Python versions.
  • Test suite bug fix - the GUI tests now cleanly terminate the interpreter thread. This allows the test suite to terminate normally. With different Python versions on different operating systems, this could sometimes cause the test suite to freeze at the end, the final printout to be missing, or other strange behaviour.
  • Python 2.3- fixes - the Modelfree4 and DASHA system tests are now skipped if the subprocess module is missing.
  • Python 2.3 and earlier fix for the Test_relax_re.test_search() unit test. The unittest assertTrue() and assertFalse() methods do not exist, so assertEqual() is used instead.
  • Python 2.3 and earlier fix - the subprocess module is only imported when present. This is for the stereochem_analysis auto-analysis, but the import kills all of the auto-analyses.
  • Python 2.3 fix - eliminated the superfluous operator.itemgetter() call in the diffusion tensor code.
  • Python 2.4 and earlier fix for the GUI. Try-except-finally statement blocks are not supported, so these have to nested in two try statements.
  • Python 2.4 fix - the unit test runner no longer uses the builtin set() method.
  • Python 2.4 and lower fix for the pipe_loop() generator method. In these Python versions, a 'try' block with a 'finally' statement cannot contain 'yield' statements. This work around should be compatible with all Python versions.
  • Python 2.4 fixes - the ctypes module does not exist in Python versions 2.4 and lower. This is only used for some non-essential functionality on MS Windows, so now it is deactivated if not present.
  • Fix for bug #20213. The problem was that the generic_fns.sequence.generate() function was searching for a spin based on its spin ID generated from the spin name and not spin number. Hence two spins with the same name but different numbers were treated as the same spin, and only data from one was being generated via the copy() function.
  • Bug fix for wxPython 2.9.4.0 - the unsetting of the alpha mask for all bitmap images should now work. The wx.Bitmap.SetMaskColour(None) call does not work, so instead a wx.Colour() instance is passed in instead.
  • Fix for bug #20210 - relax now runs again without having wxPython installed.
  • Bug fix for the BMRB system test initialisation for when the bmrblib module is missing. The base __init__() method needs to be initialised first.
  • Fix for bug #20201. The bruker.read user function can now handle the situation where multiple spins per residue are already loaded prior to the user function call. The isotope value from the DC file is now translated to the element name and this is used as part of the spin ID string.
  • Fix for bug #20197 - the PyMOL and Molmol macro failure. The macro creation now only operates on spins called 'N' and assumes these are the backbone nitrogens. The sidechain tryptophan indole NH data will need to be detected and added later.
  • Fix for bug #20198 - the relaxation data back-calculation error. The problem was that the call to the model-free overfit_deselect() method was deselecting any spins lacking relaxation data. This should not happen, as no spins need to have relaxation data for this calculation.


relax 2.1.1

  • Fix for bug #20189. The Sequence GUI element can not handle values of None.
  • The citations chapter is now included in the HTML version of the user manual. For some reason, a file named 'cite.tex' cannot be handled by latex2html.
  • The latex2html compilation of the user manual now ignores the \bibitem{} commands. This is needed for the HTML version of the user manual.
  • Fixed a section titled 'Introduction' clashing with the intro chapter of the user manual.
  • Fixes for the user function icons in the HTML version of the user manual. These icons are now placed on the correct HTML page.
  • Removed the text '.eps.gz' from all of the LaTeX included graphics in the user manual. This allows latex2html to select and use the PNG images instead, producing much better graphics for the online manual (http://www.nmr-relax.com/manual/index.html).
  • Fix for the graphics.fetch_icon() function for when no file format is specified.
  • Elimination of all duplicated chapter, section and subsection titles in the user manual. This fixes bug #20185.
  • The HTML files for the user manual now have longer names - this is needed for removing the duplicates.
  • Fix for the duplicate title finding script - the LaTeX and HTML mode alternatives are no longer mixed up.
  • Fix for bug #20177. This was simply a lower precision OS/Python/numpy combination causing a test suite failure - there are no practical effects and only the precision of the system/GUI test has been lowered.
  • Another bug fix for the sequence GUI editor window. This bug was being triggered by the User_functions.test_structure_pdb_read() GUI test which now passes.
  • Small fix for the User_functions.test_structure_pdb_read() GUI test.
  • Fix for bug #20184. The behaviour of the gui.string_conv.gui_to_int() and related functions has changed in the last few months and the Sequence_window() GUI element has not changed to match. This has been fixed and the User_functions.test_structure_pdb_read() GUI test now passes.
  • Fixes for the User_functions.test_structure_pdb_read() GUI test.
  • Fix for bug #20183 - the failure of the sequence editor window. The problem was that fields which could be either single values or lists (or tuples) of values were not properly handled.
  • Fix for bug #20182 - the sequence element window ordering issue. The sequence element window now has the parent wx.Window element set. This prevents the main relax window from being set as the parent and hence coming to the front after the sequence element window is launched from a user function window.
  • Fix for bug #20181 - the GUI sequence editor window TypeError problem.
  • Window ordering bug fix for the user function windows launched from the spin viewer window. The spin viewer window no longer hides behind the main relax window after the launch of the user function.
  • Bug fix for the repetition of Monte Carlo simulations in the relaxation curve-fitting analyses. This is in the specific analysis API, so will allow all analysis types to repeat Monte Carlo simulations for error analysis.
  • MS Windows fix - the NOE system and GUI tests are now less strict in checking the errors.
  • Proper bug fix for storing the execution status of wizard and user function pages. This allows the test suite to pass again. The execution status is now properly returned from the wizard pages run synchronously (and always set to True for asynchronous calls).
  • Fix for bug #20173. The palmer.create user function should have been checking that the diffusion tensor had been initialised. This is now being performed.
  • Bug fix for the execution of wizard pages - the execution status is now observed. This fixes bug #20152. The problem was that the execution status was being lost in the protected_exec() function. However as relax errors are caught in the GUI interpreter anyway and the status is returned normally, the protected_exec() wrapper was removed.
  • Bug fix for the creation of the user function GUI pages - the (a)synchronous arg is now observed. This argument was being ignored, which in some wizards was causing user function calls to be asynchronous. This can result in racing related crashes.
  • The bruker.read user function now throws a RelaxError when old PDC files are detected. This is a partial fix for bug #20152.
  • Fixed the newlines in the sample script in the consistency testing chapter.
  • Fixed the bounding box for the consistency testing figure and also fixed some Latex unfriendly code. Problems were spotted by Edward d'Auvergne in a post at https://mail.gna.org/public/relax-devel/2012-09/msg00039.html.
  • Fixed a bibliography entry label problem. This was spotted by Edward d'Auvergne in a post at:https://mail.gna.org/public/relax-devel/2012-09/msg00040.html.
  • Bug fix for the creation of 2D graphs via grace.write for when many data sets exist. The algorithm for setting the Grace symbol number to be between 1 and 10 was broken!
  • Fix for bug #20133 - this was simply a missing import.
  • Fix for the spin.create user function documentation - the prompt examples were wrong.
  • Bug fix for the generic_fns.grace.get_data() function. This was just recently introduced and was triggered by the Relax_fit.test_bug_12670_12679 system test.
  • Fix for bug #20120, the bad Grace plots with multiple spin types. The grace data assembly function was not setting the correct index for when a spin type changes to a preexisting type.
  • Bug fix for the reading of Sparky peak lists. Spin names with numbers at the end were not being correctly identified. This fix allows Trp indole NE1-HE1 data to be loaded.
  • Bug fix for the loading of peak intensities via spectrum.read_intensities. The user function could not be applied twice, preventing the loading of data from different spin systems such as Trp indole NH data.
  • Another fix for the relax_data.temp_control description.
  • Fix for the incomplete relax_data.temp_control user function description.
  • Spell fix for the relax_data.temp_calibration user function description.
  • Fixes for the referencing in the J(ω) mapping chapter of the user manual.
  • Fixed some citations in the newly introduced model-free J(ω) paragraph.
  • Fixed a bunch of links in the development chapter of the user manual.
  • Small fix for the sample script in the relaxation curve-fitting chapter of the relax manual.
  • Small fix for the sample script in the NOE chapter of the relax manual.
  • Bug fix for the RDC Q factor calculations for when the dipolar constants are not all the same. Now instead of a RelaxError, a warning is given and the Q factor normalised by 2Da2(4 + 3R)/5 is skipped. This allows long range and mixed nuclear pairs to be supported.
  • Import additions to fix the epydoc import of the 'sconstruct' script for the API documentation.
  • Epydoc docstring fixes for the API documentation.
  • Import fix for the epydoc building of the API documentation.


relax 2.1.0

  • Bug fix for the model-free GUI auto-analysis GUI test on MS Windows - the wizards for the CSA value and nuclear isotopes were experiencing racing conditions on MS Windows.
  • Bug fix for MS Windows for the deletion of temporary files in the system tests. For certain Windows/Python combinations, a WindowsError was being raised saying that the file cannot be deleted as it is being used by another process.
  • Fix for the reporting of skipped GUI tests. The Frame_order tests skipped because of the missing Scipy module were been labelled as system rather than GUI tests.
  • The GUI show_pipe_editor() method is now the place where the methods are registered with the observers. This is a partial bug fix for the GUI tests. The hiding mechanism of the window with unregistration requires this.
  • Bug fix for the pipe editor window hiding and restoring. All of the Pipe_editor.Show() method has been shifted into the GUI show_pipe_editor() method. This is needed for the technique of unregistering with the observer objects when the window is closed via a Hide() call.
  • Fix for the State.test_load_state_no_gui() GUI test for handling pipe bundles.
  • Redesign of the setUp() and tearDown() methods of the GUI tests. This is needed as the current design does not work under MS Windows. Instead of created a new wx app for each test (this dies in Windows as it looks like only a limited number of toolbars can be created), only one app is created and is recycled. This design better mimics GUI usage anyway. This change uncovers a few GUI bugs not caught by the previous design.
  • Bug fix for the GUI test suite setUp() method. The observer objects are reset at the start to get around a bug when the setUp() method fails for a previous test.
  • Bug fix for the running of the GUI tests on Mac OS X - the relax GUI 'app' needs to be deleted after each test.
  • Bug fix for the Dead_uf_pages.test_mol_create() GUI test for MS Windows. The _execute_uf() method is now used instead of simulating _ok() calls.
  • Bug fix for the GUI tests on MS Windows. The GuiTestCase._execute_uf() method now prevents the wizard from running when calling the GUI user function by setting the wx_wizard_run argument to False. This allows the wizard _ok() call to function on Windows.
  • Bug fix for the Palmer system tests for the changed spin ID syntax. The spin Gly 2 can no longer be selected with ':2&:Gly', the '&' symbol is not allowed here.
  • Bug fix for the Value GUI input element for integer values. This is only uncovered when remotely running the GUI - e.g. through the test suite - and an integer value is set.
  • A final fix for bug #19887. Now a RelaxError is raised if the number of peak intensities is not the same for all spins. This occurs in the relaxation curve-fitting overfit_deselect() method.
  • Partial fix for bug #19887. The problem is that the number of peak height values was not the same for all spins. The error message was being caused by the math_fns.relax_fit C object 'setup' function being feed in incorrect values, causing relax to fail directly after the setup() call in specific_fns.relax_fit.minimise(). The number of points was being taken from cdp.relax_times, but in the Relax_fit.test_bug_19887_curvefit_fail system test, one of the 3 spins has 4 points rather than 5. Now the correct number is sent into setup().
  • Fix for reading of BMRB CSA saveframe data - spin IDs generated from the data now have molecule info. This is problematic only in certain edge cases, for example a multi-molecule entry.
  • Bug fox for the generic_fns.mol_res_spin.return_spin_indices() function. The selection object was using the wrong variable name, and the look up table fallback was always on.
  • Bug fix for the relax_data.copy user function - it can now handle spins without relaxation data.
  • Bug fix for the grey about windows on MS Windows. All the about windows were grey. The temporary wxPython 2.9.3.1 fix was breaking the Windows GUI.
  • Bug fix for the model-free analysis tab about window - sometimes a grey region would appear at the bottom. This is a problem in at least GTK+ as scrolling is in increments of 20.
  • Bug fix for sizing of the GUI about dialogs - the virtual sizes are now accurately calculated. To do this, the window contents (a wx.BufferedDC instance) is created twice, with the virtual window size exactly calculated in the first pass, and then used to set up the device context in the second. A space is also now added to the end to ensure the border is there.
  • Fixes for the spin.create user function for GUI usage.
  • Fixes for the J(w) mapping and consistency testings scripts so they can run as GUI tests.
  • Fix for the spin.copy user function for GUI use.
  • Bug fix for the return_spin_from_selection() function for the 'multi' flag. This function needs to handle the case of no spins matching the selection!
  • Bug fix - the spin_id arg for the relax_data.read user function now actually does something. This argument is passed into the pack_data() function, where it is used to match against the spins matching each file line. Only if there is a match, is the relaxation data loaded for that spin.
  • Fixes for the reading of relax 1.2 results files. The new 'H' spin containers are now deselected, and the simulation structure creation has been reverted.


relax 2.0 series

relax 2.0.0

  • Fixes for the bmrb.write backend - the generic_fns.exp_info module should be used rather than the cdp. The abstraction via the generic_fns.exp_info module is needed to make sure all the relevant current data pipe structures are set up.
  • Fix for the bmrb.display user function - this user function never worked as pystarlib expects a file path as a string, but a modification of pystarlib fixes this.
  • Fix for the model-free about dialog - the fonts for the different titles can now be set. The new font.roman_font_18 has been added, and the about dialog draw_title() method now takes the alt_font arg for specifying an alternative font.
  • Bug fix for the model-free specific analysis duplicate_data() method - the cdp.exp_info should be skipped. This was not picked up before as this structure is normally non-existent during the analysis.
  • Fix for the Bruker system tests - the NMR proton frequency is in Hz, not MHz.
  • Fix for the GUI for when a script is launched from the command line - the analysis tabs are now updated at the end of the __init__() method, and the ds.relax_gui data store object is no longer overwritten if it already exists.
  • Bug fix for running a script when launching the GUI. This was completely failing but now the script is executed prior to the launching of the GUI.
  • Bug fix for the generic_fns.spectrum.replicated_ids() function for when no replicates exist. This will now return an empty list instead of an error being raised.
  • Fix for the spectrum.read user function - a RelaxError is now raised if the file name is not given. This is important for the GUI to prevent unintelligible errors to be presented to the user.
  • Fix for the experimental information in the relax data store - the information can now be reset.
  • Bug fix - the 'relax --version' print out now works from any directory. This was only working if relax was being run from the installation directory!
  • Fix for the prompt and script UI user function intro printouts. This text is no longer passed through the format_text() function which has problems with newline characters.
  • Fixes for the GUI tests tearDown() method. All wx events are now flushed before the deletion of GUI elements.
  • The pipe.delete user function now operates synchronously in the GUI to avoid the GUI blowing up!
  • The user function pages are now registered and unregistered with the 'gui_uf' observer object. This allows the ComboBox args to be properly updated with asynchronous user function calls. The old update method suffered from racing and hence often updated before the user function had executed. Now the on_display() method registers the GUI user function page update_args() method, and the on_next() method unregisters it, allowing the observer to update the page only when it is visible to the user.
  • Fix for the GUI tests - the ds.tmpfile string is now being created by the base setUp() method. This is needed to stop files from being created within the relax directory tree.
  • Bug fix for the model-free specific analysis - the Dr diffusion tensor parameter is now defined.
  • Fix for the arg_check.is_float_matrix() function for rank-1 arrays. The function failed on lists of Python values, for example a list of bools. An additional check has been added to make sure that the list elements are also lists.
  • The delete all analysis method now does what it warns and resets relax at the end.
  • Fix for the model-free GUI auto-analysis test under certain conditions. The spin viewer window was loading the spins asynchronously, but the subsequent relaxation data loading was synchronous. If a previous GUI test failed this would often trigger a racing condition.
  • Mac OS X bug fix for the non-read only ComboBox GUI input elements. This is for the Value and Combo_list GUI input elements. The problem was two-fold. First the convert_to_gui() call was required to convert the value to a unicode string, as a normal string will be not be set via the ComboBox.SetValue() method. Secondly old selections need to be turned off. On other operating systems, the SetValue() call will reset this - but not on Macs.
  • Mac OS X bug fixes for the GUI ComboBox input elements. The ComboBox.GetClientData() method on Mac OS X fails if the ComboBox.GetSelection() method returns -1 (or wx.NOT_FOUND).
  • Bug fix for all of the specific analysis code. The SPIN_PARAM and GLOBAL_PARAM structures are now initialised within the __init__() methods rather than being class variables. This bug was only uncovered by the auto-generated user functions. The problem with them being class variables of the base class is that the objects are then the same for all specific analyses.
  • Fixed the N-state model description so that it is no longer about domain motions. This stands out in the GUI when creating data pipes!
  • The GUI user function on_execute() method no longer shows the controller in test suite mode. The controller Raise() method was being called at the end of the method, without checking status.show_gui.
  • Fix for the pipe editor - this window is now the parent for the user functions it calls. Therefore the pipe editor no longer disappears behind the main relax window.
  • Fix for two of the arg_check.is_*() fns - the individual elements were incorrectly checked.
  • Bug fix for the Combo_list.GetValue() method - it can now handle no user input cleanly.
  • Fix for the Analysis_controller.on_page_changed() method for reset events. The relax data store now always has a ds.relax_gui object!
  • Fix for the post_reset() method of the Analysis_controller object. This unregisters all the analyses from the observer objects, and calls the set_init_state() method only once all analysis pages are deleted. This in combination with the synchronous reset user function calling prevents the GUI from blowing up!
  • Fix for the gui.misc.gui_to_tuple() function. This was failing in many cases, especially where the value is not a tuple to start with.
  • Bug fix for the bruker.read user function for reading Bruker Dynamics Centre files - the spectrometer frequency needs to be converted from MHz to Hz.
  • Bug fix for the loading of the molecule name and type from relax state or results files. The str() builtin function is now used to convert the string from unicode to a normal string. This is needed as u'My mol' != 'My mol', breaking a number of tests.
  • The relax_data.delete user function is now finally properly implemented bug #19785.
  • The model-free minimisation is now checking for multiple vectors per spin, and raises a RelaxError.
  • Fix for the relax controller SplitIO() setup for logging and teeing modes. The SplitIO() usage is now disabled for the test suite. This prevents a doubling of the print outs in the GUI tests. The problem was introduced at r15843 with the accommodation for the logging and teeing modes with the GUI.
  • Created a system test Mol_res_spin.test_residue_delete() demonstrating a failure of the user function - deleting the first residue removes the entire sequence.
  • Fixes for most of the structure user functions - the pipe check is now performed at the start.


Version 1 of relax

relax 1.3 series

relax 1.3.16


relax 1.3.15

  • Fix for the about dialogs in the GUI when combined with a scrolling window (this is only a problem for the wxPython 2.9 series).
  • Fix for the fetch_docstrings.py script used for the user manual creation - the number of \linebreak[0] commands inserted was far too great.
  • In generating the HTML user manual, the ignore_commands function is now being used to force latex2html to ignore \linebreak[0] commands as these were previously putting the text '[0]' throughout all the HTML pages.
  • For the HTML user manual, the document splitting has been restored to a split depth of 5 - this had been changed to make the main chapters of the text more readable, but the user function HTML page is now far, far too long and is a massive strain on browsers.
  • The Mf.test_write_results system test now works with the newer Python 2.7.3 version, as from this version onwards the XML of the relax save and results files will be differently formatted.
  • Big bug fix for the installation path for the relax Mac OS X application. The path to the application Resources folder, where all the relax data files are located, is now set to the install path. The relax.py module was also overwriting the value set in the status singleton and now this no longer occurs.
  • Fix for the py2app setup.py script for Mac OS X application creation - the list of data files to include with the app is now properly formatted.
  • The relax GUI is now robust and able to withstand a call to the reset user function - this could have occurred if the user ran a script with a reset() call, or if reset() was typed at the GUI version of the relax prompt.
  • Added isatty() methods to all of the dummy file objects within relax - this fixes a number of errors caused by the recent introduction of coloured text.
  • Fix for the initialisation of the Exec_info class for the prompt/script output.
  • Fix for the residue.create user function GUI front end - the unnamed molecules are now properly handled, and the gui_to_*() methods are now used for data conversion.
  • Fix for the gui_to_int() function for when text instead of an integer is given by the user.
  • Bug fix for the spin.create user function GUI interface for when molecules or residues are not named - unnamed molecules are now properly handled in the GUI page, and the residue name of None is properly converted into a NoneType prior to executing the back end.
  • Big bug fix for the deletion of analyses tabs from the GUI - this affects wxGTK users on Macs and Linux. Now the spectrum and relaxation data list GUI elements have observer_register() methods, allowing the analysis delete_all() method to unregister all analysis specific methods from the observer objects.
  • Multiple unregistrations of observer methods are now possible without a RelaxError - this allows multiple code paths to unregister methods to allow for pre-removal of methods to avoid queued wx events in wxGTK from occurring on dead or missing objects.
  • Bug fix for the GUI when deleting analysis tabs - the deletion of analysis tabs was previously failing in certain cases.
  • Fix for a bug triggered by wxPython 2.9 when deleting the last analysis tab - the self.notebook object is now deleted when the set_init_state() method is called, allowing it to be properly accessed and recreated.
  • Converted the pipe switching with GUI tab switching to synchronous to avoid rare races (triggered by wxPython 2.9).
  • The analysis deletion buttons now do nothing if the notebook is not created yet - this avoids problems on the new wxPython 2.9 versions.
  • Fix for the radiobutton group in the Spectral_error_type_page of the peak intensity wizard.
  • Fix for the spin loading wizard of the spin window - the RadioButtons of the first page for selecting the spin loading method are now fixed.
  • Fix for the about relax window size for wxPython 2.9.
  • Fix for the relax controller find dialog on Mac OS X with wxPython 2.9.
  • wxPython 2.9 fix for the spin viewer window (at least for Mac OS X).
  • The maximize calls for the spin viewer window are now turned off for Mac OS X systems (this is a fix for the fink versions of relax).
  • Bug fix for Mac OS X - the main window is no longer started maximised (a fix for the fink version of relax).
  • Fix for the spin viewer window for wxPython 2.9 - this is for when you right click in the tree view panel on nothing.
  • Fix for the text on the 'finish' button of the GUI wizard - this was accidentally changed to 'apply'.
  • Bug fix for the spectrum.replicated user function for when it is called twice with the same IDs.
  • Bug fix for the relax GUI spin viewer window. When right clicking on nothing in the tree view, an error would occur. Now, instead, a special menu pops up with a single entry for loading spins.
  • Fix for the building of the relax C modules as universal binaries on Mac OS X - the linking was not functioning correctly, and the resultant module was build only for i386.
  • The relax Mac OS X dock icon is now turned off when using the wxGTK build of wxPython from fink - this prevents a little grey frameless window appearing with the largest of the relax Ulysses butterfly icons in the centre.
  • Bug fix for Mac OS X - attempt at killing the Carbon.Evt.TickCount problem by removing argv emulation.
  • Fix for the scons binary_dist target on Mac OS X systems with multiple Python versions - now the py2app program is called with the same python version as used by scons.
  • Fix for the Processor.data_upload() method. The self.run_command_queue() method is no longer being used. Instead the add_to_queue() method is being used to queue up the slave commands, and the run_queue() method is being called at the end to flush the queue.
  • Fixes and clean up of the slave to master transfer mechanism for result commands.
  • Fix for the relax info print out on Python 2.5 or below.


relax 1.3.14

  • Fix for the title of the analysis selection wizard GUI element.
  • Fix for the MemoryError during the "final" run of d'Auvergne Protocol[d'Auvergne and Gooley, 2007][d'Auvergne and Gooley, 2008b] affecting 32-bit systems (bug #19528).
  • Epydoc docstring fixes for the API documentation.
  • Bug fix for old numpy versions missing the float16 object.
  • The relax prompt mode now prints the intro message to sys.stdout - this fixes this mode with the logging option or in the mpi4py multiprocessor mode.
  • Fix for the storage of numpy data structures in the relax save files - if special structures are created by the user, these were not correctly stored. The precision was often too low (printed at the numpy default of a precision of 8), and if one dimension had more than 1000 elements, ellipses would be stored instead (the ellipses would cause the save file to be unreadable by relax).
  • Created the SplitIO.flush() method so that a flush() call now works with the -t and -l command line args - this simply calls the flush() methods of both streams.
  • The relax data store __repr__() method now prints out all objects within the base object.
  • Fix for a rare bug in the model-free analysis for when relaxation data of None is encountered.
  • Fixes for the Dasha system test for the bug #19332 fix.
  • Fixes for the Dasha use functions for file creation and data extraction - this should now handle relaxation data values of None, and also set the parameter values of deselected spins using the DASHA output files.
  • Big bugfix for the value.read user function - the wrong spin ID string was being used to set the parameter value so that all spins have the same value set for the parameter (bug #19332).
  • Bug fix for the consistency testing analysis for when relaxation data of None is encountered.
  • The spin is now deselected if there is really less than three data points, excluding data points of None (bug #19329).
  • Bug fix for the arg_check.is_none() function - the RelaxNoneError was not imported!
  • Fix for the numbering of the TER record and subsequence HETATM records in the PDB file creation. The structure.write_pdb user function now creates the correct TER record after the ATOM records, and the HETATM records are renumbered if needed.
  • Bug fix for the compilation of the user manual. The molecule user function class used the temporary variable i, which was causing the fetch_docstrings script to fail.


relax 1.3.13

  • Fix for the pymol.cone_pdb user function for frame order models with no alpha average position angle. This is specifically for the isotropic cone and free rotor model, although other models might also be affected by this fix.
  • Fixes for the add_molecule() structural API method.
  • Fix for the internal structural object add_molecule() method for when no models exist, now a model is created if none currently exist.
  • A lot of fixes for the internal structural object for handling multiple models.
  • The internal structural reader can now create PDB files if atom numbers are missing, fixing the structure.write_pdb user function in certain edge cases.
  • Bug fix for the pymol.cone_pdb user function for when there is no average domain position. This is necessary for the old 2-domain N-state model analysis type.
  • Bug fixes for the n_state_model.cone_pdb user function, the code was old and not functional any more.
  • Fix for the frame_order.cone_pdb user function, the create_cone_pdb() function was referencing a non-existent variable.
  • Fix for the set up of Monte Carlo data for fixed alignment tensors in the N-state model. The _minimise_setup_fixed_tensors() method has been fixed to return the actual tensor rather than simulation for the fixed tensors, as there is no simulation tensor in that case.
  • Bug fix for the relax_io.read_spin_data() function for spin IDs - spin IDs can now be handled if they are the first column in the data file.
  • Bug fix allowing relax to be run in profiling mode. This has been broken since the merger of the multi-processor branch.
  • Fix for the paramag.centre user function when a numpy array is used.
  • Fixes for the N-state model optimisation setup if PCS or RDC data is not loaded.
  • Bug fix for the setup of the N-state model target function, triggered by missing data.
  • Fix for a divide by zero error in the PCS Q factor function.
  • The RDC and PCS Q factor functions are now more robust when data is missing.
  • Bug fix for the grace.write user function for when the spin ID is specified, the spin ID was previously unused.
  • Bug fix for the Monte Carlo simulation data generation for the N-state model. The create_mc_data() method was always skipping RDC and PCS data due to an incorrect check for the presence of that data.
  • Bug fix for the logging and teeing command line options.
  • Bug fix for missing RDC back-calculated data (rdc_bc). If a sequence is read from a PDB file, but the N-H bond vector cannot be extracted due to a missing proton, the alignment tensor fit to RDC data (specifically the Monte Carlo simulations) would fail.
  • Bug fix for a newly introduced dependency on the wxPython module. This wx module is now optional, and only required for the GUI mode. This allows relax to run without this module installed.
  • Bug fix for IO capture in the test suite with Python 2.6 or below. The RelaxTestRunner._makeResult() replacement method has been reinstated. Replacing the class variable resultclass does not work with earlier versions of the unittest site-package.
  • Fix for bug #18790 - the negative relaxation data errors.
  • Fix for bug #18789 - the zero errors in Grace files. The problem was that the errors were being taken as the X-axis error values, which in the case of spin specific data is zero. Now the Y-axis errors are taken rather than the unused X-axis errors.
  • The status.test_mode and status.show_gui flags are now initialised only once in the singleton to prevent them from being overwritten when a reset() call is made.
  • Mac OS X bug fix for changing pipes in the spin viewer window. The pipe selector element event GetString() method was returning None as this is a read only ComboBox (in wxPython 2.9).
  • Fixes for Mac OS X with wxPython 2.9 for the spin viewer window activation/deactivation, this is now via wx.CallAfter() calls to prevent memory leaks.
  • Bug fix for Mac OS X when using wxPython 2.9.2.4 whereby wx.SafeYield() is causing 'Bus errors'. The wx.SafeYield(None, True) calls have been replaced by wx.GetApp().Yield(True) calls, which should do the same thing but do not cause bus errors on this developmental version of wxPython. This fix is important as the future Mac OS X relax app will use this version of wxPython for 64-bit and Cocoa support.
  • Bug fix for the reporting of non-matching lines in the spectrum.read_intensities user function. The file data printed did not match the actual intensity data currently being processed, hence the wrong data was being printed as non-matching.
  • Fix for running the test suite in debugging mode. The self.capt StringIO structure is always necessary for the final print out.
  • Fix for the results viewer window on MS Windows - it is no longer hidden after switching pipes. For some reason MS Windows always brings the main GUI window to the front when pipe switches occur (probably the notebook switching).
  • Bug fixes for racing in the results viewer window on MS Windows, wx.CallAfter() calls are required for this to work.
  • MS Windows bug fix for pipe switching in the data pipe editor window, the pipe window would be hidden after the switch.
  • MS Windows bug fix for the pipe editor window, the wx.Yield() call has been removed from the update_grid() method as it causes a wx._core.PyAssertionError on Windows.
  • Bug fix for racing in the GUI on MS Windows when the relax prompt window is open. This was caught in the test suite, and only affects MS Windows. Now a wx.CallAfter() call is used to enable the GUI element.
  • Bug fix for the GUI interpreter thread flushing on MS Windows. The Python Queue.empty() method is documented as being unreliable - and that is indeed the case on MS Windows (not on GNU/Linux or Mac OS X though). It sometimes returns false, continually, when the queue is completely empty.
  • A lot of bug fixes for MS Windows with the handling of the busy cursor. All calls to wx.EndBusyCursor() are preceded by a check via wx.IsBusy(). For some reason, in contrast to other operating systems, MS Windows will sometimes turn off the busy cursor by itself. A subsequence call to wx.EndBusyCursor() results in an error.
  • Bug fix for the main window status bar on MS Windows, the text is now being set with wx.CallAfter calls.
  • Fixed a bug on MS Windows for the 'Close all analyses' menu entry and toolbar button. The sequence of internal events is very different on Windows compared to Mac OS X and GNU/Linux, and not everything had been processed before everything was deleted resulting in updates to dead GUI elements.
  • Bug fix for the new analysis wizard cancelling on Mac OS X.
  • Bug fix for the closure of the new analysis wizard window.
  • Bug fix for MS Windows - the spin viewer window was being hidden by the main window when switching pipes.
  • Bug fix for racing in the spin viewer window when switching pipes.
  • Fixes for the peak list wizards for the NOE and Rx auto-analyses for Mac OS X.
  • Bug fix for many unit tests on MS Windows. The os.tmpfile() call has been replaced by tempfile.mkstemp() in the data types passed into the unit tests of the prompt interface. The os.tmpfile() call on Windows results in a "OSError: [Errno 13] Permission denied" error.
  • Bug fix for the scons clean target on MS Windows. The build and dist directories from the Mac OS X py2app program are now only deleted by the clean_all target which checks for the paths.
  • Bug fix for a race condition on MS Windows blocking the test suite. The analyses update_spin_count() call sets the value of the spin systems GUI element. This is now via a wx.CallAfter() call to prevent the race in the GUI.
  • Bug fix for MS Windows - the user function menus are now fully deactivated during execution lock. The submenus were strangely not all being deactivated, so now all submenu items are also deactivated.
  • Bug fix for the switching between analysis tabs on MS Windows. The tab had not been changed when on_page_change() was being called (in contrast to GNU/Linux and Mac OS X). Now wx.EVT_NOTEBOOK_PAGE_CHANGED is being used to bind the page change event rather than wx.EVT_NOTEBOOK_PAGE_CHANGING.
  • Bug fix for the structure.vectors user function back end, the check for already existing vector info now should work.
  • Fix for the results viewer window on MS Windows, the user functions now have the results viewer window set as the parent so that the window is not hidden by the main GUI window coming to the front.
  • Fix for the pipe editor window on MS Windows, the user functions now have the pipe editor window set as the parent so that the window is not hidden by the main GUI window coming to the front.
  • Fixes for the residue.create and spin.create user function GUI pages on MS Windows. The default values are now correctly set. This affects the pop up menu in the tree part of the spin viewer window.
  • Fixes for the user functions launched from the tree part of the spin viewer window on MS Windows. The spin viewer window is now set as the parent, so that the main GUI window does not come to the front.
  • The user functions in the spin viewer window now have the parent window correctly set. This is to help with an MS Windows window ordering bug.
  • Analysis tabs are now removed if the associated data pipe is deleted, avoiding nasty GUI crashing.
  • Fixes and improvements for the peak list wizards in the NOE and Rx auto-analyses. The integration points page is now correctly set up. And the spectrum ID is now only set if the field is blank, preventing a reversion of the user selected value.
  • The parent of the Question dialog in the pipe editor window is set so the window doesn't disappear. Without this, the main GUI window comes to the front after the dialog is shown.
  • Fixes for the main GUI window moving in front of the spin viewer window. The spin viewer window is now set as the parent for the Question dialogs, so that this window remains at the front.
  • Fixes for the residue user function GUI pages for when default values are sent to the page. This fixes the user functions in the spin viewer window.
  • Fix for the new gui_to_str_or_list() function.
  • Bug fix for the structure.read_pdb GUI user function, the values from the GUI are now converted to the correct form.
  • Fix for the Help->Licence menu entry for the new GUI user function design, this additionally opens the relax controller window so the user will see the text.
  • Fixes for the pipe editor window to handle the new GUI user function design.
  • Fixes for the relaxation data reading GUI element for the new GUI user function design.
  • Fixes for some of the GUI user function calls from the tree part of the spin viewer window.
  • Fixes for the GUI user function launching in the model-free auto-analysis tab.
  • The spin viewer window now uses the full user function menu of the Uf_menus class, this should now remove the MS Windows bug whereby the spin viewer window would disappear to the back after closing of the user function wizard dialogs.
  • Fixes for the auto-analysis wizards for the new user function GUI page design.
  • Fixes for the GUI tests for the new design of the user function GUI pages.
  • Fix for the script user function GUI element for opening the file dialog.
  • Fixes for the relax controller, pipe editor and results viewer windows under MS Windows. These windows were all dark grey, the default frame colour under MS Windows. Now all elements are packed into a wx.Panel which sits inside the wx.Frame.
  • Added checks for a current data pipe to a number of GUI user function pages, this prevents relax errors when trying to launch the user functions but when no data pipes exist.
  • Fix for the MS Windows BAT file so that relax can be launched from the Windows PowerShell.
  • Fix for the dauvergne_protocol model-free auto-analysis with the deletion of data pipes. Now only the data pipes created by dauvergne_protocol are deleted. This fixes the problem whereby data pipes from other analyses are deleted by dauvergne_protocol, breaking the GUI.
  • Fix for the spin viewer window for MS Windows, the get_info() method now catches if no item is selected in the tree before trying to get the Python data from it. Asking for Python data from a missing TreeCtrl item ID works on GNU/Linux and Mac OS X, but not on MS Windows.
  • Bug fix for MS Windows - the main relax window is now maximized upon start up.
  • Mac OS X fix for the relaxation data list element - the height algorithm is now more robust. The ListCtrl.GetSize() method appears not to work on Mac OS X. Therefore a different algorithm has been designed to get around this Mac specific problem.
  • Fix for the relax_fit.relax_time GUI user function. The combobox GetValue() call has been replaced by GetStringSelection() for the spectrum ID.
  • Removed the wx.Yield() call from the spin viewer window refresh() method, this is to prevent recursive wx.Yield calls on Mac OS X from killing relax.
  • Fix for the Rx peak list wizard for Mac OS X, the combobox SetValue() call has been replaced with SetStringSelection().
  • Fix for the NOE spectrum loading wizard - the comboboxes need SetStringSelection rather than SetValue calls. SetValue and GetValue on the read only combo boxes seems to fail on Mac OS X.
  • Mac OS X bug fix - the busy cursor is only turned off in the gui_raise window code if the busy cursor is on.
  • Mac OS X bug fix for racing in the GUI interpreter thread. The flush() method was not working properly on Mac OS X, so hopefully now it is thread-safe.
  • Bug fix for Mac OS X for the spectrum.replicated GUI user function. A GetValue() call fails on Mac OS X for a read only wx.ComboBox if no value is set.
  • Fix for the Rx auto-analysis GUI test for the changes to the spectrum.replicated user function GUI page.
  • Another Mac OS X test suite fix - the spin viewer window menu bar is now no longer set in the gui tests.
  • Bug fix for the test suite under Mac OS X - the GUI's SetMenuBar method is only called if status.show_gui is set. This prevents the menu bar from starting when running the GUI tests.
  • Bug fix for Mac OS X - the timer in the relax controller is started with a wx.CallAfter() call. This is to ensure that it will start from the main thread, which is essential.
  • All wx calls to Show(), ShowModal() and PopupMenu() are now suppressed if the status.show_gui flag is not set. This is to eliminate problems of GUI elements starting up in the test-suite under Mac OS X.
  • Fixes for many user function GUI pages for when the apply button is clicked. The combo box GUI elements were having data appended each time on_display() is called (this happens with a click on the apply button), but the previous values were not cleared out. This results in very long repetitive lists.
  • Removed a recursive call to wx.Yield in the spin viewer window as this is fatal on Mac OS X.
  • Fixes for the spectrum.replicated user function GUI page for when the apply button is hit. The spectrum IDs were continually appended to the ID boxes, so the lists could get quite long.
  • Fix for the model-free model changing question dialog in the dauvergne_protocol analysis. The dialog is now larger to see all text, and the answer is no longer back to front.
  • Bug fixes for all of the specific analyses for running Monte Carlo simulations multiple times. Many of the specific analyses were raising RelaxErrors if simulations had previously been run. Now this no longer occurs, so that the analysis can be re-run which is important in GUI mode.
  • All of the major GUI and X freeze fixes have been ported to the relax data list. The fixes for the spectrum list GUI element are now present in the relaxation data list GUI element as well, as the same problems occur in both code paths.
  • Fix for the size_cols() method of the spectrum list GUI element. With the asynchronous updating of the element, sometimes the columns are not setup prior to a size_cols() call.
  • Bug fix for the freezing of X windows! The spectrum list GUI element is now updated with a CallAfter() call so that the element is updated in a thread safe way. Without this, the entire X windows system would sometimes freeze!
  • Bug fix for the freezing of the GUI. The spectrum list GUI element was trying to update itself during execution lock, causing races if the spectrum data structures in the relax data store are being modified as the GUI element update is occurring. This would result in a hard lock of the GUI.
  • Fix for the validate_sequence() function - the eval() calls raise all sorts of errors.
  • Fix for the reading of the sequence from generic formatted files with None in some of the columns. This second problem is for the non-integer columns as the text 'None' was being interpreted as the name.
  • Fix for the reading of the sequence from generic formatted files with None in some of the columns. The generic_fns.mol_res_spin.generate_spin_id_data_array() function now checks for when the data list contains 'None'.
  • Fix for the Rx peak height wizard, the user function flush flag was incorrectly named.
  • Fix for the wizard page _ok() method for the uf_flush flag.
  • Fix for the results viewer window file opening.
  • Fix for the results viewer window in testing mode - it is now not shown.
  • Fix for the pipe editor window - it is now updated when initially created to show all loaded pipes.
  • Fixes for all the calls to the GUI interpreter instance in the spin viewer window. This is now a special thread object, and user function calls are now queued.
  • The auto-analysis GUI pages are now waiting for the data pipe to be created, fixing race conditions.
  • Some more fixes for the relax 'mode' class variable, these problems were due to the multi-processor code merger.
  • Fix for the GUI test mode - the mode variable should be a class variable.
  • Fix for the multi-processor code as the PrependOut class has been renamed to IO_filter.
  • Fixes for some of the file dialog wildcards.
  • Fix for the opening of Grace files via the results viewer. It was being launched in both Grace and a text editor!
  • The spin viewer tree update() method now acquires both the pipe and spin locks, preventing a major source of race conditions.
  • The File menu entires for new or closing analyses or opening a state are blocked with the execution lock. This is needed because the accelerator keys are still active, even if the menu entry is disabled (possibly a GTK bug).
  • The pipe editor window is now acquiring the pipe lock prior to updating its contents. This removes a lot of race conditions, as the pipes can often change which the update occurs.
  • The execution lock is properly locked or released before notifying the observers. This will remove some race conditions where the locked() method is called before the acquire() or release() methods terminate.
  • All wx object Append() calls now have their data passed through str_to_gui() first as well, this prevents GUI failures due to the wrong data type being encountered.
  • All data passed into wxPython SetValue() calls now go through gui.misc.*_to_gui() functions, this ensures that the correct data type is sent into the GUI elements.
  • Fix for the stereochemistry auto-analysis - the pipe_name argument does not exist in this auto-analysis.
  • Fix for the dauvergne_protocol - the maximum number of optimisation iterations is now an int.
  • The observers of pipe alterations should now all be thread safe, pipe changes in relax were causing segfaults in the GUI.
  • Fix for the dauvergne_protocol auto-analysis 'final' model. The final stage of the dauvergne_protocol was broken. The data pipes here need to be created rather than copied from the initial data pipe as results are being read into these pipes.
  • Fix for the dauvergne_protocol sample script - the mc_num argument is now called mc_sim_num.
  • Fix for the assemble_data() method of the NOE auto-analysis - the number of spectra can be less than 3.
  • Fix for the gui_to_float() for when an integer is given, it is now converted to a float.
  • Fix for the spectral list GUI element on Mac OS X, the ListCtrl.DeleteColumn() method is faulty on Mac OS X. So instead all columns are deleted in one go, and then the entire thing is created on update.
  • Fixes for the results viewer window updating on Mac OS X. The EVT_SHOW event was not being triggered by the frame's Show() method.
  • Bug fix for the dauvergne_protocol - the pipe.copy() calls are now followed by pipe.switch(). This is needed as previously the pipe.create user function call automatically switched pipes, but pipe.copy does not.
  • The results viewer window no longer fails if relax is still in the initial state.
  • Bug fix for the value.set user function page - the parameter rather than description is now used. The description rather than parameter was being sent to the back-end.
  • Fix for the spin data check in the dauvergne_protocol auto-analysis - deselected spins are skipped.
  • Fix for the relaxation data check in the dauvergne_protocol auto-analysis.
  • Fix for Mac OS X - the wizard buttons are now all of the same size. SetMinSize() rather than SetSize() needs to be used with wx.ADJUST_MINSIZE.
  • The dialog Close() rather than Destroy() method is being used to terminate the wizard, this is necessary for Mac OS X.
  • Mac OS X bug fit - removed the Destroy() call after ShowModal() in the wizard. The Destroy() method was actually being called twice, the first time either by the _ok() or the _cancel() methods, and the second time directly after the ShowModal(). This is fatal on a Mac.


relax 1.3.12

N/A


relax 1.3.11

  • The setting of the integration method in the pdc.read user function now works.
  • Fixes for the pdc.read user function back-end for the NOE PDC file.
  • Fix for the pdc.read user function back-end for reading NOE data out of the new PDC files.
  • Fix for the relaxation curve-fitting back_calc_I C function so that it works under Python 2.5.
  • Fix for the initialisation of the Bruker_import class. This allows this module to be loaded in Python 2.4.
  • The reference counting appears to not be needed in the C modules. This allows the modules to be compiled under Python 2.4 or lower.
  • Loosened all of the model-free tests so that the minimisation statistics are no longer checked. This will stop users from thinking they have a problem with their version of relax, after running the test suite.
  • Removed numpy from the relaxation curve-fitting C module code. This should help with incompatibilities (and segfault failures) between different Python versions, as this seems to be due to the numpy C interface.
  • Improved the RelaxWarning for the reading of NMRView peaks with missing assignments (bug #17876).
  • Fix for the N-state model for when only the paramagnetic centre position is optimised.
  • Fix for the grid search limits as they were being scaled iteratively for each successive spin system (bug #18030). This only affects certain type of custom grid searches.
  • A ":" symbol in the description of a function variable was preventing the compilation of the user manual using scons (bug #18037).
  • Opened files are closed properly after writing in the final_data_extraction.py sample script.
  • If no diffusion tensor is present, creation of diffusion pdb will be skipped (final_data_extraction.py sample script).
  • Updates for the DASHA sample script for the current version of relax.
  • Updates for the diffusion tensor optimization sample script for the current version of relax.
  • Some fixes for the subprocess.Popen() calls on MS Windows.
  • Removed event.skip due to conflict with Windows (auto-analysis Rx fix in the GUI).
  • Fixes for the spin.copy GUI user function element. This still had remnants of the residue.copy window.
  • The relax icon is not shown in "Global relax settings" window if running on a Mac. This fixes a bug whereby closing the window causes the GUI to crash.
  • Complete redesign of the relax global settings window to fix the Mac OS X crashing (bug #18197).
  • Fix for the global settings window - it needs to inherit from UF_window!
  • Fix for the NOE auto-analysis - the column numbers for the deselected spins file are now assumed. The residue number is assumed to be in the first column. This is a hack until the spin selection part is better designed.
  • Fix for the bug reported as sr #2764. The problem was that the sequence file is now in the variable sequence_file.
  • Fix for the sequence.read user function - the force flag is now being passed on.
  • Fix for the sequence.write user function - the force flag is now passed to open_write_file().
  • Fix for the sequence.write user function when the column separator is not whitespace. The column widths are no longer fixed if the separator is not whitespace.
  • Many bug fixes for the functions of the generic_fns.mol_res_spin module. These fixes are for when a data pipe other than the current data pipe is used.
  • Fix for the relax save states - the current data pipe is now saved and restored. The info about which pipe was the current one was being blacklisted, so was not stored in the relax save file.
  • Fix for the atomic position check in the spin.create_pseudo user function.
  • Fix for pseudo-atom support when only a single structure is loaded. Pseudo-atom support was only working correctly for when multiple models were loaded and atomic positions were not averaged.
  • Fix for the spectrum.read_intensities user function int_method argument for volumes. Volume integration should be called 'point sum', but the back end code was checking against the string 'volume'.
  • Fix in one of the relaxation curve-fitting system tests - 'volume' should have been 'point sum'.
  • Fix for the PCS back-calculation function - divide by zero is now avoided. The function was calculating the normalised bond vector between the lanthanide atom and itself. The normalisation in this case is now avoided.
  • Fix for the spectrum user functions for when the ID order does not match those loaded. If the order of IDs sent to spectrum.replicated did not match the order they were loaded by spectrum.read_intensities, then the spectrum.error_analysis user function would fail. The order is no longer important.
  • Fix - the pipe switching flag is now propagated all the way to the data store add() method. The flag was previously not sent to the method so that the creation of a new data pipe always resulted in a switch to that pipe. This bug is normally harmless.
  • Fix for the model-free _determine_model_type() method when the spin container has no 'local_tm'. This code was failing in certain rare circumstances (when the setting up of the diffusion tensor was forgotten).
  • Fix for structure.read_pdb for when the file contains no PDB data. This is now caught, and a warning is given and the function exists cleanly.
  • Fix for the RelaxWarning system on Mac OS X, the base class __str__ method now returns a simple string. On a Mac, the warning message text was in unicode whereas the __str__() method must return a standard string. So now __str__() is using the str() method to convert.
  • Fix for the structure.vectors user function. It no longer complains about a PDB already loaded when no PDB has been loaded.
  • Fix for the resetting of the global optimisation round in the dauvergne_protocol auto-analysis[d'Auvergne and Gooley, 2007][d'Auvergne and Gooley, 2008b]. The value was being reset to None at every round.
  • Fix for the round determination in the dauvergne_protocol auto-analysis[d'Auvergne and Gooley, 2007][d'Auvergne and Gooley, 2008b]. The 'opt' directory was missing in the path.
  • Fix for the saving/loading of a results file in GUI mode. The save files were containing the ds.relax_gui object and restoring it on loading. This caused the data storage of the GUI to change underneath the GUI resulting in a crash or race conditions.
  • Fix for the resetting of the relax data store - the cdp structure is now set to None. Previously the data store would be cleared, but the __builtin__.cdp structure would point to the old current data pipe, keeping it in existence and causing problems in the GUI.
  • Fix for the xydxdy type Grace graphs - the dx data was not being placed in the file.
  • Fix for the structure.create_diff_tensor_pdb user function for when no element info is available. These atoms where the element is not in the PDB file or cannot be determined should have been skipped.
  • Fix for the molmol macro user functions - one of the args 'param' should have been 'data_type'.
  • Fix for the spin_loop() calls when generating Molmol macros. The full_info argument should have been set to True.
  • Fix for the molmol.write macro creation user function - the file arg can be None!
  • Fix for the molmol.write user function for model-free parameters. Some of the parameters were using the ancient self.relax code path which was eliminated with the redesign of relax 1.2 to 1.3.
  • Fixes for the old scripts/optimisation_testing.py script. This was also using the ancient self.relax code path.
  • Fix for the molmol macro of the τs parameter, the spin container variable was spelt incorrectly.
  • Fix for the data.align_tensor.calc_eta() function - divide by zeros are now avoided. When Azz is zero, η is now set to NaN.
  • Typo fix in the unused and incomplete dfunc function to remove compilation warnings on MS Windows.
  • Fix for the data.align_tensor.calc_R() function - divide by zeros are now avoided. When Aa is zero, Ar is now set to NaN.
  • Fix for the test_opt_constr_bfgs_mt_S2_0_970_te_2048_Rex_0_149 model-free system test on MS Windows. The τe parameter check was too strict.
  • Another divide by zero problem is being caught in the RDC Q-factor code.
  • The dipolar_constant() and pcs_constant() functions now catch division by zero problems.


relax 1.3.10

  • Fix for a bug in the N-state model - the Q-factors and back calculated RDCs and PCSs were set to that of the last Monte Carlo simulation.
  • Fix for the N-state model error returning method for when errors are not present.


relax 1.3.9

N/A


relax 1.3.8

  • Fix for running scripts in certain versions of python - if a file with the same name as the script lies in one of the paths in sys.path, then that file will be executed rather than the script.


relax 1.3.7

  • Peak intensity errors can now be calculated when using volume integration and replicated spectra (bug #17457).
  • Failure of the prolate diffusion tensor in model-free analysis - if the tensor is initialised with Da = 0, the tensor is converted to being oblate. This was introduced in relax version 1.3.6.
  • relax can now operate without scipy being installed.
  • Updated four model-free optimisation system tests to pass under 32-bit Linux.
  • Made the N_state_model.test_pcs_fit_zero_pos system test less stringent so it passes on 32-bit Linux.
  • The model_free _model_setup() method should handle no model-free model being set when reading relax 1.2 results files (bug #17417).


relax 1.3.6

  • The loading of Monte Carlo simulation data from relax 1.2 version results files has been fixed (bug #17361).
  • Bug fix for the relaxation data add_data_to_spin() function - missing data for individual spins was not properly eliminated.
  • For the 1.2 results files, the data is being extracted even if the spin is not selected.
  • Sparky peak lists from CCPN Analysis 2.1 can now be read (bug #17341).
  • Fix for the broken grace.view user function (bug #17344).
  • Added 'CH' and 'OT' as carbon and oxygen atoms to the internal PDB reader (bug #17343).
  • The script path is now being removed from sys.path as this was causing incorrect scripts to be loaded if multiple scripts are executed sequentially or nested.
  • Fix for the 'list index is out of range' error when differently sorted peak lists, or lists with missing data are loaded (bug #17276).
  • Fix for the input of (Dxx, Dyy, Dzz, Dxy, Dxz, Dyz) ellipsoidal diffusion parameters.
  • Fixes for some currently unused, but useful, diffusion tensor internal API functions.
  • Fix for the NOE auto-analysis - the spins are now named to the value of the 'heteronuc' arg.
  • Fix for the frame_order.cone_pdb user function - the cone is already in the PDB frame, no rotation required.
  • Fix for the average domain rotation in pymol.cone_pdb.
  • Bug fix for the frame_order.pivot user function - it is now functional.
  • The base contents of the relax data store are no longer saved with a call to results.write.
  • Fix for the pcs.back_calc user function for when multiple structures are loaded.
  • Fix for rdc.read when neg_g_corr is set to True and the RDC list contains entries with None.
  • Fix for the failure of model elimination in the full analysis script (bug #13259).
  • Added a catch in iso_cone_S_to_theta() for bad order parameters > 1.
  • The attached proton PDB name is no longer hardcoded to 'H' in the dauvergne_protocol auto analysis[d'Auvergne and Gooley, 2007][d'Auvergne and Gooley, 2008b].
  • When loading save states, data pipe names are always converted to a string to avoid unicode problems.
  • Hardcoded the factorial() function to return support for Python 2.4 and 2.5.
  • Small fixes and improvements to the rdc.back_calc user function - align IDs are being used instead of RDC IDs so RDCs can be back-calculated even if measured RDCs are not present. And spin info is also being checked for better error reporting to the user.
  • Fix for the alignment tensor rotation matrix - it is now always in the right handed universe.
  • Bug fix for the RDC back_calc() function - the align_id arg was being ignored.
  • Fix for the RDC back_calc() function for when N=1 in the N-state model, the bond vector structure was not correct.
  • Fixes for the N-state model target function setup for when no parameters are optimised.
  • Fix for the Grace write_xy_data() function for when data values of None are passed in.
  • Bug fix for the RDC back-calculation function.
  • Bug fix for the control of PyMOL (as a module).
  • Small fix for the grace.write_xy_header() function, the symbol numbers now range only between the legal values of 1 to 10.


relax 1.3.5

  • Fix for the quaternion_to_R() function (due to incorrect information in Wikipedia).
  • Character encoding fix - cannot use umlauts.
  • Fix for the kron_prod() function.
  • Compilation on Mac OS X with Python 2.6 now works.
  • Added a module containing functions for checking user function args, removing many hidden argument checking bugs.
  • Fix for the calls to transpose_14().
  • Bug fix for the relaxation curve-fitting difference plot script.
  • Fix for the spin.number user function, the number can be None to reset the values.
  • Fix for the script user function, the function intro flag at the end of executing an external script was not being restored.
  • Improvements to the optimisation tests (bug #14173, bug #14174, bug #14175, bug #14176, bug #14177, bug #14182).
  • Fix for the R_euler_zyz() rotation matrix function.
  • Fix for the R_to_axis_angle() rotation matrix function.
  • Prevented __find_bonded_atoms() from connecting protons in the internal PDB reader.
  • Fixes for print_frame_order_2nd_degree() for when NaN is encountered.
  • Fix for the compile_2nd_matrix_iso_cone() frame order function.
  • The func_iso_cone_elements() method was been replaced with func_iso_cone() in the frame order analysis.
  • Fix for the delete function which was failing if the file was missing.
  • Fix for the test suite, the temporary files were not always deleted if a .bz2 extension was added.
  • Fix for the reading of Xplor NOE data when a line starts with '#'.
  • Fix for the Dasha and Modelfree interfaces for when spins have too little data (bug #14428).
  • Fixes for the RDC and PCS read() functions, the alignment tensor ID had the same variable name as the spin ID.
  • Fixed the PDF manual compilation (bug #14464).
  • Fix for the retrieval of bond vectors for the N-state model.
  • Fixes for the dx.map user function interface.
  • Epydoc docstring fixes.
  • Fix for when the selection string (i.e. spin_id) is unicode (bug #14872).
  • Fix for the PCS back calculation for when no weights are given.
  • The last weight in the'fixed' and 'population' N-state models, if supplied, was being converted to zero (1 - sum(weights)) hence the last state/structure was not being included.
  • Added the missing user functions in the mf_multimodel.py sample script (bug #14885).
  • Fix for the Monte Carlo simulations in the full_analysis.py script (bug #14941).
  • Fix for optimisation of models tm4 to tm8 in the mf_multimodel sample script when over-fitting occurs (bug #15050).
  • Removed the beta angle folding from the frame order module as it was failing.
  • Fix and updates to the generic_fns.angles.wrap_angles() function.
  • Fix for the internal structural object PDB writing - the TER records are between the ATOM and HETATM records.
  • Fixed a final model-free analysis failure in the d'Auvergne protocol, the auto-analysis behind the full_analysis.py script[d'Auvergne and Gooley, 2007][d'Auvergne and Gooley, 2008b] (bug #15874).
  • Fixes for the N-state model when RDC or PCS data is missing.
  • Fixed the Q-factor calculating functions to handle missing RDC or PCS lists.
  • Fix for the 'population' N-state model - the probabilities of each state was being set to that of the last state.
  • Constraints must be used at all times in the 'population' N-state model optimisation.
  • For the N-state model 'fixed' and 'population' models, if too many tensors are initialised in comparison to PCS and RDC alignments, then the parameter vector or parameter number was not being correctly assembled.
  • Fix for when structural models are loaded out of order.
  • Fix for the 'population' N-state model whereby the last probability can have a negative value.
  • The infinite looping around the universal solution in the dauvergne_protocol module[d'Auvergne and Gooley, 2007][d'Auvergne and Gooley, 2008b] is now being caught (for the full_analysis.py script).


relax 1.3.4

  • A bug in the Monte Carlo simulations for relaxation curve-fitting has been fixed (bug #12670).
  • Fixes for the Pymol PDB file opening and pymol.cartoon user function.
  • The molecular centre of mass is now correctly calculated.
  • Grace plots (http://plasma-gate.weizmann.ac.il/Grace/) were sometimes corrupted due to data being stored in numpy arrays and not Python lists (bug #12679).
  • Fix for the value.read user function, the directory and 'sep' arguments were being ignored.
  • Multiple failures of structure.load_spins for different PDB file layouts have been fixed (bug #12735).
  • Model-free optimisation failures on Mac OS X for PowerPC (bug #12573).
  • Many PDB file reading fixes for different multi-molecule/multi-model formats.
  • The '-' character is now allowed in molecule, residue, and spin names (was a bug if the file name contains a '-' character).
  • Bug fixes for handling molecules other than proteins and RNA via the Scientific python PDB reader.
  • The internal PDB reader no longer considers the END record to be a molecule.
  • Fix for a rare circular import failure of the RelaxError and RelaxWarning systems when running with the --debug command line flag.
  • Significant simplifications of the RelaxError system, fixing a state saving bug with --debug.
  • Fix for the retarded Scientific python PDB reader splitting a perfectly good molecule into 2 when it can't recognise a residue type.
  • Linear constraints and now supported for the N-state models without probabilities.
  • Modified the full_analysis.py script to name spins if the sequence data contains no spin name info.
  • All column arguments now default to None for the RDC and PCS reading so if residue numbers are non-existent, then they will not be read from the default column.
  • Bug fixes for the N-state model with N = 1 (allowing relax to mimic Pales http://www.mpibpc.mpg.de/groups/griesinger/zweckstetter/_links/software_pales.htm).
  • Bug fix for the PCS alignment tensor fitting, the paramagnetic-nuclear spin distance was being incorrectly determined.
  • The Q factors for the RDCs and PCSs were completely incorrect (found by comparing to Pales).
  • All the value.*() user functions have now been converted from the relax 1.2 to the relax 1.3 design.
  • Fixes for some circular import issues in generic_fns.minimise and generic_fns.value.
  • All the relax_data.*() user functions have now been converted to the relax 1.3 design.
  • Bug fix for the spin.copy user function, non-empty spin containers are no longer overwritten if the name and num are set to None.
  • Fix for the latex_mf_table.py sample script (bug #13163).
  • Rex values in XML results file not in s-1 (bug #13162).
  • Fix for the structure.create_diff_tensor_pdb user function which was creating weird shaped ellipsoid diffusion tensor representations when α and β were unequal (bug #13032).
  • Sparky assignments such as '004N-H' are now handled.
  • Fixed a bad apostrophe character causing the 'full_analysis.py' script to fail.
  • Removed a check disallowing multiple steady-state NOE data sets at the same spectrometer frequency.
  • Bug fix for the results reading from_xml() method, the molecule name was being evaluated causing results.read to fail.
  • Fixes for the model-free Monte Carlo simulation methods for deselected spins.
  • Models with high te values (>200 ns) were not being eliminated in the full_analysis.py sample script (bug #13259).
  • Monte Carlo simulations were failing in the model-free.py sample script (bug #13442).
  • The model-free minimisation statistics are no longer reset by the Monte Carlo simulation setup.
  • A number of bug fixes for Python 2.6 support.
  • Model selection between data pipes of different type is now allowed.
  • Bug fix for the maths_fns.rotation_matrix.R_2vect() function as the rotation axis is not always of unit length.
  • The diffusion tensor geometric object PDB representation is now correctly generated.
  • The isotropic cone geometric object PDB representation is now correctly generated.
  • The Hetrogen section was failing with MC simulations in the structure.write_pdb user function.
  • pymol.cartoon was failing when multiple proteins were loaded.
  • Bug fix for the maths_fns.rotation_matrix.R_to_axis_angle() function, the axis needs to be normalised.
  • Bug fixes for the grace.write user function.
  • Monte Carlo simulations failed when all parameters except for the diffusion tensor were fixed.
  • The diffusion and alignment tensor *_sim and *_err elements are now present and read from a results file.
  • The align_tensor.matrix_angles user function now avoids NaN problems through arccos of numbers > 1.
  • Bug fixes for the updating of the diffusion tensor MC simulation data structures.
  • Fix for the copying of diffusion tensors data structures.
  • relax and the sample scripts are more compatible with non-Unix operating systems by using the Python os.sep and os.pardir rather than '/' and '..' for directory separators and the parent directory.
  • Caught a NaN problem in the N-state model, RDC Q factor code causing failures in MS Windows.


relax 1.3.3

  • A failure of the minimisation set() function has been fixed.
  • The reset user function now works again.
  • Fixes to the relax data store methods add(), to_xml() and from_xml().
  • Many fixes for the support of Art Palmer's Modelfree program.
  • The mapping of the global parameter space (diffusion tensor, etc.) for visualisation in OpenDX has been fixed.
  • state.save no longer fails after running state.load (bug #12437).
  • Sparky peak lists with the assignment '?-?' are now handled properly (bug #11913).
  • Error analysis in relaxation curve-fitting was incorrectly implemented with standard deviation rather than variance averaging (bug #12456).
  • A number of fixes for the LaTeX table generating sample script.
  • Fixes for the teeing and logging via the -l and -t command line arguments (bug #12489).
  • Fix for when XH bond vector data from a PDB file is missing for a spin system (bug #12487).
  • Many fixes for when structural data is missing.
  • The relax script is no longer overwritten if the log or tee file is not specified on the command line (bug #12498).
  • Missing RelaxError failure in the sequence handling code (found when trying to solve bug #12582).
  • A failure in the results.write user function has been fixed (bug #12582).
  • Model selection no longer fails if no model is ever selected.
  • Model selection was failing if spins were deselected (bug #12591).
  • The directory name can now be part of the file name argument to results.read (bug #12588).
  • Optimisation of only the diffusion tensor after calling fix was failing if some spins were deselected (bug #12607).
  • The internal PDB reader was failing when the PDB file contained CONECT records (bug #12637).


relax 1.3.2

  • The generation of the cone geometric object for the N-state model is fixed.
  • Fixes for the relax_curve_diff.py and latex_mf_table.py sample scripts (identified by the relax data store abstraction).
  • Fixed the reading of relax 1.2 model-free results files (identified by the relax data store abstraction).
  • Various PDB file loading issues fixed.
  • value.set no longer fails when the parameter being set already exists (Bug #12406).
  • Fix for the bug whereby model elimination does nothing for model-free models. This fix may solve other model-free related issues (Bug #12407).
  • Model elimination no longer fails when no diffusion tensor is loaded (Bug #12408).
  • The error when loading the PDB file through the reading of the results file in the 'final' stage of the 'full_analysis.py' sample script is fixed (Bug #12409).
  • Model elimination is fixed in the 'full_analysis.py' script.
  • The fix user function works again when the element argument is set to 'all'.
  • Fix for the duplication of sequence data during model selection.
  • Monte Carlo simulations were failing due to a missing sequence error (Bug #12410).
  • The model elimination error "AttributeError: 'SpinContainer' object has no attribute 'params'." has been fixed (Bug #12411).
  • A missing global chi-squared value was causing failure of global model selection (Bug #12412).
  • Monte Carlo simulation elimination was removing the simulation not from the affected spin but from all spins (Bug #12416).
  • Fix for the failure of the value.write user function in all analysis types (Bug #12418).


relax 1.3.1

  • 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.


relax 1.3.0

  • Fixed the selection of nucleic acids by name as Scientific python was prefixing 'R' to the single letter codes.


relax 1.2 series

relax 1.2.15


relax 1.2.14


relax 1.2.13

  • The parameters D and D are now properly checked upon initialisation of this spheroidal diffusion tensor.
  • Initialisation of an empty diffusion tensor to the default values of zero now works.
  • The default value of the I relaxation curve fitting parameter can now be set.
  • Fix for the complete failure of the reading in of Art Palmer's Modelfree4 'mfout' results file (see bug #8997).
  • Fix for a rare ZeroDivisionError during Monte Carlo simulations (see bug #11004).
  • relax no longer fails if XH bond vectors cannot be extracted from a PDB file (see bug #11378).
  • The relax_data.display user function no longer fails (see bug #11383).
  • The selection of model-free model m0 causes Monte Carlo simulations to fail resulting in zero errors from that residue onwards (see bug #11476).
  • Another column fusion bug in Modelfree4's 'mfout' results file can be handled (see bug #11483).
  • Optimisation fix - the steady-state NOE value, gradient, and Hessian is now properly calculated when an order parameter of exactly 0.0 is encountered.


relax 1.2.12

  • The 'latex_mf_table.py' sample script now works (see bug #10189).
  • The missing 'num_ri' failure when writing the model-free and J(ω) mapping results files has been solved (see bug #10323).
  • Model elimination was failing in certain situations when applied to the global models (see bug #10320).


relax 1.2.11

  • The previous release had problems reading results files from relax versions 1.2.0 to 1.2.9, but now results files from all versions can be read (see bug #8248).
  • The synopsis of the system/functional tests now says [ Failed ] if one the tests fails (see bug #8682).
  • relax now works with Python 2.5 (see bug #9093).
  • The writing of the model-free results file, which failed under certain circumstances because of the 'heteronuc' and 'proton' attributes, has been fixed (see bug #8996).
  • The problem whereby there is data loss for deselected residues when using results.write followed by results.read has been resolved (see bug #8953).
  • Relaxation data can now be read if deselected spin systems have a relaxation data value or error value set to 'None' (see bug #9101).
  • The fatal bug of the reduced spectral density mapping values being incorrectly calculated has been fixed (see bug #9238).
  • When using the alternate model-free parameter set {Sf2, τf, Ss2, τs}, the incorrect functions were being called (see bug #9189).
  • A second fatal problem in the reduced spectral density mapping code, the heteronuclear frequency being overwritten by that of the proton, has been fixed (see bug #9259).
  • Another problem with relax and Python 2.5, because of the Scientific package, has been resolved (see bug #9390).
  • The XH bond length is now correctly set in the reduced spectral density mapping analysis (see bug #9562).
  • The convergence test in the 'full_analysis.py' sample script was failing if spin systems were deselected (see Bug #9892 and Bug #10022).


relax 1.2.10

  • The C modules can now be compiled on Mac OS X. (see bug #7670)
  • The order of the proton and heteronucleus dimensions and number of header lines in the XEasy text file is now automatically detected. (see bug #7676)
  • The 'full_analysis.py' script now throws a RelaxError if only one round of optimisation of the global model has been executed. (see bug #7787)
  • The model selection of the global model in the 'full_analysis.py' script has been fixed. (see bug #7863)
  • Monte Carlo simulations no longer fail if the local τm global model has been selected in the 'full_analysis.py' script. (see bug #7875)
  • The Monte Carlo simulation data in the model-free results file is now correctly read back into the program. (see bug #7755)
  • The Monte Carlo simulation state used to be turned on after reading a results file containing simulations. (see bug #7890)
  • After reading model-free results files, model selection would fail as the heteronucleus and proton data structures did not exist. (see bug #7891)
  • The model-free Molmol fast correlation time macro (τe < 100 ps and τf) no longer sets the bond length to zero when no parameter is present.
  • The docstring fetching Scons target no longer fails. (see bug #8182)
  • The model-free 'S2 difference stored in a new run' test of the test suite now passes. (see bug #8183)
  • The 'source_dist' Scons target now works on MS Windows. (see bug #7678)
  • The MS Windows BAT file execution failure "python: can't open file 'C:\Program': [Errno 2] No such file or directory" has been fixed. (see bug #8201)
  • The reading in of the results files from relax versions 1.2.0 to 1.2.9 in which deselected spin system lines are truncated now works. (see bug #8248)


relax 1.2.9

  • The infinite chi-squared RelaxError when the chi-squared value is zero has been fixed. (see bug #7641)
  • Profiling is now functional again. (see bug #7677)


relax 1.2.8

  • Model selection between the global diffusion models no longer fails if all residues of the local τm models have been deselected by model elimination. (bug #7192)
  • The 'angles.py' sample script no longer fails when residue specific relaxation data is missing (corrupt input data). (bug #7224)
  • Prior to executing Modelfree4, Dasha, Molmol, Grace, or OpenDX, tests are run to determine if the binary exists, is executable, and is in the system path. (bug #7225)
  • Model elimination when using the model-free model m0 no longer fails. (bug #7226)
  • The strict checking of the Da and Dr diffusion tensor parameters has been relaxed to allow for optimisation imprecision. (bug #7297)
  • The reading of Modelfree4 mfout results files no longer fails when residue specific relaxation data is missing (corrupt input data). (bug #7277)
  • If optimisation returns an infinite value or a NaN value, these are now caught and a RelaxError thrown. (bug #6503, Task #3621)
  • The σNOE equations of Chapter 8 of the manual have been fixed. (bug #7402)
  • Files containing relaxation data not consisting of exactly 4 columns will now be read. (bug #7583)
  • Model-free results files from relax versions prior to 1.2.5 are now properly read. (bug #7587)
  • Model selection between the global diffusion models does not fail when the local τm models are included. (bug #7616)


relax 1.2.7

  • The sconstruct script no longer fails in MS Windows. (bug #6980)
  • Model selection is now functional on all operating systems. (bug #6873).
  • The use of the Unix only class 'Popen3' has been removed to allow relax to function on all non-Unix operating systems. (bug #6841)
  • If the XH bond vector length is 0, the vector is set to None rather than raising a RelaxError. (partial fix to bug #6503)
  • Fix for the sconstruct script failure on MS Windows due to ImportErrors caused by importing Unix specific code. (bug #6841)
  • Fix for ImportErrors in MS Windows preventing relax from running. (bug #6841)


relax 1.2.6

  • Added the missing PDB file used by one of the OpenDX tests of the relax test-suite. (bug #6404)
  • Fixed the fatal devnull import failure for Python versions < 2.4. (bug #6403)


relax 1.2.5


relax 1.2.4

  • Small bugs in the sconstruct script have been removed.
  • The value reading function can now handle rows which contain no data.
  • The ellipsoid diffusion tensor was being incorrectly initialised in the 'full_analysis.py' script.
  • Another Numeric version issue. The model m0 with no parameters which used to be handled okay by the grid search and minimisation code was failing due to changes in Numeric.
  • In certain situations, the angle folding function which is called after model-free minimisation used the wrong run name.
  • Fixed the -fPIC option segfault problem on some Linux systems. (bug #5473)
  • Changed the τm grid search which was between 6-12 ns to be between 1-12 ns.
  • Fixed some grammar in the intro chapter of the manual.
  • Fixed a bug in the model-free sample script in the spheroid diffusion tensor function.
  • Removed the spaces in front of the \index{} commands from the manual LaTeX source files.
  • The diffusion parameters Diso, D, D, Dratio, Dx, Dy, and Dz are generated on the fly. (bug #5559)
  • Fixed the spacing after 'Gna!' in the manual.
  • The grace.write user function now plots the associated errors. (bug #5659)
  • Fix to the parameter errors not being scaled in the value.read user function. (bug #5670)
  • Parameter errors were not always included in the results file. (bug #5660)
  • Removed the memory leak in the relaxation curve-fitting C modules. (bug #5602)
  • The user function value.set no longer raises RelaxError in spectral density mapping runs. (bug #5698)
  • Fix to the broken Molmol pipe. (bug #5752)
  • Fix of the failure of molmol.view when the PDB is missing. (bug #5753)
  • Fix to the failure of relax_data.read when relaxation data is missing. (bug #5805)


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