newsrelax - News: relax version 3.2.0.

 
 
Show feedback again
Latest News
relax version 3.3.0. posted by bugman, Fri 05 Sep 2014 10:21:38 AM UTC - 6 replies
relax version 3.2.3. posted by bugman, Thu 03 Jul 2014 12:10:24 PM UTC - 1 reply
relax version 3.2.2. posted by bugman, Thu 05 Jun 2014 02:15:52 PM UTC - 1 reply
relax version 3.2.1. posted by bugman, Fri 23 May 2014 02:01:35 PM UTC - 1 reply
relax version 3.2.0. posted by bugman, Wed 21 May 2014 12:12:14 PM UTC - 3 replies
[Submit News]
[66 news in archive]

relax version 3.2.0.

Item posted by Edward d Auvergne <bugman> on Wed 21 May 2014 12:12:14 PM UTC.

Description

This is a major feature release. It includes the addition of the new "B14" and "B14 full" relaxation dispersion models (from Baldwin 2014), a complete rearrangement of the module layout of the specific analyses packages, a number of new user functions, documentation improvements including the addition of a new chapter to the manual for the N-state model or ensemble analysis, and numerous of other features. This is also a major bugfix release, so all users are recommended to upgrade. This is essential if you are using the new relaxation dispersion analysis in relax as a severe bug in the error calculation has been corrected. See below for a comprehensive list of new features, the rather large number of changes, and the long list of all bugs fixed.

Download

The new relax versions can be downloaded from http://www.nmr-relax.com/download.html. If binary distributions are not yet available for your platform and you manage to compile the binary modules, please consider contributing these to the relax project (described in section 3.6 of the relax manual, http://www.nmr-relax.com/manual/relax_distribution_archives.html).

Full list of changes

Features

  • Addition of the vector_angle() relax library function for calculating the signed or directional angle between two vectors.
  • Huge speed up of the interatom.define user function.
  • For improved feedback, a busy cursor is shown in the GUI when executing user functions.
  • The steady-state NOE auto-analysis now produces a 2D Grace plot of the reference and saturated spectra peak intensity values.
  • Complete redesign of the specific analyses backend, simplifying and cleaning up this internal API and making it easier for users to add completely new analysis types to relax.
  • Parametric reduction of the rotor frame order model, eliminating one redundant parameter hence simplifying optimisation.
  • Large improvement for the lib.software.grace module. The '*_err' and '*_bc' parameter names for the parameter error and back-calculated parameters respectively are now supported, allowing these values to be easily plotted.
  • Expansion of the value.set user function to handle parameters which consist of lists of values. The index argument has been added to allow the index of the list to be specified, and this is then propagated into the specific analysis API.
  • Improvements for the parameter definitions in all analysis types. This allows for better output in 2D plots and text files.
  • Implemented linear constraints for the frame order analysis. This uses the log-barrier constraint algorithm in the minfx library https://gna.org/projects/minfx/ to provide constraints without requiring gradients.
  • Improved and expanded the relax command line options for debugging.
  • Full independence of the relax library so that it can be used outside of relax.
  • The addition of a relaxation dispersion user function for setting the R20 values to the minimum R2eff value.
  • Expanded capabilities for the relax_disp.sherekhan_input user function.
  • Implementation of the "B14" and "B14 full" relaxation dispersion CPMG models for 2-site exchange for all time scales (from the new Baldwin 2014 paper at http://dx.doi.org/10.1016/j.jmr.2014.02.023).
  • Large improvements to the relax HTML manual at http://www.nmr-relax.com/manual/index.html including fixes for URLs, bibliography entries, links, and tables.
  • Support for multiple point creation for the OpenDX chi-squared space mapping user function.
  • Automatic determination of reasonable initial contour levels for the OpenDX mapping user function.
  • Addition of a new chapter to the manual for the N-state model or ensemble analysis.
  • Creation of the new pymol.frame_order user function for visualising results.
  • Expansion of the Grace 2D data plotting capabilities.

Changes

  • Shifted two functions from pipe_control.angles into the new lib.geometry.angles module. This is the fold_spherical_angles() and wrap_angles() functions which are not related to the relax data store and hence can be made independent.
  • Replaced function atan(omega1 / Delta_omega) with atan2(omega1 , Delta_omega), to make sure returned theta values are between 0 and pi. This was done in the function return_offset_data() in the specific_analyses of relax_disp. This was discussed in: http://thread.gmane.org/gmane.science.nmr.relax.devel/5210.
  • Changed a unit test and system test, where a change from the atan to atan2 function to calculate theta can give differences to the 15 decimal.
  • Replaced how a global analysis average results from a previous run to instead take the median. This is to prevent averaging extreme outliers, and instead take the median of the previous result. This was discussed in: https://mail.gna.org/public/relax-devel/2013-10/msg00009.html.
  • Modified system test Relax_disp.test_r1rho_kjaergaard to use input guess values of phi_ex in units of ppm^2 instead of rad^2/s^2.
  • Small change to system test Relax_disp.test_r1rho_kjaergaard. The outcome of kex from system test is in the area of 4-5000. The expected value is 13000. A deeer analysis of the input is needed, to judge what is the correct value.
  • Created the Structure.test_bug_21814_pdb_no_80_space_padding system test. This is for catching bug #21814, the PDB reading failure when the PDB records are not padded to 80 spaces. The PDB file used for the test is the same file as attached to the bug report.
  • The verbosity flag is now used in the centre of mass calculations. The pipe_control.structure.mass.pipe_centre_of_mass() function now passes the verbosity argument into the lib.structure.mass.centre_of_mass() function.
  • Created the new vector_angle() library function. This is located in the lib.geometry.vectors module. The function will calculate the angle between two vectors with sign or direction using the atan2() function.
  • Addition of a number of unit tests for the new lib.geometry.vectors.vector_angle() function.
  • Changes to the lib.geometry.vectors.vector_angle() function. This now expects the normal of the plane in which the angle is defined. The original logic was not functional, therefore the angle is forced to be negative if the cross product between the two vectors points in the opposite direction as the normal.
  • Improvements for the log converter script. This is for the script used to convert SVN messages into a format for the relax release announcement. The script now handles spacing better. Multi-line messages are now concatenated into a single line using a double space between separate sentences and a single space in all other cases.
  • Improvements for the pipe_control.mol_res_spin.generate_spin_id_unique() function. The unique spin ID now takes into account if the molecule is named or not (for single molecules). This allows the function to be used when dealing with the structural data rather than the molecule, residue, and spin data structure.
  • Removed the full stop from the printout of the test names in the test suite. This allows for quicker copying and pasting of the test name when running with the --time option and then selecting a single test to run.
  • Modified the Noe.test_noe_analysis system test to catch bug #21863. This is the failure to create the ref and sat Grace 2D plots in the NOE analysis.
  • Improved the user feedback when executing a user function in the GUI. The busy cursor is now turned on at the start of the user function wizard page method _apply() and turned off again at the end. This would avoid user confusion, thinking that the program has frozen (as was the case in bug #21862.
  • Changed the Noe.test_noe_analysis system test to handle the peak intensities correctly. This relates to bug #21863, the grace.write user function not being able to write ref/sat plots as described in sample script noe.py. Instead of trying to produce the 'ref.agr' and 'sat.agr' files for the non-existent 'ref' and 'sat' parameters, instead the 'intensities.agr' file is being produced for the peak intensity parameter. The reference and saturated intensities will appear as two graph sets within that plot.
  • Changed the Noe analysis sample script to properly handle the peak intensity Grace plots. This relates to bug #21863, the grace.write user function not being able to write ref/sat plots as described in sample script noe.py. Instead of trying to produce the 'ref.agr' and 'sat.agr' files for the non-existent 'ref' and 'sat' parameters, instead the 'intensities.agr' file is being produced for the peak intensity parameter. The reference and saturated intensities will appear as two graph sets within that plot. These changes match those of the test suite.
  • Fix for the line numbering for the NOE analysis sample script in the user manual. The line numbering for the code snippets did not match that of the full sample script shown at the start of that section of the NOE chapter.
  • Added a simple shell script to quickly grep the entire source tree while excluding .svn directories. This will only work on POSIX systems (Linux and Macs).
  • Fix for the Noe.test_bug_21562_noe_replicate_fail system test. The 'ref' and 'sat' parameters do not exist. Therefore the grace.write user function calls in the system test script have been modified to output the 'intensities' parameter instead.
  • Complete rearrangement of the specific analysis code for the steady-state NOE. This brings the code into line with the recent specific analysis code rearrangements, specifically in the specific_analyses.relax_disp package.
  • Changed the Noe auto-analysis to properly handle the peak intensity Grace plots. This relates to bug #21863, the grace.write user function not being able to write ref/sat plots as described in sample script noe.py. Instead of trying to produce the 'ref.agr' and 'sat.agr' files for the non-existent 'ref' and 'sat' parameters, instead the 'intensities.agr' file is being produced for the peak intensity parameter. The reference and saturated intensities will appear as two graph sets within that plot.
  • Redesign and standardisation of the peak intensity data structure throughout all analyses in relax. The various structures 'intensities', 'intensity_err', 'intensity_sim', 'sim_intensity', and 'intensity_bc' have all been renamed. The new structures are called 'peak_intensity', 'peak_intensity_err', 'peak_intensity_sim' and 'peak_intensity_bc'. This allows the structure to be processed as a standard parameter in the specific analysis API. One very visible consequence is that plots of peak intensities, as well as value files, will now have peak intensity errors. For backwards compatibility, the relax data store method _back_compat_hook() has been modified to catch all previous peak intensity object variants and to standardise and rename these to the new object names. As the parameter is now called 'peak_intensity' rather than 'intensities', all calls to the grace.write and value.write for this parameter have been changed in the auto-analyses, the sample scripts, the test suite and the manual.
  • Fix for the Noe.test_noe_analysis system test. The grace plots of the peak intensities now have error bars.
  • The legends in Grace plots are now turned on by default, if the legend flags are not specified. The Noe.test_noe_analysis system test has been updated for the change.
  • Added matplotlib detection to the dep_check module. This follows step 1 from the planning document at http://thread.gmane.org/gmane.science.nmr.relax.devel/5278.
  • Added matplotlib to the info module. This follows step 1 from the planning document at http://thread.gmane.org/gmane.science.nmr.relax.devel/5278.
  • Modified the python_multiversion_test_suite.py script to run the relax information printout. This is to test out the info module on multiple Python versions and to have a record of the setup of each Python version.
  • Python 3 fixes for the info module. The new processor_name() function was not compatible with Python 3 as the text read from STDOUT needs to be 'decoded'.
  • The variables in the relax_fit.h file are now all static.
  • Added the new exp_mc_sim_num argument to the relaxation dispersion auto-analysis. This is in preparation for fixing bug #21869. This argument allows for a different number of Monte Carlo simulations for the 'R2eff' model when exponential curves are fit. It will mainly be useful in the test suite to improve the accuracy of the R2eff errors, while still running a low number of simulations for the other models to allow optimisation to be quick.
  • Modifications to the Relax_disp.test_m61_exp_data_to_m61 system test. This is to fix bug #21869, the failure of this system test. The number of Monte Carlo simulation for the 'R2eff' model has been increased from 3 to 25 using the new exp_mc_sim_num argument to the dispersion auto-analysis. To keep the test fast, only a single spin is optimised.
  • Redesign and major clean up of the specific_analyses.jw_mapping package. The code has been broken up into separate modules.
  • Fix for the default value table documentation in the specific_analyses.jw_mapping package. This was broken in the last commit.
  • Updates for the rest of relax for the redesign of the specific_analyses.jw_mapping package.
  • Redesign and major clean up of the specific_analyses.consistency_tests package. The code has been broken up into separate modules. This matches the similar specific_analyses.jw_mapping package.
  • Redesign and major clean up of the specific_analyses.relax_fit package. The code has been broken up into separate modules. The rest of relax has been updated to handle the changes.
  • Removed the empty documentation strings from the specific analysis API base class. These are being gradually shifted into the specific_analyses.*.uf modules, so do not belong in the API object.
  • The specific analysis API classes are now all singletons. This change will reduce the amount of memory used, as these classes are initialised multiple times throughout relax, especially in the test suite. The API objects are not used for local storage so the multiple instance verses singleton design change will make no difference. The singleton design pattern code has been added to the base class specific_analyses.api_base.Api_base so that all classes inherit the _new_() method which implements the singleton.
  • Shifted the NOE analysis specific user function documentation from the API object to the uf module.
  • More code refactorisation of the specific_analyses.n_state_model package into new modules. The API object is now in the 'api' module, the remaining private methods have been shifted into the 'optimisation' and 'uf' modules, and the user function documentation moved to the 'uf' module.
  • Added units tests for package consistency testing for all of the remaining specific analyses.
  • Fixes for the unit tests for the N-state model specific analysis package changes.
  • Updated the package _all_ lists for a number of the specific analyses.
  • Shifted all of the private methods for optimisation from the relaxation dispersion API object. These are now functions of the specific_analyses.relax_disp.optimisation module.
  • Created the new specific_analyses.relax_disp.uf module. This consists of the private methods of the relaxation dispersion API object which act as the back end for the user functions, as well as the user function documentation, all shifted from the 'api' module.
  • Shifted the model-free analysis specific API object to the specific_analyses.model_free.api module.
  • Fixes for the new specific_analyses.model_free.api module.
  • Created the new specific_analyses.model_free.uf module. This consists of the private methods from the 'main' module which act as the back end for the user functions as well as the user function documentation.
  • Created the new specific_analyses.model_free.parameters module. This consists of the private methods from the 'main' and 'mf_minimise'. All class methods have been converted into functions.
  • Created the new specific_analyses.model_free.optimisation module. This consists of the merger of the 'mf_minimise' and 'multi_processor_commands' modules. All the private class methods have been converted into functions.
  • Shifted all of the model-free specific analysis API methods into specific_analyses.model_free.api.
  • Clean up and refactoring of the specific_analyses.model_free.bmrb module. The class methods have all been converted into functions, the deleted class is no longer a base class for the specific analysis API class.
  • The read_columnar_results() method has been removed from the specific analysis API. This is only for backwards compatibility with ancient relax 1.2 and earlier model-free results files, so will never be used by any other analysis.
  • Converted all of the class methods in specific_analyses.model_free.results to functions. This class has been removed from the API as well.
  • Renamed specific_analyses.model_free.results to back_compat. This is to make the purpose of the module clearer, to avoid developer confusion.
  • Shifted the model-free classic_style_doc user function documentation to the 'uf' module.
  • Shifted the last private method out of the model-free specific analysis API class. It has been converted into a function of the new 'data' module, for lack of a better name.
  • Shifted some of the specific_analyses.model_free.parameters functions into the new 'model' module.
  • Removed the test_grid_ops() method from the specific analysis API. This has been shifted into the new lib.optimisation module and converted into a function, breaking a number of circular import kludges.
  • Fixes for the specific analysis API unit tests. The 'instance' variable used for the singleton design pattern is skipped in the method and object checks.
  • Redesign of the specific analysis API. All parts of relax using this API now work with the API objects directly. The specific_analyses.setup module has been renamed to specific_analyses.api and the get_specific_fn() function has been eliminated. Instead of calling this, the different parts of relax now obtain the API object by calling the new return_api() function. This results in a large cleanup of the API - method names are no longer changed to a different name.
  • Fix for the new singleton design of the specific analysis API objects. The use of the class namespace as a storage space has been eliminated. This was causing test suite failures when checking the API objects. For some reason, some of the target function objects were being placed in 'self'.
  • Created a directory for holding the CaM double rotor frame order synthetic data.
  • Capitalised the pivot and CoM variables in the base frame order distribution generation script.
  • Reintroduced the distribution PDB file creation to the frame order test data generation script. This is the generate_base.py script in the test_suite/shared_data/frame_order/cam directory. The ability to create the distribution.pdb file was long lost in this script, and can now be activated using the DIST_PDB class variable.
  • The Frame Order test data generation base script now loads all structures before rotating them. This allows the progress printout to function correctly by not having any user function printouts as the rotations are occurring.
  • Created a simple double rotor geometric system to used for this frame order test data generation. The system_create.py script creates the geometric system based on the CoMs of both domains in the parent directory and two perpendicular rotation axes passing through both CoMs. A PDB file of the representation is created by the script.
  • Improvements and expansion of the frame order test data generation base script. More of the class variables are now defined in this base class and dummy methods are provided to allow certain operations to be skipped (print_axis_system(), axes_to_pdb() and build_axes()). Importantly, the script can now handle multiple modes of motion with the introduction of the key _multi_system() and _state_loop() methods.
  • Fixes for the calculation of the frame order matrix in the test data generation base script. The matrix generation now handles multiple modes of motion correctly. The total rotation matrix is constructed when looping over the modes by using the dot product of the individual rotation to the total, and then this is used to create the outer product, summed over all states.
  • The frame order test data generation base script now outputs the frame order matrix to 8 places.
  • Introduced the ROT_FILE flag to the frame order test data generation base script. This allows the 'rotations.bz2' file creation to be skipped, if set to False. This file takes time to create and is of limited use.
  • Removed a duplicated state.save call in the frame order test data generation base script.
  • The save file created by the frame order test data generation base script can now be bypassed. When loading 1,000,000 PDB structures as models into the relax data store, the RAM usage can go over 10 Gb. When trying to save this into a relax state file with the state.save user function, the time required can be over a day. Therefore the SAVE_STATE class variable has been introduced to allow the state.save call to be bypassed.
  • Created the RDC and PCS back calculated test data for the CaM double rotor frame order model. This consists of a uniform distribution over both rotors, the first centred in the C-domain and the second in the N-domain, and the two axes being perpendicular to each other along the CoM-CoM axis. The distribution consists of 250000 rotated structures. The frame order matrix for this model is also given.
  • Created a distribution of structures for the CaM double rotor frame order model. This is only for a distribution of 100 structures, to keep the file size to a reasonable size. A PyMOL *.pse file is also included to show the distribution together with the rotor system and the domain positions.
  • Updated the rotation() method of all the CaM frame order test data generation scripts. The motion_index argument is now accepted by all of the methods to allow the base script to execute correctly.
  • Fix for the Frame_order.test_generate_rotor2_distribution system test. The rotation() method now must accept the motion_index keyword argument.
  • Created the Frame_order.test_cam_double_rotor system test for the CaM synthetic data. This will be used to implement the frame order double rotor model.
  • The CaM double rotor frame order test RDC data now has single quotes around the spin IDs. This allows the data to be loaded in the Frame_order.test_cam_double_rotor system test.
  • Created subsets of the CaM double rotor frame order test PCS data. This consists of data for only 5 spins, and matches those of the other CaM frame order test data.
  • Large refactorisation of the frame order package. The private methods of the frame order package specific_analyses.frame_order have now all been shifted into modules. This is to simplify the package by not having huge quantities of code in the _init_ module. Now the code resides in the api, checks, data, optimisation, parameters, and user_functions modules.
  • Added the double rotor frame order model to the frame_order.select_model user function.
  • Better support for the parameters of the double rotor frame order model.
  • Initial implementation of the double rotor frame order model target function. The target function func_double_rotor() has been created as a copy of the func_rotor_qrint() method, modified for the double rotor model. Modifications will likely be needed as the compile_2nd_matrix_double_rotor() and pcs_numeric_int_double_rotor() functions are implemented.
  • Initial implementation of the lib.frame_order.double_rotor module. This module implements the functions needed to solve the frame order analysis for the RDC (via the frame order matrix) and PCS (numerically). The interfaces have been updated for the double rotor but most of the code still implements the basic rotor model from which it derives.
  • Fix for the double rotor frame order model when only RDCs are used. The target function was not being aliased when no PCS data was present.
  • Changed the precision of the deactivated Frame_order.test_cam_double_rotor_pcs system test. This test will run with the command "relax -s Frame_order.test_cam_double_rotor_pcs" and, because of the small angle of the test model, the chi-squared value differences for just the PCS were too small for the previous precision of 1 decimal place.
  • The double rotor system is now truly perpendicular. This is for the CaM frame order synthetic test data. The two axes were not perpendicular whereas for the model they should be.
  • Updated the double rotor distribution PDB file for the perpendicular axes. This is for the CaM frame order double rotor synthetic data. The number of structures in this distribution is set to 100 (10 per motional mode). The PyMOL *.pse file has also been updated.
  • Updated the CaM frame order double rotor synthetic test data for the perpendicular axes. The RDC and PCS data has been recalculated for 250,000 structures, this time with the axes being truly perpendicular.
  • Added a simple script for analysing the eigensystem of the CaM frame order double rotor test model.
  • Capitalised the class variables of all of the CaM frame order system test scripts.
  • Class variable cleanup for the CaM frame order system test scripts. The variables are now all defined in the base script and only overwritten when needed by the individual tests.
  • Changed the handling of the pivot point in the CaM frame order system tests. The pivot point is now a class variable, rather than being hardcoded into a function. The handling of a second pivot has also been added.
  • Updated the CaM frame order double rotor system test script to have the correct two pivots.
  • Changes to the frame_order.pivot user function. The 'order' argument has been added to allow for multiple pivots to be present. The user function backend will store these as cdp.pivot, cdp.pivot2, cdp.pivot3, etc. The 'fix' argument is now defaulting to False to make sure it is always boolean.
  • The second pivot is now being passed into the frame order target function class.
  • Simplified the CaM frame order system test base script. The class variables are now always defined, so checking for their existence is pointless. The CONE_S1 is now also defined in the base script as a class variable.
  • Added support for the new axis_alpha frame order parameter to the specific_analyses.frame_order package.
  • Implemented the new frame order rotor model parameters in the target function. The parameters {axis_theta, axis_phi} have been replaced by the single axis_alpha. To support the new model construct, the CoM of the entire system is now passed into the target function.
  • The AXIS_ALPHA parameter is now initialised in the CaM frame order system test base script. The base script was broken a while back due to AXIS_ALPHA not being defined but being checked for.
  • Improvements for the centre of mass calculation for the frame order model optimisation. This is now only calculated for the rotor models. The CoM is also printed out for better user feedback.
  • The CaM frame order system tests for the rotor models are converted to the new axis_alpha parameter. The axis_theta and axis_phi spherical coordinates are converted to the new reduced parameter set defined by a random point in space (the CoM of all atoms), the pivot point, and a single angle alpha.
  • The CaM frame order system test base script is now using lib.geometry.vectors.vector_angle(). This is for correctly calculating the alpha axis angle for the rotor models.
  • Fixes for the rotor axis alpha angle conversion in the CaM frame order system test base script. The pivot point is now the point on the rotor axis closest to the reference point (the CoM). Therefore the closest point is now calculated from the pivot point on the axis and the axis vector. This closest point is needed for defining the new minimal parameter set for the rotor models.
  • Changes for the convert_rotor() method of the CaM frame order system test base script. The method now sets the alpha angle rather than returning it. The method now also resets the pivot point to the point on the rotation axis closest to the CoM.
  • Fixes for the rotor axis reconstruction in the func_rotor_qrint() frame order target function. This is for the rotor model. The axis alpha angle is now correctly converted into the rotor axis using the CoM and pivot point.
  • Optimisation is now turned on for the Frame_order.test_cam_rotor2 system test. This is to reveal deficiencies in the handling of the new axis alpha parameter.
  • The frame order optimisation results unpacking function now supports the axis alpha parameter. This is in the function specific_analyses.frame_order.optimisation.unpack_opt_results().
  • Updated the chi2 value check in some of the CaM frame order system tests for the rotor model. The chi2 value is slightly different due to truncation and conversion artifacts of the parameter set reduction.
  • Shifted all of the code for calculating the frame order rotor axis into lib.frame_order.rotor_axis. The new frame_order.rotor_axis module consists of three function for creating a unit vector or the rotor axis using either the axis alpha angle, the two spherical angles or the three Euler angles.
  • Renamed the specific_analyses.frame_order.user_functions module to uf.
  • Fix for the optimised chi-squared value check in the Frame_order.test_cam_rotor system test. The reduced parameter set results in a slightly different chi2 value.
  • Shifted the frame order average domain position info check from the 'optimisation' to 'checks' module.
  • Fix for the CaM frame order system tests. The axis alpha angle and pivot shifting to the closest point to the CoM in the base system test script now only happens for the 'rotor' and 'free rotor' models. This allows the tests for the isotropic cone models to pass again.
  • Fixes for all of the CaM frame order optimisation scripts in the test data directories. The frame_order.average_position user function is now essential.
  • The centre of mass printout in the frame order target function setup now uses the verbosity argument. This means that the printout is not shown for the Monte Carlo simulation optimisation.
  • Correction for the nu_CPMG to tau_CPMG conversion formula in the dispersion chapter of the manual. In relax, the conversion nu_CPMG = 0.25 * tau_CPMG is used and not nu_CPMG = 0.5 * tau_CPMG.
  • Merged the Van't Hoff and Arrhenius lines of the dispersion software comparison table of the manual.
  • Renamed the specific_analyses.relax_disp.disp_data module to specific_analyses.relax_disp.data. This is to match the module naming convention used in the other specific analyses, and as detailed in the post http://thread.gmane.org/gmane.science.nmr.relax.devel/5294.
  • Updated all of the frame order optimisation scripts for the CaM test suite data. These simple testing scripts were very much out of date and non-function for the current code. Half of the code in these scripts is now implemented in the concise frame_order.pdb_model user function.
  • Updated the ancient test_suite/shared_data/frame_order/cam/rotor2/pcs_only/frame_order.py script. This now matches the script of its parent directory.
  • Simplified all of the CaM frame order optimisation testing scripts. These are for the synthetic test suite data. The unnecessary class structure of the scripts has been eliminated.
  • The frame_order.pivot user function can now be used to turn the pivot optimisation on and off. If the pivot point is not given, this user function will now just set the fixed flag and nothing else, allowing the optimisation status of a pre-set pivot to be changed.
  • Added the axis alpha angle to the frame order return_units() API method.
  • The frame order axis alpha angle is now defined in the grid search from -pi to pi.
  • Replaced the 'elif' statements with 'if' in the frame order update_model() function. This is to avoid possible future bugs as the logic was not consistent.
  • Renamed the specific_analyses.api_objects module to parameter_object to better reflect what it is. This contains a single object for the parameter list object and therefore does not need to be generalised for additional types of objects for the specific analysis API.
  • Updated the module docstring of specific_analyses.parameter_object to match its purpose.
  • Created a parameter list object for the relaxation dispersion analysis. Instead of using the parameter list object from the base class, the dispersion analysis now defines its own.
  • Docstring improvements for the add_min_data() parameter list base class method.
  • Created two new parameter list methods from the relaxation dispersion code. The add_model_info() and add_peak_intensity() base class methods have been created from the relaxation dispersion code. These are just aliases for setting up a number of parameters via add() in a standard way.
  • The frame order specific analysis API object is now truly a singleton. This should help eliminate some bugs.
  • Standardised all of the parameter list objects for the specific analyses. All of the specific_analyses packages now contain a parameter_object module which defines all of the parameters. The ordering of these is now consistent between the analyses, the result of which will be more consistent ordering of element in the relax XML state files. The new Param_list.add_csa() base class method has been added to standardise the CSA parameter. And the capabilities of the add_model_info() method has been expanded.
  • The parameter list objects in the specific analysis API are now singletons. This has no immediate benefit as these classes are only instantiated once. But it will allow for efficient reuse of these objects in the future and for expansions of the specific analysis API.
  • The frame order pivot points are now stored differently in the current data pipe. Instead of being stored as a list or array of numbers in cdp.pivot, the point is now stored as cdp.pivot_x, cdp.pivot_y and cdp.pivot_z. The second pivot cdp.pivot2 is now stored as cdp.pivot_x_2, cdp.pivot_y_2 and cdp.pivot_z_2. This is to simplify the automated handling of optimisation parameters. Rather than having to convert the pivot_x, pivot_y, and pivot_z parameters to and from a list, the same mechanisms can now be used for all of the optimised frame order parameters. This will be used to hugely simplify many of the functions in the specific_analyses.frame_order.parameters module and eliminate a large source of bugs.
  • Temporary deactivation of the Frame_order.test_cam_double_rotor system test.
  • Huge simplification of the specific_analyses.frame_order.parameters.assemble_param_vector() function. The parameters are now assembled in a generic way by looping over cdp.params. The simpler code should also be faster.
  • Huge simplification of specific_analyses.frame_order.parameters.param_num(). This now simply calls update_model() and then returns the length of cdp.params.
  • Clean up of the specific_analyses.frame_order.parameters module. The unused and terribly designed assemble_limit_arrays() function has been deleted. And unused imports have been removed.
  • Simplification of the specific_analyses.frame_order.optimisation.unpack_opt_results() function. Looping over the cdp.params parameter list is now used to minimise the amount of replicated code.
  • The frame order analysis is now using the special frame order parameter object.
  • Elimination of the specific_analyses.frame_order.checks.check_rdcs() function. This function duplicates the functionality of pipe_control.rdc.check_rdcs() while not being as comprehensive. Switching to the pipe_control.rdc version minimises the amount of code in the frame order analysis, decreasing the potential for bugs.
  • Simplified the assemble_scaling_matrix() frame order function. The data_type argument no longer does anything, so has been eliminated.
  • Clean up of the base_data_types() frame order function and it use. The propagation of the data type list around the frame order code is now greatly reduced. And the alignment tensors and NOESY data have been removed from the base_data_types() function - these are not used.
  • Docstring fixes for the frame order specific analysis API object. A number of the methods were referring to the base data as being alignment tensors, but this has changed to RDCs and PCSs a long time ago.
  • Clean up and fixes for the frame order model_statistics() API method. The number of data points 'n' was incorrectly calculated using the original alignment tensor base data.
  • Eliminated the specific analysis API object base _init_() method. This is no longer needed as the parameter list object is now analysis specific and set up by each analysis type separately. The calls to this method from the derived classes have therefore also been deleted.
  • Shifted the frame order specific API deselect() method into the Api_common base class. The method has been renamed to _deselect_global() and extended to handle Monte Carlo simulations.
  • The specific API PARAMS object is now private. Apart from fixing a number of unit tests, these aliased singletons should not be accessed by the rest of relax.
  • Created the specific analysis API common method _is_spin_param_false(). This simply returns False. The is_spin_param() frame order method has been deleted and this common method is now used instead.
  • Replaced the frame order specific API model_loop() method. The base method _model_loop_single_global() is used instead.
  • Replaced the frame order API model_type() method with the base _model_type_global() method. The two methods were identical anyway.
  • Fixes for the units of the ave_pos_x, ave_pos_y, and ave_pos_z frame order parameters.
  • Removed the frame order API return_units() method. This method has been superseded by the parameter list object.
  • Added the PCS and RDC as parameters for the frame order and N-state model analyses. These are now defined in the respective parameter list objects. The base method add_align_data() has been created to avoid code duplication.
  • Eliminated the last of the specific analysis API return_units() methods. This functionality is now provided by the parameter list object.
  • Eliminated the model-free specific analysis API data_type() method. This functionality is now provided by the parameter list object.
  • Converted the N_state_model.test_5_state_xz system test to use a new way to set parameters. Instead of using pseudo-parameters for the value.set user function such as 'p0', 'p1', etc. for the probabilities, which are then converted into the 'probs' parameter with the index taken from the name, instead the index is now directly given. The value.set user function will need to be modified to handle this. The aim is to standardise the parameter list object for the N-state model analysis.
  • Converted the remaining N-state model system tests to use the new value.set index argument.
  • Converted all of the N-state model parameters to use the parameter list object. The default_value(), return_data_name() and return_grace_string() API methods have also been deleted as these have been superseded by the parameter list object.
  • Clean up of the N-state model user function docstrings. The pseudo-parameter names such as 'p0', 'p1', etc. no longer exist.
  • The new index argument for the value.set user function now defaults to zero. This is for backwards compatibility as the default value of None was not handled by the user function backend.
  • Fix for one of the value.set user function unit tests. The 'alpha2' N-state model parameter no longer exists, and the '2' is now supplied as index=2.
  • Shifted the core of the data_names() specific analysis API method into the parameter list object.
  • Renamed many of the specific analysis parameter list object methods to match the API names. This is to prepare for a decoupling of the parameter list object from the API object.
  • Updated the relaxation dispersion citation for relax as this is now officially published.
  • All of the add*() methods of the parameter list object have been made private. This is to prepare the object to be accessible to the rest of relax, so that it can be decoupled from the specific API object.
  • Shifted the minimisation Grace strings and units into the parameter list object. The return_grace_string() and return_units() functions of the pipe_control.minimise module have been deleted and their contents shifted into the specific analysis parameter list object.
  • Simplified the pipe_control.minimise.minimise() function. The specific API object only needs to be fetched once.
  • Eliminated the return_data_name() concept from the specific analysis API. The parameter names can now only have one value, i.e. 's2' is different from 'S2'. In addition, a number of related functions have been deleted form the pipe_control.minimise module as these are now handled by the parameter list object. The deleted functions are return_conversion_factor() and return_value().
  • Shifted the Brownian rotational diffusion tensor parameters into the parameter list object. This only affects the model-free analysis. The pipe_control.diffusion_tensor module functions default_value(), return_conversion_factor(), return_data_name() and return_units() have been eliminated. These functions have been merged together with the diffusion parameter self._add() calls in the model-free specific parameter list into the new parameter list base class _add_diffusion_params() method. To allow the model-free analysis code to differentiate between diffusion and model-free parameters, the new scope() parameter list base class method has been created. Diffusion parameters return 'global' whereas model-free parameters return 'spin'. The model-free specific API methods default_value() and is_spin_param() have been deleted as these are now provided fully by the parameter list object. The is_spin_param() method has been newly implemented in the parameter list object to check the parameter scope.
  • Eliminated a lot of unused code from the pipe_control.align_tensor module. This includes the functions data_names(), default_value(), map_bounds(), map_labels(), return_conversion_factor(), return_data_name() and return_units() as well as the unused and very old user function documentation _default_value_prompt_doc_, _return_data_name_prompt_doc_ and _set_prompt_doc_. These are all remnants from the origin of the module - the copying of the diffusion_tensor module. But they have never been used.
  • Changed the values of the set argument for the parameter list object. The 'generic' value has been renamed to 'fixed' and is now for all permanently fixed parameters of the model - for example the CSA value in a number of analyses. The default set argument value of the _add() method has been changed to 'all' so that any parameters registered via that method are not placed in a special set (unless specified otherwise).
  • Clean up and fixes for the parameter definitions in the consistency testing analysis. The fixed and calculated parameters are now defined in the correct sets, and the description for tc has been expanded and improved.
  • Added the ability to automatically create the parameter tables for the user function documentation. These are the tables used in many of the user function docstrings. This has been added to the parameter list base class. The section title is pre-specified by the new _set_uf_title() method, and the table caption and LaTeX label by the _set_uf_table() method. The documentation is generated by calling the uf_doc() method. This uses the new type_string() method to add a compact parameter type string representation to the table. The aim is to eliminate all of the hard-coded tables in the specific analyses which are always very quickly outdated. By automatically creating the tables, this simplifies the codebase and simplifies the addition of new analysis types.
  • The parameter tables are now properly initialised in all of the specific analyses. This will allow the tables to now be used in the user function documentation.
  • The auto-generated user function tables can now display the base units.
  • Spacing fix for one of the diffusion tensor parameter descriptions.
  • The label and caption for the parameter list user function documentation is now supplied to uf_doc(). This allows different types of tables to be generated, for example the default value is useful for the value.set user function but not value.write, while allowing tables to still be shared.
  • Expanded the steady-state NOE parameter description.
  • Expanded the reduced spectral density mapping parameter descriptions.
  • The default scope for the parameter list object uf_doc() method is now 'spin'. Most of the parameter tables are for setting spin parameters, so this will minimise code.
  • Fixes for the specific analysis parameter list singleton object. These objects are now really singleton objects and are only initialised once.
  • Fixes for some of the NOE system tests - the NOE parameter description is now different.
  • Shifted the user function documentation creation into the parameter list objects. The uf_doc() method will now return the pre-created documentation object, and the original base class method for creating the documentation has been renamed to _uf_param_table().
  • Shifted all of the user functions to use the auto-generated parameter tables. All of the specific analysis default_value_doc and return_data_name_doc documentation objects have been deleted and replaced with the auto-generated ones. This results in a big code clean up and removes synchronisation issues with the user function documentation quickly becoming out of date when parameters change.
  • Expansion of the dx.map user function documentation. This now includes tables of the N-state model and relaxation dispersion parameters. A new auto-generated model-free parameter table including the diffusion parameters has been created and is now used instead of the separate diffusion tensor and model-free parameter tables.
  • Deleted the diffusion tensor _return_data_name_doc_ documentation object. This is no longer used, being redundant with the new parameter list objects.
  • The frame order parameter tables for the user function documentation are now created.
  • The dx.map user function documentation now included the frame order parameters.
  • Different parameter sets can now be specified when creating the parameter tables. This is for the analysis specific parameter list objects and the auto-generated user function documentation.
  • Clean up of the grace.write user function documentation. The minimisation statistics table has been removed and instead the minimisation statistics are included in the parameter tables of the specific analyses, when appropriate.
  • Code clean up - deleted the return_data_name_doc and set_doc pipe.control.minimise objects. These user function documentation objects are no longer used. They were also extremely out of date.
  • Created the parameter list object base class _uf_doc_loop() method. This will be used to loop over all or subsets of the user function documentation parameter tables.
  • The model-free parameter setting documentation has been shifted into the parameter list object. As the text was quite out of date, it has been updated to the current relax design.
  • The J(w) mapping parameter setting documentation has been shifted into the parameter list object. This has also been updated to reflect the current design of relax.
  • The consistency testing parameter setting documentation has been shifted into the parameter list object. This has also been updated to reflect the current design of relax.
  • The relaxation dispersion parameter setting documentation has been shifted into the parameter list object. The documentation has also been rewritten as it originates from Sebastien Morin back in 2009 and is now very much out of date.
  • Deleted the relaxation curve-fitting parameter setting documentation. This really didn't say anything.
  • The N-state model parameter setting documentation has been shifted into the parameter list object.
  • Updated the two_domain.py N-state model sample script. The value setting for the N-state model is now handled differently.
  • More updates of the N-state model sample scripts for the value.set user function changes.
  • Deleted the diffusion tensor parameter setting documentation from the value.set user function. These values have not been able to be set by the value.set user function for over half a decade. Therefore this documentation can only lead to user confusion.
  • Deletion of the user function documentation in the pipe_control.diffusion tensor module. The _default_value_doc_ and _set_doc_ documentation objects are out of date and no longer used anywhere in relax, so they have been eliminated.
  • Shifted the model-free parameter writing documentation to the parameter list object.
  • Rearranged the parameter table ordering in the value user functions. The order now better matches that of the chapters of the user manual and is consistent between the functions.
  • More reordering of the parameter tables for the value user functions.
  • Removed all of the prompt.doc_string.regexp_doc documentation objects from the user functions. This is the regular expression documentation which no longer has a purpose. It was for specifying multiple parameters simultaneously in user functions such as value.set, but this functionality has been removed.
  • Created parameter tables with no additional trailing text. This is used in a few of the user functions.
  • Updated the value.copy user function documentation for the frame order theory. The value.copy title has been changed to not be spin specific and a table of the frame order parameters has been added.
  • Improvements for the value.display user function documentation. The N-state model parameter table has been removed as these parameters are not spin specific and cannot be used. And the title has been modified.
  • Improvements for the value.read user function documentation. The N-state model parameter table has been removed as these parameters are not spin specific and cannot be read from a file. And the title has been modified.
  • Updated the value.set user function documentation for the frame order theory. The value.set title has been changed to not be spin specific and a table of the frame order parameters has been added. The spin ID documentation has also been rewritten.
  • Changed the title in the value.write user function documentation.
  • Changed the title for the value user function class.
  • Docstring update for the relaxation dispersion linear_constraints() function.
  • The pivot point x, y and z coordinates are now registered as parameters of the frame order analysis. These are stored as the parameters pivot_x, pivot_y and pivot_z.
  • Docstring fix in the relaxation curve-fitting linear_constraints() function.
  • Converted the status.escalate variable into module variables for lib.errors and lib.warnings. This variable is set by the command line flag '-e' or '--escalate'. By converting it into a module variable, the lib.errors and lib.warnings warnings are now independent of relax.
  • Created the lib.warnings.TRACEBACK variable. When True, this will cause stack-traceback to be printed out with the warning. This is to decouple the traceback printout from the warning to error escalation.
  • Created the new '-r' or '--traceback' relax command line option. If supplied, stack tracebacks will be shown for all RelaxWarnings and RelaxErrors. This allows for finer debugging control.
  • Clean up of the debugging command line options. The debug flag now will cause stack tracebacks to be printed on all RelaxWarnings.
  • Created the '--error-state' command line option for saving a pickled state when a RelaxError is raised. This gives greater control of a powerful feature added to relax by Chris MacRaild. The pickled state can then be attached to bug reports or can be used to quickly load the state prior to failure when in the scripting UI mode.
  • Reordered the debugging command line options and removed the '-r' shortcut.
  • The lib.errors module is now really independent of relax - the compat module is no longer used. Instead, the Python 2 and 3 versions of the pickle module are imported using try statements.
  • Decreased the amount of newlines around the printout from the '--error-state' command line option.
  • Improved support for printing stack tracebacks with RelaxWarnings. The '--traceback' command line option will now show a full traceback. A replacement warnings.showwarning() function has been written to write out the traceback before the warnings.formatwarning() replacement function is called.
  • Divide by zero avoidance fix for the rotor frame order model module lib.frame_order.rotor.
  • Removed the dependency on the relax dep_check module from the relax library. This is to further decouple the library from relax.
  • Added a script for testing the independence of the relax library.
  • Removal of all unused imports in the lib.dispersion package.
  • Improvements to the test_library_independence.py development script. This script for checking the independence of the relax library will now recursively import all packages and modules in the library and report at the end a list of all failures.
  • Shifted the Python 2 and 3 compatibility module 'compat' into the relax library.
  • Shifted the pipe_control.sequence.validate_sequence() function into the relax library. For this, the new lib.sequence module has been created. This change is for better library independence. A circular import with lib.io and lib.arg_check has also been resolved.
  • Shifted the read_spin_data() and write_spin_data() functions from lib.io to lib.sequence.
  • Removed the dependence on the relax 'dep_check' module from the lib.frame_order package. This is for more independence of the relax library.
  • Added the missing Bioinformatics journal to the bibtex file journal name aliases.
  • Huge clean up of all unused imports in relax. These were found using the find_unused_imports.py development script. A number of these changes significantly decrease the possibilities of circular imports appearing in the future. And this also makes the relax library more independent from the rest of relax.
  • Shifted the data_store.relax_xml module into the relax library as lib.xml. This module contains a couple of functions which are used for converting Python objects into an XML representation and back again. These are used not only by the relax data store, but also a number of the structural objects in the relax library (which are themselves placed in the relax data store). This makes the relax library more independent from the rest of relax.
  • Shifted many of the pipe_control.structure.geometric functions into the relax library. All but two functions from the pipe_control.structure.geometric module are independent of the relax data store. These have been shifted into the new lib.structure.geometric module. This removes most of the remaining relax dependencies in the relax library.
  • Removed the automatic axis labelling in the lib.software.grace.write_xy_header() function. This is the automatic labelling based on the parameter Grace strings and units of the specific analysis type. This is now preformed by the specific analyses themselves so the automatic code is not needed or used. This allows the dependence on the pipe_control.pipes module and the specific analysis API to be removed making the relax library now 100% independent from the rest of relax.
  • Editing of the relax command line option descriptions.
  • Created a new test category for the relax test suite - the software verification tests. This is part of the full test suite or can be run by itself using the new --verification-tests command line option. Such tests are best described by https://en.wikipedia.org/wiki/Verification_and_validation_%28software%29. These tests will be used to make sure that the design aims of the relax source code are satisfied. For example that the relax library is independent from the rest of relax. Or that the package _all_ lists actually contain all modules and sub-packages (these tests are currently part of the unit tests).
  • Shifted the relax library independence developer script into the software verification tests. The functionality of the devel_scripts/test_library_independence.py script is now within the Library.test_library_independence software verification test. Therefore the script has been deleted.
  • Updated the text for the software verification tests in the test suite.
  • The relaxation dispersion auto-analysis now outputs the R20, R20A, R20B, and R1rho0 parameters. This includes both text files and 2D Grace plots.
  • Python 3 fix for one of the old scripts in the test suite directories.
  • Improved error messages for when the GUI is launched but the wxPython installation is broken. Now the case of a broken wxPython installation is handled rather than just a missing installation. The dep_check module will store the import error message, and relax will now report that back to the user.
  • Python 2.5 and 2.6 compatibility for the Library.test_library_independence verification test. The importlib package is not available in these Python versions, but the code in the Python 2.7 library file importlib/__init__.py is compatible all the way back to Python 2.3. Therefore the importlib functions have been copied directly into the system test script and the importlib dependency removed.
  • Updated one of the OMP model-free results files for the different ordering of parameters in the XML. The changes to the parameter setup for the model-free analysis means that the XML files are now ordered differently.
  • Fix for the Test_data.test_count_relax_times_r1rho relaxation dispersion unit test for Python 3.2+. The '%s' representation of floating point numbers is different on these Python versions - the number of decimal places used are different by default.
  • Added Python 3.4 support to some of the development scripts.
  • Added 4 more relaxation dispersion system tests to the blacklist for when C modules are missing. This allows these 4 tests to be skipped in the system test rather than failing with "RelaxError: The exponential curve-fitting C module cannot be found.".
  • Changed the backward compatibility hook for old state files for the spectrometer frequency. The behaviour has been changed so that the data pipe structure spectrometer_frq_list is now sorted. This simply allows a number of tests to pass on Python 3.3+, a user would not notice any differences.
  • Fixes for two relaxation curve-fitting system tests for Python 3.3+. These are the Relax_fit.test_curve_fitting_height and Relax_fit.test_curve_fitting_volume system tests which fail due to accuracy differences and a bad call to the UnitTest method assertEqaul() which should have been an assertAlmostEqual() call.
  • Added the matplotlib module to the Python binary and module seeking script.
  • Added dataset for system test. System test for CPMG dataset, (http://dx.doi.org/10.1073/pnas.0907387106) Kaare Teilum, Melanie H. Smith, Eike Schulz, Lea C. Christensen, Gleb Solomentseva, Mikael Oliveberg, and Mikael Akkea 2009 SOD1-WT at 25 C.
  • Added system test to analyse data. System test for CPMG dataset, (http://dx.doi.org/10.1073/pnas.0907387106) Kaare Teilum, Melanie H. Smith, Eike Schulz, Lea C. Christensen, Gleb Solomentseva, Mikael Oliveberg, and Mikael Akkea 2009 SOD1-WT at 25 C.
  • The debugging command line option no longer turns on RelaxWarning tracebacks. These tracebacks can be separately turned on with the --traceback command line option.
  • Made name for system test shorter and moved data to shorter folder name. Regarding bug #21953 - weird performance of grid search.
  • Modified system test for cleaner implementation of tests. Regarding bug #21953 - weird performance of grid search.
  • Lowered range for grid search by factor 10 for kex to now between 1-10000. Regarding bug #21953 - weird performance of grid search.
  • Changes to system test Relax_disp.test_hansen_cpmg_data_auto_analysis. Regarding bug #21953 - weird performance of grid search. The grid search needed to be increased by +1 and lowering of some results by one digit.
  • Lowering of precision in Relax_disp.test_hansen_cpmg_data_auto_analysis_numeric. Regarding bug #21953 - weird performance of grid search.
  • Changes to system test Relax_disp.test_hansen_cpmg_data_auto_analysis_r2eff. Regarding bug #21953 - weird performance of grid search. The grid search needed to be increased by +1 and lowering of some results by one digit.
  • Changes to system test Relax_disp.test_hansen_cpmg_data_missing_auto_analysis. Regarding bug #21953 - weird performance of grid search. The grid search needed to be increased by +1 and changes of some results.
  • Modified system test Relax_disp.test_sod1wt_t25_to_cr72. Regarding bug #21953 - weird performance of grid search.
  • Modified dw and kex in system test Relax_disp.test_tp02_data_to_tap03. Regarding bug #21953 - weird performance of grid search.
  • Split system test Relax_disp.sod1wt_t25_to_cr72 into part as setup and test part. Regarding bug #21953 - weird performance of grid search.
  • Started implementation of error analysis bug. Regarding bug #21954 - Order of spectrum.error_analysis is important.
  • Small edit of the relax command line option descriptions.
  • Undid the modification of dw and kex in system test Relax_disp.test_tp02_data_to_tap03. Regarding bug #21953 - weird performance of grid search. The number of iterations needed to be increased from 2000 to 2500 to allow the values to be found.
  • Further extended system test Relax_disp.test_sod1wt_t25_bug_21954_order_error_analysis. Regarding bug #21954 - order of spectrum.error_analysis is important.
  • Extended --gui-tests Relax_disp.test_hansen_trunc_data. Regarding bug #21954 - order of spectrum.error_analysis is important. To catch errors in this dataset.
  • This time the blacklisted relaxation dispersion system tests have been correctly reduced. Only one blacklisted test did not require the C modules to be compiled.
  • Shifted all of the dispersion model descriptions and parameter lists to the variables module. The descriptions and parameter lists which were part of the relax_disp.select_model user function backend have been shifted into the specific_analyses.relax_disp.variables module as MODEL_DESC_* and MODEL_PARAMS_* variables. The descriptions have also all been standardised. The MODEL_DESC and MODEL_PARAMS dictionaries have also been created to hold all of the descriptions and parameters in one place.
  • The General.test_bug_21720_pipe_switching_with_tab_closure GUI test now works without compiled C modules.
  • Updated the release checklist for the new minfx version 1.0.6 release. See https://gna.org/forum/forum.php?forum_id=2456 and https://freecode.com/projects/minfx.
  • Fixes for the specific API _set_param_values_spin() method for lists and dictionaries. This is for the value.set user function to allow it to handle parameters of different types. For example the 'R2' parameter in the relaxation dispersion analysis. This API common method now sets all dictionary elements, list elements, or the variable to the given value.
  • Created the new specific_analyses.relax_disp.variables.PARAMS_R20 list. This variable is a list of all R20 parameters of the dispersion models. It has been shifted out of the parameters module.
  • Created a relaxation dispersion specific API set_param_values() method. This originates from the base _set_param_values_spin() method from the api_common module. The method has been extended to handle the R20 parameter types - generating the current dictionary keys as needed.
  • Expanded the relaxation dispersion auto-analysis to allow the grid search to be turned off. By setting the grid_inc argument to None, the grid search will be turned off. As a replacement, the value.set user function is used for all model parameters to set them to their default values prior to minimisation. This design is for speed as optimisation from the defaults is often - though not always - good enough. It can be used, for example, in the test suite to make the system tests much faster.
  • Changed the default R20 relaxation rate from 15 to 10 rad.s^-1. This is probably closer to the average rate expected for molecules studied by NMR.
  • The R2eff dispersion parameter now also defaults to 10 rad.s^-1.
  • Expanded the dispersion specific API set_param_values() method for the 'r2eff' and 'i0' parameters. This now sets these parameter values correctly if the value sent into the method is

Comments:

Wiki release announcement. (posted by Edward d Auvergne, Sat 20 Sep 2014 06:45:19 PM UTC)

See http://wiki.nmr-relax.com/Relax_3.2.0.

[ Reply ]


And the end of the message. (posted by Edward d Auvergne, Wed 21 May 2014 12:16:30 PM UTC)

== Changes ==

  • Added lib/numpy_future.py. This module is for implementing numpy function code from higher versions of numpy. The relax dependencies listed at the download page of relax: http://www.nmr-relax.com/download.html#Source_code_release currently only requires numpy >= 1.0.4. Task #7792 make the dx.map write suggest chi surface values.
  • Added "numpy_future" to the _init_.py file in lib directory. Task #7792 make the dx.map write suggest chi surface values.
  • Moved numpy_future from lib to extern. Extern is special package for external software or code that is bundled with relax. Task #7792 make the dx.map write suggest chi surface values.
  • Updated synthetic CPMG data script. This is to analyse complex dispersion data. Related to bug #22021 model B14 shows bad fitting to data. Bug #22024 minimisation space for CR72 is catastrophic. The chi2 surface over dw and pA is bounded.
  • Added 4 unit tests for the lib.geometry.lines.closest_point_ax() function. This relax library function was previously not being checked in the test suite.
  • Modified the rotor2 CaM frame order test data optimisation script to optimise the pivot. Print statements has been added for comparing the optimised to the original pivot. The rotation axis is now also only created once, as it is now used in three places in the script, hence the two functions for converting parameters to the new parameterisation have been updated.
  • Modified the rotor2 CaM frame order test data optimisation script to compare the rotor axes. The optimised rotor axis is recreated with the lib.frame_order.rotor_axis.create_rotor_axis_alpha() function, and then the original and optimised axes are compared. The state.save user function has been shifted forwards in the script to avoid a later RelaxError. The log file, average position PDB file, and state file from running the script have been added to the repository or updated.
  • Removed the domain rotation code from the pymol.cone_pdb user function backend. This should only display the cone PDB object. The domain rotation is now performed by the far more powerful frame_order.pdb_model user function.
  • Created the Status_object.test_install_path system verification test. This is to catch bug #22037, the failure to load graphics in the GUI due to the relax installation path not being set up correctly.
  • Started to create a chapter for the N-state model or ensemble analysis in the manual. This simply consists of a few introductory sections and the phathalic acid graphic.
  • Spacing improvements in the stereochem_analysis.py N-state mode sample script.
  • Docstring improvements for the stereochem_analysis.py N-state model sample script. The paragraphs are now all on one line and 'Q-factor' has been changed to 'Q factor'.
  • Replaced 'Q-factor' with 'Q factor' throughout the relax codebase. This change to the correct notation covers code, comments, and docstrings.
  • Added a new section for the stereochemistry analysis to the N-state model chapter of the manual. This is just an initial introduction and an inclusion of the sample script.
  • Editing of the auto_analyses.stereochem_analysis module docstring. The line wrapping to 100 characters has been removed.
  • Exampled the stereochemistry analysis section of the N-state model chapter of the manual.
  • Advances to the Grace 2D plotting abilities in the lib.software.grace relax library module. The write_xy_header() function now accepts the new 'world', 'tick_major_spacing', and 'tick_minor_count' arguments. These allow the world view to be preset, and allow the ticks on the X and Y-axes to be programatically changed. The write_xy_data() has also been modified so that the autoscaling can be turned off, as this Grace command will overwrite the world view and tick setup.
  • Improvements for the 2D Grace plots created by the rdc.corr_plot user function. The autoscaling is now turned off, as the data set representing the diagonal (with points [-100, -100] and [100, 100]) causes the world view to be set to be between -100 to 100 or -200 to 200. The world view is set to be between -50 and 50 Hz, so that all RDCs should be visible. The ticks in the plot have also been set so that the minor ticks are at every Hz increment.
  • The units are now included in the Grace axis labels created by the rdc.corr_plot user function.
  • Added the 'title' and 'subtitle' arguments to the rdc.corr_plot user function. This allows the defaults to be overridden with user supplied titles and subtitles.
  • The rdc.corr_plot and pcs.corr_plot user function now use the Grace icon in the GUI.
  • Created the new pymol.frame_order user function. This user function pairs with the frame_order.pdb_model user function, taking the three PDB files created and displaying them nicely. Neither user function is complete, however the rotor representation of certain frame order models is handled correctly.
  • Created a script for finding all dead http://www.nmr-relax.com links in files of a directory tree.
  • Created the Structure.test_bug_22041_atom_numbering system test to catch bug #22041. The problem is that the structure.write_pdb user function does not create the correct atom serial numbers.
  • Modified the frame_order.pdb_model user function so that the three PDB files are optional. This allows only certain components of the frame order theory to be represented in PDB format.
  • Improvements for the rotor PDB representation shown by the pymol.frame_order user function. The stick radius width change is now only for the rotor PDB object, and not everything in PyMOL.
  • Modified the 2nd rotor model of CaM frame order optimisation script. The frame_order.pdb_model user function is now used to create a PDB representation of the rotor motions for the real, expected parameters and for the optimisation results when the pivot point is fixed. In addition, the pymol.cone_pdb user function has been replaced by the pymol.frame_order user function. All new files have been added to the repository.
  • Added a relax script for creating a PDB representation of the original pivot point. This is for the 2nd rotor model of CaM frame order in the test suite. The resultant PDB file has been added to the repository.
  • Modified the pivot point PDB representation script to include the shifted pivot. This is for the 2nd rotor model of CaM frame order in the test suite.
  • Added the 'centre_type' argument to the structure.superimpose user function. This allows the default 'centroid' superimposition to be replaced by a centre of mass (CoM) superimposition instead. As the CoM and centroid position do not match, the translation vector and Euler rotation angles will be different.
  • Exposed the backend verbosity flag of the structure.read_* user functions. This allows the user to silence these user functions, which can be very useful when loading many 3D structures in the scripting UI mode. This change is for the structure.read_gaussian, structure.read_pdb, and structure.read_xyz user functions.
  • Expanded the structure.delete user function to add the 'verbosity' and 'spin_info' arguments. The verbosity argument, when set to zero, allows all output to be suppressed. The spin_info flag allows the deletion of spin and interatomic data to now be turned off, so that only 3D data is deleted.
  • The new structure.delete 'verbosity' argument is now propagated into the structural object. This allows the printouts to now be completely suppressed.
  • The structure.read_* user function 'verbosity' argument is now passed into the structural object. This allows another printout to be silenced.
  • The structure.read_* user function 'verbosity' argument is now passed into lib.io.open_read_file(). This allows all printouts from these three user functions to be suppressed.
  • Converted the Mf.test_opendx_s2_te_rex system test into a GUI test. This is to demonstrate bug #22035, the dx.map user function being broken in the GUI.
  • Python 3 fixes for the extern.numpy_future module. These changes are necessary to allow relax to even run.
  • Python 3 fixes for all of the relax code base. The lib.compat and multi.processor module changes were fatal, not useful for Python 3, and hence reverted.
  • Python >= 3.2 fix for the Relax_disp.test_sod1wt_t25_to_sherekhan_input system test. The B0 field value of the ShereKhan input files created by the relax_disp.sherekhan_input user function was formatted as "%s". However in Python >= 3.2, floats are now converted to have 14 decimal places whereas previous Python versions only had 10 places. The user function backend now forces only 10 decimal places to be written to the input files.

== Bugfixes ==

  • Fix for bug #21814. This is the PDB reading failure when the PDB records are not padded to 80 spaces. The fix is simple, all PDB records are pre-validated. This includes removing all newline characters and padding each PDB record to 80 spaces when needed. This will however add an overhead cost -- the internal PDB reader will now be slower. However corrupted PDB files, produced by MODELLER for example, not padded to 80 spaces will now be better supported.
  • Bug fix for all of the R1rho relaxation dispersion models. The atan2() function is now being used rather than atan() for determining the rotating frame tilt angle. This is to allow the angle to be in the correct quadrant - i.e. to have a sign or direction.
  • Huge speed up of the interatom.define user function. This is to fix bug #21862, the freezing up of relax when using the dipolar relaxation button in the model-free auto-analysis in the GUI. This involves a number of changes. The algorithm for the backend of the interatom.define user function has been broken into two separate parts. The first part is new and uses the internal structural object atom_loop() twice for each spin ID string. This then calls the new are_bonded_index() structural object method which uses atom indices to find if two atoms are bonded, as the atom indices are returned from the atom_loop(). The are_bonded_index() is orders of magnitude faster than are_bonded() as selection objects are not used and the bonded data structure can be directly accessed. The are_bonded() method has also been slightly speed up by improving its logic. The second part is to perform the original algorithm of two nested spin loops over each spin ID and using the are_bonded() structural method. This second part only happens if the first part finds nothing. The structural object atom_loop() method has been modified to be able to return the molecule index. These indices are needed for the new are_bonded_index() method. When running relax with the profile flag turned on, a simple script which loads the 'Ubiquitin2.bz2' saved state and then the "interatom.define(spin_id1='@N', spin_id2='@H', direct_bond=True)" user function decreases from a total time of 143 to 3.8 seconds. However there are no speed changes detectable in the relax test suite - on one computer the system, unit and GUI tests only only vary by a fraction of a second.
  • Fix for the NOE analysis for the peak intensity parameters. This relates to bug #21863, the grace.write user function not being able to write ref/sat plots as described in sample script noe.py. The 'ref' and 'sat' parameters have been replaced by the 'intensities' dictionary data structure a long, long time ago. Therefore they have been eliminated and replaced by the 'intensities' definition.
  • Fixes for the definitions of the N-state model analysis parameters. This analysis does not use the CSA value, and the paramagnetic centre is a list, not a float.
  • Fixes for the definitions of the 'theta' and 'w_eff' relaxation dispersion parameters. These should not be manually changed by the user and they are not optimised parameter. Therefore they have been shifted from the set 'params' to the set 'all', to avoid listing them in the parameter tables (for example in the value.set user function).
  • Fixes for the frame_order.pivot user function - the model parameters were not being updated. The update_model() function is now called to make sure that the pivot point is either added or removed from the list of model parameters.
  • Fix for bug #21924. This is the failure to output 2D Grace plots for the R20, R20A, R20B, and R1rho0 relaxation dispersion parameters. A simple test for missing data fixed the problem.
  • Fix for the Relax_disp.test_korzhnev_2005_15n_sq_data system test for certain MS Windows systems. This was reported as sr #3142. The problem was simply the lower precision of this system.
  • Fix for the cpmg_analysis.py relaxation dispersion sample script. This was reported as sr #3142. The problem was that one of the paths was in the Linux/Unix format and hence if the path is not changed by the user, then the script will not work for them if they are using MS Windows or Mac OS X.
  • More path fixes for the sample scripts to allow them to run on MS Windows and Mac OS X. This is for the relaxation dispersion R1rho_analysis.py script and the N-state model conformation_analysis_rdc+pcs.py script. These scripts should be modified by the user for their own data, so they should not encounter this problem when using the scripts normally.
  • Python 3 fixes throughout the codebase.
  • Python 3 fix for the Library.test_library_independence software verification test.
  • Python 3 fix for the Relax_disp.test_kteilum_mhsmith_eschulz_lcchristensen_gsolomentsev_moliveberg_makke_sod1wt_t25_to_cr72 system test. The xrange builtin function does not exist in Python 3.
  • Python 3 fix for the Relax_disp.setup_sod1wt_t25 system test. The xrange builtin function does not exist in Python 3.
  • Updated the Relax_disp.test_hansen_cpmg_data_missing_auto_analysis system test for the recent changes. This is for fixing bug #21960. The chi-square values are different due to the fix for bug #21954, the peak intensity error analysis bug, and the CR72 model (http://wiki.nmr-relax.com/CR72) results are different due to the fix for bug #21953, the change of the kex values used in the grid search.
  • Fix for the relax_disp.select_model user function for when the C modules are not compiled. This was checking for the presence of the compiled C modules whenever the 'R2eff' model was specified. However this behaviour is incorrect. It should only check for the C modules if exponential curves are to be fit.
  • Fix for bug. The variances used to calculated std, should only be taken from those which are defined in the subset. Regarding bug #21954 - order of spectrum.error_analysis is important.
  • Fix for system test Relax_disp.test_hansen_cpmgfit_input. Bug #21989 - relax_disp.cpmgfit_input does not work for model CR72. The looping was performed over the file lines instead of the defined fixed lines. The output files is truncated, and does not contain the wished data.
  • Fix for "offset" and "point" swapped in looping. Bug #21989 - relax_disp.cpmgfit_input does not work for model CR72.
  • Fix for bug #21990, the --log and --tee options not functioning with the test suite.
  • Fix for bug #21970. The Mac OS X dmg file required one of the test_suite/shared_data directories included in the 'include' list to properly bundle all relax modules inside the Mac App framework. This was achieved by creating a whitelist structure and adding the directory to that.
  • Fix for bug #21984, the numpy.float16 error. The numpy.float16 type is not defined for all numpy versions. Therefore the lib.check_types.float16 type is used instead as this defaults to numpy.float32 when numpy.float16 is missing.
  • Fix for the relax_disp.parameter_copy function. The median of the values was not performed properly, since 0.0 was already in the starting list of values.
  • Fix for the relax_disp.parameter_copy user function description. The parameters are not averaged but instead the median value from all spins is taken.
  • Fix for bug #22001, the execution of script changing the current working directory. The changing of the current working directory (CWD) was added to allow for nested scripting. However this is no longer needed as the script import mechanism has changed from the exec() function call to the runpy Python module.
  • Fix for bug #22002, the failure of the Library.test_library_independence software verification test. The fix was simply to use the relax installation path in the status singleton object to make sure that the relax 'lib' directory can be found independently of what the current working directory is.
  • Fix for path to sample data in sample script: sample_scripts/relax_disp/cpmg_analysis.py.
  • Fix for path to sample data in sample script: sample_scripts/relax_disp/R1rho_analysis.py.
  • Fix for bug #22004, the conformation_analysis_rdc+pcs.py N-state model sample script not working. The problem was that the return_api() function call needed to be after the creation of the data pipe.
  • Fix for the local_min_search.py N-state model sample script. The return_api() function call was preformed too early. Instead of placing it after the data pipe creation, the specific analysis type is now directly specified.
  • Fix for type in the eta scale of CR72 model. The calculation in relax was correct, but the scale of eta has been wrong in the documentation. This was discussed in: http://thread.gmane.org/gmane.science.nmr.relax.devel/5506. The B14 model is explained in: http://wiki.nmr-relax.com/B14.
  • Bug fix for taking the median if there is more than 0 values in the list. Bug #22010 relax_disp.parameter_copy return a list of pA, if copying only for one spin.
  • Fix for the dispersion model_statistics() specific API method. The spin ID argument should override the model_info argument. The method now correctly implements this.
  • Fixed the rotor axis direction in the lib.frame_order.rotor_axis module. The normalisation code has also been simplified.
  • Fix for tabular space and forgotten "\n" when writing dx.maps config files. Bug #22023 relax dx.map produce .net files which makes error.
  • Added another sentence telling the user that multiple field relaxation data is essential. This is for the model-free dauvergne_protocol auto-analysis section of the relax manual and relates to bug #21799.
  • Another sentence about multiple field relaxation data added to the manual. This is for the model-free dauvergne_protocol GUI section of the relax manual and relates to bug #21799.
  • Documentation fix for IT99. Changed kex to tex. Still needs to be changed at homepage: http://www.nmr-relax.com/analyses/relaxation_dispersion.html#IT99. Bug #22019 the IT99 model is listed with parameter kex instead of tex.
  • Documentation fix for IT99. Changed kex to tex in user function. Bug #22019 the IT99 model is listed with parameter kex instead of tex.
  • Small extra explanation in auto analysis. Bug #21799 insufficient recommendations/warning message for the execution of dauvergne protocol with 1 field is incomplete.
  • Big bug fix for the relax installation path determination. This is to fix bug #22037, the failure to load graphics in the GUI due to the relax installation path not being set up correctly. The problem is that the status module was looking for the compat.py file to determine where the base directory is, but this file has been moved into the lib/ package. Now the dep_check.py file is being searched for.
  • Fixed the description of the N-state model in the pipe.create user function. This has nothing to do with domain motions - it is the treatment of ensembles of structures.
  • Fix for the axis labels in the rdc.corr_plot user function when T data is converted to D.
  • Fix for bug #22039, the printing out of Dpar twice by the diffusion_tensor.display user function. The solution is given in the original bug report.
  • Fix for bug #22041, the PDB atom serial number error from the structure.write_pdb user function. The problem is that the structure.write_pdb user function preserves the atom numbering from the original structure and uses that for the atom serial number. However the atom serial number must be replaced with sequential values to produce a valid PDB file. This is fatal for any CONECT records.
  • Fix for the chain-reaction failures in the test suite. This fixes bug #22055 the processor.run_queue() not cleaning up in uni_processor - chain-reaction failures in the test suite. The fix was insanely simple, just implementing what was mentioned Gary Thompson's FIXME comment in the run_queue() method of the uni-processor object. The queue execution code has been placed inside a 'try' statement and the queue cleaning up code in a 'finally' statement. This closes a painfully difficult to find bug that has been in relax since 2006, though only affecting relax developers.

[ Reply ]


The rest of the message. (posted by Edward d Auvergne, Wed 21 May 2014 12:15:17 PM UTC)

The above message is truncated, so here is the rest:

== Changes ==

  • Large speed up of the relaxation dispersion system tests by about 20%. This was achieved by turning the grid search off in the following system tests: Some of the optimisation values are slightly different, or completely different for the one example of the CR72 model fitted to no exchange, and these have been updated in the tests.
  • Changed the bounds for the R20 parameters in the default grid search. The range of 1 to 40 rad.s^-1 was previous used. This has been narrowed to 5 to 20.
  • Added function to find minimum R2eff value to set as R20 value before grid search. Feature request sr #3151 - user function to set the R20 parameters in the default grid search using the minimum R2eff value.
  • Added system test for setting R20 from minimum R2eff before grid search. Feature request: sr #3151 - user function to set the R20 parameters in the default grid search using the minimum R2eff value. System test: -s Relax_disp.test_sod1wt_t25_set_grid_r20_from_min_r2eff.
  • Extended api value.set to use index in value setting. Feature request: sr #3151 - user function to set the R20 parameters in the default grid search using the minimum R2eff value. The index used is expected to match the spectrometer frequency.
  • Added user function: relax_disp.set_grid_r20_from_min_r2eff. Feature request: sr #3151 - user function to set the R20 parameters in the default grid search using the minimum R2eff value.
  • Modified system test to use user function instead. Feature request: sr #3151 - user function to set the R20 parameters in the default grid search using the minimum R2eff value.
  • Added relax_disp.set_grid_r20_from_min_r2eff functionality to the relax dispersion auto_analyses. Feature request: sr #3151 - user function to set the R20 parameters in the default grid search using the minimum R2eff value.
  • Fix for skipping grid search, when set parameter values are of dict() type. Feature request: sr #3151 - user function to set the R20 parameters in the default grid search using the minimum R2eff value.
  • Extended system test for -s Relax_disp.test_sod1wt_t25_set_grid_r20_from_min_r2eff. Feature request: sr #3151 - user function to set the R20 parameters in the default grid search using the minimum R2eff value. The system test now both test the creation of the correct values, the running of grid_search, and the auto_analysis.
  • Added True/False button to activate relax_disp.set_grid_r20_from_min_r2eff in auto analyses. Feature request: sr #3151 - user function to set the R20 parameters in the default grid search using the minimum R2eff value.
  • Set the verbosity=1, since the output is minimal. Feature request: sr #3151 - user function to set the R20 parameters in the default grid search using the minimum R2eff value.
  • Fix for non-existing dictionary keys causing errors. Feature request: sr #3151 - user function to set the R20 parameters in the default grid search using the minimum R2eff value.
  • Fix for setting index=None, when setting default values for parameters. Feature request: sr #3151 - user function to set the R20 parameters in the default grid search using the minimum R2eff value.
  • Parameter values pre-set to 0.0 is now skipped in grid_search. Feature request: sr #3151 - user function to set the R20 parameters in the default grid search using the minimum R2eff value.
  • Renamed system test to reflect what it is testing. Feature request: sr #3151 - user function to set the R20 parameters in the default grid search using the minimum R2eff value.
  • Better formatting of text in user function. Feature request: sr #3151 - user function to set the R20 parameters in the default grid search using the minimum R2eff value.
  • Python 3 fix. Feature request: sr #3151 - user function to set the R20 parameters in the default grid search using the minimum R2eff value.
  • Better wording of experimental feature in GUI tooltip. Feature request: sr #3151 - user function to set the R20 parameters in the default grid search using the minimum R2eff value.
  • An additional warning paragraph has been added to the user function. Feature request: sr #3151 - user function to set the R20 parameters in the default grid search using the minimum R2eff value.
  • Fix for system test Relax_disp.test_set_grid_r20_from_min_r2eff_cpmg. Feature request: sr #3151 - user function to set the R20 parameters in the default grid search using the minimum R2eff value. Fixed values for testing was added.
  • Improved the error reporting from the Library.test_library_independence verification test.
  • Fix for setting the pre-set values in grid_search. Feature request: sr #3151 - user function to set the R20 parameters in the default grid search using the minimum R2eff value. Now test that values which are of dictionary types, has more than 0 values.
  • Modified system test Relax_disp.test_sod1wt_t25_to_cr72.
  • Added a paragraph to the clustering section of the dispersion chapter covering parameter copying. This explains the purpose of the relax_disp.parameter_copy user function.
  • Created system test to catch the error -s Relax_disp.test_sod1wt_t25_to_sherekhan_input. Bug #21995 creating sherekhan input files, with data for several fields and different time_T2.
  • Removed the necessity that len(cdp.relax_time_list) = 1 when issuing the sherekhan input user function. Bug #21995 creating sherekhan input files, with data for several fields and different time_T2.
  • Made testing of files for system test -s Relax_disp.test_sod1wt_t25_to_sherekhan_input. Bug #21995 creating sherekhan input files, with data for several fields and different time_T2. Warning, the sherekhan user function will write to current directory.
  • Added "dir" as input to the user function relax_disp.sherekhan_input in system test. Bug #21995 creating sherekhan input files, with data for several fields and different time_T2.
  • Modified the relax_disp.sherekhan_input to accept dir as input. Bug #21995 creating sherekhan input files, with data for several fields and different time_T2.
  • Turning off local dir writing in system test and set the correct time_T2. Bug #21995 creating sherekhan input files, with data for several fields and different time_T2.
  • Fix for letting ShereKhan user function write the time_T2 correct. Bug #21995 creating sherekhan input files, with data for several fields and different time_T2.
  • Fix for correct looping over time points, when creating ShereKhan files. Bug #21995 creating sherekhan input files, with data for several fields and different time_T2.
  • Added check for number of time points is 1. Bug #21995 creating sherekhan input files, with data for several fields and different time_T2.

[ Reply ]


   

 

Start a New Thread:

You could post if you were logged in
Show feedback again

Back to the top


Powered by Savane 3.1-cleanup